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 10:57:59 +0200 Message-ID: <1466672279-16236-9-git-send-email-chix.ding@intel.com> References: <1466672279-16236-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 8C33E6E8D4 for ; Thu, 23 Jun 2016 08:58:25 +0000 (UTC) In-Reply-To: <1466672279-16236-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 dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICA3ICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgICAgICB8IDE1MCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQog MyBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDNmODk4N2IuLjQzMWQwODIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTQ1OTgsOCArNDU5OCw2IEBAIHN0YXRp YyB2b2lkIGludGVsX3Bvc3RfcGxhbmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZSkKIAogCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2LCBwaXBlX2NvbmZp Zy0+ZmJfYml0cyk7CiAKLQljcnRjLT53bS5jeHNyX2FsbG93ZWQgPSB0cnVlOwotCiAJaWYgKHBp cGVfY29uZmlnLT51cGRhdGVfd21fcG9zdCAmJiBwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpCiAJ CWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKCZjcnRjLT5iYXNlKTsKIApAQCAtNDY0NSw3ICs0NjQz LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiAJfQogCiAJaWYgKHBpcGVfY29uZmlnLT5kaXNhYmxl X2N4c3IpIHsKLQkJY3J0Yy0+d20uY3hzcl9hbGxvd2VkID0gZmFsc2U7CiAKIAkJLyoKIAkJICog VmJsYW5rIHRpbWUgdXBkYXRlcyBmcm9tIHRoZSBzaGFkb3cgdG8gbGl2ZSBwbGFuZSBjb250cm9s IHJlZ2lzdGVyCkBAIC02MDkyLDcgKzYwODksNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2Ny dGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAogCWludGVsX2NvbG9yX2xvYWRfbHV0 cygmcGlwZV9jb25maWctPmJhc2UpOwogCi0JaW50ZWxfdXBkYXRlX3dhdGVybWFya3MoY3J0Yyk7 CisJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKHBpcGVfY29uZmlnKTsKIAlp bnRlbF9lbmFibGVfcGlwZShpbnRlbF9jcnRjKTsKIAogCWFzc2VydF92YmxhbmtfZGlzYWJsZWQo Y3J0Yyk7CkBAIC0xNDMxMCw4ICsxNDMwNyw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSkKIAlpbnRlbF9jcnRjLT5jdXJzb3Jf Y250bCA9IH4wOwogCWludGVsX2NydGMtPmN1cnNvcl9zaXplID0gfjA7CiAKLQlpbnRlbF9jcnRj LT53bS5jeHNyX2FsbG93ZWQgPSB0cnVlOwotCiAJQlVHX09OKHBpcGUgPj0gQVJSQVlfU0laRShk ZXZfcHJpdi0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nKSB8fAogCSAgICAgICBkZXZfcHJpdi0+cGxh bmVfdG9fY3J0Y19tYXBwaW5nW2ludGVsX2NydGMtPnBsYW5lXSAhPSBOVUxMKTsKIAlkZXZfcHJp di0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nW2ludGVsX2NydGMtPnBsYW5lXSA9ICZpbnRlbF9jcnRj LT5iYXNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAyZDNkZmVjLi5jMjA3MTQ4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtNDQ3LDYgKzQ0Nyw3IEBAIHN0cnVjdCBpbnRl bF9jcnRjX3dtX3N0YXRlIHsKIAkJfSBpbGs7CiAKIAkJc3RydWN0IHsKKwkJCXN0cnVjdCB2bHZf d21fc3RhdGUgaW50ZXJtZWRpYXRlOwogCQkJc3RydWN0IHZsdl93bV9zdGF0ZSBvcHRpbWFsOwog CQl9IHZsdjsKIApAQCAtNjgxLDggKzY4Miw2IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKIAkJCXN0 cnVjdCB2bHZfd21fc3RhdGUgdmx2OwogCQl9IGFjdGl2ZTsKIAotCQkvKiBhbGxvdyBDeFNSIG9u IHRoaXMgcGlwZSAqLwotCQlib29sIGN4c3JfYWxsb3dlZDsKIAl9IHdtOwogCiAJaW50IHNjYW5s aW5lX29mZnNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGNlZGVkNWIuLmQ5ZDFlY2Ig MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImlu dGVsX2Rydi5oIgogI2luY2x1ZGUgIi4uLy4uLy4uL3BsYXRmb3JtL3g4Ni9pbnRlbF9pcHMuaCIK ICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4KIAogLyoqCiAgKiBET0M6IFJDNgpAQCAtOTY0LDYgKzk2NSw3IEBAIHN0YXRpYyB1aW50 MTZfdCB2bHZfY29tcHV0ZV93bV9sZXZlbChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCWNs b2NrID0gY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKIAlodG90YWwgPSBj c3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbDsKIAl3aWR0aCA9IGNzdGF0ZS0+ cGlwZV9zcmNfdzsKKwogCWlmIChXQVJOX09OKGh0b3RhbCA9PSAwKSkKIAkJaHRvdGFsID0gMTsK IApAQCAtOTg2LDI3ICs5ODgsMjggQEAgc3RhdGljIHVpbnQxNl90IHZsdl9jb21wdXRlX3dtX2xl dmVsKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiBzdGF0aWMgdm9pZCB2bHZfY29tcHV0ZV9m aWZvKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCQkJc3RydWN0IHZsdl93bV9z dGF0ZSAqd21fc3RhdGUpCiB7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ YmFzZS5kZXY7Ci0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsKIAl1bnNpZ25lZCBpbnQgdG90 YWxfcmF0ZSA9IDA7CiAJY29uc3QgaW50IGZpZm9fc2l6ZSA9IDUxMiAtIDE7CiAJaW50IGZpZm9f ZXh0cmEsIGZpZm9fbGVmdCA9IGZpZm9fc2l6ZTsKIAlpbnQgcmF0ZVtJOTE1X01BWF9QTEFORVNd ID0ge307CiAJaW50IGk7CisJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlOwor CXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwogCi0JZm9yX2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0 YyhkZXYsIGNydGMsIHBsYW5lKSB7CisJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3Bs YW5lX3N0YXRlKHBsYW5lLCBwc3RhdGUsICZjc3RhdGUtPmJhc2UpIHsKIAkJc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpzdGF0ZSA9Ci0JCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFz ZS5zdGF0ZSk7CisJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwc3RhdGUpOworCQlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKmludGVsX3BsYW5lID0KKwkJCXRvX2ludGVsX3BsYW5lKHBsYW5lKTsKIAotCQlp ZiAocGxhbmUtPmJhc2UudHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCisJCWlmIChpbnRl bF9wbGFuZS0+YmFzZS50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikKIAkJCWNvbnRpbnVl OwogCiAJCWlmIChzdGF0ZS0+dmlzaWJsZSkgewogCQkJd21fc3RhdGUtPm51bV9hY3RpdmVfcGxh bmVzKys7Ci0JCQlyYXRlW3dtX3BsYW5lX2lkKHBsYW5lKV0gPQorCQkJcmF0ZVt3bV9wbGFuZV9p ZChpbnRlbF9wbGFuZSldID0KIAkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKHN0YXRlLT5iYXNlLmZi LT5waXhlbF9mb3JtYXQsIDApOwotCQkJdG90YWxfcmF0ZSArPSByYXRlW3dtX3BsYW5lX2lkKHBs YW5lKV07CisJCQl0b3RhbF9yYXRlICs9IHJhdGVbd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpXTsK IAkJfQogCX0KIApAQCAtMTA4OSwxOCArMTA5MiwxOSBAQCBzdGF0aWMgdm9pZCB2bHZfaW52ZXJ0 X3dtcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAl9CiB9CiAKLXN0YXRpYyBpbnQgdmx2X2Nv bXB1dGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKK3N0YXRpYyBpbnQgdmx2 X2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQogewogCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0Yyhjc3RhdGUtPmJhc2UuY3J0Yyk7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVjdCB2bHZf d21fc3RhdGUgKndtX3N0YXRlID0gJmNzdGF0ZS0+d20udmx2Lm9wdGltYWw7Ci0Jc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAlpbnQgc3JfZmlm b19zaXplID0gSU5URUxfSU5GTyhkZXYpLT5udW1fcGlwZXMgKiA1MTIgLSAxOwogCWludCBsZXZl bDsKKwljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGU7CiAKIAltZW1zZXQod21f c3RhdGUsIDAsIHNpemVvZigqd21fc3RhdGUpKTsKIAotCXdtX3N0YXRlLT5jeHNyID0gY3J0Yy0+ cGlwZSAhPSBQSVBFX0MgJiYgY3J0Yy0+d20uY3hzcl9hbGxvd2VkOworCXdtX3N0YXRlLT5jeHNy ID0gY3J0Yy0+cGlwZSAhPSBQSVBFX0M7CiAJd21fc3RhdGUtPm51bV9sZXZlbHMgPSB0b19pOTE1 KGRldiktPndtLm1heF9sZXZlbCArIDE7CiAKIAl3bV9zdGF0ZS0+bnVtX2FjdGl2ZV9wbGFuZXMg PSAwOwpAQCAtMTExNywzMSArMTEyMSwzMyBAQCBzdGF0aWMgaW50IHZsdl9jb21wdXRlX3dtKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiAJCX0KIAl9CiAKLQlmb3JfZWFjaF9pbnRl bF9wbGFuZV9vbl9jcnRjKGRldiwgY3J0YywgcGxhbmUpIHsKKwlkcm1fYXRvbWljX2NydGNfc3Rh dGVfZm9yX2VhY2hfcGxhbmVfc3RhdGUocGxhbmUsIHBzdGF0ZSwgJmNzdGF0ZS0+YmFzZSkgewog CQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlID0KLQkJCXRvX2ludGVsX3BsYW5lX3N0 YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKKwkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBzdGF0ZSk7 CisJCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPQorCQkJdG9faW50ZWxfcGxhbmUo cGxhbmUpOwogCiAJCWlmICghc3RhdGUtPnZpc2libGUpCiAJCQljb250aW51ZTsKIAogCQkvKiBu b3JtYWwgd2F0ZXJtYXJrcyAqLwogCQlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPCB3bV9zdGF0ZS0+ bnVtX2xldmVsczsgbGV2ZWwrKykgewotCQkJaW50IHdtID0gdmx2X2NvbXB1dGVfd21fbGV2ZWwo cGxhbmUsIGNzdGF0ZSwgc3RhdGUsIGxldmVsKTsKLQkJCWludCBtYXhfd20gPSBwbGFuZS0+YmFz ZS50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUiA/IDYzIDogNTExOworCQkJaW50IHdtID0g dmx2X2NvbXB1dGVfd21fbGV2ZWwoaW50ZWxfcGxhbmUsIGNzdGF0ZSwgc3RhdGUsIGxldmVsKTsK KwkJCWludCBtYXhfd20gPSBpbnRlbF9wbGFuZS0+YmFzZS50eXBlID09IERSTV9QTEFORV9UWVBF X0NVUlNPUiA/IDYzIDogNTExOwogCiAJCQlpZiAobGV2ZWwgPT0gMCAmJiB3bSA+IG1heF93bSkg ewogCQkJCURSTV9ERUJVR19LTVMoIlJlcXVlc3RlZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gIgog CQkJCSJleGNlZWRzIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlvbnNcbiIpOwogCQkJCURSTV9E RUJVR19LTVMoIlBsYW5lICVkLiVkOiBibG9ja3MgcmVxdWlyZWQgPSAldS8ldVxuIiwKLQkJCQkJ Y3J0Yy0+cGlwZSwKLQkJCQkJZHJtX3BsYW5lX2luZGV4KCZwbGFuZS0+YmFzZSksIHdtLCBtYXhf d20pOworCQkJCSAgICAgIGNydGMtPnBpcGUsCisJCQkJICAgICAgZHJtX3BsYW5lX2luZGV4KCZp bnRlbF9wbGFuZS0+YmFzZSksIHdtLCBtYXhfd20pOwogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJ fQogCi0JCQlpZiAod20gPiB3bV9zdGF0ZS0+Zmlmb19zaXplW3dtX3BsYW5lX2lkKHBsYW5lKV0p CisJCQlpZiAod20gPiB3bV9zdGF0ZS0+Zmlmb19zaXplW3dtX3BsYW5lX2lkKGludGVsX3BsYW5l KV0pCiAJCQkJYnJlYWs7CiAKLQkJCXN3aXRjaCAocGxhbmUtPmJhc2UudHlwZSkgeworCQkJc3dp dGNoIChpbnRlbF9wbGFuZS0+YmFzZS50eXBlKSB7CiAJCQkJaW50IHNwcml0ZTsKIAkJCWNhc2Ug RFJNX1BMQU5FX1RZUEVfQ1VSU09SOgogCQkJCXdtX3N0YXRlLT53bVtsZXZlbF0uY3Vyc29yID0g d207CkBAIC0xMTUwLDcgKzExNTYsNyBAQCBzdGF0aWMgaW50IHZsdl9jb21wdXRlX3dtKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiAJCQkJd21fc3RhdGUtPndtW2xldmVsXS5wcmlt YXJ5ID0gd207CiAJCQkJYnJlYWs7CiAJCQljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6Ci0J CQkJc3ByaXRlID0gcGxhbmUtPnBsYW5lOworCQkJCXNwcml0ZSA9IGludGVsX3BsYW5lLT5wbGFu ZTsKIAkJCQl3bV9zdGF0ZS0+d21bbGV2ZWxdLnNwcml0ZVtzcHJpdGVdID0gd207CiAJCQkJYnJl YWs7CiAJCQl9CkBAIC0xMTYyLDcgKzExNjgsNyBAQCBzdGF0aWMgaW50IHZsdl9jb21wdXRlX3dt KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiAJCQljb250aW51ZTsKIAogCQkvKiBt YXhmaWZvIHdhdGVybWFya3MgKi8KLQkJc3dpdGNoIChwbGFuZS0+YmFzZS50eXBlKSB7CisJCXN3 aXRjaCAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSkgewogCQkJaW50IHNwcml0ZSwgbGV2ZWw7CiAJ CWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOgogCQkJZm9yIChsZXZlbCA9IDA7IGxldmVsIDwg d21fc3RhdGUtPm51bV9sZXZlbHM7IGxldmVsKyspCkBAIC0xMTc2LDcgKzExODIsNyBAQCBzdGF0 aWMgaW50IHZsdl9jb21wdXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiAJ CQkJCSAgICB3bV9zdGF0ZS0+d21bbGV2ZWxdLnByaW1hcnkpOwogCQkJYnJlYWs7CiAJCWNhc2Ug RFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKLQkJCXNwcml0ZSA9IHBsYW5lLT5wbGFuZTsKKwkJCXNw cml0ZSA9IGludGVsX3BsYW5lLT5wbGFuZTsKIAkJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8IHdt X3N0YXRlLT5udW1fbGV2ZWxzOyBsZXZlbCsrKQogCQkJCXdtX3N0YXRlLT5zcltsZXZlbF0ucGxh bmUgPQogCQkJCQltaW4od21fc3RhdGUtPnNyW2xldmVsXS5wbGFuZSwKQEAgLTExOTYsNiArMTIw Miw2NSBAQCBzdGF0aWMgaW50IHZsdl9jb21wdXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUpCiAJcmV0dXJuIDA7CiB9CiAKKworc3RhdGljIGludCB2bHZfY29tcHV0ZV9pbnRl cm1lZGlhdGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICAgICAgc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMsCisJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpuZXdzdGF0ZSkKK3sKKwlzdHJ1Y3Qgdmx2X3dtX3N0YXRlICphID0gJm5ld3N0YXRlLT53bS52 bHYuaW50ZXJtZWRpYXRlOworCXN0cnVjdCB2bHZfd21fc3RhdGUgKmIgPSAmaW50ZWxfY3J0Yy0+ d20uYWN0aXZlLnZsdjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOworCWludCBsZXZlbCwgbWF4X2xldmVsID0gZGV2X3ByaXYtPndtLm1heF9s ZXZlbDsKKworCS8qCisJICogU3RhcnQgd2l0aCB0aGUgZmluYWwsIHRhcmdldCB3YXRlcm1hcmtz LCB0aGVuIGNvbWJpbmUgd2l0aCB0aGUKKwkgKiBjdXJyZW50bHkgYWN0aXZlIHdhdGVybWFya3Mg dG8gZ2V0IHZhbHVlcyB0aGF0IGFyZSBzYWZlIGJvdGggYmVmb3JlCisJICogYW5kIGFmdGVyIHRo ZSB2YmxhbmsuCisJICovCisJKmEgPSBuZXdzdGF0ZS0+d20udmx2Lm9wdGltYWw7CisKKwlpZiAo IW5ld3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgm bmV3c3RhdGUtPmJhc2UpKQorCQlyZXR1cm4gMDsKKworCWEtPm51bV9sZXZlbHMgPSBtaW4oYS0+ bnVtX2xldmVscywgYi0+bnVtX2xldmVscyk7CisJYS0+Y3hzciAmPSBiLT5jeHNyOworCisJZm9y IChsZXZlbCA9IDA7IGxldmVsIDwgYS0+bnVtX2xldmVsczsgbGV2ZWwrKykgeworCQlzdHJ1Y3Qg dmx2X3BpcGVfd20gKmFfd20gPSAmYS0+d21bbGV2ZWxdOworCQljb25zdCBzdHJ1Y3Qgdmx2X3Bp cGVfd20gKmJfd20gPSAmYi0+d21bbGV2ZWxdOworCQlzdHJ1Y3Qgdmx2X3NyX3dtICphX3NyID0g JmEtPnNyW2xldmVsXTsKKwkJY29uc3Qgc3RydWN0IHZsdl9zcl93bSAqYl9zciA9ICZiLT5zclts ZXZlbF07CisKKwkJYV93bS0+cHJpbWFyeSA9IG1pbihhX3dtLT5wcmltYXJ5LCBiX3dtLT5wcmlt YXJ5KTsKKwkJYV93bS0+c3ByaXRlWzBdID0gbWluKGFfd20tPnNwcml0ZVswXSwgYl93bS0+c3By aXRlWzBdKTsKKwkJYV93bS0+c3ByaXRlWzFdID0gbWluKGFfd20tPnNwcml0ZVsxXSwgYl93bS0+ c3ByaXRlWzFdKTsKKwkJYV93bS0+Y3Vyc29yID0gbWluKGFfd20tPmN1cnNvciwgYl93bS0+Y3Vy c29yKTsKKworCQlpZiAoYS0+Y3hzcikgeworCQkJYV9zci0+cGxhbmUgPSBtaW4oYV9zci0+cGxh bmUsIGJfc3ItPnBsYW5lKTsKKwkJCWFfc3ItPmN1cnNvciA9IG1pbihhX3NyLT5jdXJzb3IsIGJf c3ItPmN1cnNvcik7CisJCX0gZWxzZSB7CisJCQlhX3NyLT5wbGFuZSA9IGJfc3ItPnBsYW5lOwor CQkJYV9zci0+Y3Vyc29yID0gYl9zci0+Y3Vyc29yOworCQl9CisJfQorCisJLyogcmVzZXQgdGhl IGludmFsaWQgbGV2ZWxzICovCisJZm9yIChsZXZlbCA9IGEtPm51bV9sZXZlbHM7IGxldmVsIDw9 IG1heF9sZXZlbDsgbGV2ZWwrKykgeworCQltZW1zZXQoJmEtPndtW2xldmVsXSwgMCwgc2l6ZW9m KHN0cnVjdCB2bHZfcGlwZV93bSkpOworCQltZW1zZXQoJmEtPnNyW2xldmVsXSwgMCwgc2l6ZW9m KHN0cnVjdCB2bHZfc3Jfd20pKTsKKwl9CisKKwkvKgorCSAqIElmIG91ciBpbnRlcm1lZGlhdGUg V00gYXJlIGlkZW50aWNhbCB0byB0aGUgZmluYWwgV00sIHRoZW4gd2UgY2FuCisJICogb21pdCB0 aGUgcG9zdC12YmxhbmsgcHJvZ3JhbW1pbmc7IG9ubHkgdXBkYXRlIGlmIGl0J3MgZGlmZmVyZW50 LgorCSAqLworCWlmIChtZW1jbXAoYSwgJm5ld3N0YXRlLT53bS5pbGsub3B0aW1hbCwgc2l6ZW9m KCphKSkgPT0gMCkKKwkJbmV3c3RhdGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUgPSBmYWxzZTsK KworCXJldHVybiAwOworfQorCiAjZGVmaW5lIFZMVl9GSUZPKHBsYW5lLCB2YWx1ZSkgXAogCSgo KHZhbHVlKSA8PCBEU1BBUkJfICMjIHBsYW5lICMjIF9TSElGVF9WTFYpICYgRFNQQVJCXyAjIyBw bGFuZSAjIyBfTUFTS19WTFYpCiAKQEAgLTEzMzAsMTEgKzEzOTUsNyBAQCBzdGF0aWMgdm9pZCB2 bHZfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAllbnVtIHBpcGUgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7CiAJc3RydWN0IHZsdl93bV92YWx1ZXMgd20gPSB7fTsKIAotCXZsdl9j b21wdXRlX3dtKGludGVsX2NydGMtPmNvbmZpZyk7Ci0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPndt LndtX211dGV4KTsKLQlpbnRlbF9jcnRjLT53bS5hY3RpdmUudmx2ID0gaW50ZWxfY3J0Yy0+Y29u ZmlnLT53bS52bHYub3B0aW1hbDsKIAl2bHZfbWVyZ2Vfd20oZGV2LCAmd20pOwotCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKIAogCWlmIChtZW1jbXAoJmRldl9wcml2LT53 bS52bHYsICZ3bSwgc2l6ZW9mKHdtKSkgPT0gMCkgewogCQkvKiBGSVhNRSBzaG91bGQgYmUgcGFy dCBvZiBjcnRjIGF0b21pYyBjb21taXQgKi8KQEAgLTEzNzgsNiArMTQzOSwyOSBAQCBzdGF0aWMg dm9pZCB2bHZfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlkZXZfcHJpdi0+d20u dmx2ID0gd207CiB9CiAKKworc3RhdGljIHZvaWQgdmx2X2luaXRpYWxfd2F0ZXJtYXJrcyhzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3N0YXRlLT5iYXNlLmNydGMtPmRldik7CisJc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsK KworCW11dGV4X2xvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7CisJaW50ZWxfY3J0Yy0+d20u YWN0aXZlLnZsdiA9IGNzdGF0ZS0+d20udmx2LmludGVybWVkaWF0ZTsKKwl2bHZfdXBkYXRlX3dt KGNzdGF0ZS0+YmFzZS5jcnRjKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT53bS53bV9tdXRl eCk7Cit9CisKK3N0YXRpYyB2b2lkIHZsdl9vcHRpbWl6ZV93YXRlcm1hcmtzKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjc3RhdGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5iYXNlLmNydGMpOworCisJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKKwlpbnRlbF9jcnRjLT53bS5hY3RpdmUu dmx2ID0gY3N0YXRlLT53bS52bHYub3B0aW1hbDsKKwl2bHZfdXBkYXRlX3dtKGNzdGF0ZS0+YmFz ZS5jcnRjKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7Cit9CisKICNk ZWZpbmUgc2luZ2xlX3BsYW5lX2VuYWJsZWQobWFzaykgaXNfcG93ZXJfb2ZfMihtYXNrKQogCiBz dGF0aWMgdm9pZCBnNHhfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKQEAgLTc0MDYs MTIgKzc0OTAsMTYgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBkaXNwbGF5IHBsYW5lIGxhdGVuY3ku ICIKIAkJCQkgICAgICAiRGlzYWJsZSBDeFNSXG4iKTsKIAkJfQotCX0gZWxzZSBpZiAoSVNfQ0hF UlJZVklFVyhkZXYpKSB7Ci0JCXZsdl9zZXR1cF93bV9sYXRlbmN5KGRldik7Ci0JCWRldl9wcml2 LT5kaXNwbGF5LnVwZGF0ZV93bSA9IHZsdl91cGRhdGVfd207Ci0JfSBlbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldikpIHsKKwl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2KSB8fCBJU19WQUxM RVlWSUVXKGRldikpIHsKIAkJdmx2X3NldHVwX3dtX2xhdGVuY3koZGV2KTsKLQkJZGV2X3ByaXYt PmRpc3BsYXkudXBkYXRlX3dtID0gdmx2X3VwZGF0ZV93bTsKKwkJZGV2X3ByaXYtPmRpc3BsYXku Y29tcHV0ZV9waXBlX3dtID0KKwkJCXZsdl9jb21wdXRlX3BpcGVfd207CisJCWRldl9wcml2LT5k aXNwbGF5LmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtID0KKwkJCXZsdl9jb21wdXRlX2ludGVybWVk aWF0ZV93bTsKKwkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzID0KKwkJCXZs dl9pbml0aWFsX3dhdGVybWFya3M7CisJCWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVy bWFya3MgPQorCQkJdmx2X29wdGltaXplX3dhdGVybWFya3M7CiAJfSBlbHNlIGlmIChJU19QSU5F VklFVyhkZXYpKSB7CiAJCWlmICghaW50ZWxfZ2V0X2N4c3JfbGF0ZW5jeShJU19QSU5FVklFV19H KGRldiksCiAJCQkJCSAgICBkZXZfcHJpdi0+aXNfZGRyMywKLS0gCjEuOC4wLjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=