From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chi Ding Subject: [RFC 8/8] drm/i915/vlv: Add intermediate field in intel_crtc_wm_state and handlers for two-level watermark Date: Thu, 23 Jun 2016 14:36:28 +0200 Message-ID: <1466685388-16504-9-git-send-email-chix.ding@intel.com> References: <1466685388-16504-1-git-send-email-chix.ding@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E1056E91A for ; Thu, 23 Jun 2016 12:36:52 +0000 (UTC) In-Reply-To: <1466685388-16504-1-git-send-email-chix.ding@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: yetundex.adebisi@intel.com, maarten.lankhorst@linux.intel.com, ville.syrjala@linux.intel.com, matthew.d.roper@intel.com, intel-gfx@lists.freedesktop.org, isg-gms@eclists.intel.com Cc: Chi Ding List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNv bT4KClJlbmFtZSB2bHZfY29tcHV0ZV93bSB0byB2bHZfY29tcHV0ZV9waXBlX3dtIHRvIGNvbXB1 dGUgb3B0aW1hbCB3YXRlcm1hcmsKQWRkIHZsdl9jb21wdXRlX2ludGVybWVkaWF0ZV93bSB0byBj b21wdXRlciBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrCkFkZCB2bHZfaW5pdGlhbF93YXRlcm1hcmtz IHRvIHdyaXRlIGludGVybWVkaWF0ZSB3YXRlcm1hcmsgaW50byBoYXJkd2FyZQpBZGQgdmx2X29w dGltaXplX3dhdGVybWFya3MgdG8gd3JpdGUgb3B0aW1hbCB3YXRlcm1hcmsgaW50byBoYXJkd2Fy ZQpDaGFuZ2UgdmFsbGV5dmlld19jcnRjX2VuYWJsZSB0byBjYWxsIC5pbml0aWFsX3dhdGVybWFy a3MgaGFuZGxlcgoKVGhpcyBwYXRjaCBhZGRzIHRoZSBoYW5kbGVycyBmb3IgdHdvLWxldmVsIGF0 b21pYyB3YXRlcm1hcmsgZm9yIFZMVi9DSFYuCkl0IG1ha2VzIHVzZSBvZiB0aGUgb3B0aW1hbCBh bmQgaW50ZXJtZWRpYXRlIHdhdGVybWFyayBmaWVsZHMgYWRkZWQgaW4KdGhlIHByZXZpb3VzIGNv bW1pdHMgdG8gY2FsY3VsYXRlIHRoZSBvcHRpbWFsIGFuZCBpbnRlcm1lZGlhdGUgc3RhdGUuCkl0 IHNldHMgdGhlIGludGVybWVkaWF0ZSB3YXRlcm1hcmsgd2hpY2ggaXMgdGhlIHNhZmVyIHZhbHVl IG9mIHRoZQpjdXJyZW50bHkgYWN0aXZlIGFuZCB0aGUgb3B0aW1hbCB3YXRlcm1hcmsgcHJlLXZi bGFuay4gVGhlbiBpdCBzZXRzIHRoZQpvcHRpbWFsIHdhdGVybWFyayBhZnRlci12YmxhbmsuCgp2 MjoKLSB1c2UgbWFjcm8gZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRl Ci0gcmVtb3ZlIHJlZHVuZGFudCBkZWJ1ZyBzdGF0ZW1lbnRzIGluIHZsdl9waXBlX3NldF9maWZv X3NpemUKCnYzOgotIHVzZSBtYWNybyBkcm1fYXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hfcGxh bmVfc3RhdGUgdG8gc2ltcGxpZnkgdGhlIGNvZGUKLSBjaGVjayAhbmV3X3N0YXRlLT5hY3RpdmUg fHwgbW9kZXNldCBpbiBjb21wdXRpbmcgaW50ZXJtZWRpYXRlIHdhdGVybWFyawoKU2lnbmVkLW9m Zi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogQ2hpIERpbmcgPGNoaXguZGluZ0BpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICA4ICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgICAgICB8IDE1MCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQog MyBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDExNDFiODYuLjFjZWRhMjQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTQ2MDIsOCArNDYwMiw2IEBAIHN0YXRp YyB2b2lkIGludGVsX3Bvc3RfcGxhbmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZSkKIAogCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2LCBwaXBlX2NvbmZp Zy0+ZmJfYml0cyk7CiAKLQljcnRjLT53bS5jeHNyX2FsbG93ZWQgPSB0cnVlOwotCiAJaWYgKHBp cGVfY29uZmlnLT51cGRhdGVfd21fcG9zdCAmJiBwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpCiAJ CWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKCZjcnRjLT5iYXNlKTsKIApAQCAtNDY0OSw4ICs0NjQ3 LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiAJfQogCiAJaWYgKHBpcGVfY29uZmlnLT5kaXNhYmxl X2N4c3IgJiYgSEFTX0dNQ0hfRElTUExBWShkZXYpKSB7Ci0JCWNydGMtPndtLmN4c3JfYWxsb3dl ZCA9IGZhbHNlOwotCiAJCS8qCiAJCSAqIFZibGFuayB0aW1lIHVwZGF0ZXMgZnJvbSB0aGUgc2hh ZG93IHRvIGxpdmUgcGxhbmUgY29udHJvbCByZWdpc3RlcgogCQkgKiBhcmUgYmxvY2tlZCBpZiB0 aGUgbWVtb3J5IHNlbGYtcmVmcmVzaCBtb2RlIGlzIGFjdGl2ZSBhdCB0aGF0CkBAIC02MTgwLDcg KzYxNzYsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKIAogCWludGVsX2NvbG9yX2xvYWRfbHV0cygmcGlwZV9jb25maWctPmJhc2Up OwogCi0JaW50ZWxfdXBkYXRlX3dhdGVybWFya3MoY3J0Yyk7CisJZGV2X3ByaXYtPmRpc3BsYXku aW5pdGlhbF93YXRlcm1hcmtzKHBpcGVfY29uZmlnKTsKIAlpbnRlbF9lbmFibGVfcGlwZShpbnRl bF9jcnRjKTsKIAogCWFzc2VydF92YmxhbmtfZGlzYWJsZWQoY3J0Yyk7CkBAIC0xNDU5MSw4ICsx NDU4Nyw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgcGlwZSkKIAlpbnRlbF9jcnRjLT5jdXJzb3JfY250bCA9IH4wOwogCWludGVsX2Ny dGMtPmN1cnNvcl9zaXplID0gfjA7CiAKLQlpbnRlbF9jcnRjLT53bS5jeHNyX2FsbG93ZWQgPSB0 cnVlOwotCiAJQlVHX09OKHBpcGUgPj0gQVJSQVlfU0laRShkZXZfcHJpdi0+cGxhbmVfdG9fY3J0 Y19tYXBwaW5nKSB8fAogCSAgICAgICBkZXZfcHJpdi0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nW2lu dGVsX2NydGMtPnBsYW5lXSAhPSBOVUxMKTsKIAlkZXZfcHJpdi0+cGxhbmVfdG9fY3J0Y19tYXBw aW5nW2ludGVsX2NydGMtPnBsYW5lXSA9ICZpbnRlbF9jcnRjLT5iYXNlOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAppbmRleCA4ZTc3YWRiLi4zMGE2MzA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaApAQCAtNDQzLDYgKzQ0Myw3IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3dtX3N0YXRlIHsKIAkJ fSBpbGs7CiAKIAkJc3RydWN0IHsKKwkJCXN0cnVjdCB2bHZfd21fc3RhdGUgaW50ZXJtZWRpYXRl OwogCQkJc3RydWN0IHZsdl93bV9zdGF0ZSBvcHRpbWFsOwogCQl9IHZsdjsKIApAQCAtNjgzLDgg KzY4NCw2IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKIAkJCXN0cnVjdCB2bHZfd21fc3RhdGUgdmx2 OwogCQl9IGFjdGl2ZTsKIAotCQkvKiBhbGxvdyBDeFNSIG9uIHRoaXMgcGlwZSAqLwotCQlib29s IGN4c3JfYWxsb3dlZDsKIAl9IHdtOwogCiAJaW50IHNjYW5saW5lX29mZnNldDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCmluZGV4IGNjNDNjMWUuLjlhNWU2ZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImludGVsX2Rydi5oIgogI2luY2x1ZGUg Ii4uLy4uLy4uL3BsYXRmb3JtL3g4Ni9pbnRlbF9pcHMuaCIKICNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KIAogLyoqCiAgKiBET0M6 IFJDNgpAQCAtOTg5LDYgKzk5MCw3IEBAIHN0YXRpYyB1aW50MTZfdCB2bHZfY29tcHV0ZV93bV9s ZXZlbChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCWNsb2NrID0gY3N0YXRlLT5iYXNlLmFk anVzdGVkX21vZGUuY3J0Y19jbG9jazsKIAlodG90YWwgPSBjc3RhdGUtPmJhc2UuYWRqdXN0ZWRf bW9kZS5jcnRjX2h0b3RhbDsKIAl3aWR0aCA9IGNzdGF0ZS0+cGlwZV9zcmNfdzsKKwogCWlmIChX QVJOX09OKGh0b3RhbCA9PSAwKSkKIAkJaHRvdGFsID0gMTsKIApAQCAtMTAxMSwyNyArMTAxMywy OCBAQCBzdGF0aWMgdWludDE2X3Qgdmx2X2NvbXB1dGVfd21fbGV2ZWwoc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKIHN0YXRpYyB2b2lkIHZsdl9jb21wdXRlX2ZpZm8oc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNzdGF0ZSwKIAkJCQlzdHJ1Y3Qgdmx2X3dtX3N0YXRlICp3bV9zdGF0ZSkKIHsK LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5iYXNlLmNy dGMpOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lOwogCXVuc2lnbmVkIGludCB0b3RhbF9yYXRlID0gMDsKIAljb25z dCBpbnQgZmlmb19zaXplID0gNTEyIC0gMTsKIAlpbnQgZmlmb19leHRyYSwgZmlmb19sZWZ0ID0g Zmlmb19zaXplOwogCWludCByYXRlW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKIAlpbnQgaTsKKwlj b25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGU7CisJc3RydWN0IGRybV9wbGFuZSAq cGxhbmU7CiAKLQlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgY3J0YywgcGxhbmUp IHsKKwlkcm1fYXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hfcGxhbmVfc3RhdGUocGxhbmUsIHBz dGF0ZSwgJmNzdGF0ZS0+YmFzZSkgewogCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRl ID0KLQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKKwkJCXRvX2lu dGVsX3BsYW5lX3N0YXRlKHBzdGF0ZSk7CisJCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxh bmUgPQorCQkJdG9faW50ZWxfcGxhbmUocGxhbmUpOwogCi0JCWlmIChwbGFuZS0+YmFzZS50eXBl ID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikKKwkJaWYgKGludGVsX3BsYW5lLT5iYXNlLnR5cGUg PT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQogCQkJY29udGludWU7CiAKIAkJaWYgKHN0YXRlLT52 aXNpYmxlKSB7CiAJCQl3bV9zdGF0ZS0+bnVtX2FjdGl2ZV9wbGFuZXMrKzsKLQkJCXJhdGVbd21f cGxhbmVfaWQocGxhbmUpXSA9CisJCQlyYXRlW3dtX3BsYW5lX2lkKGludGVsX3BsYW5lKV0gPQog CQkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAoc3RhdGUtPmJhc2UuZmItPnBpeGVsX2Zvcm1hdCwgMCk7 Ci0JCQl0b3RhbF9yYXRlICs9IHJhdGVbd21fcGxhbmVfaWQocGxhbmUpXTsKKwkJCXRvdGFsX3Jh dGUgKz0gcmF0ZVt3bV9wbGFuZV9pZChpbnRlbF9wbGFuZSldOwogCQl9CiAJfQogCkBAIC0xMTE0 LDE4ICsxMTE3LDE5IEBAIHN0YXRpYyB2b2lkIHZsdl9pbnZlcnRfd21zKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAogCX0KIH0KIAotc3RhdGljIGludCB2bHZfY29tcHV0ZV93bShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQorc3RhdGljIGludCB2bHZfY29tcHV0ZV9waXBlX3dtKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CiAJc3RydWN0IHZsdl93bV9zdGF0ZSAqd21fc3RhdGUg PSAmY3N0YXRlLT53bS52bHYub3B0aW1hbDsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwor CXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwogCWludCBzcl9maWZvX3NpemUgPSBJTlRFTF9JTkZP KGRldiktPm51bV9waXBlcyAqIDUxMiAtIDE7CiAJaW50IGxldmVsOworCWNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKIAogCW1lbXNldCh3bV9zdGF0ZSwgMCwgc2l6ZW9mKCp3 bV9zdGF0ZSkpOwogCi0Jd21fc3RhdGUtPmN4c3IgPSBjcnRjLT5waXBlICE9IFBJUEVfQyAmJiBj cnRjLT53bS5jeHNyX2FsbG93ZWQ7CisJd21fc3RhdGUtPmN4c3IgPSBjcnRjLT5waXBlICE9IFBJ UEVfQzsKIAl3bV9zdGF0ZS0+bnVtX2xldmVscyA9IHRvX2k5MTUoZGV2KS0+d20ubWF4X2xldmVs ICsgMTsKIAogCXdtX3N0YXRlLT5udW1fYWN0aXZlX3BsYW5lcyA9IDA7CkBAIC0xMTQyLDMxICsx MTQ2LDMzIEBAIHN0YXRpYyBpbnQgdmx2X2NvbXB1dGVfd20oc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdGF0ZSkKIAkJfQogCX0KIAotCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2 LCBjcnRjLCBwbGFuZSkgeworCWRybV9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZV9z dGF0ZShwbGFuZSwgcHN0YXRlLCAmY3N0YXRlLT5iYXNlKSB7CiAJCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqc3RhdGUgPQotCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPmJhc2Uuc3Rh dGUpOworCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKTsKKwkJc3RydWN0IGludGVsX3Bs YW5lICppbnRlbF9wbGFuZSA9CisJCQl0b19pbnRlbF9wbGFuZShwbGFuZSk7CiAKIAkJaWYgKCFz dGF0ZS0+dmlzaWJsZSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIG5vcm1hbCB3YXRlcm1hcmtzICov CiAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8IHdtX3N0YXRlLT5udW1fbGV2ZWxzOyBsZXZlbCsr KSB7Ci0JCQlpbnQgd20gPSB2bHZfY29tcHV0ZV93bV9sZXZlbChwbGFuZSwgY3N0YXRlLCBzdGF0 ZSwgbGV2ZWwpOwotCQkJaW50IG1heF93bSA9IHBsYW5lLT5iYXNlLnR5cGUgPT0gRFJNX1BMQU5F X1RZUEVfQ1VSU09SID8gNjMgOiA1MTE7CisJCQlpbnQgd20gPSB2bHZfY29tcHV0ZV93bV9sZXZl bChpbnRlbF9wbGFuZSwgY3N0YXRlLCBzdGF0ZSwgbGV2ZWwpOworCQkJaW50IG1heF93bSA9IGlu dGVsX3BsYW5lLT5iYXNlLnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SID8gNjMgOiA1MTE7 CiAKIAkJCWlmIChsZXZlbCA9PSAwICYmIHdtID4gbWF4X3dtKSB7CiAJCQkJRFJNX0RFQlVHX0tN UygiUmVxdWVzdGVkIGRpc3BsYXkgY29uZmlndXJhdGlvbiAiCiAJCQkJImV4Y2VlZHMgc3lzdGVt IHdhdGVybWFyayBsaW1pdGF0aW9uc1xuIik7CiAJCQkJRFJNX0RFQlVHX0tNUygiUGxhbmUgJWQu JWQ6IGJsb2NrcyByZXF1aXJlZCA9ICV1LyV1XG4iLAotCQkJCQljcnRjLT5waXBlLAotCQkJCQlk cm1fcGxhbmVfaW5kZXgoJnBsYW5lLT5iYXNlKSwgd20sIG1heF93bSk7CisJCQkJICAgICAgY3J0 Yy0+cGlwZSwKKwkJCQkgICAgICBkcm1fcGxhbmVfaW5kZXgoJmludGVsX3BsYW5lLT5iYXNlKSwg d20sIG1heF93bSk7CiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9CiAKLQkJCWlmICh3bSA+IHdt X3N0YXRlLT5maWZvX3NpemVbd21fcGxhbmVfaWQocGxhbmUpXSkKKwkJCWlmICh3bSA+IHdtX3N0 YXRlLT5maWZvX3NpemVbd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpXSkKIAkJCQlicmVhazsKIAot CQkJc3dpdGNoIChwbGFuZS0+YmFzZS50eXBlKSB7CisJCQlzd2l0Y2ggKGludGVsX3BsYW5lLT5i YXNlLnR5cGUpIHsKIAkJCQlpbnQgc3ByaXRlOwogCQkJY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJT T1I6CiAJCQkJd21fc3RhdGUtPndtW2xldmVsXS5jdXJzb3IgPSB3bTsKQEAgLTExNzUsNyArMTE4 MSw3IEBAIHN0YXRpYyBpbnQgdmx2X2NvbXB1dGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSkKIAkJCQl3bV9zdGF0ZS0+d21bbGV2ZWxdLnByaW1hcnkgPSB3bTsKIAkJCQlicmVh azsKIAkJCWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKLQkJCQlzcHJpdGUgPSBwbGFuZS0+ cGxhbmU7CisJCQkJc3ByaXRlID0gaW50ZWxfcGxhbmUtPnBsYW5lOwogCQkJCXdtX3N0YXRlLT53 bVtsZXZlbF0uc3ByaXRlW3Nwcml0ZV0gPSB3bTsKIAkJCQlicmVhazsKIAkJCX0KQEAgLTExODcs NyArMTE5Myw3IEBAIHN0YXRpYyBpbnQgdmx2X2NvbXB1dGVfd20oc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIG1heGZpZm8gd2F0ZXJtYXJrcyAq LwotCQlzd2l0Y2ggKHBsYW5lLT5iYXNlLnR5cGUpIHsKKwkJc3dpdGNoIChpbnRlbF9wbGFuZS0+ YmFzZS50eXBlKSB7CiAJCQlpbnQgc3ByaXRlLCBsZXZlbDsKIAkJY2FzZSBEUk1fUExBTkVfVFlQ RV9DVVJTT1I6CiAJCQlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPCB3bV9zdGF0ZS0+bnVtX2xldmVs czsgbGV2ZWwrKykKQEAgLTEyMDEsNyArMTIwNyw3IEBAIHN0YXRpYyBpbnQgdmx2X2NvbXB1dGVf d20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKIAkJCQkJICAgIHdtX3N0YXRlLT53 bVtsZXZlbF0ucHJpbWFyeSk7CiAJCQlicmVhazsKIAkJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVS TEFZOgotCQkJc3ByaXRlID0gcGxhbmUtPnBsYW5lOworCQkJc3ByaXRlID0gaW50ZWxfcGxhbmUt PnBsYW5lOwogCQkJZm9yIChsZXZlbCA9IDA7IGxldmVsIDwgd21fc3RhdGUtPm51bV9sZXZlbHM7 IGxldmVsKyspCiAJCQkJd21fc3RhdGUtPnNyW2xldmVsXS5wbGFuZSA9CiAJCQkJCW1pbih3bV9z dGF0ZS0+c3JbbGV2ZWxdLnBsYW5lLApAQCAtMTIyMSw2ICsxMjI3LDY1IEBAIHN0YXRpYyBpbnQg dmx2X2NvbXB1dGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKIAlyZXR1cm4g MDsKIH0KIAorCitzdGF0aWMgaW50IHZsdl9jb21wdXRlX2ludGVybWVkaWF0ZV93bShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YywKKwkJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld3N0YXRlKQoreworCXN0 cnVjdCB2bHZfd21fc3RhdGUgKmEgPSAmbmV3c3RhdGUtPndtLnZsdi5pbnRlcm1lZGlhdGU7CisJ c3RydWN0IHZsdl93bV9zdGF0ZSAqYiA9ICZpbnRlbF9jcnRjLT53bS5hY3RpdmUudmx2OworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJaW50 IGxldmVsLCBtYXhfbGV2ZWwgPSBkZXZfcHJpdi0+d20ubWF4X2xldmVsOworCisJLyoKKwkgKiBT dGFydCB3aXRoIHRoZSBmaW5hbCwgdGFyZ2V0IHdhdGVybWFya3MsIHRoZW4gY29tYmluZSB3aXRo IHRoZQorCSAqIGN1cnJlbnRseSBhY3RpdmUgd2F0ZXJtYXJrcyB0byBnZXQgdmFsdWVzIHRoYXQg YXJlIHNhZmUgYm90aCBiZWZvcmUKKwkgKiBhbmQgYWZ0ZXIgdGhlIHZibGFuay4KKwkgKi8KKwkq YSA9IG5ld3N0YXRlLT53bS52bHYub3B0aW1hbDsKKworCWlmICghbmV3c3RhdGUtPmJhc2UuYWN0 aXZlIHx8IGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZuZXdzdGF0ZS0+YmFzZSkpCisJ CXJldHVybiAwOworCisJYS0+bnVtX2xldmVscyA9IG1pbihhLT5udW1fbGV2ZWxzLCBiLT5udW1f bGV2ZWxzKTsKKwlhLT5jeHNyICY9IGItPmN4c3I7CisKKwlmb3IgKGxldmVsID0gMDsgbGV2ZWwg PCBhLT5udW1fbGV2ZWxzOyBsZXZlbCsrKSB7CisJCXN0cnVjdCB2bHZfcGlwZV93bSAqYV93bSA9 ICZhLT53bVtsZXZlbF07CisJCWNvbnN0IHN0cnVjdCB2bHZfcGlwZV93bSAqYl93bSA9ICZiLT53 bVtsZXZlbF07CisJCXN0cnVjdCB2bHZfc3Jfd20gKmFfc3IgPSAmYS0+c3JbbGV2ZWxdOworCQlj b25zdCBzdHJ1Y3Qgdmx2X3NyX3dtICpiX3NyID0gJmItPnNyW2xldmVsXTsKKworCQlhX3dtLT5w cmltYXJ5ID0gbWluKGFfd20tPnByaW1hcnksIGJfd20tPnByaW1hcnkpOworCQlhX3dtLT5zcHJp dGVbMF0gPSBtaW4oYV93bS0+c3ByaXRlWzBdLCBiX3dtLT5zcHJpdGVbMF0pOworCQlhX3dtLT5z cHJpdGVbMV0gPSBtaW4oYV93bS0+c3ByaXRlWzFdLCBiX3dtLT5zcHJpdGVbMV0pOworCQlhX3dt LT5jdXJzb3IgPSBtaW4oYV93bS0+Y3Vyc29yLCBiX3dtLT5jdXJzb3IpOworCisJCWlmIChhLT5j eHNyKSB7CisJCQlhX3NyLT5wbGFuZSA9IG1pbihhX3NyLT5wbGFuZSwgYl9zci0+cGxhbmUpOwor CQkJYV9zci0+Y3Vyc29yID0gbWluKGFfc3ItPmN1cnNvciwgYl9zci0+Y3Vyc29yKTsKKwkJfSBl bHNlIHsKKwkJCWFfc3ItPnBsYW5lID0gYl9zci0+cGxhbmU7CisJCQlhX3NyLT5jdXJzb3IgPSBi X3NyLT5jdXJzb3I7CisJCX0KKwl9CisKKwkvKiByZXNldCB0aGUgaW52YWxpZCBsZXZlbHMgKi8K Kwlmb3IgKGxldmVsID0gYS0+bnVtX2xldmVsczsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsr KSB7CisJCW1lbXNldCgmYS0+d21bbGV2ZWxdLCAwLCBzaXplb2Yoc3RydWN0IHZsdl9waXBlX3dt KSk7CisJCW1lbXNldCgmYS0+c3JbbGV2ZWxdLCAwLCBzaXplb2Yoc3RydWN0IHZsdl9zcl93bSkp OworCX0KKworCS8qCisJICogSWYgb3VyIGludGVybWVkaWF0ZSBXTSBhcmUgaWRlbnRpY2FsIHRv IHRoZSBmaW5hbCBXTSwgdGhlbiB3ZSBjYW4KKwkgKiBvbWl0IHRoZSBwb3N0LXZibGFuayBwcm9n cmFtbWluZzsgb25seSB1cGRhdGUgaWYgaXQncyBkaWZmZXJlbnQuCisJICovCisJaWYgKG1lbWNt cChhLCAmbmV3c3RhdGUtPndtLmlsay5vcHRpbWFsLCBzaXplb2YoKmEpKSA9PSAwKQorCQluZXdz dGF0ZS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSA9IGZhbHNlOworCisJcmV0dXJuIDA7Cit9CisK ICNkZWZpbmUgVkxWX0ZJRk8ocGxhbmUsIHZhbHVlKSBcCiAJKCgodmFsdWUpIDw8IERTUEFSQl8g IyMgcGxhbmUgIyMgX1NISUZUX1ZMVikgJiBEU1BBUkJfICMjIHBsYW5lICMjIF9NQVNLX1ZMVikK IApAQCAtMTM1NSwxMSArMTQyMCw3IEBAIHN0YXRpYyB2b2lkIHZsdl91cGRhdGVfd20oc3RydWN0 IGRybV9jcnRjICpjcnRjKQogCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAlz dHJ1Y3Qgdmx2X3dtX3ZhbHVlcyB3bSA9IHt9OwogCi0Jdmx2X2NvbXB1dGVfd20oaW50ZWxfY3J0 Yy0+Y29uZmlnKTsKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwotCWludGVs X2NydGMtPndtLmFjdGl2ZS52bHYgPSBpbnRlbF9jcnRjLT5jb25maWctPndtLnZsdi5vcHRpbWFs OwogCXZsdl9tZXJnZV93bShkZXYsICZ3bSk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+d20u d21fbXV0ZXgpOwogCiAJaWYgKG1lbWNtcCgmZGV2X3ByaXYtPndtLnZsdiwgJndtLCBzaXplb2Yo d20pKSA9PSAwKSB7CiAJCS8qIEZJWE1FIHNob3VsZCBiZSBwYXJ0IG9mIGNydGMgYXRvbWljIGNv bW1pdCAqLwpAQCAtMTQwMyw2ICsxNDY0LDI5IEBAIHN0YXRpYyB2b2lkIHZsdl91cGRhdGVfd20o c3RydWN0IGRybV9jcnRjICpjcnRjKQogCWRldl9wcml2LT53bS52bHYgPSB3bTsKIH0KIAorCitz dGF0aWMgdm9pZCB2bHZfaW5pdGlhbF93YXRlcm1hcmtzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5iYXNlLmNydGMpOworCisJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPndtLndtX211dGV4KTsKKwlpbnRlbF9jcnRjLT53bS5hY3RpdmUudmx2ID0gY3N0YXRl LT53bS52bHYuaW50ZXJtZWRpYXRlOworCXZsdl91cGRhdGVfd20oY3N0YXRlLT5iYXNlLmNydGMp OworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKK30KKworc3RhdGljIHZv aWQgdmx2X29wdGltaXplX3dhdGVybWFya3Moc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNzdGF0 ZS0+YmFzZS5jcnRjLT5kZXYpOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0Yyhjc3RhdGUtPmJhc2UuY3J0Yyk7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ d20ud21fbXV0ZXgpOworCWludGVsX2NydGMtPndtLmFjdGl2ZS52bHYgPSBjc3RhdGUtPndtLnZs di5vcHRpbWFsOworCXZsdl91cGRhdGVfd20oY3N0YXRlLT5iYXNlLmNydGMpOworCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKK30KKwogI2RlZmluZSBzaW5nbGVfcGxhbmVf ZW5hYmxlZChtYXNrKSBpc19wb3dlcl9vZl8yKG1hc2spCiAKIHN0YXRpYyB2b2lkIGc0eF91cGRh dGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQpAQCAtNzU4MSwxMiArNzY2NSwxNiBAQCB2b2lk IGludGVsX2luaXRfcG0oc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCURSTV9ERUJVR19LTVMo IkZhaWxlZCB0byByZWFkIGRpc3BsYXkgcGxhbmUgbGF0ZW5jeS4gIgogCQkJCSAgICAgICJEaXNh YmxlIEN4U1JcbiIpOwogCQl9Ci0JfSBlbHNlIGlmIChJU19DSEVSUllWSUVXKGRldikpIHsKLQkJ dmx2X3NldHVwX3dtX2xhdGVuY3koZGV2KTsKLQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dt ID0gdmx2X3VwZGF0ZV93bTsKLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCX0g ZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSkgewogCQl2 bHZfc2V0dXBfd21fbGF0ZW5jeShkZXYpOwotCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20g PSB2bHZfdXBkYXRlX3dtOworCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20gPQor CQkJdmx2X2NvbXB1dGVfcGlwZV93bTsKKwkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9pbnRl cm1lZGlhdGVfd20gPQorCQkJdmx2X2NvbXB1dGVfaW50ZXJtZWRpYXRlX3dtOworCQlkZXZfcHJp di0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MgPQorCQkJdmx2X2luaXRpYWxfd2F0ZXJtYXJr czsKKwkJZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcyA9CisJCQl2bHZfb3B0 aW1pemVfd2F0ZXJtYXJrczsKIAl9IGVsc2UgaWYgKElTX1BJTkVWSUVXKGRldikpIHsKIAkJaWYg KCFpbnRlbF9nZXRfY3hzcl9sYXRlbmN5KElTX1BJTkVWSUVXX0coZGV2KSwKIAkJCQkJICAgIGRl dl9wcml2LT5pc19kZHIzLAotLSAKMS44LjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==