From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v2] drm/i915: Small display interrupt handlers tidy Date: Fri, 6 May 2016 14:48:28 +0100 Message-ID: <1462542508-13702-1-git-send-email-tvrtko.ursulin@linux.intel.com> References: <20160506112755.GG7026@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 8227D6EAD9 for ; Fri, 6 May 2016 13:48:35 +0000 (UTC) In-Reply-To: <20160506112755.GG7026@nuc-i3427.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkkgaGF2ZSBu b3RpY2VkIHNvbWUgb2Ygb3VyIGludGVycnVwdCBoYW5kbGVycyB1c2UgYm90aCBkZXYgYW5kCmRl dl9wcml2IHdoaWxlIHRoZXkgY291bGQgZ2V0IGF3YXkgd2l0aCBvbmx5IGRldl9wcml2IGluIHRo ZQpodWdlIG1ham9yaXR5IG9mIGNhc2VzLgoKVGlkeWluZyB0aGF0IHVwIGhhZCBhIGNhc2NhZGlu ZyBlZmZlY3Qgb24gY2hhbmdpbmcgZnVuY3Rpb25zCnByb3RvdHlwZXMsIHNvIHJlbGF0aXZlbHkg YmlnIGNodXJuIGZhY3RvciwgYnV0IEkgdGhpbmsgaXQgaXMKZm9yIHRoZSBiZXR0ZXIuCgpGb3Ig ZXhhbXBsZSBldmVuIHdoZXJlIGNoYW5nZXMgY2FzY2FkZSBvdXQgb2YgaTkxNV9pcnEuYywgZm9y CmZ1bmN0aW9ucyBwcmVmaXhlZCB3aXRoIGludGVsXywgZ2VuWF8gb3IgPHBsYXQ+XywgaXQgbWFr ZXMgbW9yZQpzZW5zZSB0byB0YWtlIGRldl9wcml2IGRpcmVjdGx5IGFueXdheS4KClRoaXMgYWxs b3dzIHVzIHRvIGVsaW1pbmF0ZSBsb2NhbCB2YXJpYWJsZXMgYW5kIGludGVybWl4ZWQgdXNhZ2UK b2YgZGV2IGFuZCBkZXZfcHJpdiB3aGVyZSBvbmx5IG9uZSBpcyBnb29kIGVub3VnaC4KCkVuZCBy ZXN1bHQgaXMgc2hyaW5rYWdlIG9mIGJvdGggc291cmNlIGFuZCB0aGUgcmVzdWx0aW5nIGJpbmFy eS4KCmk5MTUua286CgogLSAudGV4dCAgICAgICAgIDAwMGIwODk5CiArIC50ZXh0ICAgICAgICAg MDAwYjA2MTkKCk9yIGlmIHdlIGxvb2sgYXQgdGhlIEdlbjggZGlzcGxheSBpcnEgY2hhaW46Cgog LTAwMDAwMDAwMDAwMDA2YWQgdCBnZW44X2lycV9oYW5kbGVyCiArMDAwMDAwMDAwMDAwMDY2MyB0 IGdlbjhfaXJxX2hhbmRsZXIKICAgLTAwMDAwMDAwMDAwMDAwMjggVCBpbnRlbF9vcHJlZ2lvbl9h c2xlX2ludHIKICAgKzAwMDAwMDAwMDAwMDAwMjQgVCBpbnRlbF9vcHJlZ2lvbl9hc2xlX2ludHIK ICAgLTAwMDAwMDAwMDAwMDAwOGMgdCBpbGtfaHBkX2lycV9oYW5kbGVyCiAgICswMDAwMDAwMDAw MDAwMDdmIHQgaWxrX2hwZF9pcnFfaGFuZGxlcgogICAtMDAwMDAwMDAwMDAwMDExNiBUIGludGVs X2NoZWNrX3BhZ2VfZmxpcAogICArMDAwMDAwMDAwMDAwMDExMiBUIGludGVsX2NoZWNrX3BhZ2Vf ZmxpcAogICAtMDAwMDAwMDAwMDAwMDExYSBUIGludGVsX3ByZXBhcmVfcGFnZV9mbGlwCiAgICsw MDAwMDAwMDAwMDAwMTE5IFQgaW50ZWxfcHJlcGFyZV9wYWdlX2ZsaXAKICAgLTAwMDAwMDAwMDAw MDAwMTQgVCBpbnRlbF9maW5pc2hfcGFnZV9mbGlwX3BsYW5lCiAgICswMDAwMDAwMDAwMDAwMDEz IFQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9wbGFuZQogICAtMDAwMDAwMDAwMDAwMDA1MyB0IGhz d19waXBlX2NyY19pcnFfaGFuZGxlcgogICArMDAwMDAwMDAwMDAwMDA0YyB0IGhzd19waXBlX2Ny Y19pcnFfaGFuZGxlcgogICAtMDAwMDAwMDAwMDAwMDIyZSB0IGNwdF9pcnFfaGFuZGxlcgogICAr MDAwMDAwMDAwMDAwMDIxMyB0IGNwdF9pcnFfaGFuZGxlcgoKU28gc21hbGwgc2hyaW5rYWdlIGJ1 dCBpdCBpcyBhbGwgZmFzdCBwYXRocyBzbyBkb2Vzbid0IGhhcm0uCgpTaXR1YXRpb24gaXMgc2lt aWxhciBpbiBvdGhlciBpbnRlcnJ1cHQgaGFuZGxlcnMgYXMgd2VsbC4KCnYyOiBUaWR5IGludGVs X3F1ZXVlX3Jwc19ib29zdF9mb3JfcmVxdWVzdCBhcyB3ZWxsLiAoQ2hyaXMgV2lsc29uKQoKU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6 IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpSZXZpZXdlZC1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYyAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICB8ICAxMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAg ICAgICB8IDM4NiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgIHwgIDM1ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggICAgICB8ICAxNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aG90cGx1Zy5jICB8ICAxMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24u YyB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICB8ICA0MCAr Ky0tCiA4IGZpbGVzIGNoYW5nZWQsIDIzNyBpbnNlcnRpb25zKCspLCAyNzEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggOWZkMjIxYzk3Mjc1Li5jYzM4NjYxNTczYmYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNzY4LDcgKzc2OCw3IEBAIHN0YXRpYyBpbnQg aTkxNV9kcm1fcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAlzcGluX2xvY2tfaXJx KCZkZXZfcHJpdi0+aXJxX2xvY2spOwogCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3Nl dHVwKQotCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwKGRldik7CisJCWRldl9wcml2 LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAoZGV2X3ByaXYpOwogCXNwaW5fdW5sb2NrX2lycSgmZGV2 X3ByaXYtPmlycV9sb2NrKTsKIAogCWludGVsX2RwX21zdF9yZXN1bWUoZGV2KTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCmluZGV4IGQ1NDk2YWJhMWNkNS4uZWE1ZWZhZjcyMTQ0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKQEAgLTYxMiw3ICs2MTIsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxh eV9mdW5jcyB7CiAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJICB1aW50MzJfdCBmbGFncyk7Ci0J dm9pZCAoKmhwZF9pcnFfc2V0dXApKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworCXZvaWQgKCpo cGRfaXJxX3NldHVwKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCS8qIGNs b2NrIHVwZGF0ZXMgZm9yIG1vZGUgc2V0ICovCiAJLyogY3Vyc29yIHVwZGF0ZXMgKi8KIAkvKiBy ZW5kZXIgY2xvY2sgaW5jcmVhc2UvZGVjcmVhc2UgKi8KQEAgLTI3ODgsNyArMjc4OCw4IEBAIGV4 dGVybiB2b2lkIGk5MTVfdXBkYXRlX2dmeF92YWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKIGludCB2bHZfZm9yY2VfZ2Z4X2Nsb2NrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgYm9vbCBvbik7CiAKIC8qIGludGVsX2hvdHBsdWcuYyAqLwotdm9pZCBpbnRl bF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHBpbl9tYXNrLCB1 MzIgbG9uZ19tYXNrKTsKK3ZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgIHUzMiBwaW5fbWFzaywgdTMyIGxvbmdfbWFzayk7 CiB2b2lkIGludGVsX2hwZF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CiB2b2lkIGludGVsX2hwZF9pbml0X3dvcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKIHZvaWQgaW50ZWxfaHBkX2NhbmNlbF93b3JrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CkBAIC0zNDkyLDcgKzM0OTMsNyBAQCBib29sIGludGVsX2Jpb3NfaXNfcG9y dF9ocGRfaW52ZXJ0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogZXh0ZXJu IGludCBpbnRlbF9vcHJlZ2lvbl9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVy biB2b2lkIGludGVsX29wcmVnaW9uX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRl cm4gdm9pZCBpbnRlbF9vcHJlZ2lvbl9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotZXh0 ZXJuIHZvaWQgaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OworZXh0ZXJuIHZvaWQgaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gaW50IGludGVsX29wcmVnaW9uX25vdGlmeV9lbmNv ZGVyKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAogCQkJCQkgYm9vbCBlbmFi bGUpOwogZXh0ZXJuIGludCBpbnRlbF9vcHJlZ2lvbl9ub3RpZnlfYWRhcHRlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LApAQCAtMzUwMiw3ICszNTAzLDkgQEAgZXh0ZXJuIGludCBpbnRlbF9vcHJl Z2lvbl9nZXRfcGFuZWxfdHlwZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHN0YXRpYyBpbmxp bmUgaW50IGludGVsX29wcmVnaW9uX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpIHsgcmV0 dXJuIDA7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9vcHJlZ2lvbl9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpIHsgcmV0dXJuOyB9CiBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfb3By ZWdpb25fZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KSB7IHJldHVybjsgfQotc3RhdGljIGlu bGluZSB2b2lkIGludGVsX29wcmVnaW9uX2FzbGVfaW50cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KSB7IHJldHVybjsgfQorc3RhdGljIGlubGluZSB2b2lkIGludGVsX29wcmVnaW9uX2FzbGVfaW50 cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7Cit9CiBzdGF0aWMgaW5saW5l IGludAogaW50ZWxfb3ByZWdpb25fbm90aWZ5X2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIg KmludGVsX2VuY29kZXIsIGJvb2wgZW5hYmxlKQogewpAQCAtMzUzOCw3ICszNTQxLDcgQEAgZXh0 ZXJuIGludCBpbnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgYm9vbCBzdGF0ZSk7CiBleHRlcm4gdm9pZCBpbnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGk5MTVfcmVkaXNhYmxlX3ZnYShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGk5MTVfcmVkaXNhYmxlX3ZnYV9wb3dlcl9v bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKLWV4dGVybiBib29sIGlyb25sYWtlX3NldF9kcnBz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IHZhbCk7CitleHRlcm4gYm9vbCBpcm9ubGFrZV9z ZXRfZHJwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCk7CiBleHRl cm4gdm9pZCBpbnRlbF9pbml0X3BjaF9yZWZjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBl eHRlcm4gdm9pZCBpbnRlbF9zZXRfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IHZhbCk7 CiBleHRlcm4gdm9pZCBpbnRlbF9zZXRfbWVtb3J5X2N4c3Ioc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5kZXggMmY2ZmQzM2MwN2JhLi4x MDI4MDQ3MTA4ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpAQCAtMzQ5LDEwICszNDksOCBA QCB2b2lkIGdlbjZfcmVzZXRfcnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiB9CiAKLXZvaWQgZ2VuNl9l bmFibGVfcnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3ZvaWQgZ2VuNl9l bmFibGVfcnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog ewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Ci0KIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwogCiAJV0FSTl9PTihkZXZf cHJpdi0+cnBzLnBtX2lpcik7CkBAIC0zODIsMTAgKzM4MCw4IEBAIHUzMiBnZW42X3Nhbml0aXpl X3Jwc19wbV9tYXNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1hc2sp CiAJcmV0dXJuIG1hc2s7CiB9CiAKLXZvaWQgZ2VuNl9kaXNhYmxlX3Jwc19pbnRlcnJ1cHRzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCit2b2lkIGdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0cyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQogCXNwaW5fbG9ja19pcnEoJmRl dl9wcml2LT5pcnFfbG9jayk7CiAJZGV2X3ByaXYtPnJwcy5pbnRlcnJ1cHRzX2VuYWJsZWQgPSBm YWxzZTsKIAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CkBAIC00MDIsNyAr Mzk4LDcgQEAgdm9pZCBnZW42X2Rpc2FibGVfcnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAogCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIAotCXN5 bmNocm9uaXplX2lycShkZXYtPmlycSk7CisJc3luY2hyb25pemVfaXJxKGRldl9wcml2LT5kZXYt PmlycSk7CiB9CiAKIC8qKgpAQCAtNjA3LDE3ICs2MDMsMTUgQEAgaTkxNV9kaXNhYmxlX3BpcGVz dGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUsCiAg KiBpOTE1X2VuYWJsZV9hc2xlX3BpcGVzdGF0IC0gZW5hYmxlIEFTTEUgcGlwZXN0YXQgZm9yIE9w UmVnaW9uCiAgKiBAZGV2OiBkcm0gZGV2aWNlCiAgKi8KLXN0YXRpYyB2b2lkIGk5MTVfZW5hYmxl X2FzbGVfcGlwZXN0YXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIGk5MTVf ZW5hYmxlX2FzbGVfcGlwZXN0YXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog ewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Ci0KLQlpZiAoIWRldl9wcml2LT5vcHJlZ2lvbi5hc2xlIHx8ICFJU19NT0JJTEUoZGV2KSkKKwlp ZiAoIWRldl9wcml2LT5vcHJlZ2lvbi5hc2xlIHx8ICFJU19NT0JJTEUoZGV2X3ByaXYpKQogCQly ZXR1cm47CiAKIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwogCiAJaTkxNV9l bmFibGVfcGlwZXN0YXQoZGV2X3ByaXYsIFBJUEVfQiwgUElQRV9MRUdBQ1lfQkxDX0VWRU5UX1NU QVRVUyk7Ci0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpCisJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNCkKIAkJaTkxNV9lbmFibGVfcGlwZXN0YXQoZGV2X3ByaXYsIFBJUEVfQSwK IAkJCQkgICAgIFBJUEVfTEVHQUNZX0JMQ19FVkVOVF9TVEFUVVMpOwogCkBAIC03NTAsNyArNzQ0 LDcgQEAgc3RhdGljIGludCBfX2ludGVsX2dldF9jcnRjX3NjYW5saW5lKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQogCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQog CQl2dG90YWwgLz0gMjsKIAotCWlmIChJU19HRU4yKGRldikpCisJaWYgKElTX0dFTjIoZGV2X3By aXYpKQogCQlwb3NpdGlvbiA9IEk5MTVfUkVBRF9GVyhQSVBFRFNMKHBpcGUpKSAmIERTTF9MSU5F TUFTS19HRU4yOwogCWVsc2UKIAkJcG9zaXRpb24gPSBJOTE1X1JFQURfRlcoUElQRURTTChwaXBl KSkgJiBEU0xfTElORU1BU0tfR0VOMzsKQEAgLTc2Nyw3ICs3NjEsNyBAQCBzdGF0aWMgaW50IF9f aW50ZWxfZ2V0X2NydGNfc2NhbmxpbmUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJICogcHJv YmxlbS4gIFdlIG1heSBuZWVkIHRvIGV4dGVuZCB0aGlzIHRvIGluY2x1ZGUgb3RoZXIgcGxhdGZv cm1zLAogCSAqIGJ1dCBzbyBmYXIgdGVzdGluZyBvbmx5IHNob3dzIHRoZSBwcm9ibGVtIG9uIEhT Vy4KIAkgKi8KLQlpZiAoSEFTX0RESShkZXYpICYmICFwb3NpdGlvbikgeworCWlmIChIQVNfRERJ KGRldl9wcml2KSAmJiAhcG9zaXRpb24pIHsKIAkJaW50IGksIHRlbXA7CiAKIAkJZm9yIChpID0g MDsgaSA8IDEwMDsgaSsrKSB7CkBAIC04MzUsNyArODI5LDcgQEAgc3RhdGljIGludCBpOTE1X2dl dF9jcnRjX3NjYW5vdXRwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBp cGUsCiAJaWYgKHN0aW1lKQogCQkqc3RpbWUgPSBrdGltZV9nZXQoKTsKIAotCWlmIChJU19HRU4y KGRldikgfHwgSVNfRzRYKGRldikgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkgeworCWlm IChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZf cHJpdikgPj0gNSkgewogCQkvKiBObyBvYnZpb3VzIHBpeGVsY291bnQgcmVnaXN0ZXIuIE9ubHkg cXVlcnkgdmVydGljYWwKIAkJICogc2Nhbm91dCBwb3NpdGlvbiBmcm9tIERpc3BsYXkgc2NhbiBs aW5lIHJlZ2lzdGVyLgogCQkgKi8KQEAgLTg5Nyw3ICs4OTEsNyBAQCBzdGF0aWMgaW50IGk5MTVf Z2V0X2NydGNfc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQg cGlwZSwKIAllbHNlCiAJCXBvc2l0aW9uICs9IHZ0b3RhbCAtIHZibF9lbmQ7CiAKLQlpZiAoSVNf R0VOMihkZXYpIHx8IElTX0c0WChkZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpIHsK KwlpZiAoSVNfR0VOMihkZXZfcHJpdikgfHwgSVNfRzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDUpIHsKIAkJKnZwb3MgPSBwb3NpdGlvbjsKIAkJKmhwb3MgPSAwOwogCX0g ZWxzZSB7CkBAIC05NTUsOSArOTQ5LDggQEAgc3RhdGljIGludCBpOTE1X2dldF92YmxhbmtfdGlt ZXN0YW1wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAogCQkJCQkJ ICAgICAmY3J0Yy0+aHdtb2RlKTsKIH0KIAotc3RhdGljIHZvaWQgaXJvbmxha2VfcnBzX2NoYW5n ZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIHZvaWQgaXJvbmxh a2VfcnBzX2NoYW5nZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKIAl1MzIgYnVzeV91cCwgYnVzeV9kb3duLCBtYXhfYXZnLCBtaW5fYXZnOwogCXU4IG5l d19kZWxheTsKIApAQCAtOTg2LDcgKzk3OSw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3Jwc19j aGFuZ2VfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCW5ld19kZWxheSA9 IGRldl9wcml2LT5pcHMubWluX2RlbGF5OwogCX0KIAotCWlmIChpcm9ubGFrZV9zZXRfZHJwcyhk ZXYsIG5ld19kZWxheSkpCisJaWYgKGlyb25sYWtlX3NldF9kcnBzKGRldl9wcml2LCBuZXdfZGVs YXkpKQogCQlkZXZfcHJpdi0+aXBzLmN1cl9kZWxheSA9IG5ld19kZWxheTsKIAogCXNwaW5fdW5s b2NrKCZtY2hkZXZfbG9jayk7CkBAIC0xNTA2LDI3ICsxNDk5LDIzIEBAIHN0YXRpYyB2b2lkIGlu dGVsX2dldF9ocGRfcGlucyh1MzIgKnBpbl9tYXNrLCB1MzIgKmxvbmdfbWFzaywKIAogfQogCi1z dGF0aWMgdm9pZCBnbWJ1c19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3Rh dGljIHZvaWQgZ21idXNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Ci0KIAl3YWtlX3VwX2FsbCgmZGV2X3ByaXYtPmdtYnVzX3dhaXRfcXVldWUpOwogfQog Ci1zdGF0aWMgdm9pZCBkcF9hdXhfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikK K3N0YXRpYyB2b2lkIGRwX2F1eF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKLQogCXdha2VfdXBfYWxsKCZkZXZfcHJpdi0+Z21idXNfd2FpdF9xdWV1ZSk7 CiB9CiAKICNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKLXN0YXRpYyB2b2lkIGRpc3BsYXlf cGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBp cGUsCitzdGF0aWMgdm9pZCBkaXNwbGF5X3BpcGVfY3JjX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJIGVudW0gcGlwZSBwaXBlLAogCQkJCQkgdWlu dDMyX3QgY3JjMCwgdWludDMyX3QgY3JjMSwKIAkJCQkJIHVpbnQzMl90IGNyYzIsIHVpbnQzMl90 IGNyYzMsCiAJCQkJCSB1aW50MzJfdCBjcmM0KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX3BpcGVfY3JjICpw aXBlX2NyYyA9ICZkZXZfcHJpdi0+cGlwZV9jcmNbcGlwZV07CiAJc3RydWN0IGludGVsX3BpcGVf Y3JjX2VudHJ5ICplbnRyeTsKIAlpbnQgaGVhZCwgdGFpbDsKQEAgLTE1NTAsNyArMTUzOSw4IEBA IHN0YXRpYyB2b2lkIGRpc3BsYXlfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgZW51bSBwaXBlIHBpcGUsCiAKIAllbnRyeSA9ICZwaXBlX2NyYy0+ZW50cmllc1to ZWFkXTsKIAotCWVudHJ5LT5mcmFtZSA9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIo ZGV2LCBwaXBlKTsKKwllbnRyeS0+ZnJhbWUgPSBkZXZfcHJpdi0+ZGV2LT5kcml2ZXItPmdldF92 YmxhbmtfY291bnRlcihkZXZfcHJpdi0+ZGV2LAorCQkJCQkJCQkgcGlwZSk7CiAJZW50cnktPmNy Y1swXSA9IGNyYzA7CiAJZW50cnktPmNyY1sxXSA9IGNyYzE7CiAJZW50cnktPmNyY1syXSA9IGNy YzI7CkBAIC0xNTY2LDI3ICsxNTU2LDI2IEBAIHN0YXRpYyB2b2lkIGRpc3BsYXlfcGlwZV9jcmNf aXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsCiB9CiAj ZWxzZQogc3RhdGljIGlubGluZSB2b2lkCi1kaXNwbGF5X3BpcGVfY3JjX2lycV9oYW5kbGVyKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAorZGlzcGxheV9waXBlX2NyY19p cnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgIGVu dW0gcGlwZSBwaXBlLAogCQkJICAgICB1aW50MzJfdCBjcmMwLCB1aW50MzJfdCBjcmMxLAogCQkJ ICAgICB1aW50MzJfdCBjcmMyLCB1aW50MzJfdCBjcmMzLAogCQkJICAgICB1aW50MzJfdCBjcmM0 KSB7fQogI2VuZGlmCiAKIAotc3RhdGljIHZvaWQgaHN3X3BpcGVfY3JjX2lycV9oYW5kbGVyKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlKQorc3RhdGljIHZvaWQgaHN3X3Bp cGVfY3JjX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ CQkgICAgIGVudW0gcGlwZSBwaXBlKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0KLQlkaXNwbGF5X3BpcGVfY3JjX2lycV9oYW5kbGVy KGRldiwgcGlwZSwKKwlkaXNwbGF5X3BpcGVfY3JjX2lycV9oYW5kbGVyKGRldl9wcml2LCBwaXBl LAogCQkJCSAgICAgSTkxNV9SRUFEKFBJUEVfQ1JDX1JFU18xX0lWQihwaXBlKSksCiAJCQkJICAg ICAwLCAwLCAwLCAwKTsKIH0KIAotc3RhdGljIHZvaWQgaXZiX3BpcGVfY3JjX2lycV9oYW5kbGVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlKQorc3RhdGljIHZvaWQgaXZi X3BpcGVfY3JjX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK KwkJCQkgICAgIGVudW0gcGlwZSBwaXBlKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0KLQlkaXNwbGF5X3BpcGVfY3JjX2lycV9oYW5k bGVyKGRldiwgcGlwZSwKKwlkaXNwbGF5X3BpcGVfY3JjX2lycV9oYW5kbGVyKGRldl9wcml2LCBw aXBlLAogCQkJCSAgICAgSTkxNV9SRUFEKFBJUEVfQ1JDX1JFU18xX0lWQihwaXBlKSksCiAJCQkJ ICAgICBJOTE1X1JFQUQoUElQRV9DUkNfUkVTXzJfSVZCKHBpcGUpKSwKIAkJCQkgICAgIEk5MTVf UkVBRChQSVBFX0NSQ19SRVNfM19JVkIocGlwZSkpLApAQCAtMTU5NCwyMiArMTU4MywyMiBAQCBz dGF0aWMgdm9pZCBpdmJfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgZW51bSBwaXBlIHBpcGUpCiAJCQkJICAgICBJOTE1X1JFQUQoUElQRV9DUkNfUkVTXzVfSVZC KHBpcGUpKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGk5eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpCitzdGF0aWMgdm9pZCBpOXh4X3Bp cGVfY3JjX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ CQkgICAgICBlbnVtIHBpcGUgcGlwZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXVpbnQzMl90IHJlczEsIHJlczI7CiAKLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gMykKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAz KQogCQlyZXMxID0gSTkxNV9SRUFEKFBJUEVfQ1JDX1JFU19SRVMxX0k5MTUocGlwZSkpOwogCWVs c2UKIAkJcmVzMSA9IDA7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSB8fCBJU19H NFgoZGV2KSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1IHx8IElTX0c0WChkZXZfcHJp dikpCiAJCXJlczIgPSBJOTE1X1JFQUQoUElQRV9DUkNfUkVTX1JFUzJfRzRYKHBpcGUpKTsKIAll bHNlCiAJCXJlczIgPSAwOwogCi0JZGlzcGxheV9waXBlX2NyY19pcnFfaGFuZGxlcihkZXYsIHBp cGUsCisJZGlzcGxheV9waXBlX2NyY19pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGlwZSwKIAkJCQkg ICAgIEk5MTVfUkVBRChQSVBFX0NSQ19SRVNfUkVEKHBpcGUpKSwKIAkJCQkgICAgIEk5MTVfUkVB RChQSVBFX0NSQ19SRVNfR1JFRU4ocGlwZSkpLAogCQkJCSAgICAgSTkxNV9SRUFEKFBJUEVfQ1JD X1JFU19CTFVFKHBpcGUpKSwKQEAgLTE2NDMsMTggKzE2MzIsMTUgQEAgc3RhdGljIHZvaWQgZ2Vu Nl9ycHNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIg cG1faWlyKQogCX0KIH0KIAotc3RhdGljIGJvb2wgaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlKQorc3RhdGljIGJvb2wgaW50ZWxf cGlwZV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ CQkgICAgIGVudW0gcGlwZSBwaXBlKQogewotCWlmICghZHJtX2hhbmRsZV92YmxhbmsoZGV2LCBw aXBlKSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JcmV0dXJuIHRydWU7CisJcmV0dXJuIGRybV9oYW5k bGVfdmJsYW5rKGRldl9wcml2LT5kZXYsIHBpcGUpOwogfQogCi1zdGF0aWMgdm9pZCB2YWxsZXl2 aWV3X3BpcGVzdGF0X2lycV9hY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGlpciwKLQkJ CQkJdTMyIHBpcGVfc3RhdHNbSTkxNV9NQVhfUElQRVNdKQorc3RhdGljIHZvaWQgdmFsbGV5dmll d19waXBlc3RhdF9pcnFfYWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ CQkJdTMyIGlpciwgdTMyIHBpcGVfc3RhdHNbSTkxNV9NQVhfUElQRVNdKQogewotCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJaW50IHBpcGU7 CiAKIAlzcGluX2xvY2soJmRldl9wcml2LT5pcnFfbG9jayk7CkBAIC0xNzEwLDMxICsxNjk2LDMw IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1MzIgaWlyLAogCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+aXJxX2xvY2spOwog fQogCi1zdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3BpcGVzdGF0X2lycV9oYW5kbGVyKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCitzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3BpcGVzdGF0X2lycV9oYW5k bGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJICAgIHUzMiBwaXBl X3N0YXRzW0k5MTVfTUFYX1BJUEVTXSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRldik7CiAJZW51bSBwaXBlIHBpcGU7CiAKIAlmb3JfZWFjaF9waXBl KGRldl9wcml2LCBwaXBlKSB7CiAJCWlmIChwaXBlX3N0YXRzW3BpcGVdICYgUElQRV9TVEFSVF9W QkxBTktfSU5URVJSVVBUX1NUQVRVUyAmJgotCQkgICAgaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5r KGRldiwgcGlwZSkpCi0JCQlpbnRlbF9jaGVja19wYWdlX2ZsaXAoZGV2LCBwaXBlKTsKKwkJICAg IGludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXZfcHJpdiwgcGlwZSkpCisJCQlpbnRlbF9jaGVj a19wYWdlX2ZsaXAoZGV2X3ByaXYsIHBpcGUpOwogCiAJCWlmIChwaXBlX3N0YXRzW3BpcGVdICYg UExBTkVfRkxJUF9ET05FX0lOVF9TVEFUVVNfVkxWKSB7Ci0JCQlpbnRlbF9wcmVwYXJlX3BhZ2Vf ZmxpcChkZXYsIHBpcGUpOwotCQkJaW50ZWxfZmluaXNoX3BhZ2VfZmxpcChkZXYsIHBpcGUpOwor CQkJaW50ZWxfcHJlcGFyZV9wYWdlX2ZsaXAoZGV2X3ByaXYsIHBpcGUpOworCQkJaW50ZWxfZmlu aXNoX3BhZ2VfZmxpcChkZXZfcHJpdiwgcGlwZSk7CiAJCX0KIAogCQlpZiAocGlwZV9zdGF0c1tw aXBlXSAmIFBJUEVfQ1JDX0RPTkVfSU5URVJSVVBUX1NUQVRVUykKLQkJCWk5eHhfcGlwZV9jcmNf aXJxX2hhbmRsZXIoZGV2LCBwaXBlKTsKKwkJCWk5eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoZGV2 X3ByaXYsIHBpcGUpOwogCiAJCWlmIChwaXBlX3N0YXRzW3BpcGVdICYgUElQRV9GSUZPX1VOREVS UlVOX1NUQVRVUykKIAkJCWludGVsX2NwdV9maWZvX3VuZGVycnVuX2lycV9oYW5kbGVyKGRldl9w cml2LCBwaXBlKTsKIAl9CiAKIAlpZiAocGlwZV9zdGF0c1swXSAmIFBJUEVfR01CVVNfSU5URVJS VVBUX1NUQVRVUykKLQkJZ21idXNfaXJxX2hhbmRsZXIoZGV2KTsKKwkJZ21idXNfaXJxX2hhbmRs ZXIoZGV2X3ByaXYpOwogfQogCiBzdGF0aWMgdTMyIGk5eHhfaHBkX2lycV9hY2soc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQpAQCAtMTc0NywxMiArMTczMiwxMyBAQCBzdGF0aWMg dTMyIGk5eHhfaHBkX2lycV9hY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CXJldHVybiBob3RwbHVnX3N0YXR1czsKIH0KIAotc3RhdGljIHZvaWQgaTl4eF9ocGRfaXJxX2hh bmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKK3N0YXRpYyB2b2lkIGk5eHhfaHBkX2lycV9o YW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgdTMyIGhvdHBs dWdfc3RhdHVzKQogewogCXUzMiBwaW5fbWFzayA9IDAsIGxvbmdfbWFzayA9IDA7CiAKLQlpZiAo SVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkg eworCWlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8CisJ ICAgIElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7CiAJCXUzMiBob3RwbHVnX3RyaWdnZXIgPSBo b3RwbHVnX3N0YXR1cyAmIEhPVFBMVUdfSU5UX1NUQVRVU19HNFg7CiAKIAkJaWYgKGhvdHBsdWdf dHJpZ2dlcikgewpAQCAtMTc2MCwxMSArMTc0NiwxMSBAQCBzdGF0aWMgdm9pZCBpOXh4X2hwZF9p cnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkgICBob3RwbHVnX3RyaWdn ZXIsIGhwZF9zdGF0dXNfZzR4LAogCQkJCQkgICBpOXh4X3BvcnRfaG90cGx1Z19sb25nX2RldGVj dCk7CiAKLQkJCWludGVsX2hwZF9pcnFfaGFuZGxlcihkZXYsIHBpbl9tYXNrLCBsb25nX21hc2sp OworCQkJaW50ZWxfaHBkX2lycV9oYW5kbGVyKGRldl9wcml2LCBwaW5fbWFzaywgbG9uZ19tYXNr KTsKIAkJfQogCiAJCWlmIChob3RwbHVnX3N0YXR1cyAmIERQX0FVWF9DSEFOTkVMX01BU0tfSU5U X1NUQVRVU19HNFgpCi0JCQlkcF9hdXhfaXJxX2hhbmRsZXIoZGV2KTsKKwkJCWRwX2F1eF9pcnFf aGFuZGxlcihkZXZfcHJpdik7CiAJfSBlbHNlIHsKIAkJdTMyIGhvdHBsdWdfdHJpZ2dlciA9IGhv dHBsdWdfc3RhdHVzICYgSE9UUExVR19JTlRfU1RBVFVTX0k5MTU7CiAKQEAgLTE3NzIsNyArMTc1 OCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJCQlpbnRlbF9nZXRfaHBkX3BpbnMoJnBpbl9tYXNrLCAmbG9uZ19tYXNrLCBob3Rw bHVnX3RyaWdnZXIsCiAJCQkJCSAgIGhvdHBsdWdfdHJpZ2dlciwgaHBkX3N0YXR1c19pOTE1LAog CQkJCQkgICBpOXh4X3BvcnRfaG90cGx1Z19sb25nX2RldGVjdCk7Ci0JCQlpbnRlbF9ocGRfaXJx X2hhbmRsZXIoZGV2LCBwaW5fbWFzaywgbG9uZ19tYXNrKTsKKwkJCWludGVsX2hwZF9pcnFfaGFu ZGxlcihkZXZfcHJpdiwgcGluX21hc2ssIGxvbmdfbWFzayk7CiAJCX0KIAl9CiB9CkBAIC0xODMx LDcgKzE4MTcsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdmFsbGV5dmlld19pcnFfaGFuZGxlcihp bnQgaXJxLCB2b2lkICphcmcpCiAKIAkJLyogQ2FsbCByZWdhcmRsZXNzLCBhcyBzb21lIHN0YXR1 cyBiaXRzIG1pZ2h0IG5vdCBiZQogCQkgKiBzaWduYWxsZWQgaW4gaWlyICovCi0JCXZhbGxleXZp ZXdfcGlwZXN0YXRfaXJxX2FjayhkZXYsIGlpciwgcGlwZV9zdGF0cyk7CisJCXZhbGxleXZpZXdf cGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRzKTsKIAogCQkvKgogCQkg KiBWTFZfSUlSIGlzIHNpbmdsZSBidWZmZXJlZCwgYW5kIHJlZmxlY3RzIHRoZSBsZXZlbApAQCAt MTg1MCw5ICsxODM2LDkgQEAgc3RhdGljIGlycXJldHVybl90IHZhbGxleXZpZXdfaXJxX2hhbmRs ZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCQkJZ2VuNl9ycHNfaXJxX2hhbmRsZXIoZGV2X3ByaXYs IHBtX2lpcik7CiAKIAkJaWYgKGhvdHBsdWdfc3RhdHVzKQotCQkJaTl4eF9ocGRfaXJxX2hhbmRs ZXIoZGV2LCBob3RwbHVnX3N0YXR1cyk7CisJCQlpOXh4X2hwZF9pcnFfaGFuZGxlcihkZXZfcHJp diwgaG90cGx1Z19zdGF0dXMpOwogCi0JCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2hhbmRsZXIo ZGV2LCBwaXBlX3N0YXRzKTsKKwkJdmFsbGV5dmlld19waXBlc3RhdF9pcnFfaGFuZGxlcihkZXZf cHJpdiwgcGlwZV9zdGF0cyk7CiAJfSB3aGlsZSAoMCk7CiAKIAllbmFibGVfcnBtX3dha2VyZWZf YXNzZXJ0cyhkZXZfcHJpdik7CkBAIC0xOTExLDcgKzE4OTcsNyBAQCBzdGF0aWMgaXJxcmV0dXJu X3QgY2hlcnJ5dmlld19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAKIAkJLyogQ2Fs bCByZWdhcmRsZXNzLCBhcyBzb21lIHN0YXR1cyBiaXRzIG1pZ2h0IG5vdCBiZQogCQkgKiBzaWdu YWxsZWQgaW4gaWlyICovCi0JCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXYsIGlpciwg cGlwZV9zdGF0cyk7CisJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWly LCBwaXBlX3N0YXRzKTsKIAogCQkvKgogCQkgKiBWTFZfSUlSIGlzIHNpbmdsZSBidWZmZXJlZCwg YW5kIHJlZmxlY3RzIHRoZSBsZXZlbApAQCAtMTkyNyw5ICsxOTEzLDkgQEAgc3RhdGljIGlycXJl dHVybl90IGNoZXJyeXZpZXdfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCQlnZW44 X2d0X2lycV9oYW5kbGVyKGRldl9wcml2LCBndF9paXIpOwogCiAJCWlmIChob3RwbHVnX3N0YXR1 cykKLQkJCWk5eHhfaHBkX2lycV9oYW5kbGVyKGRldiwgaG90cGx1Z19zdGF0dXMpOworCQkJaTl4 eF9ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGhvdHBsdWdfc3RhdHVzKTsKIAotCQl2YWxsZXl2 aWV3X3BpcGVzdGF0X2lycV9oYW5kbGVyKGRldiwgcGlwZV9zdGF0cyk7CisJCXZhbGxleXZpZXdf cGlwZXN0YXRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpcGVfc3RhdHMpOwogCX0gd2hpbGUgKDAp OwogCiAJZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoZGV2X3ByaXYpOwpAQCAtMTkzNywxMCAr MTkyMywxMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgY2hlcnJ5dmlld19pcnFfaGFuZGxlcihpbnQg aXJxLCB2b2lkICphcmcpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgaWJ4X2hwZF9p cnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgaG90cGx1Z190cmlnZ2VyLAor c3RhdGljIHZvaWQgaWJ4X2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCisJCQkJdTMyIGhvdHBsdWdfdHJpZ2dlciwKIAkJCQljb25zdCB1MzIgaHBkW0hQ RF9OVU1fUElOU10pCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwogCXUzMiBkaWdfaG90cGx1Z19yZWcsIHBpbl9tYXNrID0gMCwgbG9uZ19tYXNr ID0gMDsKIAogCS8qCkBAIC0xOTY2LDE2ICsxOTUyLDE1IEBAIHN0YXRpYyB2b2lkIGlieF9ocGRf aXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGhvdHBsdWdfdHJpZ2dlciwK IAkJCSAgIGRpZ19ob3RwbHVnX3JlZywgaHBkLAogCQkJICAgcGNoX3BvcnRfaG90cGx1Z19sb25n X2RldGVjdCk7CiAKLQlpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBwaW5fbWFzaywgbG9uZ19t YXNrKTsKKwlpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpbl9tYXNrLCBsb25nX21h c2spOwogfQogCi1zdGF0aWMgdm9pZCBpYnhfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdTMyIHBjaF9paXIpCitzdGF0aWMgdm9pZCBpYnhfaXJxX2hhbmRsZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcGNoX2lpcikKIHsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWludCBwaXBlOwogCXUz MiBob3RwbHVnX3RyaWdnZXIgPSBwY2hfaWlyICYgU0RFX0hPVFBMVUdfTUFTSzsKIAotCWlieF9o cGRfaXJxX2hhbmRsZXIoZGV2LCBob3RwbHVnX3RyaWdnZXIsIGhwZF9pYngpOworCWlieF9ocGRf aXJxX2hhbmRsZXIoZGV2X3ByaXYsIGhvdHBsdWdfdHJpZ2dlciwgaHBkX2lieCk7CiAKIAlpZiAo cGNoX2lpciAmIFNERV9BVURJT19QT1dFUl9NQVNLKSB7CiAJCWludCBwb3J0ID0gZmZzKChwY2hf aWlyICYgU0RFX0FVRElPX1BPV0VSX01BU0spID4+CkBAIC0xOTg1LDEwICsxOTcwLDEwIEBAIHN0 YXRpYyB2b2lkIGlieF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgcGNo X2lpcikKIAl9CiAKIAlpZiAocGNoX2lpciAmIFNERV9BVVhfTUFTSykKLQkJZHBfYXV4X2lycV9o YW5kbGVyKGRldik7CisJCWRwX2F1eF9pcnFfaGFuZGxlcihkZXZfcHJpdik7CiAKIAlpZiAocGNo X2lpciAmIFNERV9HTUJVUykKLQkJZ21idXNfaXJxX2hhbmRsZXIoZGV2KTsKKwkJZ21idXNfaXJx X2hhbmRsZXIoZGV2X3ByaXYpOwogCiAJaWYgKHBjaF9paXIgJiBTREVfQVVESU9fSERDUF9NQVNL KQogCQlEUk1fREVCVUdfRFJJVkVSKCJQQ0ggSERDUCBhdWRpbyBpbnRlcnJ1cHRcbiIpOwpAQCAt MjAxOCw5ICsyMDAzLDggQEAgc3RhdGljIHZvaWQgaWJ4X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHUzMiBwY2hfaWlyKQogCQlpbnRlbF9wY2hfZmlmb191bmRlcnJ1bl9pcnFf aGFuZGxlcihkZXZfcHJpdiwgVFJBTlNDT0RFUl9CKTsKIH0KIAotc3RhdGljIHZvaWQgaXZiX2Vy cl9pbnRfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIHZvaWQgaXZiX2Vy cl9pbnRfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIg ZXJyX2ludCA9IEk5MTVfUkVBRChHRU43X0VSUl9JTlQpOwogCWVudW0gcGlwZSBwaXBlOwogCkBA IC0yMDMyLDE5ICsyMDE2LDE4IEBAIHN0YXRpYyB2b2lkIGl2Yl9lcnJfaW50X2hhbmRsZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAkJCWludGVsX2NwdV9maWZvX3VuZGVycnVuX2lycV9oYW5k bGVyKGRldl9wcml2LCBwaXBlKTsKIAogCQlpZiAoZXJyX2ludCAmIEVSUl9JTlRfUElQRV9DUkNf RE9ORShwaXBlKSkgewotCQkJaWYgKElTX0lWWUJSSURHRShkZXYpKQotCQkJCWl2Yl9waXBlX2Ny Y19pcnFfaGFuZGxlcihkZXYsIHBpcGUpOworCQkJaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikp CisJCQkJaXZiX3BpcGVfY3JjX2lycV9oYW5kbGVyKGRldl9wcml2LCBwaXBlKTsKIAkJCWVsc2UK LQkJCQloc3dfcGlwZV9jcmNfaXJxX2hhbmRsZXIoZGV2LCBwaXBlKTsKKwkJCQloc3dfcGlwZV9j cmNfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpcGUpOwogCQl9CiAJfQogCiAJSTkxNV9XUklURShH RU43X0VSUl9JTlQsIGVycl9pbnQpOwogfQogCi1zdGF0aWMgdm9pZCBjcHRfc2Vycl9pbnRfaGFu ZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIHZvaWQgY3B0X3NlcnJfaW50X2hh bmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJdTMyIHNlcnJfaW50 ID0gSTkxNV9SRUFEKFNFUlJfSU5UKTsKIAogCWlmIChzZXJyX2ludCAmIFNFUlJfSU5UX1BPSVNP TikKQEAgLTIwNjIsMTMgKzIwNDUsMTIgQEAgc3RhdGljIHZvaWQgY3B0X3NlcnJfaW50X2hhbmRs ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlJOTE1X1dSSVRFKFNFUlJfSU5ULCBzZXJyX2lu dCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNwdF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1MzIgcGNoX2lpcikKK3N0YXRpYyB2b2lkIGNwdF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwY2hfaWlyKQogewotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJaW50IHBpcGU7CiAJdTMy IGhvdHBsdWdfdHJpZ2dlciA9IHBjaF9paXIgJiBTREVfSE9UUExVR19NQVNLX0NQVDsKIAotCWli eF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBob3RwbHVnX3RyaWdnZXIsIGhwZF9jcHQpOworCWlieF9o cGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGhvdHBsdWdfdHJpZ2dlciwgaHBkX2NwdCk7CiAKIAlp ZiAocGNoX2lpciAmIFNERV9BVURJT19QT1dFUl9NQVNLX0NQVCkgewogCQlpbnQgcG9ydCA9IGZm cygocGNoX2lpciAmIFNERV9BVURJT19QT1dFUl9NQVNLX0NQVCkgPj4KQEAgLTIwNzgsMTAgKzIw NjAsMTAgQEAgc3RhdGljIHZvaWQgY3B0X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHUzMiBwY2hfaWlyKQogCX0KIAogCWlmIChwY2hfaWlyICYgU0RFX0FVWF9NQVNLX0NQVCkK LQkJZHBfYXV4X2lycV9oYW5kbGVyKGRldik7CisJCWRwX2F1eF9pcnFfaGFuZGxlcihkZXZfcHJp dik7CiAKIAlpZiAocGNoX2lpciAmIFNERV9HTUJVU19DUFQpCi0JCWdtYnVzX2lycV9oYW5kbGVy KGRldik7CisJCWdtYnVzX2lycV9oYW5kbGVyKGRldl9wcml2KTsKIAogCWlmIChwY2hfaWlyICYg U0RFX0FVRElPX0NQX1JFUV9DUFQpCiAJCURSTV9ERUJVR19EUklWRVIoIkF1ZGlvIENQIHJlcXVl c3QgaW50ZXJydXB0XG4iKTsKQEAgLTIwOTYsMTIgKzIwNzgsMTEgQEAgc3RhdGljIHZvaWQgY3B0 X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBwY2hfaWlyKQogCQkJCQkg STkxNV9SRUFEKEZESV9SWF9JSVIocGlwZSkpKTsKIAogCWlmIChwY2hfaWlyICYgU0RFX0VSUk9S X0NQVCkKLQkJY3B0X3NlcnJfaW50X2hhbmRsZXIoZGV2KTsKKwkJY3B0X3NlcnJfaW50X2hhbmRs ZXIoZGV2X3ByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBzcHRfaXJxX2hhbmRsZXIoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdTMyIHBjaF9paXIpCitzdGF0aWMgdm9pZCBzcHRfaXJxX2hhbmRsZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcGNoX2lpcikKIHsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXUzMiBo b3RwbHVnX3RyaWdnZXIgPSBwY2hfaWlyICYgU0RFX0hPVFBMVUdfTUFTS19TUFQgJgogCQl+U0RF X1BPUlRFX0hPVFBMVUdfU1BUOwogCXUzMiBob3RwbHVnMl90cmlnZ2VyID0gcGNoX2lpciAmIFNE RV9QT1JURV9IT1RQTFVHX1NQVDsKQEAgLTIxMzAsMTYgKzIxMTEsMTYgQEAgc3RhdGljIHZvaWQg c3B0X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBwY2hfaWlyKQogCX0K IAogCWlmIChwaW5fbWFzaykKLQkJaW50ZWxfaHBkX2lycV9oYW5kbGVyKGRldiwgcGluX21hc2ss IGxvbmdfbWFzayk7CisJCWludGVsX2hwZF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGluX21hc2ss IGxvbmdfbWFzayk7CiAKIAlpZiAocGNoX2lpciAmIFNERV9HTUJVU19DUFQpCi0JCWdtYnVzX2ly cV9oYW5kbGVyKGRldik7CisJCWdtYnVzX2lycV9oYW5kbGVyKGRldl9wcml2KTsKIH0KIAotc3Rh dGljIHZvaWQgaWxrX2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIg aG90cGx1Z190cmlnZ2VyLAorc3RhdGljIHZvaWQgaWxrX2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJdTMyIGhvdHBsdWdfdHJpZ2dlciwKIAkJ CQljb25zdCB1MzIgaHBkW0hQRF9OVU1fUElOU10pCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXUzMiBkaWdfaG90cGx1Z19yZWcsIHBpbl9t YXNrID0gMCwgbG9uZ19tYXNrID0gMDsKIAogCWRpZ19ob3RwbHVnX3JlZyA9IEk5MTVfUkVBRChE SUdJVEFMX1BPUlRfSE9UUExVR19DTlRSTCk7CkBAIC0yMTQ5LDQyICsyMTMwLDQyIEBAIHN0YXRp YyB2b2lkIGlsa19ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGhv dHBsdWdfdHJpZ2dlciwKIAkJCSAgIGRpZ19ob3RwbHVnX3JlZywgaHBkLAogCQkJICAgaWxrX3Bv cnRfaG90cGx1Z19sb25nX2RldGVjdCk7CiAKLQlpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBw aW5fbWFzaywgbG9uZ19tYXNrKTsKKwlpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBp bl9tYXNrLCBsb25nX21hc2spOwogfQogCi1zdGF0aWMgdm9pZCBpbGtfZGlzcGxheV9pcnFfaGFu ZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZGVfaWlyKQorc3RhdGljIHZvaWQgaWxr X2Rpc3BsYXlfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAor CQkJCSAgICB1MzIgZGVfaWlyKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJZW51bSBwaXBlIHBpcGU7CiAJdTMyIGhvdHBsdWdfdHJp Z2dlciA9IGRlX2lpciAmIERFX0RQX0FfSE9UUExVRzsKIAogCWlmIChob3RwbHVnX3RyaWdnZXIp Ci0JCWlsa19ocGRfaXJxX2hhbmRsZXIoZGV2LCBob3RwbHVnX3RyaWdnZXIsIGhwZF9pbGspOwor CQlpbGtfaHBkX2lycV9oYW5kbGVyKGRldl9wcml2LCBob3RwbHVnX3RyaWdnZXIsIGhwZF9pbGsp OwogCiAJaWYgKGRlX2lpciAmIERFX0FVWF9DSEFOTkVMX0EpCi0JCWRwX2F1eF9pcnFfaGFuZGxl cihkZXYpOworCQlkcF9hdXhfaXJxX2hhbmRsZXIoZGV2X3ByaXYpOwogCiAJaWYgKGRlX2lpciAm IERFX0dTRSkKLQkJaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKGRldik7CisJCWludGVsX29wcmVn aW9uX2FzbGVfaW50cihkZXZfcHJpdik7CiAKIAlpZiAoZGVfaWlyICYgREVfUE9JU09OKQogCQlE Uk1fRVJST1IoIlBvaXNvbiBpbnRlcnJ1cHRcbiIpOwogCiAJZm9yX2VhY2hfcGlwZShkZXZfcHJp diwgcGlwZSkgewogCQlpZiAoZGVfaWlyICYgREVfUElQRV9WQkxBTksocGlwZSkgJiYKLQkJICAg IGludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpKQotCQkJaW50ZWxfY2hlY2tfcGFn ZV9mbGlwKGRldiwgcGlwZSk7CisJCSAgICBpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2X3By aXYsIHBpcGUpKQorCQkJaW50ZWxfY2hlY2tfcGFnZV9mbGlwKGRldl9wcml2LCBwaXBlKTsKIAog CQlpZiAoZGVfaWlyICYgREVfUElQRV9GSUZPX1VOREVSUlVOKHBpcGUpKQogCQkJaW50ZWxfY3B1 X2ZpZm9fdW5kZXJydW5faXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpcGUpOwogCiAJCWlmIChkZV9p aXIgJiBERV9QSVBFX0NSQ19ET05FKHBpcGUpKQotCQkJaTl4eF9waXBlX2NyY19pcnFfaGFuZGxl cihkZXYsIHBpcGUpOworCQkJaTl4eF9waXBlX2NyY19pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGlw ZSk7CiAKIAkJLyogcGxhbmUvcGlwZXMgbWFwIDE6MSBvbiBpbGsrICovCiAJCWlmIChkZV9paXIg JiBERV9QTEFORV9GTElQX0RPTkUocGlwZSkpIHsKLQkJCWludGVsX3ByZXBhcmVfcGFnZV9mbGlw KGRldiwgcGlwZSk7Ci0JCQlpbnRlbF9maW5pc2hfcGFnZV9mbGlwX3BsYW5lKGRldiwgcGlwZSk7 CisJCQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXZfcHJpdiwgcGlwZSk7CisJCQlpbnRlbF9m aW5pc2hfcGFnZV9mbGlwX3BsYW5lKGRldl9wcml2LCBwaXBlKTsKIAkJfQogCX0KIApAQCAtMjE5 Miw1NCArMjE3Myw1NCBAQCBzdGF0aWMgdm9pZCBpbGtfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZGVfaWlyKQogCWlmIChkZV9paXIgJiBERV9QQ0hfRVZF TlQpIHsKIAkJdTMyIHBjaF9paXIgPSBJOTE1X1JFQUQoU0RFSUlSKTsKIAotCQlpZiAoSEFTX1BD SF9DUFQoZGV2KSkKLQkJCWNwdF9pcnFfaGFuZGxlcihkZXYsIHBjaF9paXIpOworCQlpZiAoSEFT X1BDSF9DUFQoZGV2X3ByaXYpKQorCQkJY3B0X2lycV9oYW5kbGVyKGRldl9wcml2LCBwY2hfaWly KTsKIAkJZWxzZQotCQkJaWJ4X2lycV9oYW5kbGVyKGRldiwgcGNoX2lpcik7CisJCQlpYnhfaXJx X2hhbmRsZXIoZGV2X3ByaXYsIHBjaF9paXIpOwogCiAJCS8qIHNob3VsZCBjbGVhciBQQ0ggaG90 cGx1ZyBldmVudCBiZWZvcmUgY2xlYXIgQ1BVIGlycSAqLwogCQlJOTE1X1dSSVRFKFNERUlJUiwg cGNoX2lpcik7CiAJfQogCi0JaWYgKElTX0dFTjUoZGV2KSAmJiBkZV9paXIgJiBERV9QQ1VfRVZF TlQpCi0JCWlyb25sYWtlX3Jwc19jaGFuZ2VfaXJxX2hhbmRsZXIoZGV2KTsKKwlpZiAoSVNfR0VO NShkZXZfcHJpdikgJiYgZGVfaWlyICYgREVfUENVX0VWRU5UKQorCQlpcm9ubGFrZV9ycHNfY2hh bmdlX2lycV9oYW5kbGVyKGRldl9wcml2KTsKIH0KIAotc3RhdGljIHZvaWQgaXZiX2Rpc3BsYXlf aXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGRlX2lpcikKK3N0YXRpYyB2 b2lkIGl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKKwkJCQkgICAgdTMyIGRlX2lpcikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWVudW0gcGlwZSBwaXBlOwogCXUzMiBob3Rw bHVnX3RyaWdnZXIgPSBkZV9paXIgJiBERV9EUF9BX0hPVFBMVUdfSVZCOwogCiAJaWYgKGhvdHBs dWdfdHJpZ2dlcikKLQkJaWxrX2hwZF9pcnFfaGFuZGxlcihkZXYsIGhvdHBsdWdfdHJpZ2dlciwg aHBkX2l2Yik7CisJCWlsa19ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGhvdHBsdWdfdHJpZ2dl ciwgaHBkX2l2Yik7CiAKIAlpZiAoZGVfaWlyICYgREVfRVJSX0lOVF9JVkIpCi0JCWl2Yl9lcnJf aW50X2hhbmRsZXIoZGV2KTsKKwkJaXZiX2Vycl9pbnRfaGFuZGxlcihkZXZfcHJpdik7CiAKIAlp ZiAoZGVfaWlyICYgREVfQVVYX0NIQU5ORUxfQV9JVkIpCi0JCWRwX2F1eF9pcnFfaGFuZGxlcihk ZXYpOworCQlkcF9hdXhfaXJxX2hhbmRsZXIoZGV2X3ByaXYpOwogCiAJaWYgKGRlX2lpciAmIERF X0dTRV9JVkIpCi0JCWludGVsX29wcmVnaW9uX2FzbGVfaW50cihkZXYpOworCQlpbnRlbF9vcHJl Z2lvbl9hc2xlX2ludHIoZGV2X3ByaXYpOwogCiAJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlw ZSkgewogCQlpZiAoZGVfaWlyICYgKERFX1BJUEVfVkJMQU5LX0lWQihwaXBlKSkgJiYKLQkJICAg IGludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpKQotCQkJaW50ZWxfY2hlY2tfcGFn ZV9mbGlwKGRldiwgcGlwZSk7CisJCSAgICBpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2X3By aXYsIHBpcGUpKQorCQkJaW50ZWxfY2hlY2tfcGFnZV9mbGlwKGRldl9wcml2LCBwaXBlKTsKIAog CQkvKiBwbGFuZS9waXBlcyBtYXAgMToxIG9uIGlsaysgKi8KIAkJaWYgKGRlX2lpciAmIERFX1BM QU5FX0ZMSVBfRE9ORV9JVkIocGlwZSkpIHsKLQkJCWludGVsX3ByZXBhcmVfcGFnZV9mbGlwKGRl diwgcGlwZSk7Ci0JCQlpbnRlbF9maW5pc2hfcGFnZV9mbGlwX3BsYW5lKGRldiwgcGlwZSk7CisJ CQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXZfcHJpdiwgcGlwZSk7CisJCQlpbnRlbF9maW5p c2hfcGFnZV9mbGlwX3BsYW5lKGRldl9wcml2LCBwaXBlKTsKIAkJfQogCX0KIAogCS8qIGNoZWNr IGV2ZW50IGZyb20gUENIICovCi0JaWYgKCFIQVNfUENIX05PUChkZXYpICYmIChkZV9paXIgJiBE RV9QQ0hfRVZFTlRfSVZCKSkgeworCWlmICghSEFTX1BDSF9OT1AoZGV2X3ByaXYpICYmIChkZV9p aXIgJiBERV9QQ0hfRVZFTlRfSVZCKSkgewogCQl1MzIgcGNoX2lpciA9IEk5MTVfUkVBRChTREVJ SVIpOwogCi0JCWNwdF9pcnFfaGFuZGxlcihkZXYsIHBjaF9paXIpOworCQljcHRfaXJxX2hhbmRs ZXIoZGV2X3ByaXYsIHBjaF9paXIpOwogCiAJCS8qIGNsZWFyIFBDSCBob3RwbHVnIGV2ZW50IGJl Zm9yZSBjbGVhciBDUFUgaXJxICovCiAJCUk5MTVfV1JJVEUoU0RFSUlSLCBwY2hfaWlyKTsKQEAg LTIyNzcsNyArMjI1OCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpcm9ubGFrZV9pcnFfaGFuZGxl cihpbnQgaXJxLCB2b2lkICphcmcpCiAJICogYWJsZSB0byBwcm9jZXNzIHRoZW0gYWZ0ZXIgd2Ug cmVzdG9yZSBTREVJRVIgKGFzIHNvb24gYXMgd2UgcmVzdG9yZQogCSAqIGl0LCB3ZSdsbCBnZXQg YW4gaW50ZXJydXB0IGlmIFNERUlJUiBzdGlsbCBoYXMgc29tZXRoaW5nIHRvIHByb2Nlc3MKIAkg KiBkdWUgdG8gaXRzIGJhY2sgcXVldWUpLiAqLwotCWlmICghSEFTX1BDSF9OT1AoZGV2KSkgewor CWlmICghSEFTX1BDSF9OT1AoZGV2X3ByaXYpKSB7CiAJCXNkZV9pZXIgPSBJOTE1X1JFQUQoU0RF SUVSKTsKIAkJSTkxNV9XUklURShTREVJRVIsIDApOwogCQlQT1NUSU5HX1JFQUQoU0RFSUVSKTsK QEAgLTIyODksNyArMjI3MCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpcm9ubGFrZV9pcnFfaGFu ZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJaWYgKGd0X2lpcikgewogCQlJOTE1X1dSSVRFKEdU SUlSLCBndF9paXIpOwogCQlyZXQgPSBJUlFfSEFORExFRDsKLQkJaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDYpCisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCiAJCQlzbmJfZ3Rf aXJxX2hhbmRsZXIoZGV2X3ByaXYsIGd0X2lpcik7CiAJCWVsc2UKIAkJCWlsa19ndF9pcnFfaGFu ZGxlcihkZXZfcHJpdiwgZ3RfaWlyKTsKQEAgLTIyOTksMTMgKzIyODAsMTMgQEAgc3RhdGljIGly cXJldHVybl90IGlyb25sYWtlX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAlpZiAo ZGVfaWlyKSB7CiAJCUk5MTVfV1JJVEUoREVJSVIsIGRlX2lpcik7CiAJCXJldCA9IElSUV9IQU5E TEVEOwotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykKLQkJCWl2Yl9kaXNwbGF5X2ly cV9oYW5kbGVyKGRldiwgZGVfaWlyKTsKKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykK KwkJCWl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKGRldl9wcml2LCBkZV9paXIpOwogCQllbHNlCi0J CQlpbGtfZGlzcGxheV9pcnFfaGFuZGxlcihkZXYsIGRlX2lpcik7CisJCQlpbGtfZGlzcGxheV9p cnFfaGFuZGxlcihkZXZfcHJpdiwgZGVfaWlyKTsKIAl9CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNikgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKIAkJdTMyIHBt X2lpciA9IEk5MTVfUkVBRChHRU42X1BNSUlSKTsKIAkJaWYgKHBtX2lpcikgewogCQkJSTkxNV9X UklURShHRU42X1BNSUlSLCBwbV9paXIpOwpAQCAtMjMxNiw3ICsyMjk3LDcgQEAgc3RhdGljIGly cXJldHVybl90IGlyb25sYWtlX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAogCUk5 MTVfV1JJVEUoREVJRVIsIGRlX2llcik7CiAJUE9TVElOR19SRUFEKERFSUVSKTsKLQlpZiAoIUhB U19QQ0hfTk9QKGRldikpIHsKKwlpZiAoIUhBU19QQ0hfTk9QKGRldl9wcml2KSkgewogCQlJOTE1 X1dSSVRFKFNERUlFUiwgc2RlX2llcik7CiAJCVBPU1RJTkdfUkVBRChTREVJRVIpOwogCX0KQEAg LTIzMjcsMTAgKzIzMDgsMTAgQEAgc3RhdGljIGlycXJldHVybl90IGlyb25sYWtlX2lycV9oYW5k bGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBi eHRfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBob3RwbHVnX3Ry aWdnZXIsCitzdGF0aWMgdm9pZCBieHRfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKKwkJCQl1MzIgaG90cGx1Z190cmlnZ2VyLAogCQkJCWNvbnN0IHUz MiBocGRbSFBEX05VTV9QSU5TXSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7CiAJdTMyIGRpZ19ob3RwbHVnX3JlZywgcGluX21hc2sgPSAwLCBs b25nX21hc2sgPSAwOwogCiAJZGlnX2hvdHBsdWdfcmVnID0gSTkxNV9SRUFEKFBDSF9QT1JUX0hP VFBMVUcpOwpAQCAtMjM0MCwxMyArMjMyMSwxMiBAQCBzdGF0aWMgdm9pZCBieHRfaHBkX2lycV9o YW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBob3RwbHVnX3RyaWdnZXIsCiAJCQkg ICBkaWdfaG90cGx1Z19yZWcsIGhwZCwKIAkJCSAgIGJ4dF9wb3J0X2hvdHBsdWdfbG9uZ19kZXRl Y3QpOwogCi0JaW50ZWxfaHBkX2lycV9oYW5kbGVyKGRldiwgcGluX21hc2ssIGxvbmdfbWFzayk7 CisJaW50ZWxfaHBkX2lycV9oYW5kbGVyKGRldl9wcml2LCBwaW5fbWFzaywgbG9uZ19tYXNrKTsK IH0KIAogc3RhdGljIGlycXJldHVybl90CiBnZW44X2RlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1hc3Rlcl9jdGwpCiB7Ci0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7CiAJaXJxcmV0dXJuX3QgcmV0ID0gSVJRX05PTkU7 CiAJdTMyIGlpcjsKIAllbnVtIHBpcGUgcGlwZTsKQEAgLTIzNTcsNyArMjMzNyw3IEBAIGdlbjhf ZGVfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFz dGVyX2N0bCkKIAkJCUk5MTVfV1JJVEUoR0VOOF9ERV9NSVNDX0lJUiwgaWlyKTsKIAkJCXJldCA9 IElSUV9IQU5ETEVEOwogCQkJaWYgKGlpciAmIEdFTjhfREVfTUlTQ19HU0UpCi0JCQkJaW50ZWxf b3ByZWdpb25fYXNsZV9pbnRyKGRldik7CisJCQkJaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKGRl dl9wcml2KTsKIAkJCWVsc2UKIAkJCQlEUk1fRVJST1IoIlVuZXhwZWN0ZWQgREUgTWlzYyBpbnRl cnJ1cHRcbiIpOwogCQl9CkBAIC0yMzgxLDI2ICsyMzYxLDI4IEBAIGdlbjhfZGVfaXJxX2hhbmRs ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFzdGVyX2N0bCkKIAkJ CQkJICAgIEdFTjlfQVVYX0NIQU5ORUxfRDsKIAogCQkJaWYgKGlpciAmIHRtcF9tYXNrKSB7Ci0J CQkJZHBfYXV4X2lycV9oYW5kbGVyKGRldik7CisJCQkJZHBfYXV4X2lycV9oYW5kbGVyKGRldl9w cml2KTsKIAkJCQlmb3VuZCA9IHRydWU7CiAJCQl9CiAKIAkJCWlmIChJU19CUk9YVE9OKGRldl9w cml2KSkgewogCQkJCXRtcF9tYXNrID0gaWlyICYgQlhUX0RFX1BPUlRfSE9UUExVR19NQVNLOwog CQkJCWlmICh0bXBfbWFzaykgewotCQkJCQlieHRfaHBkX2lycV9oYW5kbGVyKGRldiwgdG1wX21h c2ssIGhwZF9ieHQpOworCQkJCQlieHRfaHBkX2lycV9oYW5kbGVyKGRldl9wcml2LCB0bXBfbWFz aywKKwkJCQkJCQkgICAgaHBkX2J4dCk7CiAJCQkJCWZvdW5kID0gdHJ1ZTsKIAkJCQl9CiAJCQl9 IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKIAkJCQl0bXBfbWFzayA9IGlpciAm IEdFTjhfUE9SVF9EUF9BX0hPVFBMVUc7CiAJCQkJaWYgKHRtcF9tYXNrKSB7Ci0JCQkJCWlsa19o cGRfaXJxX2hhbmRsZXIoZGV2LCB0bXBfbWFzaywgaHBkX2Jkdyk7CisJCQkJCWlsa19ocGRfaXJx X2hhbmRsZXIoZGV2X3ByaXYsCisJCQkJCQkJICAgIHRtcF9tYXNrLCBocGRfYmR3KTsKIAkJCQkJ Zm91bmQgPSB0cnVlOwogCQkJCX0KIAkJCX0KIAotCQkJaWYgKElTX0JST1hUT04oZGV2KSAmJiAo aWlyICYgQlhUX0RFX1BPUlRfR01CVVMpKSB7Ci0JCQkJZ21idXNfaXJxX2hhbmRsZXIoZGV2KTsK KwkJCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSAmJiAoaWlyICYgQlhUX0RFX1BPUlRfR01CVVMp KSB7CisJCQkJZ21idXNfaXJxX2hhbmRsZXIoZGV2X3ByaXYpOwogCQkJCWZvdW5kID0gdHJ1ZTsK IAkJCX0KIApAQCAtMjQyNyw4ICsyNDA5LDggQEAgZ2VuOF9kZV9pcnFfaGFuZGxlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXN0ZXJfY3RsKQogCQlJOTE1X1dSSVRF KEdFTjhfREVfUElQRV9JSVIocGlwZSksIGlpcik7CiAKIAkJaWYgKGlpciAmIEdFTjhfUElQRV9W QkxBTksgJiYKLQkJICAgIGludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpKQotCQkJ aW50ZWxfY2hlY2tfcGFnZV9mbGlwKGRldiwgcGlwZSk7CisJCSAgICBpbnRlbF9waXBlX2hhbmRs ZV92YmxhbmsoZGV2X3ByaXYsIHBpcGUpKQorCQkJaW50ZWxfY2hlY2tfcGFnZV9mbGlwKGRldl9w cml2LCBwaXBlKTsKIAogCQlmbGlwX2RvbmUgPSBpaXI7CiAJCWlmIChJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuID49IDkpCkBAIC0yNDM3LDEyICsyNDE5LDEyIEBAIGdlbjhfZGVfaXJxX2hhbmRs ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFzdGVyX2N0bCkKIAkJ CWZsaXBfZG9uZSAmPSBHRU44X1BJUEVfUFJJTUFSWV9GTElQX0RPTkU7CiAKIAkJaWYgKGZsaXBf ZG9uZSkgewotCQkJaW50ZWxfcHJlcGFyZV9wYWdlX2ZsaXAoZGV2LCBwaXBlKTsKLQkJCWludGVs X2ZpbmlzaF9wYWdlX2ZsaXBfcGxhbmUoZGV2LCBwaXBlKTsKKwkJCWludGVsX3ByZXBhcmVfcGFn ZV9mbGlwKGRldl9wcml2LCBwaXBlKTsKKwkJCWludGVsX2ZpbmlzaF9wYWdlX2ZsaXBfcGxhbmUo ZGV2X3ByaXYsIHBpcGUpOwogCQl9CiAKIAkJaWYgKGlpciAmIEdFTjhfUElQRV9DRENMS19DUkNf RE9ORSkKLQkJCWhzd19waXBlX2NyY19pcnFfaGFuZGxlcihkZXYsIHBpcGUpOworCQkJaHN3X3Bp cGVfY3JjX2lycV9oYW5kbGVyKGRldl9wcml2LCBwaXBlKTsKIAogCQlpZiAoaWlyICYgR0VOOF9Q SVBFX0ZJRk9fVU5ERVJSVU4pCiAJCQlpbnRlbF9jcHVfZmlmb191bmRlcnJ1bl9pcnFfaGFuZGxl cihkZXZfcHJpdiwgcGlwZSk7CkBAIC0yNDU5LDcgKzI0NDEsNyBAQCBnZW44X2RlX2lycV9oYW5k bGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1hc3Rlcl9jdGwpCiAJ CQkJICBmYXVsdF9lcnJvcnMpOwogCX0KIAotCWlmIChIQVNfUENIX1NQTElUKGRldikgJiYgIUhB U19QQ0hfTk9QKGRldikgJiYKKwlpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikgJiYgIUhBU19Q Q0hfTk9QKGRldl9wcml2KSAmJgogCSAgICBtYXN0ZXJfY3RsICYgR0VOOF9ERV9QQ0hfSVJRKSB7 CiAJCS8qCiAJCSAqIEZJWE1FKEJEVyk6IEFzc3VtZSBmb3Igbm93IHRoYXQgdGhlIG5ldyBpbnRl cnJ1cHQgaGFuZGxpbmcKQEAgLTI0NzIsOSArMjQ1NCw5IEBAIGdlbjhfZGVfaXJxX2hhbmRsZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFzdGVyX2N0bCkKIAkJCXJl dCA9IElSUV9IQU5ETEVEOwogCiAJCQlpZiAoSEFTX1BDSF9TUFQoZGV2X3ByaXYpKQotCQkJCXNw dF9pcnFfaGFuZGxlcihkZXYsIGlpcik7CisJCQkJc3B0X2lycV9oYW5kbGVyKGRldl9wcml2LCBp aXIpOwogCQkJZWxzZQotCQkJCWNwdF9pcnFfaGFuZGxlcihkZXYsIGlpcik7CisJCQkJY3B0X2ly cV9oYW5kbGVyKGRldl9wcml2LCBpaXIpOwogCQl9IGVsc2UgewogCQkJLyoKIAkJCSAqIExpa2Ug b24gcHJldmlvdXMgUENIIHRoZXJlIHNlZW1zIHRvIGJlIHNvbWV0aGluZwpAQCAtMzUwMCwzMSAr MzQ4MiwyOSBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2lycV9wcmVpbnN0YWxsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwog fQogCi1zdGF0aWMgdTMyIGludGVsX2hwZF9lbmFibGVkX2lycXMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKK3N0YXRpYyB1MzIgaW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICBjb25zdCB1MzIgaHBkW0hQRF9OVU1fUElOU10pCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwogCXUzMiBlbmFibGVkX2lycXMgPSAwOwogCi0J Zm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpCisJZm9yX2VhY2hfaW50ZWxfZW5j b2RlcihkZXZfcHJpdi0+ZGV2LCBlbmNvZGVyKQogCQlpZiAoZGV2X3ByaXYtPmhvdHBsdWcuc3Rh dHNbZW5jb2Rlci0+aHBkX3Bpbl0uc3RhdGUgPT0gSFBEX0VOQUJMRUQpCiAJCQllbmFibGVkX2ly cXMgfD0gaHBkW2VuY29kZXItPmhwZF9waW5dOwogCiAJcmV0dXJuIGVuYWJsZWRfaXJxczsKIH0K IAotc3RhdGljIHZvaWQgaWJ4X2hwZF9pcnFfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikK K3N0YXRpYyB2b2lkIGlieF9ocGRfaXJxX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwogCXUzMiBob3RwbHVnX2lycXMsIGhvdHBsdWcsIGVuYWJsZWRfaXJxczsKIAot CWlmIChIQVNfUENIX0lCWChkZXYpKSB7CisJaWYgKEhBU19QQ0hfSUJYKGRldl9wcml2KSkgewog CQlob3RwbHVnX2lycXMgPSBTREVfSE9UUExVR19NQVNLOwotCQllbmFibGVkX2lycXMgPSBpbnRl bF9ocGRfZW5hYmxlZF9pcnFzKGRldiwgaHBkX2lieCk7CisJCWVuYWJsZWRfaXJxcyA9IGludGVs X2hwZF9lbmFibGVkX2lycXMoZGV2X3ByaXYsIGhwZF9pYngpOwogCX0gZWxzZSB7CiAJCWhvdHBs dWdfaXJxcyA9IFNERV9IT1RQTFVHX01BU0tfQ1BUOwotCQllbmFibGVkX2lycXMgPSBpbnRlbF9o cGRfZW5hYmxlZF9pcnFzKGRldiwgaHBkX2NwdCk7CisJCWVuYWJsZWRfaXJxcyA9IGludGVsX2hw ZF9lbmFibGVkX2lycXMoZGV2X3ByaXYsIGhwZF9jcHQpOwogCX0KIAogCWlieF9kaXNwbGF5X2lu dGVycnVwdF91cGRhdGUoZGV2X3ByaXYsIGhvdHBsdWdfaXJxcywgZW5hYmxlZF9pcnFzKTsKQEAg LTM1NDMsMTggKzM1MjMsMTcgQEAgc3RhdGljIHZvaWQgaWJ4X2hwZF9pcnFfc2V0dXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAkgKiBXaGVuIENQVSBhbmQgUENIIGFyZSBvbiB0aGUgc2FtZSBw YWNrYWdlLCBwb3J0IEEKIAkgKiBIUEQgbXVzdCBiZSBlbmFibGVkIGluIGJvdGggbm9ydGggYW5k IHNvdXRoLgogCSAqLwotCWlmIChIQVNfUENIX0xQVF9MUChkZXYpKQorCWlmIChIQVNfUENIX0xQ VF9MUChkZXZfcHJpdikpCiAJCWhvdHBsdWcgfD0gUE9SVEFfSE9UUExVR19FTkFCTEU7CiAJSTkx NV9XUklURShQQ0hfUE9SVF9IT1RQTFVHLCBob3RwbHVnKTsKIH0KIAotc3RhdGljIHZvaWQgc3B0 X2hwZF9pcnFfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIHNwdF9o cGRfaXJxX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXUzMiBo b3RwbHVnX2lycXMsIGhvdHBsdWcsIGVuYWJsZWRfaXJxczsKIAogCWhvdHBsdWdfaXJxcyA9IFNE RV9IT1RQTFVHX01BU0tfU1BUOwotCWVuYWJsZWRfaXJxcyA9IGludGVsX2hwZF9lbmFibGVkX2ly cXMoZGV2LCBocGRfc3B0KTsKKwllbmFibGVkX2lycXMgPSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFz KGRldl9wcml2LCBocGRfc3B0KTsKIAogCWlieF9kaXNwbGF5X2ludGVycnVwdF91cGRhdGUoZGV2 X3ByaXYsIGhvdHBsdWdfaXJxcywgZW5hYmxlZF9pcnFzKTsKIApAQCAtMzU2OSwyNCArMzU0OCwy MyBAQCBzdGF0aWMgdm9pZCBzcHRfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCUk5MTVfV1JJVEUoUENIX1BPUlRfSE9UUExVRzIsIGhvdHBsdWcpOwogfQogCi1zdGF0aWMg dm9pZCBpbGtfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIHZv aWQgaWxrX2hwZF9pcnFfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog ewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 CiAJdTMyIGhvdHBsdWdfaXJxcywgaG90cGx1ZywgZW5hYmxlZF9pcnFzOwogCi0JaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDgpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7 CiAJCWhvdHBsdWdfaXJxcyA9IEdFTjhfUE9SVF9EUF9BX0hPVFBMVUc7Ci0JCWVuYWJsZWRfaXJx cyA9IGludGVsX2hwZF9lbmFibGVkX2lycXMoZGV2LCBocGRfYmR3KTsKKwkJZW5hYmxlZF9pcnFz ID0gaW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXZfcHJpdiwgaHBkX2Jkdyk7CiAKIAkJYmR3X3Vw ZGF0ZV9wb3J0X2lycShkZXZfcHJpdiwgaG90cGx1Z19pcnFzLCBlbmFibGVkX2lycXMpOwotCX0g ZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykgeworCX0gZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA3KSB7CiAJCWhvdHBsdWdfaXJxcyA9IERFX0RQX0FfSE9UUExVR19J VkI7Ci0JCWVuYWJsZWRfaXJxcyA9IGludGVsX2hwZF9lbmFibGVkX2lycXMoZGV2LCBocGRfaXZi KTsKKwkJZW5hYmxlZF9pcnFzID0gaW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXZfcHJpdiwgaHBk X2l2Yik7CiAKIAkJaWxrX3VwZGF0ZV9kaXNwbGF5X2lycShkZXZfcHJpdiwgaG90cGx1Z19pcnFz LCBlbmFibGVkX2lycXMpOwogCX0gZWxzZSB7CiAJCWhvdHBsdWdfaXJxcyA9IERFX0RQX0FfSE9U UExVRzsKLQkJZW5hYmxlZF9pcnFzID0gaW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXYsIGhwZF9p bGspOworCQllbmFibGVkX2lycXMgPSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldl9wcml2LCBo cGRfaWxrKTsKIAogCQlpbGtfdXBkYXRlX2Rpc3BsYXlfaXJxKGRldl9wcml2LCBob3RwbHVnX2ly cXMsIGVuYWJsZWRfaXJxcyk7CiAJfQpAQCAtMzYwMSwxNSArMzU3OSwxNCBAQCBzdGF0aWMgdm9p ZCBpbGtfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWhvdHBsdWcgfD0g RElHSVRBTF9QT1JUQV9IT1RQTFVHX0VOQUJMRSB8IERJR0lUQUxfUE9SVEFfUFVMU0VfRFVSQVRJ T05fMm1zOwogCUk5MTVfV1JJVEUoRElHSVRBTF9QT1JUX0hPVFBMVUdfQ05UUkwsIGhvdHBsdWcp OwogCi0JaWJ4X2hwZF9pcnFfc2V0dXAoZGV2KTsKKwlpYnhfaHBkX2lycV9zZXR1cChkZXZfcHJp dik7CiB9CiAKLXN0YXRpYyB2b2lkIGJ4dF9ocGRfaXJxX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCitzdGF0aWMgdm9pZCBieHRfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIgaG90cGx1Z19pcnFzLCBob3RwbHVnLCBlbmFibGVkX2ly cXM7CiAKLQllbmFibGVkX2lycXMgPSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldiwgaHBkX2J4 dCk7CisJZW5hYmxlZF9pcnFzID0gaW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXZfcHJpdiwgaHBk X2J4dCk7CiAJaG90cGx1Z19pcnFzID0gQlhUX0RFX1BPUlRfSE9UUExVR19NQVNLOwogCiAJYmR3 X3VwZGF0ZV9wb3J0X2lycShkZXZfcHJpdiwgaG90cGx1Z19pcnFzLCBlbmFibGVkX2lycXMpOwpA QCAtNDAwNiwxMyArMzk4MywxMiBAQCBzdGF0aWMgaW50IGk4eHhfaXJxX3Bvc3RpbnN0YWxsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAvKgogICogUmV0dXJucyB0cnVlIHdoZW4gYSBwYWdlIGZs aXAgaGFzIGNvbXBsZXRlZC4KICAqLwotc3RhdGljIGJvb2wgaTh4eF9oYW5kbGVfdmJsYW5rKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCitzdGF0aWMgYm9vbCBpOHh4X2hhbmRsZV92Ymxhbmsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgIGludCBwbGFuZSwgaW50 IHBpcGUsIHUzMiBpaXIpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MTYgZmxpcF9wZW5kaW5nID0gRElTUExBWV9QTEFORV9GTElQ X1BFTkRJTkcocGxhbmUpOwogCi0JaWYgKCFpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2LCBw aXBlKSkKKwlpZiAoIWludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXZfcHJpdiwgcGlwZSkpCiAJ CXJldHVybiBmYWxzZTsKIAogCWlmICgoaWlyICYgZmxpcF9wZW5kaW5nKSA9PSAwKQpAQCAtNDAy NywxMiArNDAwMywxMiBAQCBzdGF0aWMgYm9vbCBpOHh4X2hhbmRsZV92Ymxhbmsoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAlpZiAoSTkxNV9SRUFEMTYoSVNSKSAmIGZsaXBfcGVuZGluZykKIAkJ Z290byBjaGVja19wYWdlX2ZsaXA7CiAKLQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXYsIHBs YW5lKTsKLQlpbnRlbF9maW5pc2hfcGFnZV9mbGlwKGRldiwgcGlwZSk7CisJaW50ZWxfcHJlcGFy ZV9wYWdlX2ZsaXAoZGV2X3ByaXYsIHBsYW5lKTsKKwlpbnRlbF9maW5pc2hfcGFnZV9mbGlwKGRl dl9wcml2LCBwaXBlKTsKIAlyZXR1cm4gdHJ1ZTsKIAogY2hlY2tfcGFnZV9mbGlwOgotCWludGVs X2NoZWNrX3BhZ2VfZmxpcChkZXYsIHBpcGUpOworCWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXZf cHJpdiwgcGlwZSk7CiAJcmV0dXJuIGZhbHNlOwogfQogCkBAIC00MDg5LDE1ICs0MDY1LDE1IEBA IHN0YXRpYyBpcnFyZXR1cm5fdCBpOHh4X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykK IAogCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7CiAJCQlpbnQgcGxhbmUgPSBwaXBl OwotCQkJaWYgKEhBU19GQkMoZGV2KSkKKwkJCWlmIChIQVNfRkJDKGRldl9wcml2KSkKIAkJCQlw bGFuZSA9ICFwbGFuZTsKIAogCQkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX1ZCTEFOS19J TlRFUlJVUFRfU1RBVFVTICYmCi0JCQkgICAgaTh4eF9oYW5kbGVfdmJsYW5rKGRldiwgcGxhbmUs IHBpcGUsIGlpcikpCisJCQkgICAgaTh4eF9oYW5kbGVfdmJsYW5rKGRldl9wcml2LCBwbGFuZSwg cGlwZSwgaWlyKSkKIAkJCQlmbGlwX21hc2sgJj0gfkRJU1BMQVlfUExBTkVfRkxJUF9QRU5ESU5H KHBsYW5lKTsKIAogCQkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX0NSQ19ET05FX0lOVEVS UlVQVF9TVEFUVVMpCi0JCQkJaTl4eF9waXBlX2NyY19pcnFfaGFuZGxlcihkZXYsIHBpcGUpOwor CQkJCWk5eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpcGUpOwogCiAJCQlpZiAo cGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfRklGT19VTkRFUlJVTl9TVEFUVVMpCiAJCQkJaW50ZWxf Y3B1X2ZpZm9fdW5kZXJydW5faXJxX2hhbmRsZXIoZGV2X3ByaXYsCkBAIC00MTgyLDcgKzQxNTgs NyBAQCBzdGF0aWMgaW50IGk5MTVfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJSTkxNV9XUklURShJRVIsIGVuYWJsZV9tYXNrKTsKIAlQT1NUSU5HX1JFQUQoSUVSKTsK IAotCWk5MTVfZW5hYmxlX2FzbGVfcGlwZXN0YXQoZGV2KTsKKwlpOTE1X2VuYWJsZV9hc2xlX3Bp cGVzdGF0KGRldl9wcml2KTsKIAogCS8qIEludGVycnVwdCBzZXR1cCBpcyBhbHJlYWR5IGd1YXJh bnRlZWQgdG8gYmUgc2luZ2xlLXRocmVhZGVkLCB0aGlzIGlzCiAJICoganVzdCB0byBtYWtlIHRo ZSBhc3NlcnRfc3Bpbl9sb2NrZWQgY2hlY2sgaGFwcHkuICovCkBAIC00MTk3LDEzICs0MTczLDEy IEBAIHN0YXRpYyBpbnQgaTkxNV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIC8qCiAgKiBSZXR1cm5zIHRydWUgd2hlbiBhIHBhZ2UgZmxpcCBoYXMgY29tcGxldGVkLgog ICovCi1zdGF0aWMgYm9vbCBpOTE1X2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKK3N0YXRpYyBib29sIGk5MTVfaGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCQkgICAgICAgaW50IHBsYW5lLCBpbnQgcGlwZSwgdTMyIGlpcikKIHsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CXUzMiBmbGlwX3BlbmRpbmcgPSBESVNQTEFZX1BMQU5FX0ZMSVBfUEVORElORyhwbGFuZSk7CiAK LQlpZiAoIWludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpKQorCWlmICghaW50ZWxf cGlwZV9oYW5kbGVfdmJsYW5rKGRldl9wcml2LCBwaXBlKSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJ aWYgKChpaXIgJiBmbGlwX3BlbmRpbmcpID09IDApCkBAIC00MjE4LDEyICs0MTkzLDEyIEBAIHN0 YXRpYyBib29sIGk5MTVfaGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlm IChJOTE1X1JFQUQoSVNSKSAmIGZsaXBfcGVuZGluZykKIAkJZ290byBjaGVja19wYWdlX2ZsaXA7 CiAKLQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXYsIHBsYW5lKTsKLQlpbnRlbF9maW5pc2hf cGFnZV9mbGlwKGRldiwgcGlwZSk7CisJaW50ZWxfcHJlcGFyZV9wYWdlX2ZsaXAoZGV2X3ByaXYs IHBsYW5lKTsKKwlpbnRlbF9maW5pc2hfcGFnZV9mbGlwKGRldl9wcml2LCBwaXBlKTsKIAlyZXR1 cm4gdHJ1ZTsKIAogY2hlY2tfcGFnZV9mbGlwOgotCWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXYs IHBpcGUpOworCWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXZfcHJpdiwgcGlwZSk7CiAJcmV0dXJu IGZhbHNlOwogfQogCkBAIC00MjczLDExICs0MjQ4LDExIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBp OTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAkJCWJyZWFrOwogCiAJCS8qIENv bnN1bWUgcG9ydC4gIFRoZW4gY2xlYXIgSUlSIG9yIHdlJ2xsIG1pc3MgZXZlbnRzICovCi0JCWlm IChJOTE1X0hBU19IT1RQTFVHKGRldikgJiYKKwkJaWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2X3By aXYpICYmCiAJCSAgICBpaXIgJiBJOTE1X0RJU1BMQVlfUE9SVF9JTlRFUlJVUFQpIHsKIAkJCXUz MiBob3RwbHVnX3N0YXR1cyA9IGk5eHhfaHBkX2lycV9hY2soZGV2X3ByaXYpOwogCQkJaWYgKGhv dHBsdWdfc3RhdHVzKQotCQkJCWk5eHhfaHBkX2lycV9oYW5kbGVyKGRldiwgaG90cGx1Z19zdGF0 dXMpOworCQkJCWk5eHhfaHBkX2lycV9oYW5kbGVyKGRldl9wcml2LCBob3RwbHVnX3N0YXR1cyk7 CiAJCX0KIAogCQlJOTE1X1dSSVRFKElJUiwgaWlyICYgfmZsaXBfbWFzayk7CkBAIC00Mjg4LDE4 ICs0MjYzLDE4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpOTE1X2lycV9oYW5kbGVyKGludCBpcnEs IHZvaWQgKmFyZykKIAogCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7CiAJCQlpbnQg cGxhbmUgPSBwaXBlOwotCQkJaWYgKEhBU19GQkMoZGV2KSkKKwkJCWlmIChIQVNfRkJDKGRldl9w cml2KSkKIAkJCQlwbGFuZSA9ICFwbGFuZTsKIAogCQkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQ SVBFX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTICYmCi0JCQkgICAgaTkxNV9oYW5kbGVfdmJsYW5r KGRldiwgcGxhbmUsIHBpcGUsIGlpcikpCisJCQkgICAgaTkxNV9oYW5kbGVfdmJsYW5rKGRldl9w cml2LCBwbGFuZSwgcGlwZSwgaWlyKSkKIAkJCQlmbGlwX21hc2sgJj0gfkRJU1BMQVlfUExBTkVf RkxJUF9QRU5ESU5HKHBsYW5lKTsKIAogCQkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX0xF R0FDWV9CTENfRVZFTlRfU1RBVFVTKQogCQkJCWJsY19ldmVudCA9IHRydWU7CiAKIAkJCWlmIChw aXBlX3N0YXRzW3BpcGVdICYgUElQRV9DUkNfRE9ORV9JTlRFUlJVUFRfU1RBVFVTKQotCQkJCWk5 eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoZGV2LCBwaXBlKTsKKwkJCQlpOXh4X3BpcGVfY3JjX2ly cV9oYW5kbGVyKGRldl9wcml2LCBwaXBlKTsKIAogCQkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQ SVBFX0ZJRk9fVU5ERVJSVU5fU1RBVFVTKQogCQkJCWludGVsX2NwdV9maWZvX3VuZGVycnVuX2ly cV9oYW5kbGVyKGRldl9wcml2LApAQCAtNDMwNyw3ICs0MjgyLDcgQEAgc3RhdGljIGlycXJldHVy bl90IGk5MTVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCQl9CiAKIAkJaWYgKGJs Y19ldmVudCB8fCAoaWlyICYgSTkxNV9BU0xFX0lOVEVSUlVQVCkpCi0JCQlpbnRlbF9vcHJlZ2lv bl9hc2xlX2ludHIoZGV2KTsKKwkJCWludGVsX29wcmVnaW9uX2FzbGVfaW50cihkZXZfcHJpdik7 CiAKIAkJLyogV2l0aCBNU0ksIGludGVycnVwdHMgYXJlIG9ubHkgZ2VuZXJhdGVkIHdoZW4gaWly CiAJCSAqIHRyYW5zaXRpb25zIGZyb20gemVybyB0byBub256ZXJvLiAgSWYgYW5vdGhlciBiaXQg Z290CkBAIC00MzkxLDcgKzQzNjYsNyBAQCBzdGF0aWMgaW50IGk5NjVfaXJxX3Bvc3RpbnN0YWxs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCQkgSTkxNV9ESVNQTEFZX1BMQU5FX0JfRkxJUF9Q RU5ESU5HX0lOVEVSUlVQVCk7CiAJZW5hYmxlX21hc2sgfD0gSTkxNV9VU0VSX0lOVEVSUlVQVDsK IAotCWlmIChJU19HNFgoZGV2KSkKKwlpZiAoSVNfRzRYKGRldl9wcml2KSkKIAkJZW5hYmxlX21h c2sgfD0gSTkxNV9CU0RfVVNFUl9JTlRFUlJVUFQ7CiAKIAkvKiBJbnRlcnJ1cHQgc2V0dXAgaXMg YWxyZWFkeSBndWFyYW50ZWVkIHRvIGJlIHNpbmdsZS10aHJlYWRlZCwgdGhpcyBpcwpAQCAtNDQw Niw3ICs0MzgxLDcgQEAgc3RhdGljIGludCBpOTY1X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCSAqIEVuYWJsZSBzb21lIGVycm9yIGRldGVjdGlvbiwgbm90ZSB0aGUg aW5zdHJ1Y3Rpb24gZXJyb3IgbWFzawogCSAqIGJpdCBpcyByZXNlcnZlZCwgc28gd2UgbGVhdmUg aXQgbWFza2VkLgogCSAqLwotCWlmIChJU19HNFgoZGV2KSkgeworCWlmIChJU19HNFgoZGV2X3By aXYpKSB7CiAJCWVycm9yX21hc2sgPSB+KEdNNDVfRVJST1JfUEFHRV9UQUJMRSB8CiAJCQkgICAg ICAgR000NV9FUlJPUl9NRU1fUFJJViB8CiAJCQkgICAgICAgR000NV9FUlJPUl9DUF9QUklWIHwK QEAgLTQ0MjQsMjYgKzQzOTksMjUgQEAgc3RhdGljIGludCBpOTY1X2lycV9wb3N0aW5zdGFsbChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWk5MTVfaG90cGx1Z19pbnRlcnJ1cHRfdXBkYXRlKGRl dl9wcml2LCAweGZmZmZmZmZmLCAwKTsKIAlQT1NUSU5HX1JFQUQoUE9SVF9IT1RQTFVHX0VOKTsK IAotCWk5MTVfZW5hYmxlX2FzbGVfcGlwZXN0YXQoZGV2KTsKKwlpOTE1X2VuYWJsZV9hc2xlX3Bp cGVzdGF0KGRldl9wcml2KTsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBpOTE1X2hw ZF9pcnFfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIGk5MTVfaHBk X2lycV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIgaG90 cGx1Z19lbjsKIAogCWFzc2VydF9zcGluX2xvY2tlZCgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIAog CS8qIE5vdGUgSERNSSBhbmQgRFAgc2hhcmUgaG90cGx1ZyBiaXRzICovCiAJLyogZW5hYmxlIGJp dHMgYXJlIHRoZSBzYW1lIGZvciBhbGwgZ2VuZXJhdGlvbnMgKi8KLQlob3RwbHVnX2VuID0gaW50 ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXYsIGhwZF9tYXNrX2k5MTUpOworCWhvdHBsdWdfZW4gPSBp bnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldl9wcml2LCBocGRfbWFza19pOTE1KTsKIAkvKiBQcm9n cmFtbWluZyB0aGUgQ1JUIGRldGVjdGlvbiBwYXJhbWV0ZXJzIHRlbmRzCiAJICAgdG8gZ2VuZXJh dGUgYSBzcHVyaW91cyBob3RwbHVnIGV2ZW50IGFib3V0IHRocmVlCiAJICAgc2Vjb25kcyBsYXRl ci4gIFNvIGp1c3QgZG8gaXQgb25jZS4KIAkqLwotCWlmIChJU19HNFgoZGV2KSkKKwlpZiAoSVNf RzRYKGRldl9wcml2KSkKIAkJaG90cGx1Z19lbiB8PSBDUlRfSE9UUExVR19BQ1RJVkFUSU9OX1BF UklPRF82NDsKIAlob3RwbHVnX2VuIHw9IENSVF9IT1RQTFVHX1ZPTFRBR0VfQ09NUEFSRV81MDsK IApAQCAtNDUxMCw3ICs0NDg0LDcgQEAgc3RhdGljIGlycXJldHVybl90IGk5NjVfaXJxX2hhbmRs ZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCQlpZiAoaWlyICYgSTkxNV9ESVNQTEFZX1BPUlRfSU5U RVJSVVBUKSB7CiAJCQl1MzIgaG90cGx1Z19zdGF0dXMgPSBpOXh4X2hwZF9pcnFfYWNrKGRldl9w cml2KTsKIAkJCWlmIChob3RwbHVnX3N0YXR1cykKLQkJCQlpOXh4X2hwZF9pcnFfaGFuZGxlcihk ZXYsIGhvdHBsdWdfc3RhdHVzKTsKKwkJCQlpOXh4X2hwZF9pcnFfaGFuZGxlcihkZXZfcHJpdiwg aG90cGx1Z19zdGF0dXMpOwogCQl9CiAKIAkJSTkxNV9XUklURShJSVIsIGlpciAmIH5mbGlwX21h c2spOwpAQCAtNDUyMywyNCArNDQ5NywyNCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaTk2NV9pcnFf aGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAKIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwg cGlwZSkgewogCQkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX1NUQVJUX1ZCTEFOS19JTlRF UlJVUFRfU1RBVFVTICYmCi0JCQkgICAgaTkxNV9oYW5kbGVfdmJsYW5rKGRldiwgcGlwZSwgcGlw ZSwgaWlyKSkKKwkJCSAgICBpOTE1X2hhbmRsZV92YmxhbmsoZGV2X3ByaXYsIHBpcGUsIHBpcGUs IGlpcikpCiAJCQkJZmxpcF9tYXNrICY9IH5ESVNQTEFZX1BMQU5FX0ZMSVBfUEVORElORyhwaXBl KTsKIAogCQkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX0xFR0FDWV9CTENfRVZFTlRfU1RB VFVTKQogCQkJCWJsY19ldmVudCA9IHRydWU7CiAKIAkJCWlmIChwaXBlX3N0YXRzW3BpcGVdICYg UElQRV9DUkNfRE9ORV9JTlRFUlJVUFRfU1RBVFVTKQotCQkJCWk5eHhfcGlwZV9jcmNfaXJxX2hh bmRsZXIoZGV2LCBwaXBlKTsKKwkJCQlpOXh4X3BpcGVfY3JjX2lycV9oYW5kbGVyKGRldl9wcml2 LCBwaXBlKTsKIAogCQkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX0ZJRk9fVU5ERVJSVU5f U1RBVFVTKQogCQkJCWludGVsX2NwdV9maWZvX3VuZGVycnVuX2lycV9oYW5kbGVyKGRldl9wcml2 LCBwaXBlKTsKIAkJfQogCiAJCWlmIChibGNfZXZlbnQgfHwgKGlpciAmIEk5MTVfQVNMRV9JTlRF UlJVUFQpKQotCQkJaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKGRldik7CisJCQlpbnRlbF9vcHJl Z2lvbl9hc2xlX2ludHIoZGV2X3ByaXYpOwogCiAJCWlmIChwaXBlX3N0YXRzWzBdICYgUElQRV9H TUJVU19JTlRFUlJVUFRfU1RBVFVTKQotCQkJZ21idXNfaXJxX2hhbmRsZXIoZGV2KTsKKwkJCWdt YnVzX2lycV9oYW5kbGVyKGRldl9wcml2KTsKIAogCQkvKiBXaXRoIE1TSSwgaW50ZXJydXB0cyBh cmUgb25seSBnZW5lcmF0ZWQgd2hlbiBpaXIKIAkJICogdHJhbnNpdGlvbnMgZnJvbSB6ZXJvIHRv IG5vbnplcm8uICBJZiBhbm90aGVyIGJpdCBnb3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwppbmRleCA0NWMyMThkYjg2YmUuLjBlNGUyZjNhY2IwZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwpAQCAtMzExMSwxNiArMzExMSwxNiBAQCBpbnRlbF9waXBlX3NldF9i YXNlX2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiLAogCXJldHVybiAtRU5PREVWOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9jb21wbGV0ZV9w YWdlX2ZsaXBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgdm9pZCBpbnRlbF9jb21w bGV0ZV9wYWdlX2ZsaXBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlz dHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAKLQlmb3JfZWFjaF9jcnRjKGRldiwgY3J0YykgeworCWZv cl9lYWNoX2NydGMoZGV2X3ByaXYtPmRldiwgY3J0YykgewogCQlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJCWVudW0gcGxhbmUgcGxhbmUgPSBp bnRlbF9jcnRjLT5wbGFuZTsKIAotCQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXYsIHBsYW5l KTsKLQkJaW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9wbGFuZShkZXYsIHBsYW5lKTsKKwkJaW50ZWxf cHJlcGFyZV9wYWdlX2ZsaXAoZGV2X3ByaXYsIHBsYW5lKTsKKwkJaW50ZWxfZmluaXNoX3BhZ2Vf ZmxpcF9wbGFuZShkZXZfcHJpdiwgcGxhbmUpOwogCX0KIH0KIApAQCAtMzE3MSw3ICszMTcxLDcg QEAgdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkgKiBz byBjb21wbGV0ZSBhbGwgcGVuZGluZyBmbGlwcyBzbyB0aGF0IHVzZXIgc3BhY2UKIAkgKiB3aWxs IGdldCBpdHMgZXZlbnRzIGFuZCBub3QgZ2V0IHN0dWNrLgogCSAqLwotCWludGVsX2NvbXBsZXRl X3BhZ2VfZmxpcHMoZGV2KTsKKwlpbnRlbF9jb21wbGV0ZV9wYWdlX2ZsaXBzKGRldl9wcml2KTsK IAogCS8qIG5vIHJlc2V0IHN1cHBvcnQgZm9yIGdlbjIgKi8KIAlpZiAoSVNfR0VOMihkZXYpKQpA QCAtMzIwMyw3ICszMjAzLDcgQEAgdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAogCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiAJaWYg KGRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXApCi0JCWRldl9wcml2LT5kaXNwbGF5Lmhw ZF9pcnFfc2V0dXAoZGV2KTsKKwkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cChkZXZf cHJpdik7CiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwogCiAJaW50ZWxf ZGlzcGxheV9yZXN1bWUoZGV2KTsKQEAgLTEwODc0LDkgKzEwODc0LDEwIEBAIHN0YXRpYyB2b2lk IGludGVsX3VucGluX3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCiAJa2ZyZWUo d29yayk7CiB9CiAKLXN0YXRpYyB2b2lkIGRvX2ludGVsX2ZpbmlzaF9wYWdlX2ZsaXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKK3N0YXRpYyB2b2lkIGRvX2ludGVsX2ZpbmlzaF9wYWdlX2ZsaXAo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgICAgIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsK IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJ c3RydWN0IGludGVsX3VucGluX3dvcmsgKndvcms7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKQEAg LTEwOTA1LDIwICsxMDkwNiwxOCBAQCBzdGF0aWMgdm9pZCBkb19pbnRlbF9maW5pc2hfcGFnZV9m bGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2 LT5ldmVudF9sb2NrLCBmbGFncyk7CiB9CiAKLXZvaWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSkKK3ZvaWQgaW50ZWxfZmluaXNoX3BhZ2Vf ZmxpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBwaXBlKQogewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3Ry dWN0IGRybV9jcnRjICpjcnRjID0gZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVd OwogCi0JZG9faW50ZWxfZmluaXNoX3BhZ2VfZmxpcChkZXYsIGNydGMpOworCWRvX2ludGVsX2Zp bmlzaF9wYWdlX2ZsaXAoZGV2X3ByaXYsIGNydGMpOwogfQogCi12b2lkIGludGVsX2ZpbmlzaF9w YWdlX2ZsaXBfcGxhbmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBsYW5lKQordm9pZCBp bnRlbF9maW5pc2hfcGFnZV9mbGlwX3BsYW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgaW50IHBsYW5lKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gZGV2X3ByaXYtPnBs YW5lX3RvX2NydGNfbWFwcGluZ1twbGFuZV07CiAKLQlkb19pbnRlbF9maW5pc2hfcGFnZV9mbGlw KGRldiwgY3J0Yyk7CisJZG9faW50ZWxfZmluaXNoX3BhZ2VfZmxpcChkZXZfcHJpdiwgY3J0Yyk7 CiB9CiAKIC8qIElzICdhJyBhZnRlciBvciBlcXVhbCB0byAnYic/ICovCkBAIC0xMDk3NCw5ICsx MDk3Myw5IEBAIHN0YXRpYyBib29sIHBhZ2VfZmxpcF9maW5pc2hlZChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YykKIAkJCQkgICAgY3J0Yy0+dW5waW5fd29yay0+ZmxpcF9jb3VudCk7CiB9CiAKLXZv aWQgaW50ZWxfcHJlcGFyZV9wYWdlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBs YW5lKQordm9pZCBpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGludCBwbGFuZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZf cHJpdi0+ZGV2OwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0KIAkJdG9faW50ZWxf Y3J0YyhkZXZfcHJpdi0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nW3BsYW5lXSk7CiAJdW5zaWduZWQg bG9uZyBmbGFnczsKQEAgLTExNDc2LDkgKzExNDc1LDkgQEAgc3RhdGljIGJvb2wgX19pbnRlbF9w YWdlZmxpcF9zdGFsbF9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXJldHVybiBhZGRy ID09IHdvcmstPmd0dF9vZmZzZXQ7CiB9CiAKLXZvaWQgaW50ZWxfY2hlY2tfcGFnZV9mbGlwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQordm9pZCBpbnRlbF9jaGVja19wYWdlX2Zs aXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgcGlwZSkKIHsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2OwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YyA9IGRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsKIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJc3RydWN0IGludGVsX3Vu cGluX3dvcmsgKndvcms7CkBAIC0xMTQ5OCw3ICsxMTQ5Nyw3IEBAIHZvaWQgaW50ZWxfY2hlY2tf cGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQogCX0KIAlpZiAod29y ayAhPSBOVUxMICYmCiAJICAgIGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBlKSAtIHdvcmstPmZs aXBfcXVldWVkX3ZibGFuayA+IDEpCi0JCWludGVsX3F1ZXVlX3Jwc19ib29zdF9mb3JfcmVxdWVz dChkZXYsIHdvcmstPmZsaXBfcXVldWVkX3JlcSk7CisJCWludGVsX3F1ZXVlX3Jwc19ib29zdF9m b3JfcmVxdWVzdCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpOwogCXNwaW5fdW5sb2NrKCZkZXYtPmV2 ZW50X2xvY2spOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDUxMDU4NTIyNzQx YS4uZmM3NTQ0YTZlYWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTAyOCw4ICsx MDI4LDggQEAgdm9pZCBnZW41X2Rpc2FibGVfZ3RfaXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdWludDMyX3QgbWFzayk7CiB2b2lkIGdlbjZfZW5hYmxlX3BtX2lycShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90IG1hc2spOwogdm9pZCBnZW42 X2Rpc2FibGVfcG1faXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdWludDMy X3QgbWFzayk7CiB2b2lkIGdlbjZfcmVzZXRfcnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Ci12b2lkIGdlbjZfZW5hYmxlX3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwotdm9pZCBnZW42X2Rpc2FibGVfcnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7Cit2b2lkIGdlbjZfZW5hYmxlX3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdTMyIGdlbjZfc2FuaXRpemVf cnBzX3BtX21hc2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFzayk7 CiB2b2lkIGludGVsX3J1bnRpbWVfcG1fZGlzYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlX2ludGVy cnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKQEAgLTExNjYsMTAgKzEx NjYsMTAgQEAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqCiBfX2ludGVsX2ZyYW1lYnVmZmVyX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICAgc3RydWN0IGRybV9tb2RlX2ZiX2Nt ZDIgKm1vZGVfY21kLAogCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Ci12 b2lkIGludGVsX3ByZXBhcmVfcGFnZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBw bGFuZSk7Ci12b2lkIGludGVsX2ZpbmlzaF9wYWdlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgaW50IHBpcGUpOwotdm9pZCBpbnRlbF9maW5pc2hfcGFnZV9mbGlwX3BsYW5lKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBwbGFuZSk7Ci12b2lkIGludGVsX2NoZWNrX3BhZ2VfZmxpcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSk7Cit2b2lkIGludGVsX3ByZXBhcmVfcGFn ZV9mbGlwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHBsYW5lKTsKK3Zv aWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGludCBwaXBlKTsKK3ZvaWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9wbGFuZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBwbGFuZSk7Cit2b2lkIGludGVsX2NoZWNr X3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBwaXBlKTsK IGludCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJ ICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKTsKIHZvaWQgaW50ZWxf Y2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKQEAgLTE2MTksOCArMTYx OSw3IEBAIHZvaWQgZ2VuNl9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogdm9pZCBnZW42X3Jwc19ib29zdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCSAgICBzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzLAogCQkgICAgdW5zaWduZWQg bG9uZyBzdWJtaXR0ZWQpOwotdm9pZCBpbnRlbF9xdWV1ZV9ycHNfYm9vc3RfZm9yX3JlcXVlc3Qo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpOwordm9pZCBpbnRlbF9xdWV1ZV9ycHNfYm9vc3RfZm9yX3JlcXVlc3Qoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwogdm9pZCB2bHZfd21fZ2V0X2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBpbGtfd21fZ2V0X2h3X3N0YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwogdm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90 cGx1Zy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCmluZGV4IGJlZTY3 MzAwNWQ0OC4uMzhlZWNhN2E2ZTcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ob3RwbHVnLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5j CkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaHBkX2lycV9zdG9ybV9yZWVu YWJsZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJfQogCX0KIAlpZiAoZGV2X3By aXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCkKLQkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9z ZXR1cChkZXYpOworCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwKGRldl9wcml2KTsK IAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiAKIAlpbnRlbF9ydW50aW1l X3BtX3B1dChkZXZfcHJpdik7CkBAIC0zNDYsNyArMzQ2LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9o b3RwbHVnX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIC8qKgogICogaW50 ZWxfaHBkX2lycV9oYW5kbGVyIC0gbWFpbiBob3RwbHVnIGlycSBoYW5kbGVyCi0gKiBAZGV2OiBk cm0gZGV2aWNlCisgKiBAZGV2X3ByaXY6IGRybV9pOTE1X3ByaXZhdGUKICAqIEBwaW5fbWFzazog YSBtYXNrIG9mIGhwZCBwaW5zIHRoYXQgaGF2ZSB0cmlnZ2VyZWQgdGhlIGlycQogICogQGxvbmdf bWFzazogYSBtYXNrIG9mIGhwZCBwaW5zIHRoYXQgbWF5IGJlIGxvbmcgaHBkIHB1bHNlcwogICoK QEAgLTM2MCwxMCArMzYwLDkgQEAgc3RhdGljIHZvaWQgaTkxNV9ob3RwbHVnX3dvcmtfZnVuYyhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAgKiBIZXJlLCB3ZSBkbyBob3RwbHVnIGlycSBzdG9y bSBkZXRlY3Rpb24gYW5kIG1pdGlnYXRpb24sIGFuZCBwYXNzIGZ1cnRoZXIKICAqIHByb2Nlc3Np bmcgdG8gYXBwcm9wcmlhdGUgYm90dG9tIGhhbHZlcy4KICAqLwotdm9pZCBpbnRlbF9ocGRfaXJx X2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKK3ZvaWQgaW50ZWxfaHBkX2lycV9oYW5k bGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgIHUzMiBwaW5fbWFz aywgdTMyIGxvbmdfbWFzaykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwogCWludCBpOwogCWVudW0gcG9ydCBwb3J0OwogCWJvb2wgc3Rv cm1fZGV0ZWN0ZWQgPSBmYWxzZTsKQEAgLTQwNyw3ICs0MDYsNyBAQCB2b2lkIGludGVsX2hwZF9p cnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJICogaG90cGx1ZyBiaXRzIGl0 c2VsZi4gU28gb25seSBXQVJOIGFib3V0IHVuZXhwZWN0ZWQKIAkJCSAqIGludGVycnVwdHMgb24g c2FuZXIgcGxhdGZvcm1zLgogCQkJICovCi0JCQlXQVJOX09OQ0UoIUhBU19HTUNIX0RJU1BMQVko ZGV2KSwKKwkJCVdBUk5fT05DRSghSEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdiksCiAJCQkJICAi UmVjZWl2ZWQgSFBEIGludGVycnVwdCBvbiBwaW4gJWQgYWx0aG91Z2ggZGlzYWJsZWRcbiIsIGkp OwogCQkJY29udGludWU7CiAJCX0KQEAgLTQyNyw3ICs0MjYsNyBAQCB2b2lkIGludGVsX2hwZF9p cnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIAogCWlmIChzdG9ybV9kZXRl Y3RlZCkKLQkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cChkZXYpOworCQlkZXZfcHJp di0+ZGlzcGxheS5ocGRfaXJxX3NldHVwKGRldl9wcml2KTsKIAlzcGluX3VubG9jaygmZGV2X3By aXYtPmlycV9sb2NrKTsKIAogCS8qCkBAIC00ODUsNyArNDg0LDcgQEAgdm9pZCBpbnRlbF9ocGRf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICovCiAJc3Bpbl9sb2Nr X2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2ly cV9zZXR1cCkKLQkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cChkZXYpOworCQlkZXZf cHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwKGRldl9wcml2KTsKIAlzcGluX3VubG9ja19pcnEo JmRldl9wcml2LT5pcnFfbG9jayk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX29wcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lv bi5jCmluZGV4IDk5ZTI2MDM0YWU4ZC4uODM0N2ZkOGFmOGU0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX29wcmVnaW9uLmMKQEAgLTU3NCwxMCArNTc0LDggQEAgc3RhdGljIHZvaWQgYXNsZV93 b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlhc2xlLT5hc2xjID0gYXNsY19zdGF0Owog fQogCi12b2lkIGludGVsX29wcmVnaW9uX2FzbGVfaW50cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQordm9pZCBpbnRlbF9vcHJlZ2lvbl9hc2xlX2ludHIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Ci0KIAlpZiAoZGV2X3ByaXYtPm9wcmVnaW9uLmFzbGUpCiAJCXNjaGVkdWxl X3dvcmsoJmRldl9wcml2LT5vcHJlZ2lvbi5hc2xlX3dvcmspOwogfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKaW5kZXggMDE3YzQzMWY5MzYzLi45OTlhYjhlMzBjMzUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYwpAQCAtNDE2Nyw5ICs0MTY3LDggQEAgREVGSU5FX1NQSU5MT0NLKG1jaGRldl9sb2Nr KTsKICAqIG1jaGRldl9sb2NrLiAqLwogc3RhdGljIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1X21jaF9kZXY7CiAKLWJvb2wgaXJvbmxha2Vfc2V0X2RycHMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdTggdmFsKQorYm9vbCBpcm9ubGFrZV9zZXRfZHJwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXUxNiByZ3Zzd2N0bDsKIAogCWFzc2VydF9zcGlu X2xvY2tlZCgmbWNoZGV2X2xvY2spOwpAQCAtNDE5MSw5ICs0MTkwLDggQEAgYm9vbCBpcm9ubGFr ZV9zZXRfZHJwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1OCB2YWwpCiAJcmV0dXJuIHRydWU7 CiB9CiAKLXN0YXRpYyB2b2lkIGlyb25sYWtlX2VuYWJsZV9kcnBzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCitzdGF0aWMgdm9pZCBpcm9ubGFrZV9lbmFibGVfZHJwcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIgcmd2bW9kZWN0bDsKIAl1OCBmbWF4LCBmbWluLCBm c3RhcnQsIHZzdGFydDsKIApAQCAtNDI1MCw3ICs0MjQ4LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxh a2VfZW5hYmxlX2RycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJRFJNX0VSUk9SKCJzdHVj ayB0cnlpbmcgdG8gY2hhbmdlIHBlcmYgbW9kZVxuIik7CiAJbWRlbGF5KDEpOwogCi0JaXJvbmxh a2Vfc2V0X2RycHMoZGV2LCBmc3RhcnQpOworCWlyb25sYWtlX3NldF9kcnBzKGRldl9wcml2LCBm c3RhcnQpOwogCiAJZGV2X3ByaXYtPmlwcy5sYXN0X2NvdW50MSA9IEk5MTVfUkVBRChETUlFQykg KwogCQlJOTE1X1JFQUQoRERSRUMpICsgSTkxNV9SRUFEKENTSUVDKTsKQEAgLTQyNjEsOSArNDI1 OSw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2VuYWJsZV9kcnBzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJc3Bpbl91bmxvY2tfaXJxKCZtY2hkZXZfbG9jayk7CiB9CiAKLXN0YXRpYyB2b2lk IGlyb25sYWtlX2Rpc2FibGVfZHJwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIHZv aWQgaXJvbmxha2VfZGlzYWJsZV9kcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwogCXUxNiByZ3Zzd2N0bDsKIAogCXNwaW5fbG9ja19pcnEoJm1jaGRldl9sb2NrKTsKQEAg LTQyNzgsNyArNDI3NSw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2Rpc2FibGVfZHJwcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCUk5MTVfV1JJVEUoREVJTVIsIEk5MTVfUkVBRChERUlNUikg fCBERV9QQ1VfRVZFTlQpOwogCiAJLyogR28gYmFjayB0byB0aGUgc3RhcnRpbmcgZnJlcXVlbmN5 ICovCi0JaXJvbmxha2Vfc2V0X2RycHMoZGV2LCBkZXZfcHJpdi0+aXBzLmZzdGFydCk7CisJaXJv bmxha2Vfc2V0X2RycHMoZGV2X3ByaXYsIGRldl9wcml2LT5pcHMuZnN0YXJ0KTsKIAltZGVsYXko MSk7CiAJcmd2c3djdGwgfD0gTUVNQ1RMX0NNRF9TVFM7CiAJSTkxNV9XUklURShNRU1TV0NUTCwg cmd2c3djdGwpOwpAQCAtNjA5NSw3ICs2MDkyLDcgQEAgYm9vbCBpOTE1X2dwdV90dXJib19kaXNh YmxlKHZvaWQpCiAKIAlkZXZfcHJpdi0+aXBzLm1heF9kZWxheSA9IGRldl9wcml2LT5pcHMuZnN0 YXJ0OwogCi0JaWYgKCFpcm9ubGFrZV9zZXRfZHJwcyhkZXZfcHJpdi0+ZGV2LCBkZXZfcHJpdi0+ aXBzLmZzdGFydCkpCisJaWYgKCFpcm9ubGFrZV9zZXRfZHJwcyhkZXZfcHJpdiwgZGV2X3ByaXYt Pmlwcy5mc3RhcnQpKQogCQlyZXQgPSBmYWxzZTsKIAogb3V0X3VubG9jazoKQEAgLTYyNDYsMTMg KzYyNDMsMTEgQEAgdm9pZCBpbnRlbF9jbGVhbnVwX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQogCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CiB9CiAKLXN0YXRp YyB2b2lkIGdlbjZfc3VzcGVuZF9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyB2 b2lkIGdlbjZfc3VzcGVuZF9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog ewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Ci0KIAlmbHVzaF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5ycHMuZGVsYXllZF9yZXN1bWVfd29y ayk7CiAKLQlnZW42X2Rpc2FibGVfcnBzX2ludGVycnVwdHMoZGV2KTsKKwlnZW42X2Rpc2FibGVf cnBzX2ludGVycnVwdHMoZGV2X3ByaXYpOwogfQogCiAvKioKQEAgLTYyNjcsMTAgKzYyNjIsMTAg QEAgdm9pZCBpbnRlbF9zdXNwZW5kX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQorCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNikKIAkJcmV0dXJuOwogCi0JZ2VuNl9zdXNwZW5kX3JwcyhkZXYpOworCWdlbjZf c3VzcGVuZF9ycHMoZGV2X3ByaXYpOwogCiAJLyogRm9yY2UgR1BVIHRvIG1pbiBmcmVxIGR1cmlu ZyBzdXNwZW5kICovCiAJZ2VuNl9ycHNfaWRsZShkZXZfcHJpdik7CkBAIC02MjgxLDcgKzYyNzYs NyBAQCB2b2lkIGludGVsX2Rpc2FibGVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKIAogCWlmIChJU19JUk9OTEFLRV9NKGRldikpIHsKLQkJaXJvbmxha2VfZGlzYWJsZV9kcnBz KGRldik7CisJCWlyb25sYWtlX2Rpc2FibGVfZHJwcyhkZXZfcHJpdik7CiAJfSBlbHNlIGlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KSB7CiAJCWludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZl KGRldik7CiAKQEAgLTYzMzcsNyArNjMzMiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2dlbjZfcG93 ZXJzYXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiAJZGV2X3ByaXYtPnJwcy5l bmFibGVkID0gdHJ1ZTsKIAotCWdlbjZfZW5hYmxlX3Jwc19pbnRlcnJ1cHRzKGRldik7CisJZ2Vu Nl9lbmFibGVfcnBzX2ludGVycnVwdHMoZGV2X3ByaXYpOwogCiAJbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+cnBzLmh3X2xvY2spOwogCkBAIC02MzUzLDcgKzYzNDgsNyBAQCB2b2lkIGludGVsX2Vu YWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJcmV0dXJuOwogCiAJ aWYgKElTX0lST05MQUtFX00oZGV2KSkgewotCQlpcm9ubGFrZV9lbmFibGVfZHJwcyhkZXYpOwor CQlpcm9ubGFrZV9lbmFibGVfZHJwcyhkZXZfcHJpdik7CiAJCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKIAkJaW50ZWxfaW5pdF9lbW9uKGRldik7CiAJCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwpAQCAtNjM4Myw3ICs2Mzc4LDcgQEAgdm9pZCBpbnRlbF9yZXNldF9n dF9wb3dlcnNhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA2KQogCQlyZXR1cm47CiAKLQlnZW42X3N1c3BlbmRfcnBzKGRldik7CisJZ2VuNl9z dXNwZW5kX3JwcyhkZXZfcHJpdik7CiAJZGV2X3ByaXYtPnJwcy5lbmFibGVkID0gZmFsc2U7CiB9 CiAKQEAgLTc0MTIsMTIgKzc0MDcsMTEgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9ycHNfYm9vc3Rf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJa2ZyZWUoYm9vc3QpOwogfQogCi12b2lk IGludGVsX3F1ZXVlX3Jwc19ib29zdF9mb3JfcmVxdWVzdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAotCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKK3ZvaWQgaW50 ZWxfcXVldWVfcnBzX2Jvb3N0X2Zvcl9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKQogewogCXN0cnVjdCByZXF1ZXN0X2Jvb3N0ICpib29zdDsKIAotCWlmIChyZXEgPT0g TlVMTCB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDYpCisJaWYgKHJlcSA9PSBOVUxMIHx8IElO VEVMX0dFTihyZXEtPmk5MTUpIDwgNikKIAkJcmV0dXJuOwogCiAJaWYgKGk5MTVfZ2VtX3JlcXVl c3RfY29tcGxldGVkKHJlcSwgdHJ1ZSkpCkBAIC03NDMxLDcgKzc0MjUsNyBAQCB2b2lkIGludGVs X3F1ZXVlX3Jwc19ib29zdF9mb3JfcmVxdWVzdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWJv b3N0LT5yZXEgPSByZXE7CiAKIAlJTklUX1dPUksoJmJvb3N0LT53b3JrLCBfX2ludGVsX3Jwc19i b29zdF93b3JrKTsKLQlxdWV1ZV93b3JrKHRvX2k5MTUoZGV2KS0+d3EsICZib29zdC0+d29yayk7 CisJcXVldWVfd29yayhyZXEtPmk5MTUtPndxLCAmYm9vc3QtPndvcmspOwogfQogCiB2b2lkIGlu dGVsX3BtX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCi0tIAoxLjkuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==