From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH] drm/i915: Small display interrupt handlers tidy Date: Fri, 6 May 2016 12:07:04 +0100 Message-ID: <1462532824-33839-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 35F076EA81 for ; Fri, 6 May 2016 11:07:08 +0000 (UTC) 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 aWxhciBpbiBvdGhlciBpbnRlcnJ1cHQgaGFuZGxlcnMgYXMgd2VsbC4KClNpZ25lZC1vZmYtYnk6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICB8ICAxMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYyAgICAgICB8IDM4NiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgIHwgIDMzICsrLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaG90cGx1Zy5jICB8ICAxMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3By ZWdpb24uYyB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICB8 ICAzMyArKy0KIDggZmlsZXMgY2hhbmdlZCwgMjMyIGluc2VydGlvbnMoKyksIDI2NCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCA5ZmQyMjFjOTcyNzUuLmNjMzg2NjE1 NzNiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC03NjgsNyArNzY4LDcgQEAgc3RhdGlj IGludCBpOTE1X2RybV9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCXNwaW5fbG9j a19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiAJaWYgKGRldl9wcml2LT5kaXNwbGF5LmhwZF9p cnFfc2V0dXApCi0JCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAoZGV2KTsKKwkJZGV2 X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cChkZXZfcHJpdik7CiAJc3Bpbl91bmxvY2tfaXJx KCZkZXZfcHJpdi0+aXJxX2xvY2spOwogCiAJaW50ZWxfZHBfbXN0X3Jlc3VtZShkZXYpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZDU0OTZhYmExY2Q1Li5lYTVlZmFmNzIxNDQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNjEyLDcgKzYxMiw3IEBAIHN0cnVjdCBkcm1faTkxNV9k aXNwbGF5X2Z1bmNzIHsKIAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJ CSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkgIHVpbnQzMl90IGZsYWdz KTsKLQl2b2lkICgqaHBkX2lycV9zZXR1cCkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CisJdm9p ZCAoKmhwZF9pcnFfc2V0dXApKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAJ LyogY2xvY2sgdXBkYXRlcyBmb3IgbW9kZSBzZXQgKi8KIAkvKiBjdXJzb3IgdXBkYXRlcyAqLwog CS8qIHJlbmRlciBjbG9jayBpbmNyZWFzZS9kZWNyZWFzZSAqLwpAQCAtMjc4OCw3ICsyNzg4LDgg QEAgZXh0ZXJuIHZvaWQgaTkxNV91cGRhdGVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwogaW50IHZsdl9mb3JjZV9nZnhfY2xvY2soc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBib29sIG9uKTsKIAogLyogaW50ZWxfaG90cGx1Zy5jICovCi12b2lk IGludGVsX2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgcGluX21h c2ssIHUzMiBsb25nX21hc2spOwordm9pZCBpbnRlbF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgdTMyIHBpbl9tYXNrLCB1MzIgbG9uZ19t YXNrKTsKIHZvaWQgaW50ZWxfaHBkX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKIHZvaWQgaW50ZWxfaHBkX2luaXRfd29yayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9ocGRfY2FuY2VsX3dvcmsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKQEAgLTM0OTIsNyArMzQ5Myw3IEBAIGJvb2wgaW50ZWxfYmlvc19p c19wb3J0X2hwZF9pbnZlcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBl eHRlcm4gaW50IGludGVsX29wcmVnaW9uX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwog ZXh0ZXJuIHZvaWQgaW50ZWxfb3ByZWdpb25faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK IGV4dGVybiB2b2lkIGludGVsX29wcmVnaW9uX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 Ci1leHRlcm4gdm9pZCBpbnRlbF9vcHJlZ2lvbl9hc2xlX2ludHIoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7CitleHRlcm4gdm9pZCBpbnRlbF9vcHJlZ2lvbl9hc2xlX2ludHIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50ZWxfb3ByZWdpb25fbm90aWZ5 X2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCiAJCQkJCSBib29s IGVuYWJsZSk7CiBleHRlcm4gaW50IGludGVsX29wcmVnaW9uX25vdGlmeV9hZGFwdGVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCkBAIC0zNTAyLDcgKzM1MDMsOSBAQCBleHRlcm4gaW50IGludGVs X29wcmVnaW9uX2dldF9wYW5lbF90eXBlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogc3RhdGlj IGlubGluZSBpbnQgaW50ZWxfb3ByZWdpb25fc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikg eyByZXR1cm4gMDsgfQogc3RhdGljIGlubGluZSB2b2lkIGludGVsX29wcmVnaW9uX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikgeyByZXR1cm47IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRl bF9vcHJlZ2lvbl9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpIHsgcmV0dXJuOyB9Ci1zdGF0 aWMgaW5saW5lIHZvaWQgaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpIHsgcmV0dXJuOyB9CitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfb3ByZWdpb25fYXNs ZV9pbnRyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKK30KIHN0YXRpYyBp bmxpbmUgaW50CiBpbnRlbF9vcHJlZ2lvbl9ub3RpZnlfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqaW50ZWxfZW5jb2RlciwgYm9vbCBlbmFibGUpCiB7CkBAIC0zNTM4LDcgKzM1NDEsNyBA QCBleHRlcm4gaW50IGludGVsX21vZGVzZXRfdmdhX3NldF9zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBib29sIHN0YXRlKTsKIGV4dGVybiB2b2lkIGludGVsX2Rpc3BsYXlfcmVzdW1lKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaTkxNV9yZWRpc2FibGVfdmdhKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaTkxNV9yZWRpc2FibGVfdmdhX3Bv d2VyX29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotZXh0ZXJuIGJvb2wgaXJvbmxha2Vfc2V0 X2RycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggdmFsKTsKK2V4dGVybiBib29sIGlyb25s YWtlX3NldF9kcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggdmFsKTsK IGV4dGVybiB2b2lkIGludGVsX2luaXRfcGNoX3JlZmNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKIGV4dGVybiB2b2lkIGludGVsX3NldF9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTgg dmFsKTsKIGV4dGVybiB2b2lkIGludGVsX3NldF9tZW1vcnlfY3hzcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCAyZjZmZDMzYzA3 YmEuLjEwMjgwNDcxMDg4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0zNDksMTAgKzM0 OSw4IEBAIHZvaWQgZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIH0KIAotdm9pZCBn ZW42X2VuYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQordm9pZCBn ZW42X2VuYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKLQogCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiAKIAlXQVJOX09O KGRldl9wcml2LT5ycHMucG1faWlyKTsKQEAgLTM4MiwxMCArMzgwLDggQEAgdTMyIGdlbjZfc2Fu aXRpemVfcnBzX3BtX21hc2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIg bWFzaykKIAlyZXR1cm4gbWFzazsKIH0KIAotdm9pZCBnZW42X2Rpc2FibGVfcnBzX2ludGVycnVw dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3ZvaWQgZ2VuNl9kaXNhYmxlX3Jwc19pbnRlcnJ1 cHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCiAJc3Bpbl9sb2NrX2ly cSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKIAlkZXZfcHJpdi0+cnBzLmludGVycnVwdHNfZW5hYmxl ZCA9IGZhbHNlOwogCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKQEAgLTQw Miw3ICszOTgsNyBAQCB2b2lkIGdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCiAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwog Ci0Jc3luY2hyb25pemVfaXJxKGRldi0+aXJxKTsKKwlzeW5jaHJvbml6ZV9pcnEoZGV2X3ByaXYt PmRldi0+aXJxKTsKIH0KIAogLyoqCkBAIC02MDcsMTcgKzYwMywxNSBAQCBpOTE1X2Rpc2FibGVf cGlwZXN0YXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlw ZSwKICAqIGk5MTVfZW5hYmxlX2FzbGVfcGlwZXN0YXQgLSBlbmFibGUgQVNMRSBwaXBlc3RhdCBm b3IgT3BSZWdpb24KICAqIEBkZXY6IGRybSBkZXZpY2UKICAqLwotc3RhdGljIHZvaWQgaTkxNV9l bmFibGVfYXNsZV9waXBlc3RhdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIHZvaWQg aTkxNV9lbmFibGVfYXNsZV9waXBlc3RhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKLQotCWlmICghZGV2X3ByaXYtPm9wcmVnaW9uLmFzbGUgfHwgIUlTX01PQklMRShkZXYp KQorCWlmICghZGV2X3ByaXYtPm9wcmVnaW9uLmFzbGUgfHwgIUlTX01PQklMRShkZXZfcHJpdikp CiAJCXJldHVybjsKIAogCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiAKIAlp OTE1X2VuYWJsZV9waXBlc3RhdChkZXZfcHJpdiwgUElQRV9CLCBQSVBFX0xFR0FDWV9CTENfRVZF TlRfU1RBVFVTKTsKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA0KQogCQlpOTE1X2VuYWJsZV9waXBlc3RhdChkZXZfcHJpdiwgUElQ RV9BLAogCQkJCSAgICAgUElQRV9MRUdBQ1lfQkxDX0VWRU5UX1NUQVRVUyk7CiAKQEAgLTc1MCw3 ICs3NDQsNyBAQCBzdGF0aWMgaW50IF9faW50ZWxfZ2V0X2NydGNfc2NhbmxpbmUoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpCiAJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxB Q0UpCiAJCXZ0b3RhbCAvPSAyOwogCi0JaWYgKElTX0dFTjIoZGV2KSkKKwlpZiAoSVNfR0VOMihk ZXZfcHJpdikpCiAJCXBvc2l0aW9uID0gSTkxNV9SRUFEX0ZXKFBJUEVEU0wocGlwZSkpICYgRFNM X0xJTkVNQVNLX0dFTjI7CiAJZWxzZQogCQlwb3NpdGlvbiA9IEk5MTVfUkVBRF9GVyhQSVBFRFNM KHBpcGUpKSAmIERTTF9MSU5FTUFTS19HRU4zOwpAQCAtNzY3LDcgKzc2MSw3IEBAIHN0YXRpYyBp bnQgX19pbnRlbF9nZXRfY3J0Y19zY2FubGluZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkg KiBwcm9ibGVtLiAgV2UgbWF5IG5lZWQgdG8gZXh0ZW5kIHRoaXMgdG8gaW5jbHVkZSBvdGhlciBw bGF0Zm9ybXMsCiAJICogYnV0IHNvIGZhciB0ZXN0aW5nIG9ubHkgc2hvd3MgdGhlIHByb2JsZW0g b24gSFNXLgogCSAqLwotCWlmIChIQVNfRERJKGRldikgJiYgIXBvc2l0aW9uKSB7CisJaWYgKEhB U19EREkoZGV2X3ByaXYpICYmICFwb3NpdGlvbikgewogCQlpbnQgaSwgdGVtcDsKIAogCQlmb3Ig KGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKQEAgLTgzNSw3ICs4MjksNyBAQCBzdGF0aWMgaW50IGk5 MTVfZ2V0X2NydGNfc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBp bnQgcGlwZSwKIAlpZiAoc3RpbWUpCiAJCSpzdGltZSA9IGt0aW1lX2dldCgpOwogCi0JaWYgKElT X0dFTjIoZGV2KSB8fCBJU19HNFgoZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7 CisJaWYgKElTX0dFTjIoZGV2X3ByaXYpIHx8IElTX0c0WChkZXZfcHJpdikgfHwgSU5URUxfR0VO KGRldl9wcml2KSA+PSA1KSB7CiAJCS8qIE5vIG9idmlvdXMgcGl4ZWxjb3VudCByZWdpc3Rlci4g T25seSBxdWVyeSB2ZXJ0aWNhbAogCQkgKiBzY2Fub3V0IHBvc2l0aW9uIGZyb20gRGlzcGxheSBz Y2FuIGxpbmUgcmVnaXN0ZXIuCiAJCSAqLwpAQCAtODk3LDcgKzg5MSw3IEBAIHN0YXRpYyBpbnQg aTkxNV9nZXRfY3J0Y19zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVk IGludCBwaXBlLAogCWVsc2UKIAkJcG9zaXRpb24gKz0gdnRvdGFsIC0gdmJsX2VuZDsKIAotCWlm IChJU19HRU4yKGRldikgfHwgSVNfRzRYKGRldikgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g NSkgeworCWlmIChJU19HRU4yKGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVM X0dFTihkZXZfcHJpdikgPj0gNSkgewogCQkqdnBvcyA9IHBvc2l0aW9uOwogCQkqaHBvcyA9IDA7 CiAJfSBlbHNlIHsKQEAgLTk1NSw5ICs5NDksOCBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0X3ZibGFu a190aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCiAJ CQkJCQkgICAgICZjcnRjLT5od21vZGUpOwogfQogCi1zdGF0aWMgdm9pZCBpcm9ubGFrZV9ycHNf Y2hhbmdlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgdm9pZCBp cm9ubGFrZV9ycHNfY2hhbmdlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwogCXUzMiBidXN5X3VwLCBidXN5X2Rvd24sIG1heF9hdmcsIG1pbl9hdmc7CiAJ dTggbmV3X2RlbGF5OwogCkBAIC05ODYsNyArOTc5LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2Vf cnBzX2NoYW5nZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJbmV3X2Rl bGF5ID0gZGV2X3ByaXYtPmlwcy5taW5fZGVsYXk7CiAJfQogCi0JaWYgKGlyb25sYWtlX3NldF9k cnBzKGRldiwgbmV3X2RlbGF5KSkKKwlpZiAoaXJvbmxha2Vfc2V0X2RycHMoZGV2X3ByaXYsIG5l d19kZWxheSkpCiAJCWRldl9wcml2LT5pcHMuY3VyX2RlbGF5ID0gbmV3X2RlbGF5OwogCiAJc3Bp bl91bmxvY2soJm1jaGRldl9sb2NrKTsKQEAgLTE1MDYsMjcgKzE0OTksMjMgQEAgc3RhdGljIHZv aWQgaW50ZWxfZ2V0X2hwZF9waW5zKHUzMiAqcGluX21hc2ssIHUzMiAqbG9uZ19tYXNrLAogCiB9 CiAKLXN0YXRpYyB2b2lkIGdtYnVzX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CitzdGF0aWMgdm9pZCBnbWJ1c19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKLQogCXdha2VfdXBfYWxsKCZkZXZfcHJpdi0+Z21idXNfd2FpdF9xdWV1ZSk7 CiB9CiAKLXN0YXRpYyB2b2lkIGRwX2F1eF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQorc3RhdGljIHZvaWQgZHBfYXV4X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwotCiAJd2FrZV91cF9hbGwoJmRldl9wcml2LT5nbWJ1c193YWl0X3F1 ZXVlKTsKIH0KIAogI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQotc3RhdGljIHZvaWQgZGlz cGxheV9waXBlX2NyY19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBp cGUgcGlwZSwKK3N0YXRpYyB2b2lkIGRpc3BsYXlfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQkgZW51bSBwaXBlIHBpcGUsCiAJCQkJ CSB1aW50MzJfdCBjcmMwLCB1aW50MzJfdCBjcmMxLAogCQkJCQkgdWludDMyX3QgY3JjMiwgdWlu dDMyX3QgY3JjMywKIAkJCQkJIHVpbnQzMl90IGNyYzQpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfcGlwZV9j cmMgKnBpcGVfY3JjID0gJmRldl9wcml2LT5waXBlX2NyY1twaXBlXTsKIAlzdHJ1Y3QgaW50ZWxf cGlwZV9jcmNfZW50cnkgKmVudHJ5OwogCWludCBoZWFkLCB0YWlsOwpAQCAtMTU1MCw3ICsxNTM5 LDggQEAgc3RhdGljIHZvaWQgZGlzcGxheV9waXBlX2NyY19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwKIAogCWVudHJ5ID0gJnBpcGVfY3JjLT5lbnRy aWVzW2hlYWRdOwogCi0JZW50cnktPmZyYW1lID0gZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291 bnRlcihkZXYsIHBpcGUpOworCWVudHJ5LT5mcmFtZSA9IGRldl9wcml2LT5kZXYtPmRyaXZlci0+ Z2V0X3ZibGFua19jb3VudGVyKGRldl9wcml2LT5kZXYsCisJCQkJCQkJCSBwaXBlKTsKIAllbnRy eS0+Y3JjWzBdID0gY3JjMDsKIAllbnRyeS0+Y3JjWzFdID0gY3JjMTsKIAllbnRyeS0+Y3JjWzJd ID0gY3JjMjsKQEAgLTE1NjYsMjcgKzE1NTYsMjYgQEAgc3RhdGljIHZvaWQgZGlzcGxheV9waXBl X2NyY19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwK IH0KICNlbHNlCiBzdGF0aWMgaW5saW5lIHZvaWQKLWRpc3BsYXlfcGlwZV9jcmNfaXJxX2hhbmRs ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsCitkaXNwbGF5X3BpcGVf Y3JjX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAg ICAgZW51bSBwaXBlIHBpcGUsCiAJCQkgICAgIHVpbnQzMl90IGNyYzAsIHVpbnQzMl90IGNyYzEs CiAJCQkgICAgIHVpbnQzMl90IGNyYzIsIHVpbnQzMl90IGNyYzMsCiAJCQkgICAgIHVpbnQzMl90 IGNyYzQpIHt9CiAjZW5kaWYKIAogCi1zdGF0aWMgdm9pZCBoc3dfcGlwZV9jcmNfaXJxX2hhbmRs ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpCitzdGF0aWMgdm9pZCBo c3dfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJCSAgICAgZW51bSBwaXBlIHBpcGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQotCWRpc3BsYXlfcGlwZV9jcmNfaXJxX2hh bmRsZXIoZGV2LCBwaXBlLAorCWRpc3BsYXlfcGlwZV9jcmNfaXJxX2hhbmRsZXIoZGV2X3ByaXYs IHBpcGUsCiAJCQkJICAgICBJOTE1X1JFQUQoUElQRV9DUkNfUkVTXzFfSVZCKHBpcGUpKSwKIAkJ CQkgICAgIDAsIDAsIDAsIDApOwogfQogCi1zdGF0aWMgdm9pZCBpdmJfcGlwZV9jcmNfaXJxX2hh bmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpCitzdGF0aWMgdm9p ZCBpdmJfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAorCQkJCSAgICAgZW51bSBwaXBlIHBpcGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQotCWRpc3BsYXlfcGlwZV9jcmNfaXJx X2hhbmRsZXIoZGV2LCBwaXBlLAorCWRpc3BsYXlfcGlwZV9jcmNfaXJxX2hhbmRsZXIoZGV2X3By aXYsIHBpcGUsCiAJCQkJICAgICBJOTE1X1JFQUQoUElQRV9DUkNfUkVTXzFfSVZCKHBpcGUpKSwK IAkJCQkgICAgIEk5MTVfUkVBRChQSVBFX0NSQ19SRVNfMl9JVkIocGlwZSkpLAogCQkJCSAgICAg STkxNV9SRUFEKFBJUEVfQ1JDX1JFU18zX0lWQihwaXBlKSksCkBAIC0xNTk0LDIyICsxNTgzLDIy IEBAIHN0YXRpYyB2b2lkIGl2Yl9waXBlX2NyY19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKIAkJCQkgICAgIEk5MTVfUkVBRChQSVBFX0NSQ19SRVNf NV9JVkIocGlwZSkpKTsKIH0KIAotc3RhdGljIHZvaWQgaTl4eF9waXBlX2NyY19pcnFfaGFuZGxl cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKK3N0YXRpYyB2b2lkIGk5 eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJCSAgICAgIGVudW0gcGlwZSBwaXBlKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJdWludDMyX3QgcmVzMSwgcmVzMjsKIAot CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSAzKQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDMpCiAJCXJlczEgPSBJOTE1X1JFQUQoUElQRV9DUkNfUkVTX1JFUzFfSTkxNShwaXBlKSk7 CiAJZWxzZQogCQlyZXMxID0gMDsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1IHx8 IElTX0c0WChkZXYpKQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUgfHwgSVNfRzRYKGRl dl9wcml2KSkKIAkJcmVzMiA9IEk5MTVfUkVBRChQSVBFX0NSQ19SRVNfUkVTMl9HNFgocGlwZSkp OwogCWVsc2UKIAkJcmVzMiA9IDA7CiAKLQlkaXNwbGF5X3BpcGVfY3JjX2lycV9oYW5kbGVyKGRl diwgcGlwZSwKKwlkaXNwbGF5X3BpcGVfY3JjX2lycV9oYW5kbGVyKGRldl9wcml2LCBwaXBlLAog CQkJCSAgICAgSTkxNV9SRUFEKFBJUEVfQ1JDX1JFU19SRUQocGlwZSkpLAogCQkJCSAgICAgSTkx NV9SRUFEKFBJUEVfQ1JDX1JFU19HUkVFTihwaXBlKSksCiAJCQkJICAgICBJOTE1X1JFQUQoUElQ RV9DUkNfUkVTX0JMVUUocGlwZSkpLApAQCAtMTY0MywxOCArMTYzMiwxNSBAQCBzdGF0aWMgdm9p ZCBnZW42X3Jwc19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHUzMiBwbV9paXIpCiAJfQogfQogCi1zdGF0aWMgYm9vbCBpbnRlbF9waXBlX2hhbmRsZV92Ymxh bmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpCitzdGF0aWMgYm9vbCBp bnRlbF9waXBlX2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJCSAgICAgZW51bSBwaXBlIHBpcGUpCiB7Ci0JaWYgKCFkcm1faGFuZGxlX3ZibGFuayhk ZXYsIHBpcGUpKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gZHJt X2hhbmRsZV92YmxhbmsoZGV2X3ByaXYtPmRldiwgcGlwZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHZh bGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgaWly LAotCQkJCQl1MzIgcGlwZV9zdGF0c1tJOTE1X01BWF9QSVBFU10pCitzdGF0aWMgdm9pZCB2YWxs ZXl2aWV3X3BpcGVzdGF0X2lycV9hY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJCQl1MzIgaWlyLCB1MzIgcGlwZV9zdGF0c1tJOTE1X01BWF9QSVBFU10pCiB7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpbnQg cGlwZTsKIAogCXNwaW5fbG9jaygmZGV2X3ByaXYtPmlycV9sb2NrKTsKQEAgLTE3MTAsMzEgKzE2 OTYsMzAgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19waXBlc3RhdF9pcnFfYWNrKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHUzMiBpaXIsCiAJc3Bpbl91bmxvY2soJmRldl9wcml2LT5pcnFfbG9j ayk7CiB9CiAKLXN0YXRpYyB2b2lkIHZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2hhbmRsZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKK3N0YXRpYyB2b2lkIHZhbGxleXZpZXdfcGlwZXN0YXRfaXJx X2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQkgICAgdTMy IHBpcGVfc3RhdHNbSTkxNV9NQVhfUElQRVNdKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAllbnVtIHBpcGUgcGlwZTsKIAogCWZvcl9lYWNo X3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKIAkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX1NU QVJUX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTICYmCi0JCSAgICBpbnRlbF9waXBlX2hhbmRsZV92 YmxhbmsoZGV2LCBwaXBlKSkKLQkJCWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXYsIHBpcGUpOwor CQkgICAgaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKGRldl9wcml2LCBwaXBlKSkKKwkJCWludGVs X2NoZWNrX3BhZ2VfZmxpcChkZXZfcHJpdiwgcGlwZSk7CiAKIAkJaWYgKHBpcGVfc3RhdHNbcGlw ZV0gJiBQTEFORV9GTElQX0RPTkVfSU5UX1NUQVRVU19WTFYpIHsKLQkJCWludGVsX3ByZXBhcmVf cGFnZV9mbGlwKGRldiwgcGlwZSk7Ci0JCQlpbnRlbF9maW5pc2hfcGFnZV9mbGlwKGRldiwgcGlw ZSk7CisJCQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXZfcHJpdiwgcGlwZSk7CisJCQlpbnRl bF9maW5pc2hfcGFnZV9mbGlwKGRldl9wcml2LCBwaXBlKTsKIAkJfQogCiAJCWlmIChwaXBlX3N0 YXRzW3BpcGVdICYgUElQRV9DUkNfRE9ORV9JTlRFUlJVUFRfU1RBVFVTKQotCQkJaTl4eF9waXBl X2NyY19pcnFfaGFuZGxlcihkZXYsIHBpcGUpOworCQkJaTl4eF9waXBlX2NyY19pcnFfaGFuZGxl cihkZXZfcHJpdiwgcGlwZSk7CiAKIAkJaWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX0ZJRk9f VU5ERVJSVU5fU1RBVFVTKQogCQkJaW50ZWxfY3B1X2ZpZm9fdW5kZXJydW5faXJxX2hhbmRsZXIo ZGV2X3ByaXYsIHBpcGUpOwogCX0KIAogCWlmIChwaXBlX3N0YXRzWzBdICYgUElQRV9HTUJVU19J TlRFUlJVUFRfU1RBVFVTKQotCQlnbWJ1c19pcnFfaGFuZGxlcihkZXYpOworCQlnbWJ1c19pcnFf aGFuZGxlcihkZXZfcHJpdik7CiB9CiAKIHN0YXRpYyB1MzIgaTl4eF9ocGRfaXJxX2FjayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCkBAIC0xNzQ3LDEyICsxNzMyLDEzIEBAIHN0 YXRpYyB1MzIgaTl4eF9ocGRfaXJxX2FjayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJcmV0dXJuIGhvdHBsdWdfc3RhdHVzOwogfQogCi1zdGF0aWMgdm9pZCBpOXh4X2hwZF9p cnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorc3RhdGljIHZvaWQgaTl4eF9ocGRf aXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSB1MzIg aG90cGx1Z19zdGF0dXMpCiB7CiAJdTMyIHBpbl9tYXNrID0gMCwgbG9uZ19tYXNrID0gMDsKIAot CWlmIChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhk ZXYpKSB7CisJaWYgKElTX0c0WChkZXZfcHJpdikgfHwgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwKKwkgICAgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKIAkJdTMyIGhvdHBsdWdfdHJpZ2dl ciA9IGhvdHBsdWdfc3RhdHVzICYgSE9UUExVR19JTlRfU1RBVFVTX0c0WDsKIAogCQlpZiAoaG90 cGx1Z190cmlnZ2VyKSB7CkBAIC0xNzYwLDExICsxNzQ2LDExIEBAIHN0YXRpYyB2b2lkIGk5eHhf aHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSAgIGhvdHBsdWdf dHJpZ2dlciwgaHBkX3N0YXR1c19nNHgsCiAJCQkJCSAgIGk5eHhfcG9ydF9ob3RwbHVnX2xvbmdf ZGV0ZWN0KTsKIAotCQkJaW50ZWxfaHBkX2lycV9oYW5kbGVyKGRldiwgcGluX21hc2ssIGxvbmdf bWFzayk7CisJCQlpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpbl9tYXNrLCBsb25n X21hc2spOwogCQl9CiAKIAkJaWYgKGhvdHBsdWdfc3RhdHVzICYgRFBfQVVYX0NIQU5ORUxfTUFT S19JTlRfU1RBVFVTX0c0WCkKLQkJCWRwX2F1eF9pcnFfaGFuZGxlcihkZXYpOworCQkJZHBfYXV4 X2lycV9oYW5kbGVyKGRldl9wcml2KTsKIAl9IGVsc2UgewogCQl1MzIgaG90cGx1Z190cmlnZ2Vy ID0gaG90cGx1Z19zdGF0dXMgJiBIT1RQTFVHX0lOVF9TVEFUVVNfSTkxNTsKIApAQCAtMTc3Miw3 ICsxNzU4LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJCWludGVsX2dldF9ocGRfcGlucygmcGluX21hc2ssICZsb25nX21hc2ss IGhvdHBsdWdfdHJpZ2dlciwKIAkJCQkJICAgaG90cGx1Z190cmlnZ2VyLCBocGRfc3RhdHVzX2k5 MTUsCiAJCQkJCSAgIGk5eHhfcG9ydF9ob3RwbHVnX2xvbmdfZGV0ZWN0KTsKLQkJCWludGVsX2hw ZF9pcnFfaGFuZGxlcihkZXYsIHBpbl9tYXNrLCBsb25nX21hc2spOworCQkJaW50ZWxfaHBkX2ly cV9oYW5kbGVyKGRldl9wcml2LCBwaW5fbWFzaywgbG9uZ19tYXNrKTsKIAkJfQogCX0KIH0KQEAg LTE4MzEsNyArMTgxNyw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB2YWxsZXl2aWV3X2lycV9oYW5k bGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAogCQkvKiBDYWxsIHJlZ2FyZGxlc3MsIGFzIHNvbWUg c3RhdHVzIGJpdHMgbWlnaHQgbm90IGJlCiAJCSAqIHNpZ25hbGxlZCBpbiBpaXIgKi8KLQkJdmFs bGV5dmlld19waXBlc3RhdF9pcnFfYWNrKGRldiwgaWlyLCBwaXBlX3N0YXRzKTsKKwkJdmFsbGV5 dmlld19waXBlc3RhdF9pcnFfYWNrKGRldl9wcml2LCBpaXIsIHBpcGVfc3RhdHMpOwogCiAJCS8q CiAJCSAqIFZMVl9JSVIgaXMgc2luZ2xlIGJ1ZmZlcmVkLCBhbmQgcmVmbGVjdHMgdGhlIGxldmVs CkBAIC0xODUwLDkgKzE4MzYsOSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdmFsbGV5dmlld19pcnFf aGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJCQlnZW42X3Jwc19pcnFfaGFuZGxlcihkZXZf cHJpdiwgcG1faWlyKTsKIAogCQlpZiAoaG90cGx1Z19zdGF0dXMpCi0JCQlpOXh4X2hwZF9pcnFf aGFuZGxlcihkZXYsIGhvdHBsdWdfc3RhdHVzKTsKKwkJCWk5eHhfaHBkX2lycV9oYW5kbGVyKGRl dl9wcml2LCBob3RwbHVnX3N0YXR1cyk7CiAKLQkJdmFsbGV5dmlld19waXBlc3RhdF9pcnFfaGFu ZGxlcihkZXYsIHBpcGVfc3RhdHMpOworCQl2YWxsZXl2aWV3X3BpcGVzdGF0X2lycV9oYW5kbGVy KGRldl9wcml2LCBwaXBlX3N0YXRzKTsKIAl9IHdoaWxlICgwKTsKIAogCWVuYWJsZV9ycG1fd2Fr ZXJlZl9hc3NlcnRzKGRldl9wcml2KTsKQEAgLTE5MTEsNyArMTg5Nyw3IEBAIHN0YXRpYyBpcnFy ZXR1cm5fdCBjaGVycnl2aWV3X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAogCQkv KiBDYWxsIHJlZ2FyZGxlc3MsIGFzIHNvbWUgc3RhdHVzIGJpdHMgbWlnaHQgbm90IGJlCiAJCSAq IHNpZ25hbGxlZCBpbiBpaXIgKi8KLQkJdmFsbGV5dmlld19waXBlc3RhdF9pcnFfYWNrKGRldiwg aWlyLCBwaXBlX3N0YXRzKTsKKwkJdmFsbGV5dmlld19waXBlc3RhdF9pcnFfYWNrKGRldl9wcml2 LCBpaXIsIHBpcGVfc3RhdHMpOwogCiAJCS8qCiAJCSAqIFZMVl9JSVIgaXMgc2luZ2xlIGJ1ZmZl cmVkLCBhbmQgcmVmbGVjdHMgdGhlIGxldmVsCkBAIC0xOTI3LDkgKzE5MTMsOSBAQCBzdGF0aWMg aXJxcmV0dXJuX3QgY2hlcnJ5dmlld19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJ CWdlbjhfZ3RfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGd0X2lpcik7CiAKIAkJaWYgKGhvdHBsdWdf c3RhdHVzKQotCQkJaTl4eF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBob3RwbHVnX3N0YXR1cyk7CisJ CQlpOXh4X2hwZF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgaG90cGx1Z19zdGF0dXMpOwogCi0JCXZh bGxleXZpZXdfcGlwZXN0YXRfaXJxX2hhbmRsZXIoZGV2LCBwaXBlX3N0YXRzKTsKKwkJdmFsbGV5 dmlld19waXBlc3RhdF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGlwZV9zdGF0cyk7CiAJfSB3aGls ZSAoMCk7CiAKIAllbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7CkBAIC0xOTM3 LDEwICsxOTIzLDEwIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjaGVycnl2aWV3X2lycV9oYW5kbGVy KGludCBpcnEsIHZvaWQgKmFyZykKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBpYnhf aHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBob3RwbHVnX3RyaWdn ZXIsCitzdGF0aWMgdm9pZCBpYnhfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKKwkJCQl1MzIgaG90cGx1Z190cmlnZ2VyLAogCQkJCWNvbnN0IHUzMiBo cGRbSFBEX05VTV9QSU5TXSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7CiAJdTMyIGRpZ19ob3RwbHVnX3JlZywgcGluX21hc2sgPSAwLCBsb25n X21hc2sgPSAwOwogCiAJLyoKQEAgLTE5NjYsMTYgKzE5NTIsMTUgQEAgc3RhdGljIHZvaWQgaWJ4 X2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgaG90cGx1Z190cmln Z2VyLAogCQkJICAgZGlnX2hvdHBsdWdfcmVnLCBocGQsCiAJCQkgICBwY2hfcG9ydF9ob3RwbHVn X2xvbmdfZGV0ZWN0KTsKIAotCWludGVsX2hwZF9pcnFfaGFuZGxlcihkZXYsIHBpbl9tYXNrLCBs b25nX21hc2spOworCWludGVsX2hwZF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGluX21hc2ssIGxv bmdfbWFzayk7CiB9CiAKLXN0YXRpYyB2b2lkIGlieF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1MzIgcGNoX2lpcikKK3N0YXRpYyB2b2lkIGlieF9pcnFfaGFuZGxlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwY2hfaWlyKQogewotCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJaW50IHBpcGU7 CiAJdTMyIGhvdHBsdWdfdHJpZ2dlciA9IHBjaF9paXIgJiBTREVfSE9UUExVR19NQVNLOwogCi0J aWJ4X2hwZF9pcnFfaGFuZGxlcihkZXYsIGhvdHBsdWdfdHJpZ2dlciwgaHBkX2lieCk7CisJaWJ4 X2hwZF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgaG90cGx1Z190cmlnZ2VyLCBocGRfaWJ4KTsKIAog CWlmIChwY2hfaWlyICYgU0RFX0FVRElPX1BPV0VSX01BU0spIHsKIAkJaW50IHBvcnQgPSBmZnMo KHBjaF9paXIgJiBTREVfQVVESU9fUE9XRVJfTUFTSykgPj4KQEAgLTE5ODUsMTAgKzE5NzAsMTAg QEAgc3RhdGljIHZvaWQgaWJ4X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUz MiBwY2hfaWlyKQogCX0KIAogCWlmIChwY2hfaWlyICYgU0RFX0FVWF9NQVNLKQotCQlkcF9hdXhf aXJxX2hhbmRsZXIoZGV2KTsKKwkJZHBfYXV4X2lycV9oYW5kbGVyKGRldl9wcml2KTsKIAogCWlm IChwY2hfaWlyICYgU0RFX0dNQlVTKQotCQlnbWJ1c19pcnFfaGFuZGxlcihkZXYpOworCQlnbWJ1 c19pcnFfaGFuZGxlcihkZXZfcHJpdik7CiAKIAlpZiAocGNoX2lpciAmIFNERV9BVURJT19IRENQ X01BU0spCiAJCURSTV9ERUJVR19EUklWRVIoIlBDSCBIRENQIGF1ZGlvIGludGVycnVwdFxuIik7 CkBAIC0yMDE4LDkgKzIwMDMsOCBAQCBzdGF0aWMgdm9pZCBpYnhfaXJxX2hhbmRsZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdTMyIHBjaF9paXIpCiAJCWludGVsX3BjaF9maWZvX3VuZGVycnVu X2lycV9oYW5kbGVyKGRldl9wcml2LCBUUkFOU0NPREVSX0IpOwogfQogCi1zdGF0aWMgdm9pZCBp dmJfZXJyX2ludF9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgdm9pZCBp dmJfZXJyX2ludF9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CXUzMiBlcnJfaW50ID0gSTkxNV9SRUFEKEdFTjdfRVJSX0lOVCk7CiAJZW51bSBwaXBlIHBpcGU7 CiAKQEAgLTIwMzIsMTkgKzIwMTYsMTggQEAgc3RhdGljIHZvaWQgaXZiX2Vycl9pbnRfaGFuZGxl cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJaW50ZWxfY3B1X2ZpZm9fdW5kZXJydW5faXJx X2hhbmRsZXIoZGV2X3ByaXYsIHBpcGUpOwogCiAJCWlmIChlcnJfaW50ICYgRVJSX0lOVF9QSVBF X0NSQ19ET05FKHBpcGUpKSB7Ci0JCQlpZiAoSVNfSVZZQlJJREdFKGRldikpCi0JCQkJaXZiX3Bp cGVfY3JjX2lycV9oYW5kbGVyKGRldiwgcGlwZSk7CisJCQlpZiAoSVNfSVZZQlJJREdFKGRldl9w cml2KSkKKwkJCQlpdmJfcGlwZV9jcmNfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpcGUpOwogCQkJ ZWxzZQotCQkJCWhzd19waXBlX2NyY19pcnFfaGFuZGxlcihkZXYsIHBpcGUpOworCQkJCWhzd19w aXBlX2NyY19pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGlwZSk7CiAJCX0KIAl9CiAKIAlJOTE1X1dS SVRFKEdFTjdfRVJSX0lOVCwgZXJyX2ludCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNwdF9zZXJyX2lu dF9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgdm9pZCBjcHRfc2Vycl9p bnRfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1MzIgc2Vy cl9pbnQgPSBJOTE1X1JFQUQoU0VSUl9JTlQpOwogCiAJaWYgKHNlcnJfaW50ICYgU0VSUl9JTlRf UE9JU09OKQpAQCAtMjA2MiwxMyArMjA0NSwxMiBAQCBzdGF0aWMgdm9pZCBjcHRfc2Vycl9pbnRf aGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCUk5MTVfV1JJVEUoU0VSUl9JTlQsIHNl cnJfaW50KTsKIH0KIAotc3RhdGljIHZvaWQgY3B0X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHUzMiBwY2hfaWlyKQorc3RhdGljIHZvaWQgY3B0X2lycV9oYW5kbGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHBjaF9paXIpCiB7Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpbnQgcGlwZTsK IAl1MzIgaG90cGx1Z190cmlnZ2VyID0gcGNoX2lpciAmIFNERV9IT1RQTFVHX01BU0tfQ1BUOwog Ci0JaWJ4X2hwZF9pcnFfaGFuZGxlcihkZXYsIGhvdHBsdWdfdHJpZ2dlciwgaHBkX2NwdCk7CisJ aWJ4X2hwZF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgaG90cGx1Z190cmlnZ2VyLCBocGRfY3B0KTsK IAogCWlmIChwY2hfaWlyICYgU0RFX0FVRElPX1BPV0VSX01BU0tfQ1BUKSB7CiAJCWludCBwb3J0 ID0gZmZzKChwY2hfaWlyICYgU0RFX0FVRElPX1BPV0VSX01BU0tfQ1BUKSA+PgpAQCAtMjA3OCwx MCArMjA2MCwxMCBAQCBzdGF0aWMgdm9pZCBjcHRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdTMyIHBjaF9paXIpCiAJfQogCiAJaWYgKHBjaF9paXIgJiBTREVfQVVYX01BU0tf Q1BUKQotCQlkcF9hdXhfaXJxX2hhbmRsZXIoZGV2KTsKKwkJZHBfYXV4X2lycV9oYW5kbGVyKGRl dl9wcml2KTsKIAogCWlmIChwY2hfaWlyICYgU0RFX0dNQlVTX0NQVCkKLQkJZ21idXNfaXJxX2hh bmRsZXIoZGV2KTsKKwkJZ21idXNfaXJxX2hhbmRsZXIoZGV2X3ByaXYpOwogCiAJaWYgKHBjaF9p aXIgJiBTREVfQVVESU9fQ1BfUkVRX0NQVCkKIAkJRFJNX0RFQlVHX0RSSVZFUigiQXVkaW8gQ1Ag cmVxdWVzdCBpbnRlcnJ1cHRcbiIpOwpAQCAtMjA5NiwxMiArMjA3OCwxMSBAQCBzdGF0aWMgdm9p ZCBjcHRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHBjaF9paXIpCiAJ CQkJCSBJOTE1X1JFQUQoRkRJX1JYX0lJUihwaXBlKSkpOwogCiAJaWYgKHBjaF9paXIgJiBTREVf RVJST1JfQ1BUKQotCQljcHRfc2Vycl9pbnRfaGFuZGxlcihkZXYpOworCQljcHRfc2Vycl9pbnRf aGFuZGxlcihkZXZfcHJpdik7CiB9CiAKLXN0YXRpYyB2b2lkIHNwdF9pcnFfaGFuZGxlcihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgcGNoX2lpcikKK3N0YXRpYyB2b2lkIHNwdF9pcnFfaGFu ZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwY2hfaWlyKQogewot CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJ dTMyIGhvdHBsdWdfdHJpZ2dlciA9IHBjaF9paXIgJiBTREVfSE9UUExVR19NQVNLX1NQVCAmCiAJ CX5TREVfUE9SVEVfSE9UUExVR19TUFQ7CiAJdTMyIGhvdHBsdWcyX3RyaWdnZXIgPSBwY2hfaWly ICYgU0RFX1BPUlRFX0hPVFBMVUdfU1BUOwpAQCAtMjEzMCwxNiArMjExMSwxNiBAQCBzdGF0aWMg dm9pZCBzcHRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHBjaF9paXIp CiAJfQogCiAJaWYgKHBpbl9tYXNrKQotCQlpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBwaW5f bWFzaywgbG9uZ19tYXNrKTsKKwkJaW50ZWxfaHBkX2lycV9oYW5kbGVyKGRldl9wcml2LCBwaW5f bWFzaywgbG9uZ19tYXNrKTsKIAogCWlmIChwY2hfaWlyICYgU0RFX0dNQlVTX0NQVCkKLQkJZ21i dXNfaXJxX2hhbmRsZXIoZGV2KTsKKwkJZ21idXNfaXJxX2hhbmRsZXIoZGV2X3ByaXYpOwogfQog Ci1zdGF0aWMgdm9pZCBpbGtfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHUzMiBob3RwbHVnX3RyaWdnZXIsCitzdGF0aWMgdm9pZCBpbGtfaHBkX2lycV9oYW5kbGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQl1MzIgaG90cGx1Z190cmlnZ2Vy LAogCQkJCWNvbnN0IHUzMiBocGRbSFBEX05VTV9QSU5TXSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJdTMyIGRpZ19ob3RwbHVnX3JlZywg cGluX21hc2sgPSAwLCBsb25nX21hc2sgPSAwOwogCiAJZGlnX2hvdHBsdWdfcmVnID0gSTkxNV9S RUFEKERJR0lUQUxfUE9SVF9IT1RQTFVHX0NOVFJMKTsKQEAgLTIxNDksNDIgKzIxMzAsNDIgQEAg c3RhdGljIHZvaWQgaWxrX2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 MzIgaG90cGx1Z190cmlnZ2VyLAogCQkJICAgZGlnX2hvdHBsdWdfcmVnLCBocGQsCiAJCQkgICBp bGtfcG9ydF9ob3RwbHVnX2xvbmdfZGV0ZWN0KTsKIAotCWludGVsX2hwZF9pcnFfaGFuZGxlcihk ZXYsIHBpbl9tYXNrLCBsb25nX21hc2spOworCWludGVsX2hwZF9pcnFfaGFuZGxlcihkZXZfcHJp diwgcGluX21hc2ssIGxvbmdfbWFzayk7CiB9CiAKLXN0YXRpYyB2b2lkIGlsa19kaXNwbGF5X2ly cV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBkZV9paXIpCitzdGF0aWMgdm9p ZCBpbGtfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCisJCQkJICAgIHUzMiBkZV9paXIpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAllbnVtIHBpcGUgcGlwZTsKIAl1MzIgaG90cGx1 Z190cmlnZ2VyID0gZGVfaWlyICYgREVfRFBfQV9IT1RQTFVHOwogCiAJaWYgKGhvdHBsdWdfdHJp Z2dlcikKLQkJaWxrX2hwZF9pcnFfaGFuZGxlcihkZXYsIGhvdHBsdWdfdHJpZ2dlciwgaHBkX2ls ayk7CisJCWlsa19ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGhvdHBsdWdfdHJpZ2dlciwgaHBk X2lsayk7CiAKIAlpZiAoZGVfaWlyICYgREVfQVVYX0NIQU5ORUxfQSkKLQkJZHBfYXV4X2lycV9o YW5kbGVyKGRldik7CisJCWRwX2F1eF9pcnFfaGFuZGxlcihkZXZfcHJpdik7CiAKIAlpZiAoZGVf aWlyICYgREVfR1NFKQotCQlpbnRlbF9vcHJlZ2lvbl9hc2xlX2ludHIoZGV2KTsKKwkJaW50ZWxf b3ByZWdpb25fYXNsZV9pbnRyKGRldl9wcml2KTsKIAogCWlmIChkZV9paXIgJiBERV9QT0lTT04p CiAJCURSTV9FUlJPUigiUG9pc29uIGludGVycnVwdFxuIik7CiAKIAlmb3JfZWFjaF9waXBlKGRl dl9wcml2LCBwaXBlKSB7CiAJCWlmIChkZV9paXIgJiBERV9QSVBFX1ZCTEFOSyhwaXBlKSAmJgot CQkgICAgaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKGRldiwgcGlwZSkpCi0JCQlpbnRlbF9jaGVj a19wYWdlX2ZsaXAoZGV2LCBwaXBlKTsKKwkJICAgIGludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhk ZXZfcHJpdiwgcGlwZSkpCisJCQlpbnRlbF9jaGVja19wYWdlX2ZsaXAoZGV2X3ByaXYsIHBpcGUp OwogCiAJCWlmIChkZV9paXIgJiBERV9QSVBFX0ZJRk9fVU5ERVJSVU4ocGlwZSkpCiAJCQlpbnRl bF9jcHVfZmlmb191bmRlcnJ1bl9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGlwZSk7CiAKIAkJaWYg KGRlX2lpciAmIERFX1BJUEVfQ1JDX0RPTkUocGlwZSkpCi0JCQlpOXh4X3BpcGVfY3JjX2lycV9o YW5kbGVyKGRldiwgcGlwZSk7CisJCQlpOXh4X3BpcGVfY3JjX2lycV9oYW5kbGVyKGRldl9wcml2 LCBwaXBlKTsKIAogCQkvKiBwbGFuZS9waXBlcyBtYXAgMToxIG9uIGlsaysgKi8KIAkJaWYgKGRl X2lpciAmIERFX1BMQU5FX0ZMSVBfRE9ORShwaXBlKSkgewotCQkJaW50ZWxfcHJlcGFyZV9wYWdl X2ZsaXAoZGV2LCBwaXBlKTsKLQkJCWludGVsX2ZpbmlzaF9wYWdlX2ZsaXBfcGxhbmUoZGV2LCBw aXBlKTsKKwkJCWludGVsX3ByZXBhcmVfcGFnZV9mbGlwKGRldl9wcml2LCBwaXBlKTsKKwkJCWlu dGVsX2ZpbmlzaF9wYWdlX2ZsaXBfcGxhbmUoZGV2X3ByaXYsIHBpcGUpOwogCQl9CiAJfQogCkBA IC0yMTkyLDU0ICsyMTczLDU0IEBAIHN0YXRpYyB2b2lkIGlsa19kaXNwbGF5X2lycV9oYW5kbGVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBkZV9paXIpCiAJaWYgKGRlX2lpciAmIERFX1BD SF9FVkVOVCkgewogCQl1MzIgcGNoX2lpciA9IEk5MTVfUkVBRChTREVJSVIpOwogCi0JCWlmIChI QVNfUENIX0NQVChkZXYpKQotCQkJY3B0X2lycV9oYW5kbGVyKGRldiwgcGNoX2lpcik7CisJCWlm IChIQVNfUENIX0NQVChkZXZfcHJpdikpCisJCQljcHRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBj aF9paXIpOwogCQllbHNlCi0JCQlpYnhfaXJxX2hhbmRsZXIoZGV2LCBwY2hfaWlyKTsKKwkJCWli eF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGNoX2lpcik7CiAKIAkJLyogc2hvdWxkIGNsZWFyIFBD SCBob3RwbHVnIGV2ZW50IGJlZm9yZSBjbGVhciBDUFUgaXJxICovCiAJCUk5MTVfV1JJVEUoU0RF SUlSLCBwY2hfaWlyKTsKIAl9CiAKLQlpZiAoSVNfR0VONShkZXYpICYmIGRlX2lpciAmIERFX1BD VV9FVkVOVCkKLQkJaXJvbmxha2VfcnBzX2NoYW5nZV9pcnFfaGFuZGxlcihkZXYpOworCWlmIChJ U19HRU41KGRldl9wcml2KSAmJiBkZV9paXIgJiBERV9QQ1VfRVZFTlQpCisJCWlyb25sYWtlX3Jw c19jaGFuZ2VfaXJxX2hhbmRsZXIoZGV2X3ByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBpdmJfZGlz cGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZGVfaWlyKQorc3Rh dGljIHZvaWQgaXZiX2Rpc3BsYXlfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAorCQkJCSAgICB1MzIgZGVfaWlyKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJZW51bSBwaXBlIHBpcGU7CiAJdTMy IGhvdHBsdWdfdHJpZ2dlciA9IGRlX2lpciAmIERFX0RQX0FfSE9UUExVR19JVkI7CiAKIAlpZiAo aG90cGx1Z190cmlnZ2VyKQotCQlpbGtfaHBkX2lycV9oYW5kbGVyKGRldiwgaG90cGx1Z190cmln Z2VyLCBocGRfaXZiKTsKKwkJaWxrX2hwZF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgaG90cGx1Z190 cmlnZ2VyLCBocGRfaXZiKTsKIAogCWlmIChkZV9paXIgJiBERV9FUlJfSU5UX0lWQikKLQkJaXZi X2Vycl9pbnRfaGFuZGxlcihkZXYpOworCQlpdmJfZXJyX2ludF9oYW5kbGVyKGRldl9wcml2KTsK IAogCWlmIChkZV9paXIgJiBERV9BVVhfQ0hBTk5FTF9BX0lWQikKLQkJZHBfYXV4X2lycV9oYW5k bGVyKGRldik7CisJCWRwX2F1eF9pcnFfaGFuZGxlcihkZXZfcHJpdik7CiAKIAlpZiAoZGVfaWly ICYgREVfR1NFX0lWQikKLQkJaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKGRldik7CisJCWludGVs X29wcmVnaW9uX2FzbGVfaW50cihkZXZfcHJpdik7CiAKIAlmb3JfZWFjaF9waXBlKGRldl9wcml2 LCBwaXBlKSB7CiAJCWlmIChkZV9paXIgJiAoREVfUElQRV9WQkxBTktfSVZCKHBpcGUpKSAmJgot CQkgICAgaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKGRldiwgcGlwZSkpCi0JCQlpbnRlbF9jaGVj a19wYWdlX2ZsaXAoZGV2LCBwaXBlKTsKKwkJICAgIGludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhk ZXZfcHJpdiwgcGlwZSkpCisJCQlpbnRlbF9jaGVja19wYWdlX2ZsaXAoZGV2X3ByaXYsIHBpcGUp OwogCiAJCS8qIHBsYW5lL3BpcGVzIG1hcCAxOjEgb24gaWxrKyAqLwogCQlpZiAoZGVfaWlyICYg REVfUExBTkVfRkxJUF9ET05FX0lWQihwaXBlKSkgewotCQkJaW50ZWxfcHJlcGFyZV9wYWdlX2Zs aXAoZGV2LCBwaXBlKTsKLQkJCWludGVsX2ZpbmlzaF9wYWdlX2ZsaXBfcGxhbmUoZGV2LCBwaXBl KTsKKwkJCWludGVsX3ByZXBhcmVfcGFnZV9mbGlwKGRldl9wcml2LCBwaXBlKTsKKwkJCWludGVs X2ZpbmlzaF9wYWdlX2ZsaXBfcGxhbmUoZGV2X3ByaXYsIHBpcGUpOwogCQl9CiAJfQogCiAJLyog Y2hlY2sgZXZlbnQgZnJvbSBQQ0ggKi8KLQlpZiAoIUhBU19QQ0hfTk9QKGRldikgJiYgKGRlX2lp ciAmIERFX1BDSF9FVkVOVF9JVkIpKSB7CisJaWYgKCFIQVNfUENIX05PUChkZXZfcHJpdikgJiYg KGRlX2lpciAmIERFX1BDSF9FVkVOVF9JVkIpKSB7CiAJCXUzMiBwY2hfaWlyID0gSTkxNV9SRUFE KFNERUlJUik7CiAKLQkJY3B0X2lycV9oYW5kbGVyKGRldiwgcGNoX2lpcik7CisJCWNwdF9pcnFf aGFuZGxlcihkZXZfcHJpdiwgcGNoX2lpcik7CiAKIAkJLyogY2xlYXIgUENIIGhvdHBsdWcgZXZl bnQgYmVmb3JlIGNsZWFyIENQVSBpcnEgKi8KIAkJSTkxNV9XUklURShTREVJSVIsIHBjaF9paXIp OwpAQCAtMjI3Nyw3ICsyMjU4LDcgQEAgc3RhdGljIGlycXJldHVybl90IGlyb25sYWtlX2lycV9o YW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAkgKiBhYmxlIHRvIHByb2Nlc3MgdGhlbSBhZnRl ciB3ZSByZXN0b3JlIFNERUlFUiAoYXMgc29vbiBhcyB3ZSByZXN0b3JlCiAJICogaXQsIHdlJ2xs IGdldCBhbiBpbnRlcnJ1cHQgaWYgU0RFSUlSIHN0aWxsIGhhcyBzb21ldGhpbmcgdG8gcHJvY2Vz cwogCSAqIGR1ZSB0byBpdHMgYmFjayBxdWV1ZSkuICovCi0JaWYgKCFIQVNfUENIX05PUChkZXYp KSB7CisJaWYgKCFIQVNfUENIX05PUChkZXZfcHJpdikpIHsKIAkJc2RlX2llciA9IEk5MTVfUkVB RChTREVJRVIpOwogCQlJOTE1X1dSSVRFKFNERUlFUiwgMCk7CiAJCVBPU1RJTkdfUkVBRChTREVJ RVIpOwpAQCAtMjI4OSw3ICsyMjcwLDcgQEAgc3RhdGljIGlycXJldHVybl90IGlyb25sYWtlX2ly cV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAlpZiAoZ3RfaWlyKSB7CiAJCUk5MTVfV1JJ VEUoR1RJSVIsIGd0X2lpcik7CiAJCXJldCA9IElSUV9IQU5ETEVEOwotCQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNikKKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKIAkJCXNu Yl9ndF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgZ3RfaWlyKTsKIAkJZWxzZQogCQkJaWxrX2d0X2ly cV9oYW5kbGVyKGRldl9wcml2LCBndF9paXIpOwpAQCAtMjI5OSwxMyArMjI4MCwxMyBAQCBzdGF0 aWMgaXJxcmV0dXJuX3QgaXJvbmxha2VfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQog CWlmIChkZV9paXIpIHsKIAkJSTkxNV9XUklURShERUlJUiwgZGVfaWlyKTsKIAkJcmV0ID0gSVJR X0hBTkRMRUQ7Ci0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KQotCQkJaXZiX2Rpc3Bs YXlfaXJxX2hhbmRsZXIoZGV2LCBkZV9paXIpOworCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA3KQorCQkJaXZiX2Rpc3BsYXlfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGRlX2lpcik7CiAJCWVs c2UKLQkJCWlsa19kaXNwbGF5X2lycV9oYW5kbGVyKGRldiwgZGVfaWlyKTsKKwkJCWlsa19kaXNw bGF5X2lycV9oYW5kbGVyKGRldl9wcml2LCBkZV9paXIpOwogCX0KIAotCWlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA2KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewogCQl1 MzIgcG1faWlyID0gSTkxNV9SRUFEKEdFTjZfUE1JSVIpOwogCQlpZiAocG1faWlyKSB7CiAJCQlJ OTE1X1dSSVRFKEdFTjZfUE1JSVIsIHBtX2lpcik7CkBAIC0yMzE2LDcgKzIyOTcsNyBAQCBzdGF0 aWMgaXJxcmV0dXJuX3QgaXJvbmxha2VfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQog CiAJSTkxNV9XUklURShERUlFUiwgZGVfaWVyKTsKIAlQT1NUSU5HX1JFQUQoREVJRVIpOwotCWlm ICghSEFTX1BDSF9OT1AoZGV2KSkgeworCWlmICghSEFTX1BDSF9OT1AoZGV2X3ByaXYpKSB7CiAJ CUk5MTVfV1JJVEUoU0RFSUVSLCBzZGVfaWVyKTsKIAkJUE9TVElOR19SRUFEKFNERUlFUik7CiAJ fQpAQCAtMjMyNywxMCArMjMwOCwxMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaXJvbmxha2VfaXJx X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2 b2lkIGJ4dF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGhvdHBs dWdfdHJpZ2dlciwKK3N0YXRpYyB2b2lkIGJ4dF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCXUzMiBob3RwbHVnX3RyaWdnZXIsCiAJCQkJY29u c3QgdTMyIGhwZFtIUERfTlVNX1BJTlNdKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAl1MzIgZGlnX2hvdHBsdWdfcmVnLCBwaW5fbWFzayA9 IDAsIGxvbmdfbWFzayA9IDA7CiAKIAlkaWdfaG90cGx1Z19yZWcgPSBJOTE1X1JFQUQoUENIX1BP UlRfSE9UUExVRyk7CkBAIC0yMzQwLDEzICsyMzIxLDEyIEBAIHN0YXRpYyB2b2lkIGJ4dF9ocGRf aXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGhvdHBsdWdfdHJpZ2dlciwK IAkJCSAgIGRpZ19ob3RwbHVnX3JlZywgaHBkLAogCQkJICAgYnh0X3BvcnRfaG90cGx1Z19sb25n X2RldGVjdCk7CiAKLQlpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBwaW5fbWFzaywgbG9uZ19t YXNrKTsKKwlpbnRlbF9ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpbl9tYXNrLCBsb25nX21h c2spOwogfQogCiBzdGF0aWMgaXJxcmV0dXJuX3QKIGdlbjhfZGVfaXJxX2hhbmRsZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFzdGVyX2N0bCkKIHsKLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKIAlpcnFyZXR1cm5fdCByZXQgPSBJUlFf Tk9ORTsKIAl1MzIgaWlyOwogCWVudW0gcGlwZSBwaXBlOwpAQCAtMjM1Nyw3ICsyMzM3LDcgQEAg Z2VuOF9kZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUz MiBtYXN0ZXJfY3RsKQogCQkJSTkxNV9XUklURShHRU44X0RFX01JU0NfSUlSLCBpaXIpOwogCQkJ cmV0ID0gSVJRX0hBTkRMRUQ7CiAJCQlpZiAoaWlyICYgR0VOOF9ERV9NSVNDX0dTRSkKLQkJCQlp bnRlbF9vcHJlZ2lvbl9hc2xlX2ludHIoZGV2KTsKKwkJCQlpbnRlbF9vcHJlZ2lvbl9hc2xlX2lu dHIoZGV2X3ByaXYpOwogCQkJZWxzZQogCQkJCURSTV9FUlJPUigiVW5leHBlY3RlZCBERSBNaXNj IGludGVycnVwdFxuIik7CiAJCX0KQEAgLTIzODEsMjYgKzIzNjEsMjggQEAgZ2VuOF9kZV9pcnFf aGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXN0ZXJfY3Rs KQogCQkJCQkgICAgR0VOOV9BVVhfQ0hBTk5FTF9EOwogCiAJCQlpZiAoaWlyICYgdG1wX21hc2sp IHsKLQkJCQlkcF9hdXhfaXJxX2hhbmRsZXIoZGV2KTsKKwkJCQlkcF9hdXhfaXJxX2hhbmRsZXIo ZGV2X3ByaXYpOwogCQkJCWZvdW5kID0gdHJ1ZTsKIAkJCX0KIAogCQkJaWYgKElTX0JST1hUT04o ZGV2X3ByaXYpKSB7CiAJCQkJdG1wX21hc2sgPSBpaXIgJiBCWFRfREVfUE9SVF9IT1RQTFVHX01B U0s7CiAJCQkJaWYgKHRtcF9tYXNrKSB7Ci0JCQkJCWJ4dF9ocGRfaXJxX2hhbmRsZXIoZGV2LCB0 bXBfbWFzaywgaHBkX2J4dCk7CisJCQkJCWJ4dF9ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHRt cF9tYXNrLAorCQkJCQkJCSAgICBocGRfYnh0KTsKIAkJCQkJZm91bmQgPSB0cnVlOwogCQkJCX0K IAkJCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewogCQkJCXRtcF9tYXNrID0g aWlyICYgR0VOOF9QT1JUX0RQX0FfSE9UUExVRzsKIAkJCQlpZiAodG1wX21hc2spIHsKLQkJCQkJ aWxrX2hwZF9pcnFfaGFuZGxlcihkZXYsIHRtcF9tYXNrLCBocGRfYmR3KTsKKwkJCQkJaWxrX2hw ZF9pcnFfaGFuZGxlcihkZXZfcHJpdiwKKwkJCQkJCQkgICAgdG1wX21hc2ssIGhwZF9iZHcpOwog CQkJCQlmb3VuZCA9IHRydWU7CiAJCQkJfQogCQkJfQogCi0JCQlpZiAoSVNfQlJPWFRPTihkZXYp ICYmIChpaXIgJiBCWFRfREVfUE9SVF9HTUJVUykpIHsKLQkJCQlnbWJ1c19pcnFfaGFuZGxlcihk ZXYpOworCQkJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpICYmIChpaXIgJiBCWFRfREVfUE9SVF9H TUJVUykpIHsKKwkJCQlnbWJ1c19pcnFfaGFuZGxlcihkZXZfcHJpdik7CiAJCQkJZm91bmQgPSB0 cnVlOwogCQkJfQogCkBAIC0yNDI3LDggKzI0MDksOCBAQCBnZW44X2RlX2lycV9oYW5kbGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1hc3Rlcl9jdGwpCiAJCUk5MTVf V1JJVEUoR0VOOF9ERV9QSVBFX0lJUihwaXBlKSwgaWlyKTsKIAogCQlpZiAoaWlyICYgR0VOOF9Q SVBFX1ZCTEFOSyAmJgotCQkgICAgaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKGRldiwgcGlwZSkp Ci0JCQlpbnRlbF9jaGVja19wYWdlX2ZsaXAoZGV2LCBwaXBlKTsKKwkJICAgIGludGVsX3BpcGVf aGFuZGxlX3ZibGFuayhkZXZfcHJpdiwgcGlwZSkpCisJCQlpbnRlbF9jaGVja19wYWdlX2ZsaXAo ZGV2X3ByaXYsIHBpcGUpOwogCiAJCWZsaXBfZG9uZSA9IGlpcjsKIAkJaWYgKElOVEVMX0lORk8o ZGV2X3ByaXYpLT5nZW4gPj0gOSkKQEAgLTI0MzcsMTIgKzI0MTksMTIgQEAgZ2VuOF9kZV9pcnFf aGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXN0ZXJfY3Rs KQogCQkJZmxpcF9kb25lICY9IEdFTjhfUElQRV9QUklNQVJZX0ZMSVBfRE9ORTsKIAogCQlpZiAo ZmxpcF9kb25lKSB7Ci0JCQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXYsIHBpcGUpOwotCQkJ aW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9wbGFuZShkZXYsIHBpcGUpOworCQkJaW50ZWxfcHJlcGFy ZV9wYWdlX2ZsaXAoZGV2X3ByaXYsIHBpcGUpOworCQkJaW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9w bGFuZShkZXZfcHJpdiwgcGlwZSk7CiAJCX0KIAogCQlpZiAoaWlyICYgR0VOOF9QSVBFX0NEQ0xL X0NSQ19ET05FKQotCQkJaHN3X3BpcGVfY3JjX2lycV9oYW5kbGVyKGRldiwgcGlwZSk7CisJCQlo c3dfcGlwZV9jcmNfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpcGUpOwogCiAJCWlmIChpaXIgJiBH RU44X1BJUEVfRklGT19VTkRFUlJVTikKIAkJCWludGVsX2NwdV9maWZvX3VuZGVycnVuX2lycV9o YW5kbGVyKGRldl9wcml2LCBwaXBlKTsKQEAgLTI0NTksNyArMjQ0MSw3IEBAIGdlbjhfZGVfaXJx X2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgbWFzdGVyX2N0 bCkKIAkJCQkgIGZhdWx0X2Vycm9ycyk7CiAJfQogCi0JaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSAm JiAhSEFTX1BDSF9OT1AoZGV2KSAmJgorCWlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSAmJiAh SEFTX1BDSF9OT1AoZGV2X3ByaXYpICYmCiAJICAgIG1hc3Rlcl9jdGwgJiBHRU44X0RFX1BDSF9J UlEpIHsKIAkJLyoKIAkJICogRklYTUUoQkRXKTogQXNzdW1lIGZvciBub3cgdGhhdCB0aGUgbmV3 IGludGVycnVwdCBoYW5kbGluZwpAQCAtMjQ3Miw5ICsyNDU0LDkgQEAgZ2VuOF9kZV9pcnFfaGFu ZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXN0ZXJfY3RsKQog CQkJcmV0ID0gSVJRX0hBTkRMRUQ7CiAKIAkJCWlmIChIQVNfUENIX1NQVChkZXZfcHJpdikpCi0J CQkJc3B0X2lycV9oYW5kbGVyKGRldiwgaWlyKTsKKwkJCQlzcHRfaXJxX2hhbmRsZXIoZGV2X3By aXYsIGlpcik7CiAJCQllbHNlCi0JCQkJY3B0X2lycV9oYW5kbGVyKGRldiwgaWlyKTsKKwkJCQlj cHRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGlpcik7CiAJCX0gZWxzZSB7CiAJCQkvKgogCQkJICog TGlrZSBvbiBwcmV2aW91cyBQQ0ggdGhlcmUgc2VlbXMgdG8gYmUgc29tZXRoaW5nCkBAIC0zNTAw LDMxICszNDgyLDI5IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfaXJxX3ByZWluc3RhbGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9j ayk7CiB9CiAKLXN0YXRpYyB1MzIgaW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAorc3RhdGljIHUzMiBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgIGNvbnN0IHUzMiBocGRbSFBEX05VTV9QSU5T XSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CiAJdTMyIGVuYWJsZWRfaXJxcyA9IDA7 CiAKLQlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKGRldiwgZW5jb2RlcikKKwlmb3JfZWFjaF9pbnRl bF9lbmNvZGVyKGRldl9wcml2LT5kZXYsIGVuY29kZXIpCiAJCWlmIChkZXZfcHJpdi0+aG90cGx1 Zy5zdGF0c1tlbmNvZGVyLT5ocGRfcGluXS5zdGF0ZSA9PSBIUERfRU5BQkxFRCkKIAkJCWVuYWJs ZWRfaXJxcyB8PSBocGRbZW5jb2Rlci0+aHBkX3Bpbl07CiAKIAlyZXR1cm4gZW5hYmxlZF9pcnFz OwogfQogCi1zdGF0aWMgdm9pZCBpYnhfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQorc3RhdGljIHZvaWQgaWJ4X2hwZF9pcnFfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7CiAJdTMyIGhvdHBsdWdfaXJxcywgaG90cGx1ZywgZW5hYmxlZF9pcnFz OwogCi0JaWYgKEhBU19QQ0hfSUJYKGRldikpIHsKKwlpZiAoSEFTX1BDSF9JQlgoZGV2X3ByaXYp KSB7CiAJCWhvdHBsdWdfaXJxcyA9IFNERV9IT1RQTFVHX01BU0s7Ci0JCWVuYWJsZWRfaXJxcyA9 IGludGVsX2hwZF9lbmFibGVkX2lycXMoZGV2LCBocGRfaWJ4KTsKKwkJZW5hYmxlZF9pcnFzID0g aW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXZfcHJpdiwgaHBkX2lieCk7CiAJfSBlbHNlIHsKIAkJ aG90cGx1Z19pcnFzID0gU0RFX0hPVFBMVUdfTUFTS19DUFQ7Ci0JCWVuYWJsZWRfaXJxcyA9IGlu dGVsX2hwZF9lbmFibGVkX2lycXMoZGV2LCBocGRfY3B0KTsKKwkJZW5hYmxlZF9pcnFzID0gaW50 ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXZfcHJpdiwgaHBkX2NwdCk7CiAJfQogCiAJaWJ4X2Rpc3Bs YXlfaW50ZXJydXB0X3VwZGF0ZShkZXZfcHJpdiwgaG90cGx1Z19pcnFzLCBlbmFibGVkX2lycXMp OwpAQCAtMzU0MywxOCArMzUyMywxNyBAQCBzdGF0aWMgdm9pZCBpYnhfaHBkX2lycV9zZXR1cChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCSAqIFdoZW4gQ1BVIGFuZCBQQ0ggYXJlIG9uIHRoZSBz YW1lIHBhY2thZ2UsIHBvcnQgQQogCSAqIEhQRCBtdXN0IGJlIGVuYWJsZWQgaW4gYm90aCBub3J0 aCBhbmQgc291dGguCiAJICovCi0JaWYgKEhBU19QQ0hfTFBUX0xQKGRldikpCisJaWYgKEhBU19Q Q0hfTFBUX0xQKGRldl9wcml2KSkKIAkJaG90cGx1ZyB8PSBQT1JUQV9IT1RQTFVHX0VOQUJMRTsK IAlJOTE1X1dSSVRFKFBDSF9QT1JUX0hPVFBMVUcsIGhvdHBsdWcpOwogfQogCi1zdGF0aWMgdm9p ZCBzcHRfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIHZvaWQg c3B0X2hwZF9pcnFfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewot CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJ dTMyIGhvdHBsdWdfaXJxcywgaG90cGx1ZywgZW5hYmxlZF9pcnFzOwogCiAJaG90cGx1Z19pcnFz ID0gU0RFX0hPVFBMVUdfTUFTS19TUFQ7Ci0JZW5hYmxlZF9pcnFzID0gaW50ZWxfaHBkX2VuYWJs ZWRfaXJxcyhkZXYsIGhwZF9zcHQpOworCWVuYWJsZWRfaXJxcyA9IGludGVsX2hwZF9lbmFibGVk X2lycXMoZGV2X3ByaXYsIGhwZF9zcHQpOwogCiAJaWJ4X2Rpc3BsYXlfaW50ZXJydXB0X3VwZGF0 ZShkZXZfcHJpdiwgaG90cGx1Z19pcnFzLCBlbmFibGVkX2lycXMpOwogCkBAIC0zNTY5LDI0ICsz NTQ4LDIzIEBAIHN0YXRpYyB2b2lkIHNwdF9ocGRfaXJxX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJSTkxNV9XUklURShQQ0hfUE9SVF9IT1RQTFVHMiwgaG90cGx1Zyk7CiB9CiAKLXN0 YXRpYyB2b2lkIGlsa19ocGRfaXJxX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0 aWMgdm9pZCBpbGtfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKIAl1MzIgaG90cGx1Z19pcnFzLCBob3RwbHVnLCBlbmFibGVkX2lycXM7CiAKLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDgpIHsKIAkJaG90cGx1Z19pcnFzID0gR0VOOF9QT1JUX0RQX0FfSE9UUExVRzsKLQkJZW5hYmxl ZF9pcnFzID0gaW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXYsIGhwZF9iZHcpOworCQllbmFibGVk X2lycXMgPSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldl9wcml2LCBocGRfYmR3KTsKIAogCQli ZHdfdXBkYXRlX3BvcnRfaXJxKGRldl9wcml2LCBob3RwbHVnX2lycXMsIGVuYWJsZWRfaXJxcyk7 Ci0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSB7CisJfSBlbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDcpIHsKIAkJaG90cGx1Z19pcnFzID0gREVfRFBfQV9IT1RQ TFVHX0lWQjsKLQkJZW5hYmxlZF9pcnFzID0gaW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXYsIGhw ZF9pdmIpOworCQllbmFibGVkX2lycXMgPSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldl9wcml2 LCBocGRfaXZiKTsKIAogCQlpbGtfdXBkYXRlX2Rpc3BsYXlfaXJxKGRldl9wcml2LCBob3RwbHVn X2lycXMsIGVuYWJsZWRfaXJxcyk7CiAJfSBlbHNlIHsKIAkJaG90cGx1Z19pcnFzID0gREVfRFBf QV9IT1RQTFVHOwotCQllbmFibGVkX2lycXMgPSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldiwg aHBkX2lsayk7CisJCWVuYWJsZWRfaXJxcyA9IGludGVsX2hwZF9lbmFibGVkX2lycXMoZGV2X3By aXYsIGhwZF9pbGspOwogCiAJCWlsa191cGRhdGVfZGlzcGxheV9pcnEoZGV2X3ByaXYsIGhvdHBs dWdfaXJxcywgZW5hYmxlZF9pcnFzKTsKIAl9CkBAIC0zNjAxLDE1ICszNTc5LDE0IEBAIHN0YXRp YyB2b2lkIGlsa19ocGRfaXJxX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaG90cGx1 ZyB8PSBESUdJVEFMX1BPUlRBX0hPVFBMVUdfRU5BQkxFIHwgRElHSVRBTF9QT1JUQV9QVUxTRV9E VVJBVElPTl8ybXM7CiAJSTkxNV9XUklURShESUdJVEFMX1BPUlRfSE9UUExVR19DTlRSTCwgaG90 cGx1Zyk7CiAKLQlpYnhfaHBkX2lycV9zZXR1cChkZXYpOworCWlieF9ocGRfaXJxX3NldHVwKGRl dl9wcml2KTsKIH0KIAotc3RhdGljIHZvaWQgYnh0X2hwZF9pcnFfc2V0dXAoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIGJ4dF9ocGRfaXJxX3NldHVwKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXUzMiBob3RwbHVnX2lycXMsIGhvdHBsdWcsIGVuYWJs ZWRfaXJxczsKIAotCWVuYWJsZWRfaXJxcyA9IGludGVsX2hwZF9lbmFibGVkX2lycXMoZGV2LCBo cGRfYnh0KTsKKwllbmFibGVkX2lycXMgPSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldl9wcml2 LCBocGRfYnh0KTsKIAlob3RwbHVnX2lycXMgPSBCWFRfREVfUE9SVF9IT1RQTFVHX01BU0s7CiAK IAliZHdfdXBkYXRlX3BvcnRfaXJxKGRldl9wcml2LCBob3RwbHVnX2lycXMsIGVuYWJsZWRfaXJx cyk7CkBAIC00MDA2LDEzICszOTgzLDEyIEBAIHN0YXRpYyBpbnQgaTh4eF9pcnFfcG9zdGluc3Rh bGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIC8qCiAgKiBSZXR1cm5zIHRydWUgd2hlbiBhIHBh Z2UgZmxpcCBoYXMgY29tcGxldGVkLgogICovCi1zdGF0aWMgYm9vbCBpOHh4X2hhbmRsZV92Ymxh bmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKK3N0YXRpYyBib29sIGk4eHhfaGFuZGxlX3ZibGFu ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICAgaW50IHBsYW5l LCBpbnQgcGlwZSwgdTMyIGlpcikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXUxNiBmbGlwX3BlbmRpbmcgPSBESVNQTEFZX1BMQU5F X0ZMSVBfUEVORElORyhwbGFuZSk7CiAKLQlpZiAoIWludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhk ZXYsIHBpcGUpKQorCWlmICghaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKGRldl9wcml2LCBwaXBl KSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKChpaXIgJiBmbGlwX3BlbmRpbmcpID09IDApCkBA IC00MDI3LDEyICs0MDAzLDEyIEBAIHN0YXRpYyBib29sIGk4eHhfaGFuZGxlX3ZibGFuayhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChJOTE1X1JFQUQxNihJU1IpICYgZmxpcF9wZW5kaW5n KQogCQlnb3RvIGNoZWNrX3BhZ2VfZmxpcDsKIAotCWludGVsX3ByZXBhcmVfcGFnZV9mbGlwKGRl diwgcGxhbmUpOwotCWludGVsX2ZpbmlzaF9wYWdlX2ZsaXAoZGV2LCBwaXBlKTsKKwlpbnRlbF9w cmVwYXJlX3BhZ2VfZmxpcChkZXZfcHJpdiwgcGxhbmUpOworCWludGVsX2ZpbmlzaF9wYWdlX2Zs aXAoZGV2X3ByaXYsIHBpcGUpOwogCXJldHVybiB0cnVlOwogCiBjaGVja19wYWdlX2ZsaXA6Ci0J aW50ZWxfY2hlY2tfcGFnZV9mbGlwKGRldiwgcGlwZSk7CisJaW50ZWxfY2hlY2tfcGFnZV9mbGlw KGRldl9wcml2LCBwaXBlKTsKIAlyZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQwODksMTUgKzQwNjUs MTUgQEAgc3RhdGljIGlycXJldHVybl90IGk4eHhfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq YXJnKQogCiAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKIAkJCWludCBwbGFuZSA9 IHBpcGU7Ci0JCQlpZiAoSEFTX0ZCQyhkZXYpKQorCQkJaWYgKEhBU19GQkMoZGV2X3ByaXYpKQog CQkJCXBsYW5lID0gIXBsYW5lOwogCiAJCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfVkJM QU5LX0lOVEVSUlVQVF9TVEFUVVMgJiYKLQkJCSAgICBpOHh4X2hhbmRsZV92YmxhbmsoZGV2LCBw bGFuZSwgcGlwZSwgaWlyKSkKKwkJCSAgICBpOHh4X2hhbmRsZV92YmxhbmsoZGV2X3ByaXYsIHBs YW5lLCBwaXBlLCBpaXIpKQogCQkJCWZsaXBfbWFzayAmPSB+RElTUExBWV9QTEFORV9GTElQX1BF TkRJTkcocGxhbmUpOwogCiAJCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfQ1JDX0RPTkVf SU5URVJSVVBUX1NUQVRVUykKLQkJCQlpOXh4X3BpcGVfY3JjX2lycV9oYW5kbGVyKGRldiwgcGlw ZSk7CisJCQkJaTl4eF9waXBlX2NyY19pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGlwZSk7CiAKIAkJ CWlmIChwaXBlX3N0YXRzW3BpcGVdICYgUElQRV9GSUZPX1VOREVSUlVOX1NUQVRVUykKIAkJCQlp bnRlbF9jcHVfZmlmb191bmRlcnJ1bl9pcnFfaGFuZGxlcihkZXZfcHJpdiwKQEAgLTQxODIsNyAr NDE1OCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAlJOTE1X1dSSVRFKElFUiwgZW5hYmxlX21hc2spOwogCVBPU1RJTkdfUkVBRChJ RVIpOwogCi0JaTkxNV9lbmFibGVfYXNsZV9waXBlc3RhdChkZXYpOworCWk5MTVfZW5hYmxlX2Fz bGVfcGlwZXN0YXQoZGV2X3ByaXYpOwogCiAJLyogSW50ZXJydXB0IHNldHVwIGlzIGFscmVhZHkg Z3VhcmFudGVlZCB0byBiZSBzaW5nbGUtdGhyZWFkZWQsIHRoaXMgaXMKIAkgKiBqdXN0IHRvIG1h a2UgdGhlIGFzc2VydF9zcGluX2xvY2tlZCBjaGVjayBoYXBweS4gKi8KQEAgLTQxOTcsMTMgKzQx NzMsMTIgQEAgc3RhdGljIGludCBpOTE1X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogLyoKICAqIFJldHVybnMgdHJ1ZSB3aGVuIGEgcGFnZSBmbGlwIGhhcyBjb21wbGV0 ZWQuCiAgKi8KLXN0YXRpYyBib29sIGk5MTVfaGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAorc3RhdGljIGJvb2wgaTkxNV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgICBpbnQgcGxhbmUsIGludCBwaXBlLCB1MzIgaWly KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAJdTMyIGZsaXBfcGVuZGluZyA9IERJU1BMQVlfUExBTkVfRkxJUF9QRU5ESU5HKHBsYW5l KTsKIAotCWlmICghaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKGRldiwgcGlwZSkpCisJaWYgKCFp bnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2X3ByaXYsIHBpcGUpKQogCQlyZXR1cm4gZmFsc2U7 CiAKIAlpZiAoKGlpciAmIGZsaXBfcGVuZGluZykgPT0gMCkKQEAgLTQyMTgsMTIgKzQxOTMsMTIg QEAgc3RhdGljIGJvb2wgaTkxNV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CiAJaWYgKEk5MTVfUkVBRChJU1IpICYgZmxpcF9wZW5kaW5nKQogCQlnb3RvIGNoZWNrX3BhZ2Vf ZmxpcDsKIAotCWludGVsX3ByZXBhcmVfcGFnZV9mbGlwKGRldiwgcGxhbmUpOwotCWludGVsX2Zp bmlzaF9wYWdlX2ZsaXAoZGV2LCBwaXBlKTsKKwlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXZf cHJpdiwgcGxhbmUpOworCWludGVsX2ZpbmlzaF9wYWdlX2ZsaXAoZGV2X3ByaXYsIHBpcGUpOwog CXJldHVybiB0cnVlOwogCiBjaGVja19wYWdlX2ZsaXA6Ci0JaW50ZWxfY2hlY2tfcGFnZV9mbGlw KGRldiwgcGlwZSk7CisJaW50ZWxfY2hlY2tfcGFnZV9mbGlwKGRldl9wcml2LCBwaXBlKTsKIAly ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQyNzMsMTEgKzQyNDgsMTEgQEAgc3RhdGljIGlycXJldHVy bl90IGk5MTVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCQkJYnJlYWs7CiAKIAkJ LyogQ29uc3VtZSBwb3J0LiAgVGhlbiBjbGVhciBJSVIgb3Igd2UnbGwgbWlzcyBldmVudHMgKi8K LQkJaWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2KSAmJgorCQlpZiAoSTkxNV9IQVNfSE9UUExVRyhk ZXZfcHJpdikgJiYKIAkJICAgIGlpciAmIEk5MTVfRElTUExBWV9QT1JUX0lOVEVSUlVQVCkgewog CQkJdTMyIGhvdHBsdWdfc3RhdHVzID0gaTl4eF9ocGRfaXJxX2FjayhkZXZfcHJpdik7CiAJCQlp ZiAoaG90cGx1Z19zdGF0dXMpCi0JCQkJaTl4eF9ocGRfaXJxX2hhbmRsZXIoZGV2LCBob3RwbHVn X3N0YXR1cyk7CisJCQkJaTl4eF9ocGRfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIGhvdHBsdWdfc3Rh dHVzKTsKIAkJfQogCiAJCUk5MTVfV1JJVEUoSUlSLCBpaXIgJiB+ZmxpcF9tYXNrKTsKQEAgLTQy ODgsMTggKzQyNjMsMTggQEAgc3RhdGljIGlycXJldHVybl90IGk5MTVfaXJxX2hhbmRsZXIoaW50 IGlycSwgdm9pZCAqYXJnKQogCiAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKIAkJ CWludCBwbGFuZSA9IHBpcGU7Ci0JCQlpZiAoSEFTX0ZCQyhkZXYpKQorCQkJaWYgKEhBU19GQkMo ZGV2X3ByaXYpKQogCQkJCXBsYW5lID0gIXBsYW5lOwogCiAJCQlpZiAocGlwZV9zdGF0c1twaXBl XSAmIFBJUEVfVkJMQU5LX0lOVEVSUlVQVF9TVEFUVVMgJiYKLQkJCSAgICBpOTE1X2hhbmRsZV92 YmxhbmsoZGV2LCBwbGFuZSwgcGlwZSwgaWlyKSkKKwkJCSAgICBpOTE1X2hhbmRsZV92Ymxhbmso ZGV2X3ByaXYsIHBsYW5lLCBwaXBlLCBpaXIpKQogCQkJCWZsaXBfbWFzayAmPSB+RElTUExBWV9Q TEFORV9GTElQX1BFTkRJTkcocGxhbmUpOwogCiAJCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJ UEVfTEVHQUNZX0JMQ19FVkVOVF9TVEFUVVMpCiAJCQkJYmxjX2V2ZW50ID0gdHJ1ZTsKIAogCQkJ aWYgKHBpcGVfc3RhdHNbcGlwZV0gJiBQSVBFX0NSQ19ET05FX0lOVEVSUlVQVF9TVEFUVVMpCi0J CQkJaTl4eF9waXBlX2NyY19pcnFfaGFuZGxlcihkZXYsIHBpcGUpOworCQkJCWk5eHhfcGlwZV9j cmNfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBpcGUpOwogCiAJCQlpZiAocGlwZV9zdGF0c1twaXBl XSAmIFBJUEVfRklGT19VTkRFUlJVTl9TVEFUVVMpCiAJCQkJaW50ZWxfY3B1X2ZpZm9fdW5kZXJy dW5faXJxX2hhbmRsZXIoZGV2X3ByaXYsCkBAIC00MzA3LDcgKzQyODIsNyBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgaTkxNV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJCX0KIAogCQlp ZiAoYmxjX2V2ZW50IHx8IChpaXIgJiBJOTE1X0FTTEVfSU5URVJSVVBUKSkKLQkJCWludGVsX29w cmVnaW9uX2FzbGVfaW50cihkZXYpOworCQkJaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKGRldl9w cml2KTsKIAogCQkvKiBXaXRoIE1TSSwgaW50ZXJydXB0cyBhcmUgb25seSBnZW5lcmF0ZWQgd2hl biBpaXIKIAkJICogdHJhbnNpdGlvbnMgZnJvbSB6ZXJvIHRvIG5vbnplcm8uICBJZiBhbm90aGVy IGJpdCBnb3QKQEAgLTQzOTEsNyArNDM2Niw3IEBAIHN0YXRpYyBpbnQgaTk2NV9pcnFfcG9zdGlu c3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCSBJOTE1X0RJU1BMQVlfUExBTkVfQl9G TElQX1BFTkRJTkdfSU5URVJSVVBUKTsKIAllbmFibGVfbWFzayB8PSBJOTE1X1VTRVJfSU5URVJS VVBUOwogCi0JaWYgKElTX0c0WChkZXYpKQorCWlmIChJU19HNFgoZGV2X3ByaXYpKQogCQllbmFi bGVfbWFzayB8PSBJOTE1X0JTRF9VU0VSX0lOVEVSUlVQVDsKIAogCS8qIEludGVycnVwdCBzZXR1 cCBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUgc2luZ2xlLXRocmVhZGVkLCB0aGlzIGlzCkBA IC00NDA2LDcgKzQzODEsNyBAQCBzdGF0aWMgaW50IGk5NjVfaXJxX3Bvc3RpbnN0YWxsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJICogRW5hYmxlIHNvbWUgZXJyb3IgZGV0ZWN0aW9uLCBub3Rl IHRoZSBpbnN0cnVjdGlvbiBlcnJvciBtYXNrCiAJICogYml0IGlzIHJlc2VydmVkLCBzbyB3ZSBs ZWF2ZSBpdCBtYXNrZWQuCiAJICovCi0JaWYgKElTX0c0WChkZXYpKSB7CisJaWYgKElTX0c0WChk ZXZfcHJpdikpIHsKIAkJZXJyb3JfbWFzayA9IH4oR000NV9FUlJPUl9QQUdFX1RBQkxFIHwKIAkJ CSAgICAgICBHTTQ1X0VSUk9SX01FTV9QUklWIHwKIAkJCSAgICAgICBHTTQ1X0VSUk9SX0NQX1BS SVYgfApAQCAtNDQyNCwyNiArNDM5OSwyNSBAQCBzdGF0aWMgaW50IGk5NjVfaXJxX3Bvc3RpbnN0 YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaTkxNV9ob3RwbHVnX2ludGVycnVwdF91cGRh dGUoZGV2X3ByaXYsIDB4ZmZmZmZmZmYsIDApOwogCVBPU1RJTkdfUkVBRChQT1JUX0hPVFBMVUdf RU4pOwogCi0JaTkxNV9lbmFibGVfYXNsZV9waXBlc3RhdChkZXYpOworCWk5MTVfZW5hYmxlX2Fz bGVfcGlwZXN0YXQoZGV2X3ByaXYpOwogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGk5 MTVfaHBkX2lycV9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIHZvaWQgaTkx NV9ocGRfaXJxX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXUz MiBob3RwbHVnX2VuOwogCiAJYXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXZfcHJpdi0+aXJxX2xvY2sp OwogCiAJLyogTm90ZSBIRE1JIGFuZCBEUCBzaGFyZSBob3RwbHVnIGJpdHMgKi8KIAkvKiBlbmFi bGUgYml0cyBhcmUgdGhlIHNhbWUgZm9yIGFsbCBnZW5lcmF0aW9ucyAqLwotCWhvdHBsdWdfZW4g PSBpbnRlbF9ocGRfZW5hYmxlZF9pcnFzKGRldiwgaHBkX21hc2tfaTkxNSk7CisJaG90cGx1Z19l biA9IGludGVsX2hwZF9lbmFibGVkX2lycXMoZGV2X3ByaXYsIGhwZF9tYXNrX2k5MTUpOwogCS8q IFByb2dyYW1taW5nIHRoZSBDUlQgZGV0ZWN0aW9uIHBhcmFtZXRlcnMgdGVuZHMKIAkgICB0byBn ZW5lcmF0ZSBhIHNwdXJpb3VzIGhvdHBsdWcgZXZlbnQgYWJvdXQgdGhyZWUKIAkgICBzZWNvbmRz IGxhdGVyLiAgU28ganVzdCBkbyBpdCBvbmNlLgogCSovCi0JaWYgKElTX0c0WChkZXYpKQorCWlm IChJU19HNFgoZGV2X3ByaXYpKQogCQlob3RwbHVnX2VuIHw9IENSVF9IT1RQTFVHX0FDVElWQVRJ T05fUEVSSU9EXzY0OwogCWhvdHBsdWdfZW4gfD0gQ1JUX0hPVFBMVUdfVk9MVEFHRV9DT01QQVJF XzUwOwogCkBAIC00NTEwLDcgKzQ0ODQsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaTk2NV9pcnFf aGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJCWlmIChpaXIgJiBJOTE1X0RJU1BMQVlfUE9S VF9JTlRFUlJVUFQpIHsKIAkJCXUzMiBob3RwbHVnX3N0YXR1cyA9IGk5eHhfaHBkX2lycV9hY2so ZGV2X3ByaXYpOwogCQkJaWYgKGhvdHBsdWdfc3RhdHVzKQotCQkJCWk5eHhfaHBkX2lycV9oYW5k bGVyKGRldiwgaG90cGx1Z19zdGF0dXMpOworCQkJCWk5eHhfaHBkX2lycV9oYW5kbGVyKGRldl9w cml2LCBob3RwbHVnX3N0YXR1cyk7CiAJCX0KIAogCQlJOTE1X1dSSVRFKElJUiwgaWlyICYgfmZs aXBfbWFzayk7CkBAIC00NTIzLDI0ICs0NDk3LDI0IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpOTY1 X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAogCQlmb3JfZWFjaF9waXBlKGRldl9w cml2LCBwaXBlKSB7CiAJCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfU1RBUlRfVkJMQU5L X0lOVEVSUlVQVF9TVEFUVVMgJiYKLQkJCSAgICBpOTE1X2hhbmRsZV92YmxhbmsoZGV2LCBwaXBl LCBwaXBlLCBpaXIpKQorCQkJICAgIGk5MTVfaGFuZGxlX3ZibGFuayhkZXZfcHJpdiwgcGlwZSwg cGlwZSwgaWlyKSkKIAkJCQlmbGlwX21hc2sgJj0gfkRJU1BMQVlfUExBTkVfRkxJUF9QRU5ESU5H KHBpcGUpOwogCiAJCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfTEVHQUNZX0JMQ19FVkVO VF9TVEFUVVMpCiAJCQkJYmxjX2V2ZW50ID0gdHJ1ZTsKIAogCQkJaWYgKHBpcGVfc3RhdHNbcGlw ZV0gJiBQSVBFX0NSQ19ET05FX0lOVEVSUlVQVF9TVEFUVVMpCi0JCQkJaTl4eF9waXBlX2NyY19p cnFfaGFuZGxlcihkZXYsIHBpcGUpOworCQkJCWk5eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoZGV2 X3ByaXYsIHBpcGUpOwogCiAJCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfRklGT19VTkRF UlJVTl9TVEFUVVMpCiAJCQkJaW50ZWxfY3B1X2ZpZm9fdW5kZXJydW5faXJxX2hhbmRsZXIoZGV2 X3ByaXYsIHBpcGUpOwogCQl9CiAKIAkJaWYgKGJsY19ldmVudCB8fCAoaWlyICYgSTkxNV9BU0xF X0lOVEVSUlVQVCkpCi0JCQlpbnRlbF9vcHJlZ2lvbl9hc2xlX2ludHIoZGV2KTsKKwkJCWludGVs X29wcmVnaW9uX2FzbGVfaW50cihkZXZfcHJpdik7CiAKIAkJaWYgKHBpcGVfc3RhdHNbMF0gJiBQ SVBFX0dNQlVTX0lOVEVSUlVQVF9TVEFUVVMpCi0JCQlnbWJ1c19pcnFfaGFuZGxlcihkZXYpOwor CQkJZ21idXNfaXJxX2hhbmRsZXIoZGV2X3ByaXYpOwogCiAJCS8qIFdpdGggTVNJLCBpbnRlcnJ1 cHRzIGFyZSBvbmx5IGdlbmVyYXRlZCB3aGVuIGlpcgogCQkgKiB0cmFuc2l0aW9ucyBmcm9tIHpl cm8gdG8gbm9uemVyby4gIElmIGFub3RoZXIgYml0IGdvdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCmluZGV4IDQ1YzIxOGRiODZiZS4uZWYxYTcyNmE0NmU5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0zMTExLDE2ICszMTExLDE2IEBAIGludGVsX3BpcGVf c2V0X2Jhc2VfYXRvbWljKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsCiAJcmV0dXJuIC1FTk9ERVY7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX2NvbXBs ZXRlX3BhZ2VfZmxpcHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIGludGVs X2NvbXBsZXRlX3BhZ2VfZmxpcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog ewogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAotCWZvcl9lYWNoX2NydGMoZGV2LCBjcnRjKSB7 CisJZm9yX2VhY2hfY3J0YyhkZXZfcHJpdi0+ZGV2LCBjcnRjKSB7CiAJCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAkJZW51bSBwbGFuZSBwbGFu ZSA9IGludGVsX2NydGMtPnBsYW5lOwogCi0JCWludGVsX3ByZXBhcmVfcGFnZV9mbGlwKGRldiwg cGxhbmUpOwotCQlpbnRlbF9maW5pc2hfcGFnZV9mbGlwX3BsYW5lKGRldiwgcGxhbmUpOworCQlp bnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXZfcHJpdiwgcGxhbmUpOworCQlpbnRlbF9maW5pc2hf cGFnZV9mbGlwX3BsYW5lKGRldl9wcml2LCBwbGFuZSk7CiAJfQogfQogCkBAIC0zMTcxLDcgKzMx NzEsNyBAQCB2b2lkIGludGVsX2ZpbmlzaF9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CSAqIHNvIGNvbXBsZXRlIGFsbCBwZW5kaW5nIGZsaXBzIHNvIHRoYXQgdXNlciBzcGFjZQogCSAq IHdpbGwgZ2V0IGl0cyBldmVudHMgYW5kIG5vdCBnZXQgc3R1Y2suCiAJICovCi0JaW50ZWxfY29t cGxldGVfcGFnZV9mbGlwcyhkZXYpOworCWludGVsX2NvbXBsZXRlX3BhZ2VfZmxpcHMoZGV2X3By aXYpOwogCiAJLyogbm8gcmVzZXQgc3VwcG9ydCBmb3IgZ2VuMiAqLwogCWlmIChJU19HRU4yKGRl dikpCkBAIC0zMjAzLDcgKzMyMDMsNyBAQCB2b2lkIGludGVsX2ZpbmlzaF9yZXNldChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCiAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsK IAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCkKLQkJZGV2X3ByaXYtPmRpc3Bs YXkuaHBkX2lycV9zZXR1cChkZXYpOworCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVw KGRldl9wcml2KTsKIAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiAKIAlp bnRlbF9kaXNwbGF5X3Jlc3VtZShkZXYpOwpAQCAtMTA4NzQsOSArMTA4NzQsMTAgQEAgc3RhdGlj IHZvaWQgaW50ZWxfdW5waW5fd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKIAlr ZnJlZSh3b3JrKTsKIH0KIAotc3RhdGljIHZvaWQgZG9faW50ZWxfZmluaXNoX3BhZ2VfZmxpcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorc3RhdGljIHZvaWQgZG9faW50ZWxfZmluaXNoX3BhZ2Vf ZmxpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgICAgc3RydWN0 IGRybV9jcnRjICpjcnRjKQogeworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ ZGV2OwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKIAlzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayAqd29yazsKIAl1bnNpZ25lZCBsb25nIGZsYWdz OwpAQCAtMTA5MDUsMjAgKzEwOTA2LDE4IEBAIHN0YXRpYyB2b2lkIGRvX2ludGVsX2ZpbmlzaF9w YWdlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKIH0KIAotdm9pZCBpbnRlbF9maW5pc2hfcGFnZV9m bGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQordm9pZCBpbnRlbF9maW5pc2hf cGFnZV9mbGlwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHBpcGUpCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+cGlwZV90b19jcnRjX21hcHBpbmdb cGlwZV07CiAKLQlkb19pbnRlbF9maW5pc2hfcGFnZV9mbGlwKGRldiwgY3J0Yyk7CisJZG9faW50 ZWxfZmluaXNoX3BhZ2VfZmxpcChkZXZfcHJpdiwgY3J0Yyk7CiB9CiAKLXZvaWQgaW50ZWxfZmlu aXNoX3BhZ2VfZmxpcF9wbGFuZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGxhbmUpCit2 b2lkIGludGVsX2ZpbmlzaF9wYWdlX2ZsaXBfcGxhbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBpbnQgcGxhbmUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkZXZfcHJp di0+cGxhbmVfdG9fY3J0Y19tYXBwaW5nW3BsYW5lXTsKIAotCWRvX2ludGVsX2ZpbmlzaF9wYWdl X2ZsaXAoZGV2LCBjcnRjKTsKKwlkb19pbnRlbF9maW5pc2hfcGFnZV9mbGlwKGRldl9wcml2LCBj cnRjKTsKIH0KIAogLyogSXMgJ2EnIGFmdGVyIG9yIGVxdWFsIHRvICdiJz8gKi8KQEAgLTEwOTc0 LDkgKzEwOTczLDkgQEAgc3RhdGljIGJvb2wgcGFnZV9mbGlwX2ZpbmlzaGVkKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQogCQkJCSAgICBjcnRjLT51bnBpbl93b3JrLT5mbGlwX2NvdW50KTsKIH0K IAotdm9pZCBpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgcGxhbmUpCit2b2lkIGludGVsX3ByZXBhcmVfcGFnZV9mbGlwKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgaW50IHBsYW5lKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGRldl9wcml2LT5kZXY7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPQogCQl0b19p bnRlbF9jcnRjKGRldl9wcml2LT5wbGFuZV90b19jcnRjX21hcHBpbmdbcGxhbmVdKTsKIAl1bnNp Z25lZCBsb25nIGZsYWdzOwpAQCAtMTE0NzYsOSArMTE0NzUsOSBAQCBzdGF0aWMgYm9vbCBfX2lu dGVsX3BhZ2VmbGlwX3N0YWxsX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJu IGFkZHIgPT0gd29yay0+Z3R0X29mZnNldDsKIH0KIAotdm9pZCBpbnRlbF9jaGVja19wYWdlX2Zs aXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCit2b2lkIGludGVsX2NoZWNrX3Bh Z2VfZmxpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBwaXBlKQogewot CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7CiAJc3RydWN0IGRybV9jcnRj ICpjcnRjID0gZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwogCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1Y3QgaW50 ZWxfdW5waW5fd29yayAqd29yazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNTEwNTg1 MjI3NDFhLi5kYzNjZTNjOWIxZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xMDI4 LDggKzEwMjgsOCBAQCB2b2lkIGdlbjVfZGlzYWJsZV9ndF9pcnEoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1aW50MzJfdCBtYXNrKTsKIHZvaWQgZ2VuNl9lbmFibGVfcG1faXJx KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdWludDMyX3QgbWFzayk7CiB2b2lk IGdlbjZfZGlzYWJsZV9wbV9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 aW50MzJfdCBtYXNrKTsKIHZvaWQgZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKLXZvaWQgZ2VuNl9lbmFibGVfcnBzX2ludGVycnVwdHMoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Ci12b2lkIGdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgZ2VuNl9lbmFibGVfcnBzX2ludGVycnVwdHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK3ZvaWQgZ2VuNl9kaXNhYmxlX3Jwc19pbnRl cnJ1cHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB1MzIgZ2VuNl9zYW5p dGl6ZV9ycHNfcG1fbWFzayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBt YXNrKTsKIHZvaWQgaW50ZWxfcnVudGltZV9wbV9kaXNhYmxlX2ludGVycnVwdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaW50ZWxfcnVudGltZV9wbV9lbmFibGVf aW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpAQCAtMTE2Niwx MCArMTE2NiwxMCBAQCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoKIF9faW50ZWxfZnJhbWVidWZm ZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgICBzdHJ1Y3QgZHJtX21vZGVf ZmJfY21kMiAqbW9kZV9jbWQsCiAJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KTsKLXZvaWQgaW50ZWxfcHJlcGFyZV9wYWdlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IHBsYW5lKTsKLXZvaWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgcGlwZSk7Ci12b2lkIGludGVsX2ZpbmlzaF9wYWdlX2ZsaXBfcGxhbmUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBsYW5lKTsKLXZvaWQgaW50ZWxfY2hlY2tfcGFnZV9m bGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKTsKK3ZvaWQgaW50ZWxfcHJlcGFy ZV9wYWdlX2ZsaXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgcGxhbmUp Owordm9pZCBpbnRlbF9maW5pc2hfcGFnZV9mbGlwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgaW50IHBpcGUpOwordm9pZCBpbnRlbF9maW5pc2hfcGFnZV9mbGlwX3BsYW5lKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHBsYW5lKTsKK3ZvaWQgaW50ZWxf Y2hlY2tfcGFnZV9mbGlwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHBp cGUpOwogaW50IGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs CiAJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfc3RhdGUpOwogdm9pZCBp bnRlbF9jbGVhbnVwX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaG90cGx1Zy5jCmluZGV4IGJlZTY3MzAwNWQ0OC4uMzhlZWNhN2E2ZTcyIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCkBAIC0yMjAsNyArMjIwLDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfaHBkX2lycV9zdG9ybV9yZWVuYWJsZV93b3JrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKIAkJfQogCX0KIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1 cCkKLQkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cChkZXYpOworCQlkZXZfcHJpdi0+ ZGlzcGxheS5ocGRfaXJxX3NldHVwKGRldl9wcml2KTsKIAlzcGluX3VubG9ja19pcnEoJmRldl9w cml2LT5pcnFfbG9jayk7CiAKIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CkBAIC0z NDYsNyArMzQ2LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9ob3RwbHVnX3dvcmtfZnVuYyhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCiAKIC8qKgogICogaW50ZWxfaHBkX2lycV9oYW5kbGVyIC0gbWFp biBob3RwbHVnIGlycSBoYW5kbGVyCi0gKiBAZGV2OiBkcm0gZGV2aWNlCisgKiBAZGV2X3ByaXY6 IGRybV9pOTE1X3ByaXZhdGUKICAqIEBwaW5fbWFzazogYSBtYXNrIG9mIGhwZCBwaW5zIHRoYXQg aGF2ZSB0cmlnZ2VyZWQgdGhlIGlycQogICogQGxvbmdfbWFzazogYSBtYXNrIG9mIGhwZCBwaW5z IHRoYXQgbWF5IGJlIGxvbmcgaHBkIHB1bHNlcwogICoKQEAgLTM2MCwxMCArMzYwLDkgQEAgc3Rh dGljIHZvaWQgaTkxNV9ob3RwbHVnX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiAgKiBIZXJlLCB3ZSBkbyBob3RwbHVnIGlycSBzdG9ybSBkZXRlY3Rpb24gYW5kIG1pdGlnYXRp b24sIGFuZCBwYXNzIGZ1cnRoZXIKICAqIHByb2Nlc3NpbmcgdG8gYXBwcm9wcmlhdGUgYm90dG9t IGhhbHZlcy4KICAqLwotdm9pZCBpbnRlbF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKK3ZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCSAgIHUzMiBwaW5fbWFzaywgdTMyIGxvbmdfbWFzaykKIHsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWlu dCBpOwogCWVudW0gcG9ydCBwb3J0OwogCWJvb2wgc3Rvcm1fZGV0ZWN0ZWQgPSBmYWxzZTsKQEAg LTQwNyw3ICs0MDYsNyBAQCB2b2lkIGludGVsX2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCQkJICogaG90cGx1ZyBiaXRzIGl0c2VsZi4gU28gb25seSBXQVJOIGFib3V0 IHVuZXhwZWN0ZWQKIAkJCSAqIGludGVycnVwdHMgb24gc2FuZXIgcGxhdGZvcm1zLgogCQkJICov Ci0JCQlXQVJOX09OQ0UoIUhBU19HTUNIX0RJU1BMQVkoZGV2KSwKKwkJCVdBUk5fT05DRSghSEFT X0dNQ0hfRElTUExBWShkZXZfcHJpdiksCiAJCQkJICAiUmVjZWl2ZWQgSFBEIGludGVycnVwdCBv biBwaW4gJWQgYWx0aG91Z2ggZGlzYWJsZWRcbiIsIGkpOwogCQkJY29udGludWU7CiAJCX0KQEAg LTQyNyw3ICs0MjYsNyBAQCB2b2lkIGludGVsX2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCX0KIAogCWlmIChzdG9ybV9kZXRlY3RlZCkKLQkJZGV2X3ByaXYtPmRpc3Bs YXkuaHBkX2lycV9zZXR1cChkZXYpOworCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVw KGRldl9wcml2KTsKIAlzcGluX3VubG9jaygmZGV2X3ByaXYtPmlycV9sb2NrKTsKIAogCS8qCkBA IC00ODUsNyArNDg0LDcgQEAgdm9pZCBpbnRlbF9ocGRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJICovCiAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2Nr KTsKIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCkKLQkJZGV2X3ByaXYtPmRp c3BsYXkuaHBkX2lycV9zZXR1cChkZXYpOworCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3Nl dHVwKGRldl9wcml2KTsKIAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7CiB9 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jCmluZGV4IDk5ZTI2MDM0YWU4ZC4u ODM0N2ZkOGFmOGU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJl Z2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKQEAgLTU3 NCwxMCArNTc0LDggQEAgc3RhdGljIHZvaWQgYXNsZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKIAlhc2xlLT5hc2xjID0gYXNsY19zdGF0OwogfQogCi12b2lkIGludGVsX29wcmVnaW9u X2FzbGVfaW50cihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQordm9pZCBpbnRlbF9vcHJlZ2lvbl9h c2xlX2ludHIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0KIAlpZiAoZGV2 X3ByaXYtPm9wcmVnaW9uLmFzbGUpCiAJCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5vcHJlZ2lv bi5hc2xlX3dvcmspOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggMDE3YzQzMWY5MzYz Li4yOTBhODhmNTMxZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNDE2Nyw5ICs0MTY3 LDggQEAgREVGSU5FX1NQSU5MT0NLKG1jaGRldl9sb2NrKTsKICAqIG1jaGRldl9sb2NrLiAqLwog c3RhdGljIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1X21jaF9kZXY7CiAKLWJvb2wgaXJv bmxha2Vfc2V0X2RycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggdmFsKQorYm9vbCBpcm9u bGFrZV9zZXRfZHJwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHZhbCkK IHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OwogCXUxNiByZ3Zzd2N0bDsKIAogCWFzc2VydF9zcGluX2xvY2tlZCgmbWNoZGV2X2xvY2spOwpA QCAtNDE5MSw5ICs0MTkwLDggQEAgYm9vbCBpcm9ubGFrZV9zZXRfZHJwcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1OCB2YWwpCiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGlyb25s YWtlX2VuYWJsZV9kcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgdm9pZCBpcm9u bGFrZV9lbmFibGVfZHJwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1 MzIgcmd2bW9kZWN0bDsKIAl1OCBmbWF4LCBmbWluLCBmc3RhcnQsIHZzdGFydDsKIApAQCAtNDI1 MCw3ICs0MjQ4LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfZW5hYmxlX2RycHMoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAkJRFJNX0VSUk9SKCJzdHVjayB0cnlpbmcgdG8gY2hhbmdlIHBlcmYg bW9kZVxuIik7CiAJbWRlbGF5KDEpOwogCi0JaXJvbmxha2Vfc2V0X2RycHMoZGV2LCBmc3RhcnQp OworCWlyb25sYWtlX3NldF9kcnBzKGRldl9wcml2LCBmc3RhcnQpOwogCiAJZGV2X3ByaXYtPmlw cy5sYXN0X2NvdW50MSA9IEk5MTVfUkVBRChETUlFQykgKwogCQlJOTE1X1JFQUQoRERSRUMpICsg STkxNV9SRUFEKENTSUVDKTsKQEAgLTQyNjEsOSArNDI1OSw4IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX2VuYWJsZV9kcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJc3Bpbl91bmxvY2tfaXJx KCZtY2hkZXZfbG9jayk7CiB9CiAKLXN0YXRpYyB2b2lkIGlyb25sYWtlX2Rpc2FibGVfZHJwcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3RhdGljIHZvaWQgaXJvbmxha2VfZGlzYWJsZV9kcnBz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXUxNiByZ3Zzd2N0bDsKIAog CXNwaW5fbG9ja19pcnEoJm1jaGRldl9sb2NrKTsKQEAgLTQyNzgsNyArNDI3NSw3IEBAIHN0YXRp YyB2b2lkIGlyb25sYWtlX2Rpc2FibGVfZHJwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCUk5 MTVfV1JJVEUoREVJTVIsIEk5MTVfUkVBRChERUlNUikgfCBERV9QQ1VfRVZFTlQpOwogCiAJLyog R28gYmFjayB0byB0aGUgc3RhcnRpbmcgZnJlcXVlbmN5ICovCi0JaXJvbmxha2Vfc2V0X2RycHMo ZGV2LCBkZXZfcHJpdi0+aXBzLmZzdGFydCk7CisJaXJvbmxha2Vfc2V0X2RycHMoZGV2X3ByaXYs IGRldl9wcml2LT5pcHMuZnN0YXJ0KTsKIAltZGVsYXkoMSk7CiAJcmd2c3djdGwgfD0gTUVNQ1RM X0NNRF9TVFM7CiAJSTkxNV9XUklURShNRU1TV0NUTCwgcmd2c3djdGwpOwpAQCAtNjA5NSw3ICs2 MDkyLDcgQEAgYm9vbCBpOTE1X2dwdV90dXJib19kaXNhYmxlKHZvaWQpCiAKIAlkZXZfcHJpdi0+ aXBzLm1heF9kZWxheSA9IGRldl9wcml2LT5pcHMuZnN0YXJ0OwogCi0JaWYgKCFpcm9ubGFrZV9z ZXRfZHJwcyhkZXZfcHJpdi0+ZGV2LCBkZXZfcHJpdi0+aXBzLmZzdGFydCkpCisJaWYgKCFpcm9u bGFrZV9zZXRfZHJwcyhkZXZfcHJpdiwgZGV2X3ByaXYtPmlwcy5mc3RhcnQpKQogCQlyZXQgPSBm YWxzZTsKIAogb3V0X3VubG9jazoKQEAgLTYyNDYsMTMgKzYyNDMsMTEgQEAgdm9pZCBpbnRlbF9j bGVhbnVwX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlpbnRlbF9ydW50 aW1lX3BtX3B1dChkZXZfcHJpdik7CiB9CiAKLXN0YXRpYyB2b2lkIGdlbjZfc3VzcGVuZF9ycHMo c3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIGdlbjZfc3VzcGVuZF9ycHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0KIAlmbHVzaF9kZWxheWVkX3dvcmso JmRldl9wcml2LT5ycHMuZGVsYXllZF9yZXN1bWVfd29yayk7CiAKLQlnZW42X2Rpc2FibGVfcnBz X2ludGVycnVwdHMoZGV2KTsKKwlnZW42X2Rpc2FibGVfcnBzX2ludGVycnVwdHMoZGV2X3ByaXYp OwogfQogCiAvKioKQEAgLTYyNjcsMTAgKzYyNjIsMTAgQEAgdm9pZCBpbnRlbF9zdXNwZW5kX2d0 X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA2KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikKIAkJcmV0dXJuOwog Ci0JZ2VuNl9zdXNwZW5kX3JwcyhkZXYpOworCWdlbjZfc3VzcGVuZF9ycHMoZGV2X3ByaXYpOwog CiAJLyogRm9yY2UgR1BVIHRvIG1pbiBmcmVxIGR1cmluZyBzdXNwZW5kICovCiAJZ2VuNl9ycHNf aWRsZShkZXZfcHJpdik7CkBAIC02MjgxLDcgKzYyNzYsNyBAQCB2b2lkIGludGVsX2Rpc2FibGVf Z3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAogCWlmIChJU19JUk9OTEFLRV9N KGRldikpIHsKLQkJaXJvbmxha2VfZGlzYWJsZV9kcnBzKGRldik7CisJCWlyb25sYWtlX2Rpc2Fi bGVfZHJwcyhkZXZfcHJpdik7CiAJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2 KSB7CiAJCWludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKGRldik7CiAKQEAgLTYzMzcsNyArNjMz Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2dlbjZfcG93ZXJzYXZlX3dvcmsoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQogCiAJZGV2X3ByaXYtPnJwcy5lbmFibGVkID0gdHJ1ZTsKIAotCWdlbjZf ZW5hYmxlX3Jwc19pbnRlcnJ1cHRzKGRldik7CisJZ2VuNl9lbmFibGVfcnBzX2ludGVycnVwdHMo ZGV2X3ByaXYpOwogCiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwogCkBA IC02MzUzLDcgKzYzNDgsNyBAQCB2b2lkIGludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAkJcmV0dXJuOwogCiAJaWYgKElTX0lST05MQUtFX00oZGV2KSkg ewotCQlpcm9ubGFrZV9lbmFibGVfZHJwcyhkZXYpOworCQlpcm9ubGFrZV9lbmFibGVfZHJwcyhk ZXZfcHJpdik7CiAJCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAkJaW50ZWxfaW5p dF9lbW9uKGRldik7CiAJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwpAQCAtNjM4 Myw3ICs2Mzc4LDcgQEAgdm9pZCBpbnRlbF9yZXNldF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQogCQlyZXR1cm47CiAK LQlnZW42X3N1c3BlbmRfcnBzKGRldik7CisJZ2VuNl9zdXNwZW5kX3JwcyhkZXZfcHJpdik7CiAJ ZGV2X3ByaXYtPnJwcy5lbmFibGVkID0gZmFsc2U7CiB9CiAKLS0gCjEuOS4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK