From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 13/15] drm/i915: dev_priv cleanup in intel_display.c Date: Wed, 16 Nov 2016 08:55:43 +0000 Message-ID: <1479286545-15020-14-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1479286545-15020-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id B5C186E670 for ; Wed, 16 Nov 2016 08:56:05 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id u144so8750555wmu.0 for ; Wed, 16 Nov 2016 00:56:05 -0800 (PST) In-Reply-To: <1479286545-15020-1-git-send-email-tvrtko.ursulin@linux.intel.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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyB8IDE2NyArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQog MyBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA5NyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwppbmRleCBjZTM0ZTdhYjQ0YWIuLjQ0NWZlYzljMjg0MSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCkBAIC00OTUsNyArNDk1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGlu dCBpOTE1X3ZnYV9zZXRfZGVjb2RlKHZvaWQgKmNvb2tpZSwgYm9vbCBzdGF0ZSkKIHsKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY29va2llOwogCi0JaW50ZWxfbW9kZXNldF92Z2Ffc2V0X3N0 YXRlKGRldiwgc3RhdGUpOworCWludGVsX21vZGVzZXRfdmdhX3NldF9zdGF0ZSh0b19pOTE1KGRl diksIHN0YXRlKTsKIAlpZiAoc3RhdGUpCiAJCXJldHVybiBWR0FfUlNSQ19MRUdBQ1lfSU8gfCBW R0FfUlNSQ19MRUdBQ1lfTUVNIHwKIAkJICAgICAgIFZHQV9SU1JDX05PUk1BTF9JTyB8IFZHQV9S U1JDX05PUk1BTF9NRU07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAwYmMzM2U1YmUwNWYu LmE5NzEwZjdhNWQ2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zNDY2LDcgKzM0NjYs OCBAQCBleHRlcm4gdm9pZCBpbnRlbF9tb2Rlc2V0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfbW9kZXNldF9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwogZXh0ZXJuIGludCBpbnRlbF9jb25uZWN0b3JfcmVnaXN0ZXIoc3RydWN0IGRy bV9jb25uZWN0b3IgKik7CiBleHRlcm4gdm9pZCBpbnRlbF9jb25uZWN0b3JfdW5yZWdpc3Rlcihz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqKTsKLWV4dGVybiBpbnQgaW50ZWxfbW9kZXNldF92Z2Ffc2V0 X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgc3RhdGUpOworZXh0ZXJuIGludCBp bnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAorCQkJCSAgICAgICBib29sIHN0YXRlKTsKIGV4dGVybiB2b2lkIGludGVsX2Rpc3BsYXlf cmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaTkxNV9yZWRpc2Fi bGVfdmdhKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gdm9pZCBp OTE1X3JlZGlzYWJsZV92Z2FfcG93ZXJfb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBkYTFlMjllYzllYjYu LmU0ZjE5ODVhNTU5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTAz NSw5ICsxMDM1LDggQEAgZW51bSB0cmFuc2NvZGVyIGludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29k ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXJldHVybiBjcnRjLT5jb25m aWctPmNwdV90cmFuc2NvZGVyOwogfQogCi1zdGF0aWMgYm9vbCBwaXBlX2RzbF9zdG9wcGVkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlKQorc3RhdGljIGJvb2wgcGlwZV9k c2xfc3RvcHBlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBw aXBlKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKIAlpOTE1X3JlZ190IHJlZyA9IFBJUEVEU0wocGlwZSk7CiAJdTMyIGxpbmUxLCBsaW5lMjsK IAl1MzIgbGluZV9tYXNrOwpAQCAtMTA3MiwxMiArMTA3MSwxMSBAQCBzdGF0aWMgYm9vbCBwaXBl X2RzbF9zdG9wcGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlKQogICov CiBzdGF0aWMgdm9pZCBpbnRlbF93YWl0X2Zvcl9waXBlX29mZihzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29k ZXI7CiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwogCi0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCWk5MTVf cmVnX3QgcmVnID0gUElQRUNPTkYoY3B1X3RyYW5zY29kZXIpOwogCiAJCS8qIFdhaXQgZm9yIHRo ZSBQaXBlIFN0YXRlIHRvIGdvIG9mZiAqLwpAQCAtMTA4Nyw3ICsxMDg1LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfd2FpdF9mb3JfcGlwZV9vZmYoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJCQlX QVJOKDEsICJwaXBlX29mZiB3YWl0IHRpbWVkIG91dFxuIik7CiAJfSBlbHNlIHsKIAkJLyogV2Fp dCBmb3IgdGhlIGRpc3BsYXkgbGluZSB0byBzZXR0bGUgKi8KLQkJaWYgKHdhaXRfZm9yKHBpcGVf ZHNsX3N0b3BwZWQoZGV2LCBwaXBlKSwgMTAwKSkKKwkJaWYgKHdhaXRfZm9yKHBpcGVfZHNsX3N0 b3BwZWQoZGV2X3ByaXYsIHBpcGUpLCAxMDApKQogCQkJV0FSTigxLCAicGlwZV9vZmYgd2FpdCB0 aW1lZCBvdXRcbiIpOwogCX0KIH0KQEAgLTEyOTMsMTEgKzEyOTEsMTAgQEAgc3RhdGljIHZvaWQg YXNzZXJ0X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyB2 b2lkIGFzc2VydF9wbGFuZXNfZGlzYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQkJCSAgIGVudW0gcGlwZSBwaXBlKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSAmZGV2X3ByaXYtPmRybTsKIAlpbnQgaTsKIAogCS8qIFByaW1hcnkgcGxhbmVzIGFyZSBmaXhl ZCB0byBwaXBlcyBvbiBnZW40KyAqLwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7 CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQl1MzIgdmFsID0gSTkxNV9SRUFE KERTUENOVFIocGlwZSkpOwogCQlJOTE1X1NUQVRFX1dBUk4odmFsICYgRElTUExBWV9QTEFORV9F TkFCTEUsCiAJCSAgICAgInBsYW5lICVjIGFzc2VydGlvbiBmYWlsdXJlLCBzaG91bGQgYmUgZGlz YWJsZWQgYnV0IG5vdFxuIiwKQEAgLTEzMTksMTAgKzEzMTYsOSBAQCBzdGF0aWMgdm9pZCBhc3Nl cnRfcGxhbmVzX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0 YXRpYyB2b2lkIGFzc2VydF9zcHJpdGVzX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJCQkgICAgZW51bSBwaXBlIHBpcGUpCiB7Ci0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwogCWludCBzcHJpdGU7CiAKLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gOSkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKIAkJ Zm9yX2VhY2hfc3ByaXRlKGRldl9wcml2LCBwaXBlLCBzcHJpdGUpIHsKIAkJCXUzMiB2YWwgPSBJ OTE1X1JFQUQoUExBTkVfQ1RMKHBpcGUsIHNwcml0ZSkpOwogCQkJSTkxNV9TVEFURV9XQVJOKHZh bCAmIFBMQU5FX0NUTF9FTkFCTEUsCkBAIC0xMzM2LDEyICsxMzMyLDEyIEBAIHN0YXRpYyB2b2lk IGFzc2VydF9zcHJpdGVzX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAkJCSAgICAgInNwcml0ZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBv biBwaXBlICVjIGJ1dCBpcyBzdGlsbCBhY3RpdmVcbiIsCiAJCQkgICAgIHNwcml0ZV9uYW1lKHBp cGUsIHNwcml0ZSksIHBpcGVfbmFtZShwaXBlKSk7CiAJCX0KLQl9IGVsc2UgaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDcpIHsKKwl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NykgewogCQl1MzIgdmFsID0gSTkxNV9SRUFEKFNQUkNUTChwaXBlKSk7CiAJCUk5MTVfU1RBVEVf V0FSTih2YWwgJiBTUFJJVEVfRU5BQkxFLAogCQkgICAgICJzcHJpdGUgJWMgYXNzZXJ0aW9uIGZh aWx1cmUsIHNob3VsZCBiZSBvZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0aXZlXG4iLAog CQkgICAgIHBsYW5lX25hbWUocGlwZSksIHBpcGVfbmFtZShwaXBlKSk7Ci0JfSBlbHNlIGlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7CisJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDUpIHsKIAkJdTMyIHZhbCA9IEk5MTVfUkVBRChEVlNDTlRSKHBpcGUpKTsKIAkJSTkx NV9TVEFURV9XQVJOKHZhbCAmIERWU19FTkFCTEUsCiAJCSAgICAgInNwcml0ZSAlYyBhc3NlcnRp b24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBvbiBwaXBlICVjIGJ1dCBpcyBzdGlsbCBhY3RpdmVc biIsCkBAIC0xNTk1LDEyICsxNTkxLDEyIEBAIHN0YXRpYyB2b2lkIGNodl9lbmFibGVfcGxsKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCX0KIH0KIAotc3RhdGljIGludCBpbnRlbF9udW1fZHZv X3BpcGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgaW50IGludGVsX251bV9kdm9f cGlwZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjOwogCWludCBjb3VudCA9IDA7CiAKLQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRl diwgY3J0YykgeworCWZvcl9lYWNoX2ludGVsX2NydGMoJmRldl9wcml2LT5kcm0sIGNydGMpIHsK IAkJY291bnQgKz0gY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlICYmCiAJCQlpbnRlbF9jcnRjX2hh c190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RWTyk7CiAJfQpAQCAtMTYxMCw4ICsx NjA2LDcgQEAgc3RhdGljIGludCBpbnRlbF9udW1fZHZvX3BpcGVzKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAKIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCWk5 MTVfcmVnX3QgcmVnID0gRFBMTChjcnRjLT5waXBlKTsKIAl1MzIgZHBsbCA9IGNydGMtPmNvbmZp Zy0+ZHBsbF9od19zdGF0ZS5kcGxsOwogCkBAIC0xNjIyLDcgKzE2MTcsNyBAQCBzdGF0aWMgdm9p ZCBpOXh4X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJCWFzc2VydF9wYW5l bF91bmxvY2tlZChkZXZfcHJpdiwgY3J0Yy0+cGlwZSk7CiAKIAkvKiBFbmFibGUgRFZPIDJ4IGNs b2NrIG9uIGJvdGggUExMcyBpZiBuZWNlc3NhcnkgKi8KLQlpZiAoSVNfSTgzMChkZXZfcHJpdikg JiYgaW50ZWxfbnVtX2R2b19waXBlcyhkZXYpID4gMCkgeworCWlmIChJU19JODMwKGRldl9wcml2 KSAmJiBpbnRlbF9udW1fZHZvX3BpcGVzKGRldl9wcml2KSA+IDApIHsKIAkJLyoKIAkJICogSXQg YXBwZWFycyB0byBiZSBpbXBvcnRhbnQgdGhhdCB3ZSBkb24ndCBlbmFibGUgdGhpcwogCQkgKiBm b3IgdGhlIGN1cnJlbnQgcGlwZSBiZWZvcmUgb3RoZXJ3aXNlIGNvbmZpZ3VyaW5nIHRoZQpAQCAt MTY0Nyw3ICsxNjQyLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9lbmFibGVfcGxsKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQogCVBPU1RJTkdfUkVBRChyZWcpOwogCXVkZWxheSgxNTApOwogCi0JaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA0KSB7CiAJCUk5MTVfV1JJVEUoRFBMTF9NRChjcnRjLT5waXBlKSwKIAkJCSAgIGNydGMtPmNv bmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxsX21kKTsKIAl9IGVsc2UgewpAQCAtMTY4MiwxNCArMTY3 NywxMyBAQCBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNy dGMpCiAgKi8KIHN0YXRpYyB2b2lkIGk5eHhfZGlzYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMg KmNydGMpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAll bnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAKIAkvKiBEaXNhYmxlIERWTyAyeCBjbG9jayBv biBib3RoIFBMTHMgaWYgbmVjZXNzYXJ5ICovCiAJaWYgKElTX0k4MzAoZGV2X3ByaXYpICYmCiAJ ICAgIGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9PVVRQVVRfRFZPKSAm JgotCSAgICAhaW50ZWxfbnVtX2R2b19waXBlcyhkZXYpKSB7CisJICAgICFpbnRlbF9udW1fZHZv X3BpcGVzKGRldl9wcml2KSkgewogCQlJOTE1X1dSSVRFKERQTEwoUElQRV9CKSwKIAkJCSAgIEk5 MTVfUkVBRChEUExMKFBJUEVfQikpICYgfkRQTExfRFZPXzJYX01PREUpOwogCQlJOTE1X1dSSVRF KERQTEwoUElQRV9BKSwKQEAgLTMwMDQsOCArMjk5OCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBk YXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKIAkJCQkgICAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCQkgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBwcmltYXJ5LT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUocHJpbWFyeS0+ZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwogCWludCBwbGFuZSA9IGludGVs X2NydGMtPnBsYW5lOwpAQCAtMzAyMCw3ICszMDEzLDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRh dGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAogCiAJZHNwY250ciB8 PSBESVNQTEFZX1BMQU5FX0VOQUJMRTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQp IHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKIAkJaWYgKGludGVsX2NydGMtPnBp cGUgPT0gUElQRV9CKQogCQkJZHNwY250ciB8PSBESVNQUExBTkVfU0VMX1BJUEVfQjsKIApAQCAt MzA4MCw3ICszMDczLDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAogCiAJaW50ZWxfYWRkX2ZiX29mZnNldHMoJngsICZ5 LCBwbGFuZV9zdGF0ZSwgMCk7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKKwlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQogCQlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNl dCA9CiAJCQlpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KCZ4LCAmeSwgcGxhbmVfc3RhdGUsIDAp OwogCkBAIC0zMDkzLDcgKzMwODYsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5 X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCiAKIAlsaW5lYXJfb2Zmc2V0ID0gaW50 ZWxfZmJfeHlfdG9fbGluZWFyKHgsIHksIHBsYW5lX3N0YXRlLCAwKTsKIAotCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA8IDQpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KQogCQlpbnRl bF9jcnRjLT5kc3BhZGRyX29mZnNldCA9IGxpbmVhcl9vZmZzZXQ7CiAKIAlpbnRlbF9jcnRjLT5h ZGp1c3RlZF94ID0geDsKQEAgLTMxMDIsNyArMzA5NSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBk YXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKIAlJOTE1X1dSSVRF KHJlZywgZHNwY250cik7CiAKIAlJOTE1X1dSSVRFKERTUFNUUklERShwbGFuZSksIGZiLT5waXRj aGVzWzBdKTsKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgeworCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDQpIHsKIAkJSTkxNV9XUklURShEU1BTVVJGKHBsYW5lKSwKIAkJCSAg IGludGVsX2ZiX2d0dF9vZmZzZXQoZmIsIHJvdGF0aW9uKSArCiAJCQkgICBpbnRlbF9jcnRjLT5k c3BhZGRyX29mZnNldCk7CkBAIC0zNjgwLDggKzM2NzMsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9j cnRjX2hhc19wZW5kaW5nX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjKQogc3RhdGljIHZvaWQg aW50ZWxfdXBkYXRlX3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJCSAg ICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQogewotCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnBpcGVfY29uZmlnID0KIAkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRl KTsKIApAQCAtMzcwNiw3ICszNjk4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX3BpcGVf Y29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkgICAocGlwZV9jb25maWctPnBpcGVf c3JjX2ggLSAxKSk7CiAKIAkvKiBvbiBza3lsYWtlIHRoaXMgaXMgZG9uZSBieSBkZXRhY2hpbmcg c2NhbGVycyAqLwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7CisJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkgewogCQlza2xfZGV0YWNoX3NjYWxlcnMoY3J0Yyk7CiAKIAkJ aWYgKHBpcGVfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKQpAQCAtNTQwNiw4ICs1Mzk4LDcgQEAg c3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq cGlwZV9jb25maWcsCiAJCQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsK IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwaXBlX2NvbmZpZy0+YmFzZS5jcnRjOwotCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlLCBo c3dfd29ya2Fyb3VuZF9waXBlOwogCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGlu dGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7CkBAIC01NDY3LDcgKzU0NTgsNyBAQCBz dGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZywKIAlpZiAoIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVyKSkKIAkJ aW50ZWxfZGRpX2VuYWJsZV9waXBlX2Nsb2NrKGludGVsX2NydGMpOwogCi0JaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDkpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKIAkJc2t5 bGFrZV9wZml0X2VuYWJsZShpbnRlbF9jcnRjKTsKIAllbHNlCiAJCWlyb25sYWtlX3BmaXRfZW5h YmxlKGludGVsX2NydGMpOwpAQCAtNTYwMCw4ICs1NTkxLDcgQEAgc3RhdGljIHZvaWQgaGFzd2Vs bF9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAog CQkJCSBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGM7Ci0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5kZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjKTsKIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBpbnRlbF9j cnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwogCkBAIC01NjI0LDcgKzU2MTQsNyBAQCBzdGF0 aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xk X2NydGNfc3RhdGUsCiAJaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCiAJ CWludGVsX2RkaV9kaXNhYmxlX3RyYW5zY29kZXJfZnVuYyhkZXZfcHJpdiwgY3B1X3RyYW5zY29k ZXIpOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCisJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkKIAkJc2t5bGFrZV9zY2FsZXJfZGlzYWJsZShpbnRlbF9jcnRjKTsKIAll bHNlCiAJCWlyb25sYWtlX3BmaXRfZGlzYWJsZShpbnRlbF9jcnRjLCBmYWxzZSk7CkBAIC03MTkz LDcgKzcxODMsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfY29tcHV0ZV9jb25maWcoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKIAlpbnQgY2xvY2tf bGltaXQgPSBkZXZfcHJpdi0+bWF4X2RvdGNsa19mcmVxOwogCi0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuIDwgNCkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkgewogCQljbG9ja19s aW1pdCA9IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSAqIDkgLyAxMDsKIAogCQkvKgpAQCAtNzc4 NywxMiArNzc3NywxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRfbV9u KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJCQkgc3RydWN0IGludGVsX2xpbmtfbV9uICpt X24sCiAJCQkJCSBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm0yX24yKQogewotCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJaW50IHBpcGUgPSBjcnRjLT5waXBlOwog CWVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVyID0gY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2Rl cjsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7CisJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNSkgewogCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9NMSh0cmFuc2NvZGVyKSwg VFVfU0laRShtX24tPnR1KSB8IG1fbi0+Z21jaF9tKTsKIAkJSTkxNV9XUklURShQSVBFX0RBVEFf TjEodHJhbnNjb2RlciksIG1fbi0+Z21jaF9uKTsKIAkJSTkxNV9XUklURShQSVBFX0xJTktfTTEo dHJhbnNjb2RlciksIG1fbi0+bGlua19tKTsKQEAgLTgyNDYsOCArODIzNSw3IEBAIHN0YXRpYyB2 b2lkIGk4eHhfY29tcHV0ZV9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCiBzdGF0aWMg dm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRl dik7CiAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCWVudW0gdHJhbnNjb2Rl ciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7CiAJ Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmaW50ZWxfY3J0 Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CkBAIC04MjczLDcgKzgyNjEsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjKQogCQkJdnN5bmNzaGlmdCArPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbDsKIAl9CiAK LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiAzKQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID4gMykKIAkJSTkxNV9XUklURShWU1lOQ1NISUZUKGNwdV90cmFuc2NvZGVyKSwgdnN5bmNzaGlm dCk7CiAKIAlJOTE1X1dSSVRFKEhUT1RBTChjcHVfdHJhbnNjb2RlciksCkBAIC04Mzk2LDggKzgz ODQsNyBAQCB2b2lkIGludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZyhzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZSwKIAogc3RhdGljIHZvaWQgaTl4eF9zZXRfcGlwZWNvbmYoc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVs X2NydGMtPmJhc2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGludGVsX2NydGMtPmJhc2UuZGV2KTsKIAl1aW50MzJfdCBwaXBlY29uZjsKIAogCXBpcGVjb25m ID0gMDsKQEAgLTg0NDMsNyArODQzMCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3BpcGVjb25m KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQogCX0KIAogCWlmIChpbnRlbF9jcnRjLT5j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNF KSB7Ci0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQgfHwKKwkJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCA0IHx8CiAJCSAgICBpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMtPmNv bmZpZywgSU5URUxfT1VUUFVUX1NEVk8pKQogCQkJcGlwZWNvbmYgfD0gUElQRUNPTkZfSU5URVJM QUNFX1dfRklFTERfSU5ESUNBVElPTjsKIAkJZWxzZQpAQCAtODY1MSw4ICs4NjM4LDcgQEAgc3Rh dGljIGludCB2bHZfY3J0Y19jb21wdXRlX2Nsb2NrKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAog c3RhdGljIHZvaWQgaTl4eF9nZXRfcGZpdF9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs CiAJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKIHsKLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCXVpbnQzMl90IHRtcDsKIAogCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDMgJiYKQEAgLTg2NjQsNyArODY1MCw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfZ2V0X3BmaXRfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQly ZXR1cm47CiAKIAkvKiBDaGVjayB3aGV0aGVyIHRoZSBwZml0IGlzIGF0dGFjaGVkIHRvIG91ciBw aXBlLiAqLwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDQpIHsKIAkJaWYgKGNydGMtPnBpcGUgIT0gUElQRV9CKQogCQkJcmV0dXJu OwogCX0gZWxzZSB7CkBAIC04NzI4LDcgKzg3MTQsNyBAQCBpOXh4X2dldF9pbml0aWFsX3BsYW5l X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAogCWZiID0gJmludGVsX2ZiLT5iYXNl OwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA0KSB7CiAJCWlmICh2YWwgJiBESVNQUExBTkVfVElMRUQpIHsKIAkJCXBsYW5l X2NvbmZpZy0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKIAkJCWZiLT5tb2RpZmllclswXSA9IEk5 MTVfRk9STUFUX01PRF9YX1RJTEVEOwpAQCAtODc0MCw3ICs4NzI2LDcgQEAgaTl4eF9nZXRfaW5p dGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJZmItPnBpeGVsX2Zv cm1hdCA9IGZvdXJjYzsKIAlmYi0+Yml0c19wZXJfcGl4ZWwgPSBkcm1fZm9ybWF0X3BsYW5lX2Nw cChmb3VyY2MsIDApICogODsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CisJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQlpZiAocGxhbmVfY29uZmlnLT50aWxp bmcpCiAJCQlvZmZzZXQgPSBJOTE1X1JFQUQoRFNQVElMRU9GRihwbGFuZSkpOwogCQllbHNlCkBA IC04ODA5LDggKzg3OTUsNyBAQCBzdGF0aWMgdm9pZCBjaHZfY3J0Y19jbG9ja19nZXQoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCiBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJ ZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47CiAJdWludDMyX3Qg dG1wOwogCWJvb2wgcmV0OwpAQCAtODg0OSw3ICs4ODM0LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9n ZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJICAgICh0bXAgJiBQSVBF Q09ORl9DT0xPUl9SQU5HRV9TRUxFQ1QpKQogCQlwaXBlX2NvbmZpZy0+bGltaXRlZF9jb2xvcl9y YW5nZSA9IHRydWU7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQorCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDwgNCkKIAkJcGlwZV9jb25maWctPmRvdWJsZV93aWRlID0gdG1wICYg UElQRUNPTkZfRE9VQkxFX1dJREU7CiAKIAlpbnRlbF9nZXRfcGlwZV90aW1pbmdzKGNydGMsIHBp cGVfY29uZmlnKTsKQEAgLTg4NTcsNyArODg0Miw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3Bp cGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCiAJaTl4eF9nZXRfcGZpdF9jb25m aWcoY3J0YywgcGlwZV9jb25maWcpOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQp IHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCS8qIE5vIHdheSB0byByZWFk IGl0IG91dCBvbiBwaXBlcyBCIGFuZCBDICovCiAJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2 KSAmJiBjcnRjLT5waXBlICE9IFBJUEVfQSkKIAkJCXRtcCA9IGRldl9wcml2LT5jaHZfZHBsbF9t ZFtjcnRjLT5waXBlXTsKQEAgLTk2NTQsMTEgKzk2MzksMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxf Y3B1X3RyYW5zY29kZXJfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkJIHN0 cnVjdCBpbnRlbF9saW5rX21fbiAqbV9uLAogCQkJCQkgc3RydWN0IGludGVsX2xpbmtfbV9uICpt Ml9uMikKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCWVu dW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA1KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgewogCQltX24tPmxpbmtfbSA9 IEk5MTVfUkVBRChQSVBFX0xJTktfTTEodHJhbnNjb2RlcikpOwogCQltX24tPmxpbmtfbiA9IEk5 MTVfUkVBRChQSVBFX0xJTktfTjEodHJhbnNjb2RlcikpOwogCQltX24tPmdtY2hfbSA9IEk5MTVf UkVBRChQSVBFX0RBVEFfTTEodHJhbnNjb2RlcikpCkBAIC05NjcwLDcgKzk2NTQsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAogCQkgKiBnZW4gPCA4KSBhbmQgaWYgRFJSUyBpcyBzdXBwb3J0ZWQgKHRvIG1ha2Ugc3Vy ZSB0aGUKIAkJICogcmVnaXN0ZXJzIGFyZSBub3QgdW5uZWNlc3NhcmlseSByZWFkKS4KIAkJICov Ci0JCWlmIChtMl9uMiAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDggJiYKKwkJaWYgKG0yX24y ICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA4ICYmCiAJCQljcnRjLT5jb25maWctPmhhc19kcnJz KSB7CiAJCQltMl9uMi0+bGlua19tID0gSTkxNV9SRUFEKFBJUEVfTElOS19NMih0cmFuc2NvZGVy KSk7CiAJCQltMl9uMi0+bGlua19uID0JSTkxNV9SRUFEKFBJUEVfTElOS19OMih0cmFuc2NvZGVy KSk7CkBAIC05ODcyLDcgKzk4NTYsNyBAQCBpcm9ubGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25m aWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAKIAlmYiA9ICZpbnRlbF9mYi0+YmFzZTsKIAot CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNCkgewogCQlpZiAodmFsICYgRElTUFBMQU5FX1RJTEVEKSB7CiAJCQlwbGFuZV9jb25m aWctPnRpbGluZyA9IEk5MTVfVElMSU5HX1g7CiAJCQlmYi0+bW9kaWZpZXJbMF0gPSBJOTE1X0ZP Uk1BVF9NT0RfWF9USUxFRDsKQEAgLTEwNjYyLDggKzEwNjQ2LDcgQEAgc3RhdGljIGJvb2wgYnh0 X2dldF9kc2lfdHJhbnNjb2Rlcl9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIHN0YXRp YyB2b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAogCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7Ci0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxf c2hhcmVkX2RwbGwgKnBsbDsKIAllbnVtIHBvcnQgcG9ydDsKIAl1aW50MzJfdCB0bXA7CkBAIC0x MDY5MCw3ICsxMDY3Myw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCSAqIERESSBFLiBTbyBqdXN0IGNoZWNrIHdoZXRo ZXIgdGhpcyBwaXBlIGlzIHdpcmVkIHRvIERESSBFIGFuZCB3aGV0aGVyCiAJICogdGhlIFBDSCB0 cmFuc2NvZGVyIGlzIG9uLgogCSAqLwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkgJiYK KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgJiYKIAkgICAgKHBvcnQgPT0gUE9SVF9FKSAm JiBJOTE1X1JFQUQoTFBUX1RSQU5TQ09ORikgJiBUUkFOU19FTkFCTEUpIHsKIAkJcGlwZV9jb25m aWctPmhhc19wY2hfZW5jb2RlciA9IHRydWU7CiAKQEAgLTEwNzA1LDggKzEwNjg4LDcgQEAgc3Rh dGljIHZvaWQgaGFzd2VsbF9nZXRfZGRpX3BvcnRfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCiBzdGF0aWMgYm9vbCBoYXN3ZWxsX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQog ewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJZW51bSBpbnRl bF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47CiAJdW5zaWduZWQgbG9uZyBwb3dl cl9kb21haW5fbWFzazsKIAlib29sIGFjdGl2ZTsKQEAgLTEwNzM5LDcgKzEwNzIxLDcgQEAgc3Rh dGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs CiAJcGlwZV9jb25maWctPmdhbW1hX21vZGUgPQogCQlJOTE1X1JFQUQoR0FNTUFfTU9ERShjcnRj LT5waXBlKSkgJiBHQU1NQV9NT0RFX01PREVfTUFTSzsKIAotCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA5KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewogCQlza2xfaW5p dF9zY2FsZXJzKGRldl9wcml2LCBjcnRjLCBwaXBlX2NvbmZpZyk7CiAKIAkJcGlwZV9jb25maWct PnNjYWxlcl9zdGF0ZS5zY2FsZXJfaWQgPSAtMTsKQEAgLTEwNzQ5LDcgKzEwNzMxLDcgQEAgc3Rh dGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs CiAJcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMtPnBp cGUpOwogCWlmIChpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBw b3dlcl9kb21haW4pKSB7CiAJCXBvd2VyX2RvbWFpbl9tYXNrIHw9IEJJVChwb3dlcl9kb21haW4p OwotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKKwkJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSkKIAkJCXNreWxha2VfZ2V0X3BmaXRfY29uZmlnKGNydGMsIHBpcGVfY29uZmln KTsKIAkJZWxzZQogCQkJaXJvbmxha2VfZ2V0X3BmaXRfY29uZmlnKGNydGMsIHBpcGVfY29uZmln KTsKQEAgLTEyMTgxLDcgKzEyMTYzLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxp cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJICogVElMRU9GRi9MSU5PRkYgcmVnaXN0ZXJzIGNh bid0IGJlIGNoYW5nZWQgdmlhIE1JIGRpc3BsYXkgZmxpcHMuCiAJICogTm90ZSB0aGF0IHBpdGNo IGNoYW5nZXMgY291bGQgYWxzbyBhZmZlY3QgdGhlc2UgcmVnaXN0ZXIuCiAJICovCi0JaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID4gMyAmJgorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMyAm JgogCSAgICAoZmItPm9mZnNldHNbMF0gIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPm9mZnNldHNbMF0g fHwKIAkgICAgIGZiLT5waXRjaGVzWzBdICE9IGNydGMtPnByaW1hcnktPmZiLT5waXRjaGVzWzBd KSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xMjI1Niw3ICsxMjIzOCw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJZW5naW5lID0g TlVMTDsKIAl9IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikgfHwgSVNfSEFTV0VMTChk ZXZfcHJpdikpIHsKIAkJZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwotCX0gZWxzZSBp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykgeworCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA3KSB7CiAJCWVuZ2luZSA9IGk5MTVfZ2VtX29iamVjdF9sYXN0X3dyaXRlX2Vu Z2luZShvYmopOwogCQlpZiAoZW5naW5lID09IE5VTEwgfHwgZW5naW5lLT5pZCAhPSBSQ1MpCiAJ CQllbmdpbmUgPSBkZXZfcHJpdi0+ZW5naW5lW0JDU107CkBAIC0xMjUxMyw3ICsxMjQ5NSw3IEBA IGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKIAogCS8qIFByZS1nZW45IHBsYXRmb3JtcyBuZWVkIHR3by1zdGVwIHdh dGVybWFyayB1cGRhdGVzICovCiAJaWYgKChwaXBlX2NvbmZpZy0+dXBkYXRlX3dtX3ByZSB8fCBw aXBlX2NvbmZpZy0+dXBkYXRlX3dtX3Bvc3QpICYmCi0JICAgIElOVEVMX0lORk8oZGV2KS0+Z2Vu IDwgOSAmJiBkZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1hcmtzKQorCSAgICBJTlRF TF9HRU4oZGV2X3ByaXYpIDwgOSAmJiBkZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1h cmtzKQogCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT53bS5uZWVkX3Bvc3R2Ymxf dXBkYXRlID0gdHJ1ZTsKIAogCWlmICh2aXNpYmxlIHx8IHdhc192aXNpYmxlKQpAQCAtMTI2MTgs NyArMTI2MDAsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKIAkJICogb2xkIHN0YXRlIGFuZCB0aGUgbmV3IHN0YXRlLiAgV2UgY2Fu IHByb2dyYW0gdGhlc2UKIAkJICogaW1tZWRpYXRlbHkuCiAJCSAqLwotCQlyZXQgPSBkZXZfcHJp di0+ZGlzcGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93bShjcnRjLT5kZXYsCisJCXJldCA9IGRl dl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKGRldiwKIAkJCQkJCQkJaW50 ZWxfY3J0YywKIAkJCQkJCQkJcGlwZV9jb25maWcpOwogCQlpZiAocmV0KSB7CkBAIC0xMjYzMCw3 ICsxMjYxMiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCQkJcGlwZV9jb25maWctPndtLmlsay5pbnRlcm1lZGlhdGUgPSBwaXBl X2NvbmZpZy0+d20uaWxrLm9wdGltYWw7CiAJfQogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDkpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7CiAJCWlmIChtb2RlX2No YW5nZWQpCiAJCQlyZXQgPSBza2xfdXBkYXRlX3NjYWxlcl9jcnRjKHBpcGVfY29uZmlnKTsKIApA QCAtMTMxODcsMTIgKzEzMTY5LDExIEBAIGludGVsX2NvbXBhcmVfbGlua19tX24oY29uc3Qgc3Ry dWN0IGludGVsX2xpbmtfbV9uICptX24sCiB9CiAKIHN0YXRpYyBib29sCi1pbnRlbF9waXBlX2Nv bmZpZ19jb21wYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCitpbnRlbF9waXBlX2NvbmZpZ19j b21wYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAogCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcsCiAJCQkgIGJvb2wgYWRqdXN0KQogewotCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlib29sIHJldCA9IHRydWU7CiAK ICNkZWZpbmUgSU5URUxfRVJSX09SX0RCR19LTVMoZm10LCAuLi4pIFwKQEAgLTEzMzEyLDcgKzEz MjkzLDcgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCVBJUEVfQ09ORl9DSEVDS19JKGxhbmVfY291bnQpOwogCVBJUEVfQ09ORl9DSEVDS19YKGxh bmVfbGF0X29wdGltX21hc2spOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOCkgewor CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkgewogCQlQSVBFX0NPTkZfQ0hFQ0tfTV9OKGRw X21fbik7CiAKIAkJaWYgKGN1cnJlbnRfY29uZmlnLT5oYXNfZHJycykKQEAgLTEzMzYxLDcgKzEz MzQyLDcgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCiAJUElQRV9DT05GX0NIRUNLX1goZ21jaF9wZml0LmNvbnRyb2wpOwogCS8qIHBmaXQgcmF0 aW9zIGFyZSBhdXRvY29tcHV0ZWQgYnkgdGhlIGh3IG9uIGdlbjQrICovCi0JaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgNCkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpCiAJCVBJUEVf Q09ORl9DSEVDS19YKGdtY2hfcGZpdC5wZ21fcmF0aW9zKTsKIAlQSVBFX0NPTkZfQ0hFQ0tfWChn bWNoX3BmaXQubHZkc19ib3JkZXJfYml0cyk7CiAKQEAgLTEzNDM2LDggKzEzNDE3LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfcGlwZV9jb25maWdfc2FuaXR5X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCiAJCQkgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfc3RhdGUpCiB7 Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwogCXN0cnVjdCBza2xfZGRiX2FsbG9j YXRpb24gaHdfZGRiLCAqc3dfZGRiOwogCXN0cnVjdCBza2xfcGlwZV93bSBod193bSwgKnN3X3dt OwogCXN0cnVjdCBza2xfcGxhbmVfd20gKmh3X3BsYW5lX3dtLCAqc3dfcGxhbmVfd207CkBAIC0x MzQ0Niw3ICsxMzQyNiw3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCiAJY29uc3QgZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwog CWludCBwbGFuZSwgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYp OwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSB8fCAhbmV3X3N0YXRlLT5hY3RpdmUp CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5IHx8ICFuZXdfc3RhdGUtPmFjdGl2ZSkKIAkJ cmV0dXJuOwogCiAJc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKGNydGMsICZod193bSk7CkBAIC0x MzY3NSw3ICsxMzY1NSw3IEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAlpbnRlbF9waXBlX2NvbmZpZ19zYW5pdHlfY2hlY2soZGV2X3ByaXYsIHBpcGVfY29uZmln KTsKIAogCXN3X2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwotCWlm ICghaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShkZXYsIHN3X2NvbmZpZywKKwlpZiAoIWludGVs X3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2X3ByaXYsIHN3X2NvbmZpZywKIAkJCQkgICAgICAgcGlw ZV9jb25maWcsIGZhbHNlKSkgewogCQlJOTE1X1NUQVRFX1dBUk4oMSwgInBpcGUgc3RhdGUgZG9l c24ndCBtYXRjaCFcbiIpOwogCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGludGVsX2NydGMsIHBp cGVfY29uZmlnLApAQCAtMTQwOTUsNyArMTQwNzUsNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21p Y19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQl9CiAKIAkJaWYgKGk5MTUuZmFzdGJv b3QgJiYKLQkJICAgIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LAorCQkgICAgaW50ZWxf cGlwZV9jb25maWdfY29tcGFyZShkZXZfcHJpdiwKIAkJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjLT5zdGF0ZSksCiAJCQkJCXBpcGVfY29uZmlnLCB0cnVlKSkgewogCQkJY3J0Y19zdGF0ZS0+ bW9kZV9jaGFuZ2VkID0gZmFsc2U7CkBAIC0xNTQyNSwxMSArMTU0MDUsOSBAQCBzdGF0aWMgYm9v bCBoYXNfZWRwX2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiB0 cnVlOwogfQogCi1zdGF0aWMgYm9vbCBpbnRlbF9jcnRfcHJlc2VudChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQorc3RhdGljIGJvb2wgaW50ZWxfY3J0X3ByZXNlbnQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGV2KTsKLQotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQorCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChJU19IU1df VUxUKGRldl9wcml2KSB8fCBJU19CRFdfVUxUKGRldl9wcml2KSkKQEAgLTE1NTAzLDcgKzE1NDgx LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCSAqLwogCWludGVsX2x2ZHNfaW5pdChkZXYpOwogCi0JaWYgKGludGVsX2NydF9wcmVz ZW50KGRldikpCisJaWYgKGludGVsX2NydF9wcmVzZW50KGRldl9wcml2KSkKIAkJaW50ZWxfY3J0 X2luaXQoZGV2KTsKIAogCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewpAQCAtMTU3OTMsNyAr MTU3NzEsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAlzd2l0Y2ggKG1vZGVfY21kLT5tb2RpZmllclswXSkgewogCWNhc2UgSTkx NV9GT1JNQVRfTU9EX1lfVElMRUQ6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6Ci0J CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKKwkJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPCA5KSB7CiAJCQlEUk1fREVCVUcoIlVuc3VwcG9ydGVkIHRpbGluZyAweCVsbHghXG4iLAog CQkJCSAgbW9kZV9jbWQtPm1vZGlmaWVyWzBdKTsKIAkJCXJldHVybiAtRUlOVkFMOwpAQCAtMTU4 NTYsNyArMTU4MzQsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKIAljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6CiAJCWJyZWFrOwog CWNhc2UgRFJNX0ZPUk1BVF9YUkdCMTU1NToKLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4g MykgeworCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+IDMpIHsKIAkJCURSTV9ERUJVRygidW5z dXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKIAkJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1h dF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQsICZmb3JtYXRfbmFtZSkpOwogCQkJcmV0dXJu IC1FSU5WQUw7CkBAIC0xNTg2NCw3ICsxNTg0Miw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVi dWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlicmVhazsKIAljYXNlIERSTV9G T1JNQVRfQUJHUjg4ODg6CiAJCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NI RVJSWVZJRVcoZGV2X3ByaXYpICYmCi0JCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsK KwkJICAgIElOVEVMX0dFTihkZXZfcHJpdikgPCA5KSB7CiAJCQlEUk1fREVCVUcoInVuc3VwcG9y dGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCiAJCQkgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFt ZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKIAkJCXJldHVybiAtRUlO VkFMOwpAQCAtMTU4NzMsNyArMTU4NTEsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVy X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6 CiAJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgogCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEw MTAxMDoKLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkgeworCQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDQpIHsKIAkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0 OiAlc1xuIiwKIAkJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhl bF9mb3JtYXQsICZmb3JtYXRfbmFtZSkpOwogCQkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xNTg5MCw3 ICsxNTg2OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgogCWNhc2UgRFJNX0ZPUk1BVF9Z VllVOgogCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA1KSB7CisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkgewogCQkJRFJNX0RFQlVHKCJ1 bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAogCQkJICAgICAgICAgIGRybV9nZXRfZm9y bWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1lKSk7CiAJCQlyZXR1 cm4gLUVJTlZBTDsKQEAgLTE2NjY3LDcgKzE2NjQ1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2Fu aXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkvKiBXZSBuZWVkIHRvIHNhbml0 aXplIHRoZSBwbGFuZSAtPiBwaXBlIG1hcHBpbmcgZmlyc3QgYmVjYXVzZSB0aGlzIHdpbGwKIAkg KiBkaXNhYmxlIHRoZSBjcnRjIChhbmQgaGVuY2UgY2hhbmdlIHRoZSBzdGF0ZSkgaWYgaXQgaXMg d3JvbmcuIE5vdGUKIAkgKiB0aGF0IGdlbjQrIGhhcyBhIGZpeGVkIHBsYW5lIC0+IHBpcGUgbWFw cGluZy4gICovCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCAmJiAhaW50ZWxfY2hlY2tf cGxhbmVfbWFwcGluZyhjcnRjKSkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCAmJiAh aW50ZWxfY2hlY2tfcGxhbmVfbWFwcGluZyhjcnRjKSkgewogCQlib29sIHBsYW5lOwogCiAJCURS TV9ERUJVR19LTVMoIltDUlRDOiVkOiVzXSB3cm9uZyBwbGFuZSBjb25uZWN0aW9uIGRldGVjdGVk IVxuIiwKQEAgLTE3MTc3LDEwICsxNzE1NSw5IEBAIHZvaWQgaW50ZWxfY29ubmVjdG9yX2F0dGFj aF9lbmNvZGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIC8qCiAgKiBzZXQg dmdhIGRlY29kZSBzdGF0ZSAtIHRydWUgPT0gZW5hYmxlIFZHQSBkZWNvZGUKICAqLwotaW50IGlu dGVsX21vZGVzZXRfdmdhX3NldF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIHN0 YXRlKQoraW50IGludGVsX21vZGVzZXRfdmdhX3NldF9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIGJvb2wgc3RhdGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXVuc2lnbmVkIHJlZyA9IElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDYgPyBTTkJfR01DSF9DVFJMIDogSU5URUxfR01DSF9DVFJMOworCXVuc2lnbmVk IHJlZyA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNiA/IFNOQl9HTUNIX0NUUkwgOiBJTlRFTF9H TUNIX0NUUkw7CiAJdTE2IGdtY2hfY3RybDsKIAogCWlmIChwY2lfcmVhZF9jb25maWdfd29yZChk ZXZfcHJpdi0+YnJpZGdlX2RldiwgcmVnLCAmZ21jaF9jdHJsKSkgewotLSAKMi43LjQKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=