From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 2/3] drm/amd/amdgpu: port gfx6 over to new si headers Date: Tue, 8 Nov 2016 16:02:37 -0500 Message-ID: <1478638958-25286-2-git-send-email-alexander.deucher@amd.com> References: <1478638958-25286-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1478638958-25286-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Tom St Denis , Alex Deucher RnJvbTogVG9tIFN0IERlbmlzIDx0b20uc3RkZW5pc0BhbWQuY29tPgoKVGhpcyBjaGFuZ2VzIHRo ZSBnZnggdjYgZHJpdmVyIHRvIHVzZSB0aGUgbmV3IEFNREdQVSBzdHlsZQpTSSBoZWFkZXJzLiAg QWxzbyBmaXhlcyBhIHZhcmlldHkgb2YgY29kaW5nIHN0eWxlIGlzc3Vlcywgd2hpdGUKc3BhY2Ug aXNzdWVzLCBhbmQgdXNlcyBXUkVHMzJfRklFTEQgaW4gYSBmZXcgcGxhY2VzIHdoZXJlCmFwcHJv cHJpYXRlLgoKVGVzdGVkIHdpdGggYSBUYWhpdGkgMHg2NzlBLgoKU2lnbmVkLW9mZi1ieTogVG9t IFN0IERlbmlzIDx0b20uc3RkZW5pc0BhbWQuY29tPgpSZXZpZXdlZC1ieTogQWxleCBEZXVjaGVy IDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbGV4IERldWNoZXIg PGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ2Z4X3Y2XzAuYyB8IDY3NCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgMzMzIGluc2VydGlvbnMoKyksIDM0MSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYwppbmRleCAyMWMwODZlLi5mNjU1NTU5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmMKQEAgLTI2LDE1ICsyNiwxOCBAQAogI2lu Y2x1ZGUgImFtZGdwdV9nZnguaCIKICNpbmNsdWRlICJhbWRncHVfdWNvZGUuaCIKICNpbmNsdWRl ICJzaS9jbGVhcnN0YXRlX3NpLmgiCi0jaW5jbHVkZSAic2kvc2lkLmgiCi0KLSNkZWZpbmUgR0ZY Nl9OVU1fR0ZYX1JJTkdTICAgICAxCi0jZGVmaW5lIEdGWDZfTlVNX0NPTVBVVEVfUklOR1MgMgot I2RlZmluZSBTVEFUSUNfUEVSX0NVX1BHX0VOQUJMRSAgICAgICAgICAgICAgICAgICAgKDEgPDwg MykKLSNkZWZpbmUgRFlOX1BFUl9DVV9QR19FTkFCTEUgICAgICAgICAgICAgICAgICAgICAgICgx IDw8IDIpCi0jZGVmaW5lIFJMQ19TQVZFX0FORF9SRVNUT1JFX1NUQVJUSU5HX09GRlNFVCAweDkw Ci0jZGVmaW5lIFJMQ19DTEVBUl9TVEFURV9ERVNDUklQVE9SX09GRlNFVCAgICAweDNECi0KKyNp bmNsdWRlICJiaWYvYmlmXzNfMF9kLmgiCisjaW5jbHVkZSAiYmlmL2JpZl8zXzBfc2hfbWFzay5o IgorI2luY2x1ZGUgIm9zcy9vc3NfMV8wX2QuaCIKKyNpbmNsdWRlICJvc3Mvb3NzXzFfMF9zaF9t YXNrLmgiCisjaW5jbHVkZSAiZ2NhL2dmeF82XzBfZC5oIgorI2luY2x1ZGUgImdjYS9nZnhfNl8w X3NoX21hc2suaCIKKyNpbmNsdWRlICJnbWMvZ21jXzZfMF9kLmgiCisjaW5jbHVkZSAiZ21jL2dt Y182XzBfc2hfbWFzay5oIgorI2luY2x1ZGUgImRjZS9kY2VfNl8wX2QuaCIKKyNpbmNsdWRlICJk Y2UvZGNlXzZfMF9zaF9tYXNrLmgiCisjaW5jbHVkZSAiZ2NhL2dmeF83XzJfZW51bS5oIgorI2lu Y2x1ZGUgInNpX2VudW1zLmgiCiAKIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3NldF9yaW5nX2Z1bmNz KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3NldF9p cnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwpAQCAtNzAsNiArNzMsMTUgQEAg c3RhdGljIHZvaWQgZ2Z4X3Y2XzBfZ2V0X2NzYl9idWZmZXIoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHZvbGF0aWxlIHUzMiAqYnUKIC8vc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfaW5pdF9jcF9w Z190YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7CiBzdGF0aWMgdm9pZCBnZnhfdjZf MF9pbml0X3BnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKIAorI2RlZmluZSBBUlJBWV9N T0RFKHgpCQkJCQkoKHgpIDw8IEdCX1RJTEVfTU9ERTBfX0FSUkFZX01PREVfX1NISUZUKQorI2Rl ZmluZSBQSVBFX0NPTkZJRyh4KQkJCQkJKCh4KSA8PCBHQl9USUxFX01PREUwX19QSVBFX0NPTkZJ R19fU0hJRlQpCisjZGVmaW5lIFRJTEVfU1BMSVQoeCkJCQkJCSgoeCkgPDwgR0JfVElMRV9NT0RF MF9fVElMRV9TUExJVF9fU0hJRlQpCisjZGVmaW5lIE1JQ1JPX1RJTEVfTU9ERSh4KQkJCQkoKHgp IDw8IDApCisjZGVmaW5lIFNBTVBMRV9TUExJVCh4KQkJCQkJKCh4KSA8PCBHQl9USUxFX01PREUw X19TQU1QTEVfU1BMSVRfX1NISUZUKQorI2RlZmluZSBCQU5LX1dJRFRIKHgpCQkJCQkoKHgpIDw8 IDE0KQorI2RlZmluZSBCQU5LX0hFSUdIVCh4KQkJCQkJKCh4KSA8PCAxNikKKyNkZWZpbmUgTUFD Uk9fVElMRV9BU1BFQ1QoeCkJCQkJKCh4KSA8PCAxOCkKKyNkZWZpbmUgTlVNX0JBTktTKHgpCQkJ CQkoKHgpIDw8IDIwKQogCiBzdGF0aWMgY29uc3QgdTMyIHZlcmRlX3JsY19zYXZlX3Jlc3RvcmVf cmVnaXN0ZXJfbGlzdFtdID0KIHsKQEAgLTQwMCw4ICs0MTIsOCBAQCBzdGF0aWMgdm9pZCBnZnhf djZfMF90aWxpbmdfbW9kZV90YWJsZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQog CX0KIAogCWlmIChhZGV2LT5hc2ljX3R5cGUgPT0gQ0hJUF9WRVJERSB8fAotCQlhZGV2LT5hc2lj X3R5cGUgPT0gQ0hJUF9PTEFORCB8fAotCQlhZGV2LT5hc2ljX3R5cGUgPT0gQ0hJUF9IQUlOQU4p IHsKKwkgICAgYWRldi0+YXNpY190eXBlID09IENISVBfT0xBTkQgfHwKKwkgICAgYWRldi0+YXNp Y190eXBlID09IENISVBfSEFJTkFOKSB7CiAJCWZvciAocmVnX29mZnNldCA9IDA7IHJlZ19vZmZz ZXQgPCBudW1fdGlsZV9tb2RlX3N0YXRlczsgcmVnX29mZnNldCsrKSB7CiAJCQlzd2l0Y2ggKHJl Z19vZmZzZXQpIHsKIAkJCWNhc2UgMDoKQEAgLTYzOSw3ICs2NTEsNyBAQCBzdGF0aWMgdm9pZCBn ZnhfdjZfMF90aWxpbmdfbW9kZV90YWJsZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 KQogCQkJCWJyZWFrOwogCQkJfQogCQkJYWRldi0+Z2Z4LmNvbmZpZy50aWxlX21vZGVfYXJyYXlb cmVnX29mZnNldF0gPSBnYl90aWxlX21vZGVuOwotCQkJV1JFRzMyKEdCX1RJTEVfTU9ERTAgKyBy ZWdfb2Zmc2V0LCBnYl90aWxlX21vZGVuKTsKKwkJCVdSRUczMihtbUdCX1RJTEVfTU9ERTAgKyBy ZWdfb2Zmc2V0LCBnYl90aWxlX21vZGVuKTsKIAkJfQogCX0gZWxzZSBpZiAoKGFkZXYtPmFzaWNf dHlwZSA9PSBDSElQX1RBSElUSSkgfHwgKGFkZXYtPmFzaWNfdHlwZSA9PSBDSElQX1BJVENBSVJO KSkgewogCQlmb3IgKHJlZ19vZmZzZXQgPSAwOyByZWdfb2Zmc2V0IDwgbnVtX3RpbGVfbW9kZV9z dGF0ZXM7IHJlZ19vZmZzZXQrKykgewpAQCAtODc5LDcgKzg5MSw3IEBAIHN0YXRpYyB2b2lkIGdm eF92Nl8wX3RpbGluZ19tb2RlX3RhYmxlX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiAJCQkJYnJlYWs7CiAJCQl9CiAJCQlhZGV2LT5nZnguY29uZmlnLnRpbGVfbW9kZV9hcnJheVty ZWdfb2Zmc2V0XSA9IGdiX3RpbGVfbW9kZW47Ci0JCQlXUkVHMzIoR0JfVElMRV9NT0RFMCArIHJl Z19vZmZzZXQsIGdiX3RpbGVfbW9kZW4pOworCQkJV1JFRzMyKG1tR0JfVElMRV9NT0RFMCArIHJl Z19vZmZzZXQsIGdiX3RpbGVfbW9kZW4pOwogCQl9CiAJfSBlbHNlewogCkBAIC04OTQsMTkgKzkw NiwyMyBAQCBzdGF0aWMgdm9pZCBnZnhfdjZfMF9zZWxlY3Rfc2Vfc2goc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIHUzMiBzZV9udW0sCiAJdTMyIGRhdGE7CiAKIAlpZiAoaW5zdGFuY2UgPT0g MHhmZmZmZmZmZikKLQkJZGF0YSA9IElOU1RBTkNFX0JST0FEQ0FTVF9XUklURVM7CisJCWRhdGEg PSBSRUdfU0VUX0ZJRUxEKDAsIEdSQk1fR0ZYX0lOREVYLCBJTlNUQU5DRV9CUk9BRENBU1RfV1JJ VEVTLCAxKTsKIAllbHNlCi0JCWRhdGEgPSBJTlNUQU5DRV9JTkRFWChpbnN0YW5jZSk7CisJCWRh dGEgPSBSRUdfU0VUX0ZJRUxEKDAsIEdSQk1fR0ZYX0lOREVYLCBJTlNUQU5DRV9JTkRFWCwgaW5z dGFuY2UpOwogCiAJaWYgKChzZV9udW0gPT0gMHhmZmZmZmZmZikgJiYgKHNoX251bSA9PSAweGZm ZmZmZmZmKSkKLQkJZGF0YSB8PSBTSF9CUk9BRENBU1RfV1JJVEVTIHwgU0VfQlJPQURDQVNUX1dS SVRFUzsKKwkJZGF0YSB8PSBHUkJNX0dGWF9JTkRFWF9fU0hfQlJPQURDQVNUX1dSSVRFU19NQVNL IHwKKwkJCUdSQk1fR0ZYX0lOREVYX19TRV9CUk9BRENBU1RfV1JJVEVTX01BU0s7CiAJZWxzZSBp ZiAoc2VfbnVtID09IDB4ZmZmZmZmZmYpCi0JCWRhdGEgfD0gU0VfQlJPQURDQVNUX1dSSVRFUyB8 IFNIX0lOREVYKHNoX251bSk7CisJCWRhdGEgfD0gR1JCTV9HRlhfSU5ERVhfX1NFX0JST0FEQ0FT VF9XUklURVNfTUFTSyB8CisJCQkoc2hfbnVtIDw8IEdSQk1fR0ZYX0lOREVYX19TSF9JTkRFWF9f U0hJRlQpOwogCWVsc2UgaWYgKHNoX251bSA9PSAweGZmZmZmZmZmKQotCQlkYXRhIHw9IFNIX0JS T0FEQ0FTVF9XUklURVMgfCBTRV9JTkRFWChzZV9udW0pOworCQlkYXRhIHw9IEdSQk1fR0ZYX0lO REVYX19TSF9CUk9BRENBU1RfV1JJVEVTX01BU0sgfAorCQkJKHNlX251bSA8PCBHUkJNX0dGWF9J TkRFWF9fU0VfSU5ERVhfX1NISUZUKTsKIAllbHNlCi0JCWRhdGEgfD0gU0hfSU5ERVgoc2hfbnVt KSB8IFNFX0lOREVYKHNlX251bSk7Ci0JV1JFRzMyKEdSQk1fR0ZYX0lOREVYLCBkYXRhKTsKKwkJ ZGF0YSB8PSAoc2hfbnVtIDw8IEdSQk1fR0ZYX0lOREVYX19TSF9JTkRFWF9fU0hJRlQpIHwKKwkJ CShzZV9udW0gPDwgR1JCTV9HRlhfSU5ERVhfX1NFX0lOREVYX19TSElGVCk7CisJV1JFRzMyKG1t R1JCTV9HRlhfSU5ERVgsIGRhdGEpOwogfQogCiBzdGF0aWMgdTMyIGdmeF92Nl8wX2NyZWF0ZV9i aXRtYXNrKHUzMiBiaXRfd2lkdGgpCkBAIC05MjAsMTEgKzkzNiwxMSBAQCBzdGF0aWMgdTMyIGdm eF92Nl8wX2dldF9yYl9kaXNhYmxlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIHsKIAl1 MzIgZGF0YSwgbWFzazsKIAotCWRhdGEgPSBSUkVHMzIoQ0NfUkJfQkFDS0VORF9ESVNBQkxFKTsK LQlkYXRhICY9IEJBQ0tFTkRfRElTQUJMRV9NQVNLOwotCWRhdGEgfD0gUlJFRzMyKEdDX1VTRVJf UkJfQkFDS0VORF9ESVNBQkxFKTsKKwlkYXRhID0gUlJFRzMyKG1tQ0NfUkJfQkFDS0VORF9ESVNB QkxFKTsKKwlkYXRhICY9IENDX1JCX0JBQ0tFTkRfRElTQUJMRV9fQkFDS0VORF9ESVNBQkxFX01B U0s7CisJZGF0YSB8PSBSUkVHMzIobW1HQ19VU0VSX1JCX0JBQ0tFTkRfRElTQUJMRSk7CiAKLQlk YXRhID4+PSBCQUNLRU5EX0RJU0FCTEVfU0hJRlQ7CisJZGF0YSA+Pj0gQ0NfUkJfQkFDS0VORF9E SVNBQkxFX19CQUNLRU5EX0RJU0FCTEVfX1NISUZUOwogCiAJbWFzayA9IGdmeF92Nl8wX2NyZWF0 ZV9iaXRtYXNrKG1heF9yYl9udW1fcGVyX3NlIC8gc2hfcGVyX3NlKTsKIApAQCAtOTM2LDE0ICs5 NTIsMjMgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfcmFzdGVyX2NvbmZpZyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdTMyICpyY29uZikKIAlzd2l0Y2ggKGFkZXYtPmFzaWNfdHlwZSkgewog CWNhc2UgQ0hJUF9UQUhJVEk6CiAJY2FzZSBDSElQX1BJVENBSVJOOgotCQkqcmNvbmYgfD0gUkJf WFNFTDIoMikgfCBSQl9YU0VMIHwgUEtSX01BUCgyKSB8IFBLUl9ZU0VMKDEpIHwKLQkJCSAgU0Vf TUFQKDIpIHwgU0VfWFNFTCgyKSB8IFNFX1lTRUwoMik7CisJCSpyY29uZiB8PQorCQkJICAgKDIg PDwgUEFfU0NfUkFTVEVSX0NPTkZJR19fUkJfWFNFTDJfX1NISUZUKSB8CisJCQkgICAoMSA8PCBQ QV9TQ19SQVNURVJfQ09ORklHX19SQl9YU0VMX19TSElGVCkgfAorCQkJICAgKDIgPDwgUEFfU0Nf UkFTVEVSX0NPTkZJR19fUEtSX01BUF9fU0hJRlQpIHwKKwkJCSAgICgxIDw8IFBBX1NDX1JBU1RF Ul9DT05GSUdfX1BLUl9ZU0VMX19TSElGVCkgfAorCQkJICAgKDIgPDwgUEFfU0NfUkFTVEVSX0NP TkZJR19fU0VfTUFQX19TSElGVCkgfAorCQkJICAgKDIgPDwgUEFfU0NfUkFTVEVSX0NPTkZJR19f U0VfWFNFTF9fU0hJRlQpIHwKKwkJCSAgICgyIDw8IFBBX1NDX1JBU1RFUl9DT05GSUdfX1NFX1lT RUxfX1NISUZUKTsKIAkJYnJlYWs7CiAJY2FzZSBDSElQX1ZFUkRFOgotCQkqcmNvbmYgfD0gUkJf WFNFTCB8IFBLUl9NQVAoMikgfCBQS1JfWVNFTCgxKTsKKwkJKnJjb25mIHw9CisJCQkgICAoMSA8 PCBQQV9TQ19SQVNURVJfQ09ORklHX19SQl9YU0VMX19TSElGVCkgfAorCQkJICAgKDIgPDwgUEFf U0NfUkFTVEVSX0NPTkZJR19fUEtSX01BUF9fU0hJRlQpIHwKKwkJCSAgICgxIDw8IFBBX1NDX1JB U1RFUl9DT05GSUdfX1BLUl9ZU0VMX19TSElGVCk7CiAJCWJyZWFrOwogCWNhc2UgQ0hJUF9PTEFO RDoKLQkJKnJjb25mIHw9IFJCX1lTRUw7CisJCSpyY29uZiB8PSAoMSA8PCBQQV9TQ19SQVNURVJf Q09ORklHX19SQl9ZU0VMX19TSElGVCk7CiAJCWJyZWFrOwogCWNhc2UgQ0hJUF9IQUlOQU46CiAJ CSpyY29uZiB8PSAweDA7CkBAIC05ODEsMjQgKzEwMDYsMjQgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y2 XzBfd3JpdGVfaGFydmVzdGVkX3Jhc3Rlcl9jb25maWdzKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAogCQlpbnQgaWR4ID0gKHNlIC8gMikgKiAyOwogCiAJCWlmICgobnVtX3NlID4gMSkgJiYg KCFzZV9tYXNrW2lkeF0gfHwgIXNlX21hc2tbaWR4ICsgMV0pKSB7Ci0JCQlyYXN0ZXJfY29uZmln X3NlICY9IH5TRV9NQVBfTUFTSzsKKwkJCXJhc3Rlcl9jb25maWdfc2UgJj0gflBBX1NDX1JBU1RF Ul9DT05GSUdfX1NFX01BUF9NQVNLOwogCiAJCQlpZiAoIXNlX21hc2tbaWR4XSkgewotCQkJCXJh c3Rlcl9jb25maWdfc2UgfD0gU0VfTUFQKFJBU1RFUl9DT05GSUdfU0VfTUFQXzMpOworCQkJCXJh c3Rlcl9jb25maWdfc2UgfD0gUkFTVEVSX0NPTkZJR19TRV9NQVBfMyA8PCBQQV9TQ19SQVNURVJf Q09ORklHX19TRV9NQVBfX1NISUZUOwogCQkJfSBlbHNlIHsKLQkJCQlyYXN0ZXJfY29uZmlnX3Nl IHw9IFNFX01BUChSQVNURVJfQ09ORklHX1NFX01BUF8wKTsKKwkJCQlyYXN0ZXJfY29uZmlnX3Nl IHw9IFJBU1RFUl9DT05GSUdfU0VfTUFQXzAgPDwgUEFfU0NfUkFTVEVSX0NPTkZJR19fU0VfTUFQ X19TSElGVDsKIAkJCX0KIAkJfQogCiAJCXBrcjBfbWFzayAmPSByYl9tYXNrOwogCQlwa3IxX21h c2sgJj0gcmJfbWFzazsKIAkJaWYgKHJiX3Blcl9zZSA+IDIgJiYgKCFwa3IwX21hc2sgfHwgIXBr cjFfbWFzaykpIHsKLQkJCXJhc3Rlcl9jb25maWdfc2UgJj0gflBLUl9NQVBfTUFTSzsKKwkJCXJh c3Rlcl9jb25maWdfc2UgJj0gflBBX1NDX1JBU1RFUl9DT05GSUdfX1BLUl9NQVBfTUFTSzsKIAog CQkJaWYgKCFwa3IwX21hc2spIHsKLQkJCQlyYXN0ZXJfY29uZmlnX3NlIHw9IFBLUl9NQVAoUkFT VEVSX0NPTkZJR19QS1JfTUFQXzMpOworCQkJCXJhc3Rlcl9jb25maWdfc2UgfD0gUkFTVEVSX0NP TkZJR19QS1JfTUFQXzMgPDwgUEFfU0NfUkFTVEVSX0NPTkZJR19fUEtSX01BUF9fU0hJRlQ7CiAJ CQl9IGVsc2UgewotCQkJCXJhc3Rlcl9jb25maWdfc2UgfD0gUEtSX01BUChSQVNURVJfQ09ORklH X1BLUl9NQVBfMCk7CisJCQkJcmFzdGVyX2NvbmZpZ19zZSB8PSBSQVNURVJfQ09ORklHX1BLUl9N QVBfMCA8PCBQQV9TQ19SQVNURVJfQ09ORklHX19QS1JfTUFQX19TSElGVDsKIAkJCX0KIAkJfQog CkBAIC0xMDA5LDE0ICsxMDM0LDE0IEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3dyaXRlX2hhcnZl c3RlZF9yYXN0ZXJfY29uZmlncyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCXJiMF9t YXNrICY9IHJiX21hc2s7CiAJCQlyYjFfbWFzayAmPSByYl9tYXNrOwogCQkJaWYgKCFyYjBfbWFz ayB8fCAhcmIxX21hc2spIHsKLQkJCQlyYXN0ZXJfY29uZmlnX3NlICY9IH5SQl9NQVBfUEtSMF9N QVNLOworCQkJCXJhc3Rlcl9jb25maWdfc2UgJj0gflBBX1NDX1JBU1RFUl9DT05GSUdfX1JCX01B UF9QS1IwX01BU0s7CiAKIAkJCQlpZiAoIXJiMF9tYXNrKSB7CiAJCQkJCXJhc3Rlcl9jb25maWdf c2UgfD0KLQkJCQkJCVJCX01BUF9QS1IwKFJBU1RFUl9DT05GSUdfUkJfTUFQXzMpOworCQkJCQkJ UkFTVEVSX0NPTkZJR19SQl9NQVBfMyA8PCBQQV9TQ19SQVNURVJfQ09ORklHX19SQl9NQVBfUEtS MF9fU0hJRlQ7CiAJCQkJfSBlbHNlIHsKIAkJCQkJcmFzdGVyX2NvbmZpZ19zZSB8PQotCQkJCQkJ UkJfTUFQX1BLUjAoUkFTVEVSX0NPTkZJR19SQl9NQVBfMCk7CisJCQkJCQlSQVNURVJfQ09ORklH X1JCX01BUF8wIDw8IFBBX1NDX1JBU1RFUl9DT05GSUdfX1JCX01BUF9QS1IwX19TSElGVDsKIAkJ CQl9CiAJCQl9CiAKQEAgLTEwMjYsMTQgKzEwNTEsMTQgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y2XzBf d3JpdGVfaGFydmVzdGVkX3Jhc3Rlcl9jb25maWdzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJCXJiMF9tYXNrICY9IHJiX21hc2s7CiAJCQkJcmIxX21hc2sgJj0gcmJfbWFzazsKIAkJ CQlpZiAoIXJiMF9tYXNrIHx8ICFyYjFfbWFzaykgewotCQkJCQlyYXN0ZXJfY29uZmlnX3NlICY9 IH5SQl9NQVBfUEtSMV9NQVNLOworCQkJCQlyYXN0ZXJfY29uZmlnX3NlICY9IH5QQV9TQ19SQVNU RVJfQ09ORklHX19SQl9NQVBfUEtSMV9NQVNLOwogCiAJCQkJCWlmICghcmIwX21hc2spIHsKIAkJ CQkJCXJhc3Rlcl9jb25maWdfc2UgfD0KLQkJCQkJCQlSQl9NQVBfUEtSMShSQVNURVJfQ09ORklH X1JCX01BUF8zKTsKKwkJCQkJCQlSQVNURVJfQ09ORklHX1JCX01BUF8zIDw8IFBBX1NDX1JBU1RF Ul9DT05GSUdfX1JCX01BUF9QS1IxX19TSElGVDsKIAkJCQkJfSBlbHNlIHsKIAkJCQkJCXJhc3Rl cl9jb25maWdfc2UgfD0KLQkJCQkJCQlSQl9NQVBfUEtSMShSQVNURVJfQ09ORklHX1JCX01BUF8w KTsKKwkJCQkJCQlSQVNURVJfQ09ORklHX1JCX01BUF8wIDw8IFBBX1NDX1JBU1RFUl9DT05GSUdf X1JCX01BUF9QS1IxX19TSElGVDsKIAkJCQkJfQogCQkJCX0KIAkJCX0KQEAgLTEwNDEsNyArMTA2 Niw3IEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3dyaXRlX2hhcnZlc3RlZF9yYXN0ZXJfY29uZmln cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCQkvKiBHUkJNX0dGWF9JTkRFWCBoYXMg YSBkaWZmZXJlbnQgb2Zmc2V0IG9uIFNJICovCiAJCWdmeF92Nl8wX3NlbGVjdF9zZV9zaChhZGV2 LCBzZSwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZik7Ci0JCVdSRUczMihQQV9TQ19SQVNURVJfQ09O RklHLCByYXN0ZXJfY29uZmlnX3NlKTsKKwkJV1JFRzMyKG1tUEFfU0NfUkFTVEVSX0NPTkZJRywg cmFzdGVyX2NvbmZpZ19zZSk7CiAJfQogCiAJLyogR1JCTV9HRlhfSU5ERVggaGFzIGEgZGlmZmVy ZW50IG9mZnNldCBvbiBTSSAqLwpAQCAtMTA2Myw3ICsxMDg4LDcgQEAgc3RhdGljIHZvaWQgZ2Z4 X3Y2XzBfc2V0dXBfcmIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCWZvciAoaiA9IDA7 IGogPCBzaF9wZXJfc2U7IGorKykgewogCQkJZ2Z4X3Y2XzBfc2VsZWN0X3NlX3NoKGFkZXYsIGks IGosIDB4ZmZmZmZmZmYpOwogCQkJZGF0YSA9IGdmeF92Nl8wX2dldF9yYl9kaXNhYmxlZChhZGV2 LCBtYXhfcmJfbnVtX3Blcl9zZSwgc2hfcGVyX3NlKTsKLQkJCWRpc2FibGVkX3JicyB8PSBkYXRh IDw8ICgoaSAqIHNoX3Blcl9zZSArIGopICogVEFISVRJX1JCX0JJVE1BUF9XSURUSF9QRVJfU0gp OworCQkJZGlzYWJsZWRfcmJzIHw9IGRhdGEgPDwgKChpICogc2hfcGVyX3NlICsgaikgKiAyKTsK IAkJfQogCX0KIAlnZnhfdjZfMF9zZWxlY3Rfc2Vfc2goYWRldiwgMHhmZmZmZmZmZiwgMHhmZmZm ZmZmZiwgMHhmZmZmZmZmZik7CkBAIC0xMTA1LDcgKzExMzAsNyBAQCBzdGF0aWMgdm9pZCBnZnhf djZfMF9zZXR1cF9yYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCQlpZiAoIWFkZXYt PmdmeC5jb25maWcuYmFja2VuZF9lbmFibGVfbWFzayB8fAogCQkJCWFkZXYtPmdmeC5jb25maWcu bnVtX3JicyA+PSBudW1fcmJfcGlwZXMpCi0JCQlXUkVHMzIoUEFfU0NfUkFTVEVSX0NPTkZJRywg ZGF0YSk7CisJCQlXUkVHMzIobW1QQV9TQ19SQVNURVJfQ09ORklHLCBkYXRhKTsKIAkJZWxzZQog CQkJZ2Z4X3Y2XzBfd3JpdGVfaGFydmVzdGVkX3Jhc3Rlcl9jb25maWdzKGFkZXYsIGRhdGEsCiAJ CQkJCQkJCWFkZXYtPmdmeC5jb25maWcuYmFja2VuZF9lbmFibGVfbWFzaywKQEAgLTExMjQsMTEg KzExNDksMTEgQEAgc3RhdGljIHUzMiBnZnhfdjZfMF9nZXRfY3VfZW5hYmxlZChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgdTMyIGN1X3Blcl9zaCkKIHsKIAl1MzIgZGF0YSwgbWFzazsKIAot CWRhdGEgPSBSUkVHMzIoQ0NfR0NfU0hBREVSX0FSUkFZX0NPTkZJRyk7Ci0JZGF0YSAmPSBJTkFD VElWRV9DVVNfTUFTSzsKLQlkYXRhIHw9IFJSRUczMihHQ19VU0VSX1NIQURFUl9BUlJBWV9DT05G SUcpOworCWRhdGEgPSBSUkVHMzIobW1DQ19HQ19TSEFERVJfQVJSQVlfQ09ORklHKTsKKwlkYXRh ICY9IENDX0dDX1NIQURFUl9BUlJBWV9DT05GSUdfX0lOQUNUSVZFX0NVU19NQVNLOworCWRhdGEg fD0gUlJFRzMyKG1tR0NfVVNFUl9TSEFERVJfQVJSQVlfQ09ORklHKTsKIAotCWRhdGEgPj49IElO QUNUSVZFX0NVU19TSElGVDsKKwlkYXRhID4+PSBDQ19HQ19TSEFERVJfQVJSQVlfQ09ORklHX19J TkFDVElWRV9DVVNfX1NISUZUOwogCiAJbWFzayA9IGdmeF92Nl8wX2NyZWF0ZV9iaXRtYXNrKGN1 X3Blcl9zaCk7CiAKQEAgLTExNDgsNyArMTE3Myw3IEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3Nl dHVwX3NwaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlmb3IgKGkgPSAwOyBpIDwgc2Vf bnVtOyBpKyspIHsKIAkJZm9yIChqID0gMDsgaiA8IHNoX3Blcl9zZTsgaisrKSB7CiAJCQlnZnhf djZfMF9zZWxlY3Rfc2Vfc2goYWRldiwgaSwgaiwgMHhmZmZmZmZmZik7Ci0JCQlkYXRhID0gUlJF RzMyKFNQSV9TVEFUSUNfVEhSRUFEX01HTVRfMyk7CisJCQlkYXRhID0gUlJFRzMyKG1tU1BJX1NU QVRJQ19USFJFQURfTUdNVF8zKTsKIAkJCWFjdGl2ZV9jdSA9IGdmeF92Nl8wX2dldF9jdV9lbmFi bGVkKGFkZXYsIGN1X3Blcl9zaCk7CiAKIAkJCW1hc2sgPSAxOwpAQCAtMTE1Niw3ICsxMTgxLDcg QEAgc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfc2V0dXBfc3BpKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAogCQkJCW1hc2sgPDw9IGs7CiAJCQkJaWYgKGFjdGl2ZV9jdSAmIG1hc2spIHsKIAkJCQkJ ZGF0YSAmPSB+bWFzazsKLQkJCQkJV1JFRzMyKFNQSV9TVEFUSUNfVEhSRUFEX01HTVRfMywgZGF0 YSk7CisJCQkJCVdSRUczMihtbVNQSV9TVEFUSUNfVEhSRUFEX01HTVRfMywgZGF0YSk7CiAJCQkJ CWJyZWFrOwogCQkJCX0KIAkJCX0KQEAgLTEyMDksNyArMTIzNCw2IEBAIHN0YXRpYyB2b2lkIGdm eF92Nl8wX2dwdV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQlhZGV2LT5nZngu Y29uZmlnLnNjX2Vhcmx5el90aWxlX2ZpZm9fc2l6ZSA9IDB4MTMwOwogCQlnYl9hZGRyX2NvbmZp ZyA9IFRBSElUSV9HQl9BRERSX0NPTkZJR19HT0xERU47CiAJCWJyZWFrOwotCiAJY2FzZSBDSElQ X1ZFUkRFOgogCQlhZGV2LT5nZnguY29uZmlnLm1heF9zaGFkZXJfZW5naW5lcyA9IDE7CiAJCWFk ZXYtPmdmeC5jb25maWcubWF4X3RpbGVfcGlwZXMgPSA0OwpAQCAtMTI2NiwxOCArMTI5MCwxOCBA QCBzdGF0aWMgdm9pZCBnZnhfdjZfMF9ncHVfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIAkJYnJlYWs7CiAJfQogCi0JV1JFRzMyKEdSQk1fQ05UTCwgR1JCTV9SRUFEX1RJTUVPVVQo MHhmZikpOwotCVdSRUczMihTUkJNX0lOVF9DTlRMLCAxKTsKLQlXUkVHMzIoU1JCTV9JTlRfQUNL LCAxKTsKKwlXUkVHMzIobW1HUkJNX0NOVEwsICgweGZmIDw8IEdSQk1fQ05UTF9fUkVBRF9USU1F T1VUX19TSElGVCkpOworCVdSRUczMihtbVNSQk1fSU5UX0NOVEwsIDEpOworCVdSRUczMihtbVNS Qk1fSU5UX0FDSywgMSk7CiAKLQlXUkVHMzIoQklGX0ZCX0VOLCBGQl9SRUFEX0VOIHwgRkJfV1JJ VEVfRU4pOworCVdSRUczMihtbUJJRl9GQl9FTiwgQklGX0ZCX0VOX19GQl9SRUFEX0VOX01BU0sg fCBCSUZfRkJfRU5fX0ZCX1dSSVRFX0VOX01BU0spOwogCi0JbWNfc2hhcmVkX2NobWFwID0gUlJF RzMyKE1DX1NIQVJFRF9DSE1BUCk7Ci0JbWNfYXJiX3JhbWNmZyA9IFJSRUczMihNQ19BUkJfUkFN Q0ZHKTsKKwltY19zaGFyZWRfY2htYXAgPSBSUkVHMzIobW1NQ19TSEFSRURfQ0hNQVApOworCW1j X2FyYl9yYW1jZmcgPSBSUkVHMzIobW1NQ19BUkJfUkFNQ0ZHKTsKIAogCWFkZXYtPmdmeC5jb25m aWcubnVtX3RpbGVfcGlwZXMgPSBhZGV2LT5nZnguY29uZmlnLm1heF90aWxlX3BpcGVzOwogCWFk ZXYtPmdmeC5jb25maWcubWVtX21heF9idXJzdF9sZW5ndGhfYnl0ZXMgPSAyNTY7Ci0JdG1wID0g KG1jX2FyYl9yYW1jZmcgJiBOT09GQ09MU19NQVNLKSA+PiBOT09GQ09MU19TSElGVDsKKwl0bXAg PSAobWNfYXJiX3JhbWNmZyAmIE1DX0FSQl9SQU1DRkdfX05PT0ZDT0xTX01BU0spID4+IE1DX0FS Ql9SQU1DRkdfX05PT0ZDT0xTX19TSElGVDsKIAlhZGV2LT5nZnguY29uZmlnLm1lbV9yb3dfc2l6 ZV9pbl9rYiA9ICg0ICogKDEgPDwgKDggKyB0bXApKSkgLyAxMDI0OwogCWlmIChhZGV2LT5nZngu Y29uZmlnLm1lbV9yb3dfc2l6ZV9pbl9rYiA+IDQpCiAJCWFkZXYtPmdmeC5jb25maWcubWVtX3Jv d19zaXplX2luX2tiID0gNDsKQEAgLTEyODUsMzIgKzEzMDksMzMgQEAgc3RhdGljIHZvaWQgZ2Z4 X3Y2XzBfZ3B1X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJYWRldi0+Z2Z4LmNv bmZpZy5udW1fZ3B1cyA9IDE7CiAJYWRldi0+Z2Z4LmNvbmZpZy5tdWx0aV9ncHVfdGlsZV9zaXpl ID0gNjQ7CiAKLQlnYl9hZGRyX2NvbmZpZyAmPSB+Uk9XX1NJWkVfTUFTSzsKKwlnYl9hZGRyX2Nv bmZpZyAmPSB+R0JfQUREUl9DT05GSUdfX1JPV19TSVpFX01BU0s7CiAJc3dpdGNoIChhZGV2LT5n ZnguY29uZmlnLm1lbV9yb3dfc2l6ZV9pbl9rYikgewogCWNhc2UgMToKIAlkZWZhdWx0OgotCQln Yl9hZGRyX2NvbmZpZyB8PSBST1dfU0laRSgwKTsKKwkJZ2JfYWRkcl9jb25maWcgfD0gMCA8PCBH Ql9BRERSX0NPTkZJR19fUk9XX1NJWkVfX1NISUZUOwogCQlicmVhazsKIAljYXNlIDI6Ci0JCWdi X2FkZHJfY29uZmlnIHw9IFJPV19TSVpFKDEpOworCQlnYl9hZGRyX2NvbmZpZyB8PSAxIDw8IEdC X0FERFJfQ09ORklHX19ST1dfU0laRV9fU0hJRlQ7CiAJCWJyZWFrOwogCWNhc2UgNDoKLQkJZ2Jf YWRkcl9jb25maWcgfD0gUk9XX1NJWkUoMik7CisJCWdiX2FkZHJfY29uZmlnIHw9IDIgPDwgR0Jf QUREUl9DT05GSUdfX1JPV19TSVpFX19TSElGVDsKIAkJYnJlYWs7CiAJfQogCWFkZXYtPmdmeC5j b25maWcuZ2JfYWRkcl9jb25maWcgPSBnYl9hZGRyX2NvbmZpZzsKIAotCVdSRUczMihHQl9BRERS X0NPTkZJRywgZ2JfYWRkcl9jb25maWcpOwotCVdSRUczMihETUlGX0FERFJfQ09ORklHLCBnYl9h ZGRyX2NvbmZpZyk7Ci0JV1JFRzMyKERNSUZfQUREUl9DQUxDLCBnYl9hZGRyX2NvbmZpZyk7Ci0J V1JFRzMyKEhEUF9BRERSX0NPTkZJRywgZ2JfYWRkcl9jb25maWcpOwotCVdSRUczMihETUFfVElM SU5HX0NPTkZJRyArIERNQTBfUkVHSVNURVJfT0ZGU0VULCBnYl9hZGRyX2NvbmZpZyk7Ci0JV1JF RzMyKERNQV9USUxJTkdfQ09ORklHICsgRE1BMV9SRUdJU1RFUl9PRkZTRVQsIGdiX2FkZHJfY29u ZmlnKTsKKwlXUkVHMzIobW1HQl9BRERSX0NPTkZJRywgZ2JfYWRkcl9jb25maWcpOworCVdSRUcz MihtbURNSUZfQUREUl9DT05GSUcsIGdiX2FkZHJfY29uZmlnKTsKKwlXUkVHMzIobW1ETUlGX0FE RFJfQ0FMQywgZ2JfYWRkcl9jb25maWcpOworCVdSRUczMihtbUhEUF9BRERSX0NPTkZJRywgZ2Jf YWRkcl9jb25maWcpOworCVdSRUczMihtbURNQV9USUxJTkdfQ09ORklHICsgRE1BMF9SRUdJU1RF Ul9PRkZTRVQsIGdiX2FkZHJfY29uZmlnKTsKKwlXUkVHMzIobW1ETUFfVElMSU5HX0NPTkZJRyAr IERNQTFfUkVHSVNURVJfT0ZGU0VULCBnYl9hZGRyX2NvbmZpZyk7CisKICNpZiAwCiAJaWYgKGFk ZXYtPmhhc191dmQpIHsKLQkJV1JFRzMyKFVWRF9VREVDX0FERFJfQ09ORklHLCBnYl9hZGRyX2Nv bmZpZyk7Ci0JCVdSRUczMihVVkRfVURFQ19EQl9BRERSX0NPTkZJRywgZ2JfYWRkcl9jb25maWcp OwotCQlXUkVHMzIoVVZEX1VERUNfREJXX0FERFJfQ09ORklHLCBnYl9hZGRyX2NvbmZpZyk7CisJ CVdSRUczMihtbVVWRF9VREVDX0FERFJfQ09ORklHLCBnYl9hZGRyX2NvbmZpZyk7CisJCVdSRUcz MihtbVVWRF9VREVDX0RCX0FERFJfQ09ORklHLCBnYl9hZGRyX2NvbmZpZyk7CisJCVdSRUczMiht bVVWRF9VREVDX0RCV19BRERSX0NPTkZJRywgZ2JfYWRkcl9jb25maWcpOwogCX0KICNlbmRpZgog CWdmeF92Nl8wX3RpbGluZ19tb2RlX3RhYmxlX2luaXQoYWRldik7CkBAIC0xMzI1LDQ1ICsxMzUw LDQ4IEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX2dwdV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQogCiAJZ2Z4X3Y2XzBfZ2V0X2N1X2luZm8oYWRldik7CiAKLQlXUkVHMzIoQ1BfUVVF VUVfVEhSRVNIT0xEUywgKFJPUV9JQjFfU1RBUlQoMHgxNikgfAotCQkJCSAgICAgUk9RX0lCMl9T VEFSVCgweDJiKSkpOwotCVdSRUczMihDUF9NRVFfVEhSRVNIT0xEUywgTUVRMV9TVEFSVCgweDMw KSB8IE1FUTJfU1RBUlQoMHg2MCkpOworCVdSRUczMihtbUNQX1FVRVVFX1RIUkVTSE9MRFMsICgo MHgxNiA8PCBDUF9RVUVVRV9USFJFU0hPTERTX19ST1FfSUIxX1NUQVJUX19TSElGVCkgfAorCQkJ CSAgICAgICAoMHgyYiA8PCBDUF9RVUVVRV9USFJFU0hPTERTX19ST1FfSUIyX1NUQVJUX19TSElG VCkpKTsKKwlXUkVHMzIobW1DUF9NRVFfVEhSRVNIT0xEUywgKDB4MzAgPDwgQ1BfTUVRX1RIUkVT SE9MRFNfX01FUTFfU1RBUlRfX1NISUZUKSB8CisJCQkJICAgICgweDYwIDw8IENQX01FUV9USFJF U0hPTERTX19NRVEyX1NUQVJUX19TSElGVCkpOwogCi0Jc3hfZGVidWdfMSA9IFJSRUczMihTWF9E RUJVR18xKTsKLQlXUkVHMzIoU1hfREVCVUdfMSwgc3hfZGVidWdfMSk7CisJc3hfZGVidWdfMSA9 IFJSRUczMihtbVNYX0RFQlVHXzEpOworCVdSRUczMihtbVNYX0RFQlVHXzEsIHN4X2RlYnVnXzEp OwogCi0JV1JFRzMyKFNQSV9DT05GSUdfQ05UTF8xLCBWVFhfRE9ORV9ERUxBWSg0KSk7CisJV1JF RzMyKG1tU1BJX0NPTkZJR19DTlRMXzEsICg0IDw8IFNQSV9DT05GSUdfQ05UTF8xX19WVFhfRE9O RV9ERUxBWV9fU0hJRlQpKTsKIAotCVdSRUczMihQQV9TQ19GSUZPX1NJWkUsIChTQ19GUk9OVEVO RF9QUklNX0ZJRk9fU0laRShhZGV2LT5nZnguY29uZmlnLnNjX3ByaW1fZmlmb19zaXplX2Zyb250 ZW5kKSB8Ci0JCQkJIFNDX0JBQ0tFTkRfUFJJTV9GSUZPX1NJWkUoYWRldi0+Z2Z4LmNvbmZpZy5z Y19wcmltX2ZpZm9fc2l6ZV9iYWNrZW5kKSB8Ci0JCQkJIFNDX0hJWl9USUxFX0ZJRk9fU0laRShh ZGV2LT5nZnguY29uZmlnLnNjX2hpel90aWxlX2ZpZm9fc2l6ZSkgfAotCQkJCSBTQ19FQVJMWVpf VElMRV9GSUZPX1NJWkUoYWRldi0+Z2Z4LmNvbmZpZy5zY19lYXJseXpfdGlsZV9maWZvX3NpemUp KSk7CisJV1JFRzMyKG1tUEFfU0NfRklGT19TSVpFLCAoKGFkZXYtPmdmeC5jb25maWcuc2NfcHJp bV9maWZvX3NpemVfZnJvbnRlbmQgPDwgUEFfU0NfRklGT19TSVpFX19TQ19GUk9OVEVORF9QUklN X0ZJRk9fU0laRV9fU0hJRlQpIHwKKwkJCQkgICAoYWRldi0+Z2Z4LmNvbmZpZy5zY19wcmltX2Zp Zm9fc2l6ZV9iYWNrZW5kIDw8IFBBX1NDX0ZJRk9fU0laRV9fU0NfQkFDS0VORF9QUklNX0ZJRk9f U0laRV9fU0hJRlQpIHwKKwkJCQkgICAoYWRldi0+Z2Z4LmNvbmZpZy5zY19oaXpfdGlsZV9maWZv X3NpemUgPDwgUEFfU0NfRklGT19TSVpFX19TQ19ISVpfVElMRV9GSUZPX1NJWkVfX1NISUZUKSB8 CisJCQkJICAgKGFkZXYtPmdmeC5jb25maWcuc2NfZWFybHl6X3RpbGVfZmlmb19zaXplIDw8IFBB X1NDX0ZJRk9fU0laRV9fU0NfRUFSTFlaX1RJTEVfRklGT19TSVpFX19TSElGVCkpKTsKIAotCVdS RUczMihWR1RfTlVNX0lOU1RBTkNFUywgMSk7Ci0JV1JFRzMyKENQX1BFUkZNT05fQ05UTCwgMCk7 Ci0JV1JFRzMyKFNRX0NPTkZJRywgMCk7Ci0JV1JFRzMyKFBBX1NDX0ZPUkNFX0VPVl9NQVhfQ05U UywgKEZPUkNFX0VPVl9NQVhfQ0xLX0NOVCg0MDk1KSB8Ci0JCQkJCSAgRk9SQ0VfRU9WX01BWF9S RVpfQ05UKDI1NSkpKTsKKwlXUkVHMzIobW1WR1RfTlVNX0lOU1RBTkNFUywgMSk7CisJV1JFRzMy KG1tQ1BfUEVSRk1PTl9DTlRMLCAwKTsKKwlXUkVHMzIobW1TUV9DT05GSUcsIDApOworCVdSRUcz MihtbVBBX1NDX0ZPUkNFX0VPVl9NQVhfQ05UUywgKCg0MDk1IDw8IFBBX1NDX0ZPUkNFX0VPVl9N QVhfQ05UU19fRk9SQ0VfRU9WX01BWF9DTEtfQ05UX19TSElGVCkgfAorCQkJCQkgICgyNTUgPDwg UEFfU0NfRk9SQ0VfRU9WX01BWF9DTlRTX19GT1JDRV9FT1ZfTUFYX1JFWl9DTlRfX1NISUZUKSkp OwogCi0JV1JFRzMyKFZHVF9DQUNIRV9JTlZBTElEQVRJT04sIENBQ0hFX0lOVkFMSURBVElPTihW Q19BTkRfVEMpIHwKLQkgICAgICAgQVVUT19JTlZMRF9FTihFU19BTkRfR1NfQVVUTykpOworCVdS RUczMihtbVZHVF9DQUNIRV9JTlZBTElEQVRJT04sCisJCShWQ19BTkRfVEMgPDwgVkdUX0NBQ0hF X0lOVkFMSURBVElPTl9fQ0FDSEVfSU5WQUxJREFUSU9OX19TSElGVCkgfAorCQkoRVNfQU5EX0dT X0FVVE8gPDwgVkdUX0NBQ0hFX0lOVkFMSURBVElPTl9fQVVUT19JTlZMRF9FTl9fU0hJRlQpKTsK IAotCVdSRUczMihWR1RfR1NfVkVSVEVYX1JFVVNFLCAxNik7Ci0JV1JFRzMyKFBBX1NDX0xJTkVf U1RJUFBMRV9TVEFURSwgMCk7CisJV1JFRzMyKG1tVkdUX0dTX1ZFUlRFWF9SRVVTRSwgMTYpOwor CVdSRUczMihtbVBBX1NDX0xJTkVfU1RJUFBMRV9TVEFURSwgMCk7CiAKLQlXUkVHMzIoQ0JfUEVS RkNPVU5URVIwX1NFTEVDVDAsIDApOwotCVdSRUczMihDQl9QRVJGQ09VTlRFUjBfU0VMRUNUMSwg MCk7Ci0JV1JFRzMyKENCX1BFUkZDT1VOVEVSMV9TRUxFQ1QwLCAwKTsKLQlXUkVHMzIoQ0JfUEVS RkNPVU5URVIxX1NFTEVDVDEsIDApOwotCVdSRUczMihDQl9QRVJGQ09VTlRFUjJfU0VMRUNUMCwg MCk7Ci0JV1JFRzMyKENCX1BFUkZDT1VOVEVSMl9TRUxFQ1QxLCAwKTsKLQlXUkVHMzIoQ0JfUEVS RkNPVU5URVIzX1NFTEVDVDAsIDApOwotCVdSRUczMihDQl9QRVJGQ09VTlRFUjNfU0VMRUNUMSwg MCk7CisJV1JFRzMyKG1tQ0JfUEVSRkNPVU5URVIwX1NFTEVDVDAsIDApOworCVdSRUczMihtbUNC X1BFUkZDT1VOVEVSMF9TRUxFQ1QxLCAwKTsKKwlXUkVHMzIobW1DQl9QRVJGQ09VTlRFUjFfU0VM RUNUMCwgMCk7CisJV1JFRzMyKG1tQ0JfUEVSRkNPVU5URVIxX1NFTEVDVDEsIDApOworCVdSRUcz MihtbUNCX1BFUkZDT1VOVEVSMl9TRUxFQ1QwLCAwKTsKKwlXUkVHMzIobW1DQl9QRVJGQ09VTlRF UjJfU0VMRUNUMSwgMCk7CisJV1JFRzMyKG1tQ0JfUEVSRkNPVU5URVIzX1NFTEVDVDAsIDApOwor CVdSRUczMihtbUNCX1BFUkZDT1VOVEVSM19TRUxFQ1QxLCAwKTsKIAotCWhkcF9ob3N0X3BhdGhf Y250bCA9IFJSRUczMihIRFBfSE9TVF9QQVRIX0NOVEwpOwotCVdSRUczMihIRFBfSE9TVF9QQVRI X0NOVEwsIGhkcF9ob3N0X3BhdGhfY250bCk7CisJaGRwX2hvc3RfcGF0aF9jbnRsID0gUlJFRzMy KG1tSERQX0hPU1RfUEFUSF9DTlRMKTsKKwlXUkVHMzIobW1IRFBfSE9TVF9QQVRIX0NOVEwsIGhk cF9ob3N0X3BhdGhfY250bCk7CiAKLQlXUkVHMzIoUEFfQ0xfRU5IQU5DRSwgQ0xJUF9WVFhfUkVP UkRFUl9FTkEgfCBOVU1fQ0xJUF9TRVEoMykpOworCVdSRUczMihtbVBBX0NMX0VOSEFOQ0UsIFBB X0NMX0VOSEFOQ0VfX0NMSVBfVlRYX1JFT1JERVJfRU5BX01BU0sgfAorCQkJCSgzIDw8IFBBX0NM X0VOSEFOQ0VfX05VTV9DTElQX1NFUV9fU0hJRlQpKTsKIAogCXVkZWxheSg1MCk7CiB9CkBAIC0x Mzc0LDcgKzE0MDIsNyBAQCBzdGF0aWMgdm9pZCBnZnhfdjZfMF9zY3JhdGNoX2luaXQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaW50IGk7CiAKIAlhZGV2LT5nZnguc2NyYXRjaC5udW1f cmVnID0gNzsKLQlhZGV2LT5nZnguc2NyYXRjaC5yZWdfYmFzZSA9IFNDUkFUQ0hfUkVHMDsKKwlh ZGV2LT5nZnguc2NyYXRjaC5yZWdfYmFzZSA9IG1tU0NSQVRDSF9SRUcwOwogCWZvciAoaSA9IDA7 IGkgPCBhZGV2LT5nZnguc2NyYXRjaC5udW1fcmVnOyBpKyspIHsKIAkJYWRldi0+Z2Z4LnNjcmF0 Y2guZnJlZVtpXSA9IHRydWU7CiAJCWFkZXYtPmdmeC5zY3JhdGNoLnJlZ1tpXSA9IGFkZXYtPmdm eC5zY3JhdGNoLnJlZ19iYXNlICsgaTsKQEAgLTE0MzAsNyArMTQ1OCw3IEBAIHN0YXRpYyB2b2lk IGdmeF92Nl8wX3JpbmdfZW1pdF9oZHBfZmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQog CWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19XUklURV9EQVRBLCAzKSk7 CiAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgKFdSSVRFX0RBVEFfRU5HSU5FX1NFTCgxKSB8CiAJ CQkJIFdSSVRFX0RBVEFfRFNUX1NFTCgwKSkpOwotCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIEhE UF9NRU1fQ09IRVJFTkNZX0ZMVVNIX0NOVEwpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIG1t SERQX01FTV9DT0hFUkVOQ1lfRkxVU0hfQ05UTCk7CiAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywg MCk7CiAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMHgxKTsKIH0KQEAgLTE0NDgsNyArMTQ3Niw3 IEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3JpbmdfZW1pdF9oZHBfaW52YWxpZGF0ZShzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcpCiAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUMyhQQUNL RVQzX1dSSVRFX0RBVEEsIDMpKTsKIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCAoV1JJVEVfREFU QV9FTkdJTkVfU0VMKDEpIHwKIAkJCQkgV1JJVEVfREFUQV9EU1RfU0VMKDApKSk7Ci0JYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgSERQX0RFQlVHMCk7CisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywg bW1IRFBfREVCVUcwKTsKIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsKIAlhbWRncHVfcmlu Z193cml0ZShyaW5nLCAweDEpOwogfQpAQCAtMTQ2MCw3ICsxNDg4LDcgQEAgc3RhdGljIHZvaWQg Z2Z4X3Y2XzBfcmluZ19lbWl0X2ZlbmNlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdTY0IGFk ZHIsCiAJYm9vbCBpbnRfc2VsID0gZmxhZ3MgJiBBTURHUFVfRkVOQ0VfRkxBR19JTlQ7CiAJLyog Zmx1c2ggcmVhZCBjYWNoZSBvdmVyIGdhcnQgKi8KIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCBQ QUNLRVQzKFBBQ0tFVDNfU0VUX0NPTkZJR19SRUcsIDEpKTsKLQlhbWRncHVfcmluZ193cml0ZShy aW5nLCAoQ1BfQ09IRVJfQ05UTDIgLSBQQUNLRVQzX1NFVF9DT05GSUdfUkVHX1NUQVJUKSk7CisJ YW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgKG1tQ1BfQ09IRVJfQ05UTDIgLSBQQUNLRVQzX1NFVF9D T05GSUdfUkVHX1NUQVJUKSk7CiAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7CiAJYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgUEFDS0VUMyhQQUNLRVQzX1NVUkZBQ0VfU1lOQywgMykpOwogCWFt ZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDNfVENMMV9BQ1RJT05fRU5BIHwKQEAgLTE0NzUs NyArMTUwMyw4IEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3JpbmdfZW1pdF9mZW5jZShzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcsIHU2NCBhZGRyLAogCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIEVW RU5UX1RZUEUoQ0FDSEVfRkxVU0hfQU5EX0lOVl9UU19FVkVOVCkgfCBFVkVOVF9JTkRFWCg1KSk7 CiAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgYWRkciAmIDB4ZmZmZmZmZmMpOwogCWFtZGdwdV9y aW5nX3dyaXRlKHJpbmcsICh1cHBlcl8zMl9iaXRzKGFkZHIpICYgMHhmZmZmKSB8Ci0JCQkJREFU QV9TRUwod3JpdGU2NGJpdCA/IDIgOiAxKSB8IElOVF9TRUwoaW50X3NlbCA/IDIgOiAwKSk7CisJ CQkJKCh3cml0ZTY0Yml0ID8gMiA6IDEpIDw8IENQX0VPUF9ET05FX0RBVEFfQ05UTF9fREFUQV9T RUxfX1NISUZUKSB8CisJCQkJKChpbnRfc2VsID8gMiA6IDApIDw8IENQX0VPUF9ET05FX0RBVEFf Q05UTF9fSU5UX1NFTF9fU0hJRlQpKTsKIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCBsb3dlcl8z Ml9iaXRzKHNlcSkpOwogCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHVwcGVyXzMyX2JpdHMoc2Vx KSk7CiB9CkBAIC0xNTc5LDEwICsxNjA4LDEyIEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX2NwX2dm eF9lbmFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxlKQogewogCWlu dCBpOwogCWlmIChlbmFibGUpCi0JCVdSRUczMihDUF9NRV9DTlRMLCAwKTsKKwkJV1JFRzMyKG1t Q1BfTUVfQ05UTCwgMCk7CiAJZWxzZSB7Ci0JCVdSRUczMihDUF9NRV9DTlRMLCAoQ1BfTUVfSEFM VCB8IENQX1BGUF9IQUxUIHwgQ1BfQ0VfSEFMVCkpOwotCQlXUkVHMzIoU0NSQVRDSF9VTVNLLCAw KTsKKwkJV1JFRzMyKG1tQ1BfTUVfQ05UTCwgKENQX01FX0NOVExfX0NFX0hBTFRfTUFTSyB8CisJ CQkJICAgICAgQ1BfTUVfQ05UTF9fUEZQX0hBTFRfTUFTSyB8CisJCQkJICAgICAgQ1BfTUVfQ05U TF9fQ0VfSEFMVF9NQVNLKSk7CisJCVdSRUczMihtbVNDUkFUQ0hfVU1TSywgMCk7CiAJCWZvciAo aSA9IDA7IGkgPCBhZGV2LT5nZngubnVtX2dmeF9yaW5nczsgaSsrKQogCQkJYWRldi0+Z2Z4Lmdm eF9yaW5nW2ldLnJlYWR5ID0gZmFsc2U7CiAJCWZvciAoaSA9IDA7IGkgPCBhZGV2LT5nZngubnVt X2NvbXB1dGVfcmluZ3M7IGkrKykKQEAgLTE2MTYsMzQgKzE2NDcsMzMgQEAgc3RhdGljIGludCBn ZnhfdjZfMF9jcF9nZnhfbG9hZF9taWNyb2NvZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiAJZndfZGF0YSA9IChjb25zdCBfX2xlMzIgKikKIAkJKGFkZXYtPmdmeC5wZnBfZnctPmRhdGEg KyBsZTMyX3RvX2NwdShwZnBfaGRyLT5oZWFkZXIudWNvZGVfYXJyYXlfb2Zmc2V0X2J5dGVzKSk7 CiAJZndfc2l6ZSA9IGxlMzJfdG9fY3B1KHBmcF9oZHItPmhlYWRlci51Y29kZV9zaXplX2J5dGVz KSAvIDQ7Ci0JV1JFRzMyKENQX1BGUF9VQ09ERV9BRERSLCAwKTsKKwlXUkVHMzIobW1DUF9QRlBf VUNPREVfQUREUiwgMCk7CiAJZm9yIChpID0gMDsgaSA8IGZ3X3NpemU7IGkrKykKLQkJV1JFRzMy KENQX1BGUF9VQ09ERV9EQVRBLCBsZTMyX3RvX2NwdXAoZndfZGF0YSsrKSk7Ci0JV1JFRzMyKENQ X1BGUF9VQ09ERV9BRERSLCAwKTsKKwkJV1JFRzMyKG1tQ1BfUEZQX1VDT0RFX0RBVEEsIGxlMzJf dG9fY3B1cChmd19kYXRhKyspKTsKKwlXUkVHMzIobW1DUF9QRlBfVUNPREVfQUREUiwgMCk7CiAK IAkvKiBDRSAqLwogCWZ3X2RhdGEgPSAoY29uc3QgX19sZTMyICopCiAJCShhZGV2LT5nZnguY2Vf ZnctPmRhdGEgKyBsZTMyX3RvX2NwdShjZV9oZHItPmhlYWRlci51Y29kZV9hcnJheV9vZmZzZXRf Ynl0ZXMpKTsKIAlmd19zaXplID0gbGUzMl90b19jcHUoY2VfaGRyLT5oZWFkZXIudWNvZGVfc2l6 ZV9ieXRlcykgLyA0OwotCVdSRUczMihDUF9DRV9VQ09ERV9BRERSLCAwKTsKKwlXUkVHMzIobW1D UF9DRV9VQ09ERV9BRERSLCAwKTsKIAlmb3IgKGkgPSAwOyBpIDwgZndfc2l6ZTsgaSsrKQotCQlX UkVHMzIoQ1BfQ0VfVUNPREVfREFUQSwgbGUzMl90b19jcHVwKGZ3X2RhdGErKykpOwotCVdSRUcz MihDUF9DRV9VQ09ERV9BRERSLCAwKTsKKwkJV1JFRzMyKG1tQ1BfQ0VfVUNPREVfREFUQSwgbGUz Ml90b19jcHVwKGZ3X2RhdGErKykpOworCVdSRUczMihtbUNQX0NFX1VDT0RFX0FERFIsIDApOwog CiAJLyogTUUgKi8KIAlmd19kYXRhID0gKGNvbnN0IF9fYmUzMiAqKQogCQkoYWRldi0+Z2Z4Lm1l X2Z3LT5kYXRhICsgbGUzMl90b19jcHUobWVfaGRyLT5oZWFkZXIudWNvZGVfYXJyYXlfb2Zmc2V0 X2J5dGVzKSk7CiAJZndfc2l6ZSA9IGxlMzJfdG9fY3B1KG1lX2hkci0+aGVhZGVyLnVjb2RlX3Np emVfYnl0ZXMpIC8gNDsKLQlXUkVHMzIoQ1BfTUVfUkFNX1dBRERSLCAwKTsKKwlXUkVHMzIobW1D UF9NRV9SQU1fV0FERFIsIDApOwogCWZvciAoaSA9IDA7IGkgPCBmd19zaXplOyBpKyspCi0JCVdS RUczMihDUF9NRV9SQU1fREFUQSwgbGUzMl90b19jcHVwKGZ3X2RhdGErKykpOwotCVdSRUczMihD UF9NRV9SQU1fV0FERFIsIDApOwotCisJCVdSRUczMihtbUNQX01FX1JBTV9EQVRBLCBsZTMyX3Rv X2NwdXAoZndfZGF0YSsrKSk7CisJV1JFRzMyKG1tQ1BfTUVfUkFNX1dBRERSLCAwKTsKIAotCVdS RUczMihDUF9QRlBfVUNPREVfQUREUiwgMCk7Ci0JV1JFRzMyKENQX0NFX1VDT0RFX0FERFIsIDAp OwotCVdSRUczMihDUF9NRV9SQU1fV0FERFIsIDApOwotCVdSRUczMihDUF9NRV9SQU1fUkFERFIs IDApOworCVdSRUczMihtbUNQX1BGUF9VQ09ERV9BRERSLCAwKTsKKwlXUkVHMzIobW1DUF9DRV9V Q09ERV9BRERSLCAwKTsKKwlXUkVHMzIobW1DUF9NRV9SQU1fV0FERFIsIDApOworCVdSRUczMiht bUNQX01FX1JBTV9SQUREUiwgMCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE3MjAsMTQgKzE3NTAs MTQgQEAgc3RhdGljIGludCBnZnhfdjZfMF9jcF9nZnhfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQogCWludCByOwogCXU2NCBycHRyX2FkZHI7CiAKLQlXUkVHMzIoQ1BfU0VNX1dB SVRfVElNRVIsIDB4MCk7Ci0JV1JFRzMyKENQX1NFTV9JTkNPTVBMRVRFX1RJTUVSX0NOVEwsIDB4 MCk7CisJV1JFRzMyKG1tQ1BfU0VNX1dBSVRfVElNRVIsIDB4MCk7CisJV1JFRzMyKG1tQ1BfU0VN X0lOQ09NUExFVEVfVElNRVJfQ05UTCwgMHgwKTsKIAogCS8qIFNldCB0aGUgd3JpdGUgcG9pbnRl ciBkZWxheSAqLwotCVdSRUczMihDUF9SQl9XUFRSX0RFTEFZLCAwKTsKKwlXUkVHMzIobW1DUF9S Ql9XUFRSX0RFTEFZLCAwKTsKIAotCVdSRUczMihDUF9ERUJVRywgMCk7Ci0JV1JFRzMyKFNDUkFU Q0hfQUREUiwgMCk7CisJV1JFRzMyKG1tQ1BfREVCVUcsIDApOworCVdSRUczMihtbVNDUkFUQ0hf QUREUiwgMCk7CiAKIAkvKiByaW5nIDAgLSBjb21wdXRlIGFuZCBnZnggKi8KIAkvKiBTZXQgcmlu ZyBidWZmZXIgc2l6ZSAqLwpAQCAtMTczOCwyNCArMTc2OCwyNCBAQCBzdGF0aWMgaW50IGdmeF92 Nl8wX2NwX2dmeF9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAjaWZkZWYgX19C SUdfRU5ESUFOCiAJdG1wIHw9IEJVRl9TV0FQXzMyQklUOwogI2VuZGlmCi0JV1JFRzMyKENQX1JC MF9DTlRMLCB0bXApOworCVdSRUczMihtbUNQX1JCMF9DTlRMLCB0bXApOwogCiAJLyogSW5pdGlh bGl6ZSB0aGUgcmluZyBidWZmZXIncyByZWFkIGFuZCB3cml0ZSBwb2ludGVycyAqLwotCVdSRUcz MihDUF9SQjBfQ05UTCwgdG1wIHwgUkJfUlBUUl9XUl9FTkEpOworCVdSRUczMihtbUNQX1JCMF9D TlRMLCB0bXAgfCBDUF9SQjBfQ05UTF9fUkJfUlBUUl9XUl9FTkFfTUFTSyk7CiAJcmluZy0+d3B0 ciA9IDA7Ci0JV1JFRzMyKENQX1JCMF9XUFRSLCByaW5nLT53cHRyKTsKKwlXUkVHMzIobW1DUF9S QjBfV1BUUiwgcmluZy0+d3B0cik7CiAKIAkvKiBzZXQgdGhlIHdiIGFkZHJlc3Mgd2hldGhlciBp dCdzIGVuYWJsZWQgb3Igbm90ICovCiAJcnB0cl9hZGRyID0gYWRldi0+d2IuZ3B1X2FkZHIgKyAo cmluZy0+cnB0cl9vZmZzICogNCk7Ci0JV1JFRzMyKENQX1JCMF9SUFRSX0FERFIsIGxvd2VyXzMy X2JpdHMocnB0cl9hZGRyKSk7Ci0JV1JFRzMyKENQX1JCMF9SUFRSX0FERFJfSEksIHVwcGVyXzMy X2JpdHMocnB0cl9hZGRyKSAmIDB4RkYpOworCVdSRUczMihtbUNQX1JCMF9SUFRSX0FERFIsIGxv d2VyXzMyX2JpdHMocnB0cl9hZGRyKSk7CisJV1JFRzMyKG1tQ1BfUkIwX1JQVFJfQUREUl9ISSwg dXBwZXJfMzJfYml0cyhycHRyX2FkZHIpICYgMHhGRik7CiAKLQlXUkVHMzIoU0NSQVRDSF9VTVNL LCAwKTsKKwlXUkVHMzIobW1TQ1JBVENIX1VNU0ssIDApOwogCiAJbWRlbGF5KDEpOwotCVdSRUcz MihDUF9SQjBfQ05UTCwgdG1wKTsKKwlXUkVHMzIobW1DUF9SQjBfQ05UTCwgdG1wKTsKIAotCVdS RUczMihDUF9SQjBfQkFTRSwgcmluZy0+Z3B1X2FkZHIgPj4gOCk7CisJV1JFRzMyKG1tQ1BfUkIw X0JBU0UsIHJpbmctPmdwdV9hZGRyID4+IDgpOwogCiAJLyogc3RhcnQgdGhlIHJpbmdzICovCiAJ Z2Z4X3Y2XzBfY3BfZ2Z4X3N0YXJ0KGFkZXYpOwpAQCAtMTc3OSwxMSArMTgwOSwxMSBAQCBzdGF0 aWMgdTMyIGdmeF92Nl8wX3JpbmdfZ2V0X3dwdHIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQog CXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsKIAogCWlmIChyaW5nID09 ICZhZGV2LT5nZnguZ2Z4X3JpbmdbMF0pCi0JCXJldHVybiBSUkVHMzIoQ1BfUkIwX1dQVFIpOwor CQlyZXR1cm4gUlJFRzMyKG1tQ1BfUkIwX1dQVFIpOwogCWVsc2UgaWYgKHJpbmcgPT0gJmFkZXYt PmdmeC5jb21wdXRlX3JpbmdbMF0pCi0JCXJldHVybiBSUkVHMzIoQ1BfUkIxX1dQVFIpOworCQly ZXR1cm4gUlJFRzMyKG1tQ1BfUkIxX1dQVFIpOwogCWVsc2UgaWYgKHJpbmcgPT0gJmFkZXYtPmdm eC5jb21wdXRlX3JpbmdbMV0pCi0JCXJldHVybiBSUkVHMzIoQ1BfUkIyX1dQVFIpOworCQlyZXR1 cm4gUlJFRzMyKG1tQ1BfUkIyX1dQVFIpOwogCWVsc2UKIAkJQlVHKCk7CiB9CkBAIC0xNzkyLDgg KzE4MjIsOCBAQCBzdGF0aWMgdm9pZCBnZnhfdjZfMF9yaW5nX3NldF93cHRyX2dmeChzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcpCiB7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5n LT5hZGV2OwogCi0JV1JFRzMyKENQX1JCMF9XUFRSLCByaW5nLT53cHRyKTsKLQkodm9pZClSUkVH MzIoQ1BfUkIwX1dQVFIpOworCVdSRUczMihtbUNQX1JCMF9XUFRSLCByaW5nLT53cHRyKTsKKwko dm9pZClSUkVHMzIobW1DUF9SQjBfV1BUUik7CiB9CiAKIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3Jp bmdfc2V0X3dwdHJfY29tcHV0ZShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCkBAIC0xODAxLDEx ICsxODMxLDExIEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3Jpbmdfc2V0X3dwdHJfY29tcHV0ZShz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBy aW5nLT5hZGV2OwogCiAJaWYgKHJpbmcgPT0gJmFkZXYtPmdmeC5jb21wdXRlX3JpbmdbMF0pIHsK LQkJV1JFRzMyKENQX1JCMV9XUFRSLCByaW5nLT53cHRyKTsKLQkJKHZvaWQpUlJFRzMyKENQX1JC MV9XUFRSKTsKKwkJV1JFRzMyKG1tQ1BfUkIxX1dQVFIsIHJpbmctPndwdHIpOworCQkodm9pZClS UkVHMzIobW1DUF9SQjFfV1BUUik7CiAJfSBlbHNlIGlmIChyaW5nID09ICZhZGV2LT5nZnguY29t cHV0ZV9yaW5nWzFdKSB7Ci0JCVdSRUczMihDUF9SQjJfV1BUUiwgcmluZy0+d3B0cik7Ci0JCSh2 b2lkKVJSRUczMihDUF9SQjJfV1BUUik7CisJCVdSRUczMihtbUNQX1JCMl9XUFRSLCByaW5nLT53 cHRyKTsKKwkJKHZvaWQpUlJFRzMyKG1tQ1BfUkIyX1dQVFIpOwogCX0gZWxzZSB7CiAJCUJVRygp OwogCX0KQEAgLTE4MTcsNyArMTg0Nyw3IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y2XzBfY3BfY29tcHV0 ZV9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nOwogCXUzMiB0bXA7CiAJdTMyIHJiX2J1ZnN6OwotCWludCByOworCWludCBpLCByOwog CXU2NCBycHRyX2FkZHI7CiAKIAkvKiByaW5nMSAgLSBjb21wdXRlIG9ubHkgKi8KQEAgLTE4Mjks MTkgKzE4NTksMTkgQEAgc3RhdGljIGludCBnZnhfdjZfMF9jcF9jb21wdXRlX3Jlc3VtZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKICNpZmRlZiBfX0JJR19FTkRJQU4KIAl0bXAgfD0gQlVG X1NXQVBfMzJCSVQ7CiAjZW5kaWYKLQlXUkVHMzIoQ1BfUkIxX0NOVEwsIHRtcCk7CisJV1JFRzMy KG1tQ1BfUkIxX0NOVEwsIHRtcCk7CiAKLQlXUkVHMzIoQ1BfUkIxX0NOVEwsIHRtcCB8IFJCX1JQ VFJfV1JfRU5BKTsKKwlXUkVHMzIobW1DUF9SQjFfQ05UTCwgdG1wIHwgQ1BfUkIxX0NOVExfX1JC X1JQVFJfV1JfRU5BX01BU0spOwogCXJpbmctPndwdHIgPSAwOwotCVdSRUczMihDUF9SQjFfV1BU UiwgcmluZy0+d3B0cik7CisJV1JFRzMyKG1tQ1BfUkIxX1dQVFIsIHJpbmctPndwdHIpOwogCiAJ cnB0cl9hZGRyID0gYWRldi0+d2IuZ3B1X2FkZHIgKyAocmluZy0+cnB0cl9vZmZzICogNCk7Ci0J V1JFRzMyKENQX1JCMV9SUFRSX0FERFIsIGxvd2VyXzMyX2JpdHMocnB0cl9hZGRyKSk7Ci0JV1JF RzMyKENQX1JCMV9SUFRSX0FERFJfSEksIHVwcGVyXzMyX2JpdHMocnB0cl9hZGRyKSAmIDB4RkYp OworCVdSRUczMihtbUNQX1JCMV9SUFRSX0FERFIsIGxvd2VyXzMyX2JpdHMocnB0cl9hZGRyKSk7 CisJV1JFRzMyKG1tQ1BfUkIxX1JQVFJfQUREUl9ISSwgdXBwZXJfMzJfYml0cyhycHRyX2FkZHIp ICYgMHhGRik7CiAKIAltZGVsYXkoMSk7Ci0JV1JFRzMyKENQX1JCMV9DTlRMLCB0bXApOwotCVdS RUczMihDUF9SQjFfQkFTRSwgcmluZy0+Z3B1X2FkZHIgPj4gOCk7CisJV1JFRzMyKG1tQ1BfUkIx X0NOVEwsIHRtcCk7CisJV1JFRzMyKG1tQ1BfUkIxX0JBU0UsIHJpbmctPmdwdV9hZGRyID4+IDgp OwogCiAJcmluZyA9ICZhZGV2LT5nZnguY29tcHV0ZV9yaW5nWzFdOwogCXJiX2J1ZnN6ID0gb3Jk ZXJfYmFzZV8yKHJpbmctPnJpbmdfc2l6ZSAvIDgpOwpAQCAtMTg0OSwzMiArMTg3OSwyNiBAQCBz dGF0aWMgaW50IGdmeF92Nl8wX2NwX2NvbXB1dGVfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQogI2lmZGVmIF9fQklHX0VORElBTgogCXRtcCB8PSBCVUZfU1dBUF8zMkJJVDsKICNl bmRpZgotCVdSRUczMihDUF9SQjJfQ05UTCwgdG1wKTsKKwlXUkVHMzIobW1DUF9SQjJfQ05UTCwg dG1wKTsKIAotCVdSRUczMihDUF9SQjJfQ05UTCwgdG1wIHwgUkJfUlBUUl9XUl9FTkEpOworCVdS RUczMihtbUNQX1JCMl9DTlRMLCB0bXAgfCBDUF9SQjJfQ05UTF9fUkJfUlBUUl9XUl9FTkFfTUFT Syk7CiAJcmluZy0+d3B0ciA9IDA7Ci0JV1JFRzMyKENQX1JCMl9XUFRSLCByaW5nLT53cHRyKTsK KwlXUkVHMzIobW1DUF9SQjJfV1BUUiwgcmluZy0+d3B0cik7CiAJcnB0cl9hZGRyID0gYWRldi0+ d2IuZ3B1X2FkZHIgKyAocmluZy0+cnB0cl9vZmZzICogNCk7Ci0JV1JFRzMyKENQX1JCMl9SUFRS X0FERFIsIGxvd2VyXzMyX2JpdHMocnB0cl9hZGRyKSk7Ci0JV1JFRzMyKENQX1JCMl9SUFRSX0FE RFJfSEksIHVwcGVyXzMyX2JpdHMocnB0cl9hZGRyKSAmIDB4RkYpOworCVdSRUczMihtbUNQX1JC Ml9SUFRSX0FERFIsIGxvd2VyXzMyX2JpdHMocnB0cl9hZGRyKSk7CisJV1JFRzMyKG1tQ1BfUkIy X1JQVFJfQUREUl9ISSwgdXBwZXJfMzJfYml0cyhycHRyX2FkZHIpICYgMHhGRik7CiAKIAltZGVs YXkoMSk7Ci0JV1JFRzMyKENQX1JCMl9DTlRMLCB0bXApOwotCVdSRUczMihDUF9SQjJfQkFTRSwg cmluZy0+Z3B1X2FkZHIgPj4gOCk7CisJV1JFRzMyKG1tQ1BfUkIyX0NOVEwsIHRtcCk7CisJV1JF RzMyKG1tQ1BfUkIyX0JBU0UsIHJpbmctPmdwdV9hZGRyID4+IDgpOwogCi0JYWRldi0+Z2Z4LmNv bXB1dGVfcmluZ1swXS5yZWFkeSA9IHRydWU7Ci0JYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1sxXS5y ZWFkeSA9IHRydWU7Ci0KLQlyID0gYW1kZ3B1X3JpbmdfdGVzdF9yaW5nKCZhZGV2LT5nZnguY29t cHV0ZV9yaW5nWzBdKTsKLQlpZiAocikgewotCQlhZGV2LT5nZnguY29tcHV0ZV9yaW5nWzBdLnJl YWR5ID0gZmFsc2U7Ci0JCXJldHVybiByOwotCX0KKwlhZGV2LT5nZnguY29tcHV0ZV9yaW5nWzBd LnJlYWR5ID0gZmFsc2U7CisJYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1sxXS5yZWFkeSA9IGZhbHNl OwogCi0JciA9IGFtZGdwdV9yaW5nX3Rlc3RfcmluZygmYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1sx XSk7Ci0JaWYgKHIpIHsKLQkJYWRldi0+Z2Z4LmNvbXB1dGVfcmluZ1sxXS5yZWFkeSA9IGZhbHNl OwotCQlyZXR1cm4gcjsKKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisJCXIgPSBhbWRncHVf cmluZ190ZXN0X3JpbmcoJmFkZXYtPmdmeC5jb21wdXRlX3JpbmdbaV0pOworCQlpZiAocikKKwkJ CXJldHVybiByOwogCX0KIAogCXJldHVybiAwOwpAQCAtMTg5MywyMyArMTkxNywyNSBAQCBzdGF0 aWMgaW50IGdmeF92Nl8wX2NwX2xvYWRfbWljcm9jb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfZW5hYmxlX2d1aV9pZGxlX2ludGVycnVwdChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAgICAgIGJvb2wgZW5hYmxlKQogewkKLQl1 MzIgdG1wID0gUlJFRzMyKENQX0lOVF9DTlRMX1JJTkcwKTsKKwl1MzIgdG1wID0gUlJFRzMyKG1t Q1BfSU5UX0NOVExfUklORzApOwogCXUzMiBtYXNrOwogCWludCBpOwogCiAJaWYgKGVuYWJsZSkK LQkJdG1wIHw9IChDTlRYX0JVU1lfSU5UX0VOQUJMRSB8IENOVFhfRU1QVFlfSU5UX0VOQUJMRSk7 CisJCXRtcCB8PSAoQ1BfSU5UX0NOVExfX0NOVFhfQlVTWV9JTlRfRU5BQkxFX01BU0sgfAorCQkJ Q1BfSU5UX0NOVExfX0NOVFhfRU1QVFlfSU5UX0VOQUJMRV9NQVNLKTsKIAllbHNlCi0JCXRtcCAm PSB+KENOVFhfQlVTWV9JTlRfRU5BQkxFIHwgQ05UWF9FTVBUWV9JTlRfRU5BQkxFKTsKLQlXUkVH MzIoQ1BfSU5UX0NOVExfUklORzAsIHRtcCk7CisJCXRtcCAmPSB+KENQX0lOVF9DTlRMX19DTlRY X0JVU1lfSU5UX0VOQUJMRV9NQVNLIHwKKwkJCSBDUF9JTlRfQ05UTF9fQ05UWF9FTVBUWV9JTlRf RU5BQkxFX01BU0spOworCVdSRUczMihtbUNQX0lOVF9DTlRMX1JJTkcwLCB0bXApOwogCiAJaWYg KCFlbmFibGUpIHsKIAkJLyogcmVhZCBhIGdmeCByZWdpc3RlciAqLwotCQl0bXAgPSBSUkVHMzIo REJfREVQVEhfSU5GTyk7CisJCXRtcCA9IFJSRUczMihtbURCX0RFUFRIX0lORk8pOwogCiAJCW1h c2sgPSBSTENfQlVTWV9TVEFUVVMgfCBHRlhfUE9XRVJfU1RBVFVTIHwgR0ZYX0NMT0NLX1NUQVRV UyB8IEdGWF9MU19TVEFUVVM7CiAJCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51c2VjX3RpbWVvdXQ7 IGkrKykgewotCQkJaWYgKChSUkVHMzIoUkxDX1NUQVQpICYgbWFzaykgPT0gKEdGWF9DTE9DS19T VEFUVVMgfCBHRlhfUE9XRVJfU1RBVFVTKSkKKwkJCWlmICgoUlJFRzMyKG1tUkxDX1NUQVQpICYg bWFzaykgPT0gKEdGWF9DTE9DS19TVEFUVVMgfCBHRlhfUE9XRVJfU1RBVFVTKSkKIAkJCQlicmVh azsKIAkJCXVkZWxheSgxKTsKIAkJfQpAQCAtMTk3Myw5ICsxOTk5LDkgQEAgc3RhdGljIHZvaWQg Z2Z4X3Y2XzBfcmluZ19lbWl0X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKIAlh bWRncHVfcmluZ193cml0ZShyaW5nLCAoV1JJVEVfREFUQV9FTkdJTkVfU0VMKDEpIHwKIAkJCQkg V1JJVEVfREFUQV9EU1RfU0VMKDApKSk7CiAJaWYgKHZtX2lkIDwgOCkgewotCQlhbWRncHVfcmlu Z193cml0ZShyaW5nLCAoVk1fQ09OVEVYVDBfUEFHRV9UQUJMRV9CQVNFX0FERFIgKyB2bV9pZCAp KTsKKwkJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgKG1tVk1fQ09OVEVYVDBfUEFHRV9UQUJMRV9C QVNFX0FERFIgKyB2bV9pZCApKTsKIAl9IGVsc2UgewotCQlhbWRncHVfcmluZ193cml0ZShyaW5n LCAoVk1fQ09OVEVYVDhfUEFHRV9UQUJMRV9CQVNFX0FERFIgKyAodm1faWQgLSA4KSkpOworCQlh bWRncHVfcmluZ193cml0ZShyaW5nLCAobW1WTV9DT05URVhUOF9QQUdFX1RBQkxFX0JBU0VfQURE UiArICh2bV9pZCAtIDgpKSk7CiAJfQogCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwogCWFt ZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHBkX2FkZHIgPj4gMTIpOwpAQCAtMTk4NCw3ICsyMDEwLDcg QEAgc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfcmluZ19lbWl0X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVf cmluZyAqcmluZywKIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVQzKFBBQ0tFVDNfV1JJ VEVfREFUQSwgMykpOwogCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIChXUklURV9EQVRBX0VOR0lO RV9TRUwoMSkgfAogCQkJCSBXUklURV9EQVRBX0RTVF9TRUwoMCkpKTsKLQlhbWRncHVfcmluZ193 cml0ZShyaW5nLCBWTV9JTlZBTElEQVRFX1JFUVVFU1QpOworCWFtZGdwdV9yaW5nX3dyaXRlKHJp bmcsIG1tVk1fSU5WQUxJREFURV9SRVFVRVNUKTsKIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCAw KTsKIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCAxIDw8IHZtX2lkKTsKIApAQCAtMTk5Miw3ICsy MDE4LDcgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfcmluZ19lbWl0X3ZtX2ZsdXNoKHN0cnVjdCBh bWRncHVfcmluZyAqcmluZywKIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVQzKFBBQ0tF VDNfV0FJVF9SRUdfTUVNLCA1KSk7CiAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgKFdBSVRfUkVH X01FTV9GVU5DVElPTigwKSB8ICAvKiBhbHdheXMgKi8KIAkJCQkgV0FJVF9SRUdfTUVNX0VOR0lO RSgwKSkpOyAvKiBtZSAqLwotCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFZNX0lOVkFMSURBVEVf UkVRVUVTVCk7CisJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgbW1WTV9JTlZBTElEQVRFX1JFUVVF U1QpOwogCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwogCWFtZGdwdV9yaW5nX3dyaXRlKHJp bmcsIDApOyAvKiByZWYgKi8KIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsgLyogbWFzayAq LwpAQCAtMjA3MSw3ICsyMDk3LDYgQEAgc3RhdGljIGludCBnZnhfdjZfMF9ybGNfaW5pdChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlpZiAoc3JjX3B0cikgewogCQkvKiBzYXZlIHJlc3Rv cmUgYmxvY2sgKi8KIAkJaWYgKGFkZXYtPmdmeC5ybGMuc2F2ZV9yZXN0b3JlX29iaiA9PSBOVUxM KSB7Ci0KIAkJCXIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsIGR3cyAqIDQsIFBBR0VfU0laRSwg dHJ1ZSwKIAkJCQkJICAgICBBTURHUFVfR0VNX0RPTUFJTl9WUkFNLAogCQkJCQkgICAgIEFNREdQ VV9HRU1fQ1JFQVRFX0NQVV9BQ0NFU1NfUkVRVUlSRUQsCkBAIC0yMTY2LDIwICsyMTkxLDEyIEBA IHN0YXRpYyBpbnQgZ2Z4X3Y2XzBfcmxjX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiAKIHN0YXRpYyB2b2lkIGdmeF92Nl8wX2VuYWJsZV9sYnB3KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCBib29sIGVuYWJsZSkKIHsKLQl1MzIgdG1wOwotCi0JdG1wID0gUlJFRzMyKFJMQ19M Ql9DTlRMKTsKLQlpZiAoZW5hYmxlKQotCQl0bXAgfD0gTE9BRF9CQUxBTkNFX0VOQUJMRTsKLQll bHNlCi0JCXRtcCAmPSB+TE9BRF9CQUxBTkNFX0VOQUJMRTsKLQlXUkVHMzIoUkxDX0xCX0NOVEws IHRtcCk7CisJV1JFRzMyX0ZJRUxEKFJMQ19MQl9DTlRMLCBMT0FEX0JBTEFOQ0VfRU5BQkxFLCBl bmFibGUgPyAxIDogMCk7CiAKIAlpZiAoIWVuYWJsZSkgewogCQlnZnhfdjZfMF9zZWxlY3Rfc2Vf c2goYWRldiwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZik7Ci0JCVdSRUczMihT UElfTEJfQ1VfTUFTSywgMHgwMGZmKTsKKwkJV1JFRzMyKG1tU1BJX0xCX0NVX01BU0ssIDB4MDBm Zik7CiAJfQotCiB9CiAKIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3dhaXRfZm9yX3JsY19zZXJkZXMo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC0yMTg3LDEzICsyMjA0LDEzIEBAIHN0YXRp YyB2b2lkIGdmeF92Nl8wX3dhaXRfZm9yX3JsY19zZXJkZXMoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgYWRldi0+dXNlY190aW1lb3V0OyBp KyspIHsKLQkJaWYgKFJSRUczMihSTENfU0VSREVTX01BU1RFUl9CVVNZXzApID09IDApCisJCWlm IChSUkVHMzIobW1STENfU0VSREVTX01BU1RFUl9CVVNZXzApID09IDApCiAJCQlicmVhazsKIAkJ dWRlbGF5KDEpOwogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51c2VjX3RpbWVvdXQ7IGkr KykgewotCQlpZiAoUlJFRzMyKFJMQ19TRVJERVNfTUFTVEVSX0JVU1lfMSkgPT0gMCkKKwkJaWYg KFJSRUczMihtbVJMQ19TRVJERVNfTUFTVEVSX0JVU1lfMSkgPT0gMCkKIAkJCWJyZWFrOwogCQl1 ZGVsYXkoMSk7CiAJfQpAQCAtMjIwMywyMCArMjIyMCwyMCBAQCBzdGF0aWMgdm9pZCBnZnhfdjZf MF91cGRhdGVfcmxjKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgcmxjKQogewogCXUz MiB0bXA7CiAKLQl0bXAgPSBSUkVHMzIoUkxDX0NOVEwpOworCXRtcCA9IFJSRUczMihtbVJMQ19D TlRMKTsKIAlpZiAodG1wICE9IHJsYykKLQkJV1JFRzMyKFJMQ19DTlRMLCBybGMpOworCQlXUkVH MzIobW1STENfQ05UTCwgcmxjKTsKIH0KIAogc3RhdGljIHUzMiBnZnhfdjZfMF9oYWx0X3JsYyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAl1MzIgZGF0YSwgb3JpZzsKIAotCW9yaWcg PSBkYXRhID0gUlJFRzMyKFJMQ19DTlRMKTsKKwlvcmlnID0gZGF0YSA9IFJSRUczMihtbVJMQ19D TlRMKTsKIAotCWlmIChkYXRhICYgUkxDX0VOQUJMRSkgewotCQlkYXRhICY9IH5STENfRU5BQkxF OwotCQlXUkVHMzIoUkxDX0NOVEwsIGRhdGEpOworCWlmIChkYXRhICYgUkxDX0NOVExfX1JMQ19F TkFCTEVfRjMyX01BU0spIHsKKwkJZGF0YSAmPSB+UkxDX0NOVExfX1JMQ19FTkFCTEVfRjMyX01B U0s7CisJCVdSRUczMihtbVJMQ19DTlRMLCBkYXRhKTsKIAogCQlnZnhfdjZfMF93YWl0X2Zvcl9y bGNfc2VyZGVzKGFkZXYpOwogCX0KQEAgLTIyMjYsNyArMjI0Myw3IEBAIHN0YXRpYyB1MzIgZ2Z4 X3Y2XzBfaGFsdF9ybGMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAKIHN0YXRpYyB2b2lk IGdmeF92Nl8wX3JsY19zdG9wKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewotCVdSRUcz MihSTENfQ05UTCwgMCk7CisJV1JFRzMyKG1tUkxDX0NOVEwsIDApOwogCiAJZ2Z4X3Y2XzBfZW5h YmxlX2d1aV9pZGxlX2ludGVycnVwdChhZGV2LCBmYWxzZSk7CiAJZ2Z4X3Y2XzBfd2FpdF9mb3Jf cmxjX3NlcmRlcyhhZGV2KTsKQEAgLTIyMzQsNyArMjI1MSw3IEBAIHN0YXRpYyB2b2lkIGdmeF92 Nl8wX3JsY19zdG9wKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCiBzdGF0aWMgdm9pZCBn ZnhfdjZfMF9ybGNfc3RhcnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7Ci0JV1JFRzMy KFJMQ19DTlRMLCBSTENfRU5BQkxFKTsKKwlXUkVHMzIobW1STENfQ05UTCwgUkxDX0NOVExfX1JM Q19FTkFCTEVfRjMyX01BU0spOwogCiAJZ2Z4X3Y2XzBfZW5hYmxlX2d1aV9pZGxlX2ludGVycnVw dChhZGV2LCB0cnVlKTsKIApAQCAtMjI0MywxMyArMjI2MCw5IEBAIHN0YXRpYyB2b2lkIGdmeF92 Nl8wX3JsY19zdGFydChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAogc3RhdGljIHZvaWQg Z2Z4X3Y2XzBfcmxjX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewotCXUzMiB0 bXAgPSBSUkVHMzIoR1JCTV9TT0ZUX1JFU0VUKTsKLQotCXRtcCB8PSBTT0ZUX1JFU0VUX1JMQzsK LQlXUkVHMzIoR1JCTV9TT0ZUX1JFU0VULCB0bXApOworCVdSRUczMl9GSUVMRChHUkJNX1NPRlRf UkVTRVQsIFNPRlRfUkVTRVRfUkxDLCAxKTsKIAl1ZGVsYXkoNTApOwotCXRtcCAmPSB+U09GVF9S RVNFVF9STEM7Ci0JV1JFRzMyKEdSQk1fU09GVF9SRVNFVCwgdG1wKTsKKwlXUkVHMzJfRklFTEQo R1JCTV9TT0ZUX1JFU0VULCBTT0ZUX1JFU0VUX1JMQywgMCk7CiAJdWRlbGF5KDUwKTsKIH0KIApA QCAtMjI1OCwxMSArMjI3MSwxMiBAQCBzdGF0aWMgYm9vbCBnZnhfdjZfMF9sYnB3X3N1cHBvcnRl ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAl1MzIgdG1wOwogCiAJLyogRW5hYmxlIExC UFcgb25seSBmb3IgRERSMyAqLwotCXRtcCA9IFJSRUczMihNQ19TRVFfTUlTQzApOworCXRtcCA9 IFJSRUczMihtbU1DX1NFUV9NSVNDMCk7CiAJaWYgKCh0bXAgJiAweEYwMDAwMDAwKSA9PSAweEIw MDAwMDAwKQogCQlyZXR1cm4gdHJ1ZTsKIAlyZXR1cm4gZmFsc2U7CiB9CisKIHN0YXRpYyB2b2lk IGdmeF92Nl8wX2luaXRfY2coc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiB9CkBAIC0y MjgzLDE1ICsyMjk3LDE1IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y2XzBfcmxjX3Jlc3VtZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIAlnZnhfdjZfMF9pbml0X3BnKGFkZXYpOwogCWdmeF92Nl8w X2luaXRfY2coYWRldik7CiAKLQlXUkVHMzIoUkxDX1JMX0JBU0UsIDApOwotCVdSRUczMihSTENf UkxfU0laRSwgMCk7Ci0JV1JFRzMyKFJMQ19MQl9DTlRMLCAwKTsKLQlXUkVHMzIoUkxDX0xCX0NO VFJfTUFYLCAweGZmZmZmZmZmKTsKLQlXUkVHMzIoUkxDX0xCX0NOVFJfSU5JVCwgMCk7Ci0JV1JF RzMyKFJMQ19MQl9JTklUX0NVX01BU0ssIDB4ZmZmZmZmZmYpOworCVdSRUczMihtbVJMQ19STF9C QVNFLCAwKTsKKwlXUkVHMzIobW1STENfUkxfU0laRSwgMCk7CisJV1JFRzMyKG1tUkxDX0xCX0NO VEwsIDApOworCVdSRUczMihtbVJMQ19MQl9DTlRSX01BWCwgMHhmZmZmZmZmZik7CisJV1JFRzMy KG1tUkxDX0xCX0NOVFJfSU5JVCwgMCk7CisJV1JFRzMyKG1tUkxDX0xCX0lOSVRfQ1VfTUFTSywg MHhmZmZmZmZmZik7CiAKLQlXUkVHMzIoUkxDX01DX0NOVEwsIDApOwotCVdSRUczMihSTENfVUNP REVfQ05UTCwgMCk7CisJV1JFRzMyKG1tUkxDX01DX0NOVEwsIDApOworCVdSRUczMihtbVJMQ19V Q09ERV9DTlRMLCAwKTsKIAogCWhkciA9IChjb25zdCBzdHJ1Y3QgcmxjX2Zpcm13YXJlX2hlYWRl cl92MV8wICopYWRldi0+Z2Z4LnJsY19mdy0+ZGF0YTsKIAlmd19zaXplID0gbGUzMl90b19jcHUo aGRyLT5oZWFkZXIudWNvZGVfc2l6ZV9ieXRlcykgLyA0OwpAQCAtMjMwMSwxMCArMjMxNSwxMCBA QCBzdGF0aWMgaW50IGdmeF92Nl8wX3JsY19yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCiAJYW1kZ3B1X3Vjb2RlX3ByaW50X3JsY19oZHIoJmhkci0+aGVhZGVyKTsKIAogCWZvciAo aSA9IDA7IGkgPCBmd19zaXplOyBpKyspIHsKLQkJV1JFRzMyKFJMQ19VQ09ERV9BRERSLCBpKTsK LQkJV1JFRzMyKFJMQ19VQ09ERV9EQVRBLCBsZTMyX3RvX2NwdXAoZndfZGF0YSsrKSk7CisJCVdS RUczMihtbVJMQ19VQ09ERV9BRERSLCBpKTsKKwkJV1JFRzMyKG1tUkxDX1VDT0RFX0RBVEEsIGxl MzJfdG9fY3B1cChmd19kYXRhKyspKTsKIAl9Ci0JV1JFRzMyKFJMQ19VQ09ERV9BRERSLCAwKTsK KwlXUkVHMzIobW1STENfVUNPREVfQUREUiwgMCk7CiAKIAlnZnhfdjZfMF9lbmFibGVfbGJwdyhh ZGV2LCBnZnhfdjZfMF9sYnB3X3N1cHBvcnRlZChhZGV2KSk7CiAJZ2Z4X3Y2XzBfcmxjX3N0YXJ0 KGFkZXYpOwpAQCAtMjMxNiwzOCArMjMzMCwzOCBAQCBzdGF0aWMgdm9pZCBnZnhfdjZfMF9lbmFi bGVfY2djZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCiB7CiAJdTMy IGRhdGEsIG9yaWcsIHRtcDsKIAotCW9yaWcgPSBkYXRhID0gUlJFRzMyKFJMQ19DR0NHX0NHTFNf Q1RSTCk7CisJb3JpZyA9IGRhdGEgPSBSUkVHMzIobW1STENfQ0dDR19DR0xTX0NUUkwpOwogCiAJ aWYgKGVuYWJsZSAmJiAoYWRldi0+Y2dfZmxhZ3MgJiBBTURfQ0dfU1VQUE9SVF9HRlhfQ0dDRykp IHsKIAkJZ2Z4X3Y2XzBfZW5hYmxlX2d1aV9pZGxlX2ludGVycnVwdChhZGV2LCB0cnVlKTsKIAot CQlXUkVHMzIoUkxDX0dDUE1fR0VORVJBTF8zLCAweDAwMDAwMDgwKTsKKwkJV1JFRzMyKG1tUkxD X0dDUE1fR0VORVJBTF8zLCAweDAwMDAwMDgwKTsKIAogCQl0bXAgPSBnZnhfdjZfMF9oYWx0X3Js YyhhZGV2KTsKIAotCQlXUkVHMzIoUkxDX1NFUkRFU19XUl9NQVNURVJfTUFTS18wLCAweGZmZmZm ZmZmKTsKLQkJV1JFRzMyKFJMQ19TRVJERVNfV1JfTUFTVEVSX01BU0tfMSwgMHhmZmZmZmZmZik7 Ci0JCVdSRUczMihSTENfU0VSREVTX1dSX0NUUkwsIDB4MDBiMDAwZmYpOworCQlXUkVHMzIobW1S TENfU0VSREVTX1dSX01BU1RFUl9NQVNLXzAsIDB4ZmZmZmZmZmYpOworCQlXUkVHMzIobW1STENf U0VSREVTX1dSX01BU1RFUl9NQVNLXzEsIDB4ZmZmZmZmZmYpOworCQlXUkVHMzIobW1STENfU0VS REVTX1dSX0NUUkwsIDB4MDBiMDAwZmYpOwogCiAJCWdmeF92Nl8wX3dhaXRfZm9yX3JsY19zZXJk ZXMoYWRldik7CiAJCWdmeF92Nl8wX3VwZGF0ZV9ybGMoYWRldiwgdG1wKTsKIAotCQlXUkVHMzIo UkxDX1NFUkRFU19XUl9DVFJMLCAweDAwNzAwMGZmKTsKKwkJV1JFRzMyKG1tUkxDX1NFUkRFU19X Ul9DVFJMLCAweDAwNzAwMGZmKTsKIAotCQlkYXRhIHw9IENHQ0dfRU4gfCBDR0xTX0VOOworCQlk YXRhIHw9IFJMQ19DR0NHX0NHTFNfQ1RSTF9fQ0dDR19FTl9NQVNLIHwgUkxDX0NHQ0dfQ0dMU19D VFJMX19DR0xTX0VOX01BU0s7CiAJfSBlbHNlIHsKIAkJZ2Z4X3Y2XzBfZW5hYmxlX2d1aV9pZGxl X2ludGVycnVwdChhZGV2LCBmYWxzZSk7CiAKLQkJUlJFRzMyKENCX0NHVFRfU0NMS19DVFJMKTsK LQkJUlJFRzMyKENCX0NHVFRfU0NMS19DVFJMKTsKLQkJUlJFRzMyKENCX0NHVFRfU0NMS19DVFJM KTsKLQkJUlJFRzMyKENCX0NHVFRfU0NMS19DVFJMKTsKKwkJUlJFRzMyKG1tQ0JfQ0dUVF9TQ0xL X0NUUkwpOworCQlSUkVHMzIobW1DQl9DR1RUX1NDTEtfQ1RSTCk7CisJCVJSRUczMihtbUNCX0NH VFRfU0NMS19DVFJMKTsKKwkJUlJFRzMyKG1tQ0JfQ0dUVF9TQ0xLX0NUUkwpOwogCi0JCWRhdGEg Jj0gfihDR0NHX0VOIHwgQ0dMU19FTik7CisJCWRhdGEgJj0gfihSTENfQ0dDR19DR0xTX0NUUkxf X0NHQ0dfRU5fTUFTSyB8IFJMQ19DR0NHX0NHTFNfQ1RSTF9fQ0dMU19FTl9NQVNLKTsKIAl9CiAK IAlpZiAob3JpZyAhPSBkYXRhKQotCQlXUkVHMzIoUkxDX0NHQ0dfQ0dMU19DVFJMLCBkYXRhKTsK KwkJV1JFRzMyKG1tUkxDX0NHQ0dfQ0dMU19DVFJMLCBkYXRhKTsKIAogfQogCkBAIC0yMzU3LDUx ICsyMzcxLDUxIEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX2VuYWJsZV9tZ2NnKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIAl1MzIgZGF0YSwgb3JpZywgdG1wID0gMDsK IAogCWlmIChlbmFibGUgJiYgKGFkZXYtPmNnX2ZsYWdzICYgQU1EX0NHX1NVUFBPUlRfR0ZYX01H Q0cpKSB7Ci0JCW9yaWcgPSBkYXRhID0gUlJFRzMyKENHVFNfU01fQ1RSTF9SRUcpOworCQlvcmln ID0gZGF0YSA9IFJSRUczMihtbUNHVFNfU01fQ1RSTF9SRUcpOwogCQlkYXRhID0gMHg5Njk0MDIw MDsKIAkJaWYgKG9yaWcgIT0gZGF0YSkKLQkJCVdSRUczMihDR1RTX1NNX0NUUkxfUkVHLCBkYXRh KTsKKwkJCVdSRUczMihtbUNHVFNfU01fQ1RSTF9SRUcsIGRhdGEpOwogCiAJCWlmIChhZGV2LT5j Z19mbGFncyAmIEFNRF9DR19TVVBQT1JUX0dGWF9DUF9MUykgewotCQkJb3JpZyA9IGRhdGEgPSBS UkVHMzIoQ1BfTUVNX1NMUF9DTlRMKTsKLQkJCWRhdGEgfD0gQ1BfTUVNX0xTX0VOOworCQkJb3Jp ZyA9IGRhdGEgPSBSUkVHMzIobW1DUF9NRU1fU0xQX0NOVEwpOworCQkJZGF0YSB8PSBDUF9NRU1f U0xQX0NOVExfX0NQX01FTV9MU19FTl9NQVNLOwogCQkJaWYgKG9yaWcgIT0gZGF0YSkKLQkJCQlX UkVHMzIoQ1BfTUVNX1NMUF9DTlRMLCBkYXRhKTsKKwkJCQlXUkVHMzIobW1DUF9NRU1fU0xQX0NO VEwsIGRhdGEpOwogCQl9CiAKLQkJb3JpZyA9IGRhdGEgPSBSUkVHMzIoUkxDX0NHVFRfTUdDR19P VkVSUklERSk7CisJCW9yaWcgPSBkYXRhID0gUlJFRzMyKG1tUkxDX0NHVFRfTUdDR19PVkVSUklE RSk7CiAJCWRhdGEgJj0gMHhmZmZmZmZjMDsKIAkJaWYgKG9yaWcgIT0gZGF0YSkKLQkJCVdSRUcz MihSTENfQ0dUVF9NR0NHX09WRVJSSURFLCBkYXRhKTsKKwkJCVdSRUczMihtbVJMQ19DR1RUX01H Q0dfT1ZFUlJJREUsIGRhdGEpOwogCiAJCXRtcCA9IGdmeF92Nl8wX2hhbHRfcmxjKGFkZXYpOwog Ci0JCVdSRUczMihSTENfU0VSREVTX1dSX01BU1RFUl9NQVNLXzAsIDB4ZmZmZmZmZmYpOwotCQlX UkVHMzIoUkxDX1NFUkRFU19XUl9NQVNURVJfTUFTS18xLCAweGZmZmZmZmZmKTsKLQkJV1JFRzMy KFJMQ19TRVJERVNfV1JfQ1RSTCwgMHgwMGQwMDBmZik7CisJCVdSRUczMihtbVJMQ19TRVJERVNf V1JfTUFTVEVSX01BU0tfMCwgMHhmZmZmZmZmZik7CisJCVdSRUczMihtbVJMQ19TRVJERVNfV1Jf TUFTVEVSX01BU0tfMSwgMHhmZmZmZmZmZik7CisJCVdSRUczMihtbVJMQ19TRVJERVNfV1JfQ1RS TCwgMHgwMGQwMDBmZik7CiAKIAkJZ2Z4X3Y2XzBfdXBkYXRlX3JsYyhhZGV2LCB0bXApOwogCX0g ZWxzZSB7Ci0JCW9yaWcgPSBkYXRhID0gUlJFRzMyKFJMQ19DR1RUX01HQ0dfT1ZFUlJJREUpOwor CQlvcmlnID0gZGF0YSA9IFJSRUczMihtbVJMQ19DR1RUX01HQ0dfT1ZFUlJJREUpOwogCQlkYXRh IHw9IDB4MDAwMDAwMDM7CiAJCWlmIChvcmlnICE9IGRhdGEpCi0JCQlXUkVHMzIoUkxDX0NHVFRf TUdDR19PVkVSUklERSwgZGF0YSk7CisJCQlXUkVHMzIobW1STENfQ0dUVF9NR0NHX09WRVJSSURF LCBkYXRhKTsKIAotCQlkYXRhID0gUlJFRzMyKENQX01FTV9TTFBfQ05UTCk7Ci0JCWlmIChkYXRh ICYgQ1BfTUVNX0xTX0VOKSB7Ci0JCQlkYXRhICY9IH5DUF9NRU1fTFNfRU47Ci0JCQlXUkVHMzIo Q1BfTUVNX1NMUF9DTlRMLCBkYXRhKTsKKwkJZGF0YSA9IFJSRUczMihtbUNQX01FTV9TTFBfQ05U TCk7CisJCWlmIChkYXRhICYgQ1BfTUVNX1NMUF9DTlRMX19DUF9NRU1fTFNfRU5fTUFTSykgewor CQkJZGF0YSAmPSB+Q1BfTUVNX1NMUF9DTlRMX19DUF9NRU1fTFNfRU5fTUFTSzsKKwkJCVdSRUcz MihtbUNQX01FTV9TTFBfQ05UTCwgZGF0YSk7CiAJCX0KLQkJb3JpZyA9IGRhdGEgPSBSUkVHMzIo Q0dUU19TTV9DVFJMX1JFRyk7Ci0JCWRhdGEgfD0gTFNfT1ZFUlJJREUgfCBPVkVSUklERTsKKwkJ b3JpZyA9IGRhdGEgPSBSUkVHMzIobW1DR1RTX1NNX0NUUkxfUkVHKTsKKwkJZGF0YSB8PSBDR1RT X1NNX0NUUkxfUkVHX19MU19PVkVSUklERV9NQVNLIHwgQ0dUU19TTV9DVFJMX1JFR19fT1ZFUlJJ REVfTUFTSzsKIAkJaWYgKG9yaWcgIT0gZGF0YSkKLQkJCVdSRUczMihDR1RTX1NNX0NUUkxfUkVH LCBkYXRhKTsKKwkJCVdSRUczMihtbUNHVFNfU01fQ1RSTF9SRUcsIGRhdGEpOwogCiAJCXRtcCA9 IGdmeF92Nl8wX2hhbHRfcmxjKGFkZXYpOwogCi0JCVdSRUczMihSTENfU0VSREVTX1dSX01BU1RF Ul9NQVNLXzAsIDB4ZmZmZmZmZmYpOwotCQlXUkVHMzIoUkxDX1NFUkRFU19XUl9NQVNURVJfTUFT S18xLCAweGZmZmZmZmZmKTsKLQkJV1JFRzMyKFJMQ19TRVJERVNfV1JfQ1RSTCwgMHgwMGUwMDBm Zik7CisJCVdSRUczMihtbVJMQ19TRVJERVNfV1JfTUFTVEVSX01BU0tfMCwgMHhmZmZmZmZmZik7 CisJCVdSRUczMihtbVJMQ19TRVJERVNfV1JfTUFTVEVSX01BU0tfMSwgMHhmZmZmZmZmZik7CisJ CVdSRUczMihtbVJMQ19TRVJERVNfV1JfQ1RSTCwgMHgwMGUwMDBmZik7CiAKIAkJZ2Z4X3Y2XzBf dXBkYXRlX3JsYyhhZGV2LCB0bXApOwogCX0KQEAgLTI0MjEsNiArMjQzNSw3IEBAIHN0YXRpYyB2 b2lkIGdmeF92Nl8wX3VwZGF0ZV9jZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlnZnhf djZfMF9lbmFibGVfZ3VpX2lkbGVfaW50ZXJydXB0KGFkZXYsIHRydWUpOwogfQogKi8KKwogc3Rh dGljIHZvaWQgZ2Z4X3Y2XzBfZW5hYmxlX3NjbGtfc2xvd2Rvd25fb25fcHUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCiAJCQkJCQlib29sIGVuYWJsZSkKIHsKQEAgLTI0MzUsMTMgKzI0NTAs MTMgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfZW5hYmxlX2NwX3BnKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCBib29sIGVuYWJsZSkKIHsKIAl1MzIgZGF0YSwgb3JpZzsKIAotCW9yaWcgPSBk YXRhID0gUlJFRzMyKFJMQ19QR19DTlRMKTsKKwlvcmlnID0gZGF0YSA9IFJSRUczMihtbVJMQ19Q R19DTlRMKTsKIAlpZiAoZW5hYmxlICYmIChhZGV2LT5wZ19mbGFncyAmIEFNRF9QR19TVVBQT1JU X0NQKSkKIAkJZGF0YSAmPSB+MHg4MDAwOwogCWVsc2UKIAkJZGF0YSB8PSAweDgwMDA7CiAJaWYg KG9yaWcgIT0gZGF0YSkKLQkJV1JFRzMyKFJMQ19QR19DTlRMLCBkYXRhKTsKKwkJV1JFRzMyKG1t UkxDX1BHX0NOVEwsIGRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBnZnhfdjZfMF9lbmFibGVfZ2Rz X3BnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKQEAgLTI1MTgsMjYg KzI1MzMsMTMgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfaW5pdF9jcF9wZ190YWJsZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIHN0YXRpYyB2b2lkIGdmeF92Nl8wX2VuYWJsZV9nZnhfY2dw ZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgIGJvb2wgZW5hYmxlKQogewot Ci0JdTMyIHRtcDsKLQogCWlmIChlbmFibGUgJiYgKGFkZXYtPnBnX2ZsYWdzICYgQU1EX1BHX1NV UFBPUlRfR0ZYX1BHKSkgewotCQl0bXAgPSBSTENfUFVEKDB4MTApIHwgUkxDX1BERCgweDEwKSB8 IFJMQ19UVFBEKDB4MTApIHwgUkxDX01TRCgweDEwKTsKLQkJV1JFRzMyKFJMQ19UVE9QX0QsIHRt cCk7Ci0KLQkJdG1wID0gUlJFRzMyKFJMQ19QR19DTlRMKTsKLQkJdG1wIHw9IEdGWF9QR19FTkFC TEU7Ci0JCVdSRUczMihSTENfUEdfQ05UTCwgdG1wKTsKLQotCQl0bXAgPSBSUkVHMzIoUkxDX0FV VE9fUEdfQ1RSTCk7Ci0JCXRtcCB8PSBBVVRPX1BHX0VOOwotCQlXUkVHMzIoUkxDX0FVVE9fUEdf Q1RSTCwgdG1wKTsKKwkJV1JFRzMyKG1tUkxDX1RUT1BfRCwgUkxDX1BVRCgweDEwKSB8IFJMQ19Q REQoMHgxMCkgfCBSTENfVFRQRCgweDEwKSB8IFJMQ19NU0QoMHgxMCkpOworCQlXUkVHMzJfRklF TEQoUkxDX1BHX0NOVEwsIEdGWF9QT1dFUl9HQVRJTkdfRU5BQkxFLCAxKTsKKwkJV1JFRzMyX0ZJ RUxEKFJMQ19BVVRPX1BHX0NUUkwsIEFVVE9fUEdfRU4sIDEpOwogCX0gZWxzZSB7Ci0JCXRtcCA9 IFJSRUczMihSTENfQVVUT19QR19DVFJMKTsKLQkJdG1wICY9IH5BVVRPX1BHX0VOOwotCQlXUkVH MzIoUkxDX0FVVE9fUEdfQ1RSTCwgdG1wKTsKLQotCQl0bXAgPSBSUkVHMzIoREJfUkVOREVSX0NP TlRST0wpOworCQlXUkVHMzJfRklFTEQoUkxDX0FVVE9fUEdfQ1RSTCwgQVVUT19QR19FTiwgMCk7 CisJCSh2b2lkKVJSRUczMihtbURCX1JFTkRFUl9DT05UUk9MKTsKIAl9CiB9CiAKQEAgLTI1NTAs OCArMjU1Miw4IEBAIHN0YXRpYyB1MzIgZ2Z4X3Y2XzBfZ2V0X2N1X2FjdGl2ZV9iaXRtYXAoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAKIAltdXRleF9sb2NrKCZhZGV2LT5ncmJtX2lkeF9t dXRleCk7CiAJZ2Z4X3Y2XzBfc2VsZWN0X3NlX3NoKGFkZXYsIHNlLCBzaCwgMHhmZmZmZmZmZik7 Ci0JdG1wID0gUlJFRzMyKENDX0dDX1NIQURFUl9BUlJBWV9DT05GSUcpOwotCXRtcDEgPSBSUkVH MzIoR0NfVVNFUl9TSEFERVJfQVJSQVlfQ09ORklHKTsKKwl0bXAgPSBSUkVHMzIobW1DQ19HQ19T SEFERVJfQVJSQVlfQ09ORklHKTsKKwl0bXAxID0gUlJFRzMyKG1tR0NfVVNFUl9TSEFERVJfQVJS QVlfQ09ORklHKTsKIAlnZnhfdjZfMF9zZWxlY3Rfc2Vfc2goYWRldiwgMHhmZmZmZmZmZiwgMHhm ZmZmZmZmZiwgMHhmZmZmZmZmZik7CiAJbXV0ZXhfdW5sb2NrKCZhZGV2LT5ncmJtX2lkeF9tdXRl eCk7CiAKQEAgLTI1OTQsMTIgKzI1OTYsOCBAQCBzdGF0aWMgdm9pZCBnZnhfdjZfMF9pbml0X2Fv X2N1X21hc2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCX0KIAl9CiAKLQlXUkVHMzIo UkxDX1BHX0FPX0NVX01BU0ssIHRtcCk7Ci0KLQl0bXAgPSBSUkVHMzIoUkxDX01BWF9QR19DVSk7 Ci0JdG1wICY9IH5NQVhfUFVfQ1VfTUFTSzsKLQl0bXAgfD0gTUFYX1BVX0NVKGFjdGl2ZV9jdV9u dW1iZXIpOwotCVdSRUczMihSTENfTUFYX1BHX0NVLCB0bXApOworCVdSRUczMihtbVJMQ19QR19B T19DVV9NQVNLLCB0bXApOworCVdSRUczMl9GSUVMRChSTENfTUFYX1BHX0NVLCBNQVhfUE9XRVJF RF9VUF9DVSwgYWN0aXZlX2N1X251bWJlcik7CiB9CiAKIHN0YXRpYyB2b2lkIGdmeF92Nl8wX2Vu YWJsZV9nZnhfc3RhdGljX21ncGcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0yNjA3 LDEzICsyNjA1LDEzIEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX2VuYWJsZV9nZnhfc3RhdGljX21n cGcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiB7CiAJdTMyIGRhdGEsIG9yaWc7CiAKLQlv cmlnID0gZGF0YSA9IFJSRUczMihSTENfUEdfQ05UTCk7CisJb3JpZyA9IGRhdGEgPSBSUkVHMzIo bW1STENfUEdfQ05UTCk7CiAJaWYgKGVuYWJsZSAmJiAoYWRldi0+cGdfZmxhZ3MgJiBBTURfUEdf U1VQUE9SVF9HRlhfU01HKSkKLQkJZGF0YSB8PSBTVEFUSUNfUEVSX0NVX1BHX0VOQUJMRTsKKwkJ ZGF0YSB8PSBSTENfUEdfQ05UTF9fU1RBVElDX1BFUl9DVV9QR19FTkFCTEVfTUFTSzsKIAllbHNl Ci0JCWRhdGEgJj0gflNUQVRJQ19QRVJfQ1VfUEdfRU5BQkxFOworCQlkYXRhICY9IH5STENfUEdf Q05UTF9fU1RBVElDX1BFUl9DVV9QR19FTkFCTEVfTUFTSzsKIAlpZiAob3JpZyAhPSBkYXRhKQot CQlXUkVHMzIoUkxDX1BHX0NOVEwsIGRhdGEpOworCQlXUkVHMzIobW1STENfUEdfQ05UTCwgZGF0 YSk7CiB9CiAKIHN0YXRpYyB2b2lkIGdmeF92Nl8wX2VuYWJsZV9nZnhfZHluYW1pY19tZ3BnKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMjYyMSwzMyArMjYxOSwyOCBAQCBzdGF0aWMg dm9pZCBnZnhfdjZfMF9lbmFibGVfZ2Z4X2R5bmFtaWNfbWdwZyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIHsKIAl1MzIgZGF0YSwgb3JpZzsKIAotCW9yaWcgPSBkYXRhID0gUlJFRzMyKFJM Q19QR19DTlRMKTsKKwlvcmlnID0gZGF0YSA9IFJSRUczMihtbVJMQ19QR19DTlRMKTsKIAlpZiAo ZW5hYmxlICYmIChhZGV2LT5wZ19mbGFncyAmIEFNRF9QR19TVVBQT1JUX0dGWF9ETUcpKQotCQlk YXRhIHw9IERZTl9QRVJfQ1VfUEdfRU5BQkxFOworCQlkYXRhIHw9IFJMQ19QR19DTlRMX19EWU5f UEVSX0NVX1BHX0VOQUJMRV9NQVNLOwogCWVsc2UKLQkJZGF0YSAmPSB+RFlOX1BFUl9DVV9QR19F TkFCTEU7CisJCWRhdGEgJj0gflJMQ19QR19DTlRMX19EWU5fUEVSX0NVX1BHX0VOQUJMRV9NQVNL OwogCWlmIChvcmlnICE9IGRhdGEpCi0JCVdSRUczMihSTENfUEdfQ05UTCwgZGF0YSk7CisJCVdS RUczMihtbVJMQ19QR19DTlRMLCBkYXRhKTsKIH0KIAogc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfaW5p dF9nZnhfY2dwZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAl1MzIgdG1wOwogCi0J V1JFRzMyKFJMQ19TQVZFX0FORF9SRVNUT1JFX0JBU0UsIGFkZXYtPmdmeC5ybGMuc2F2ZV9yZXN0 b3JlX2dwdV9hZGRyID4+IDgpOworCVdSRUczMihtbVJMQ19TQVZFX0FORF9SRVNUT1JFX0JBU0Us IGFkZXYtPmdmeC5ybGMuc2F2ZV9yZXN0b3JlX2dwdV9hZGRyID4+IDgpOworCVdSRUczMl9GSUVM RChSTENfUEdfQ05UTCwgR0ZYX1BPV0VSX0dBVElOR19TUkMsIDEpOworCVdSRUczMihtbVJMQ19D TEVBUl9TVEFURV9SRVNUT1JFX0JBU0UsIGFkZXYtPmdmeC5ybGMuY2xlYXJfc3RhdGVfZ3B1X2Fk ZHIgPj4gOCk7CiAKLQl0bXAgPSBSUkVHMzIoUkxDX1BHX0NOVEwpOwotCXRtcCB8PSBHRlhfUEdf U1JDOwotCVdSRUczMihSTENfUEdfQ05UTCwgdG1wKTsKLQotCVdSRUczMihSTENfQ0xFQVJfU1RB VEVfUkVTVE9SRV9CQVNFLCBhZGV2LT5nZngucmxjLmNsZWFyX3N0YXRlX2dwdV9hZGRyID4+IDgp OwotCi0JdG1wID0gUlJFRzMyKFJMQ19BVVRPX1BHX0NUUkwpOwotCi0JdG1wICY9IH5HUkJNX1JF R19TR0lUX01BU0s7Ci0JdG1wIHw9IEdSQk1fUkVHX1NHSVQoMHg3MDApOwotCXRtcCAmPSB+UEdf QUZURVJfR1JCTV9SRUdfU1RfTUFTSzsKLQlXUkVHMzIoUkxDX0FVVE9fUEdfQ1RSTCwgdG1wKTsK Kwl0bXAgPSBSUkVHMzIobW1STENfQVVUT19QR19DVFJMKTsKKwl0bXAgJj0gflJMQ19BVVRPX1BH X0NUUkxfX0dSQk1fUkVHX1NBVkVfR0ZYX0lETEVfVEhSRVNIT0xEX01BU0s7CisJdG1wIHw9ICgw eDcwMCA8PCBSTENfQVVUT19QR19DVFJMX19HUkJNX1JFR19TQVZFX0dGWF9JRExFX1RIUkVTSE9M RF9fU0hJRlQpOworCXRtcCAmPSB+UkxDX0FVVE9fUEdfQ1RSTF9fUEdfQUZURVJfR1JCTV9SRUdf U0FWRV9USFJFU0hPTERfTUFTSzsKKwlXUkVHMzIobW1STENfQVVUT19QR19DVFJMLCB0bXApOwog fQogCiBzdGF0aWMgdm9pZCBnZnhfdjZfMF91cGRhdGVfZ2Z4X3BnKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCBib29sIGVuYWJsZSkKQEAgLTI3MDMsNyArMjY5Niw2IEBAIHN0YXRpYyB2b2lk IGdmeF92Nl8wX2dldF9jc2JfYnVmZmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCiAJ YnVmZmVyW2NvdW50KytdID0gY3B1X3RvX2xlMzIoUEFDS0VUMyhQQUNLRVQzX1BSRUFNQkxFX0NO VEwsIDApKTsKIAlidWZmZXJbY291bnQrK10gPSBjcHVfdG9fbGUzMihQQUNLRVQzX1BSRUFNQkxF X0JFR0lOX0NMRUFSX1NUQVRFKTsKLQogCWJ1ZmZlcltjb3VudCsrXSA9IGNwdV90b19sZTMyKFBB Q0tFVDMoUEFDS0VUM19DT05URVhUX0NPTlRST0wsIDEpKTsKIAlidWZmZXJbY291bnQrK10gPSBj cHVfdG9fbGUzMigweDgwMDAwMDAwKTsKIAlidWZmZXJbY291bnQrK10gPSBjcHVfdG9fbGUzMigw eDgwMDAwMDAwKTsKQEAgLTI3MjMsNyArMjcxNSw3IEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX2dl dF9jc2JfYnVmZmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCX0KIAogCWJ1ZmZlcltj b3VudCsrXSA9IGNwdV90b19sZTMyKFBBQ0tFVDMoUEFDS0VUM19TRVRfQ09OVEVYVF9SRUcsIDEp KTsKLQlidWZmZXJbY291bnQrK10gPSBjcHVfdG9fbGUzMihQQV9TQ19SQVNURVJfQ09ORklHIC0g UEFDS0VUM19TRVRfQ09OVEVYVF9SRUdfU1RBUlQpOworCWJ1ZmZlcltjb3VudCsrXSA9IGNwdV90 b19sZTMyKG1tUEFfU0NfUkFTVEVSX0NPTkZJRyAtIFBBQ0tFVDNfU0VUX0NPTlRFWFRfUkVHX1NU QVJUKTsKIAogCXN3aXRjaCAoYWRldi0+YXNpY190eXBlKSB7CiAJY2FzZSBDSElQX1RBSElUSToK QEAgLTI3NjYsMTYgKzI3NTgsMTYgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y2XzBfaW5pdF9wZyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJCWdmeF92Nl8wX2VuYWJsZV9jcF9wZyhhZGV2LCB0 cnVlKTsKIAkJCWdmeF92Nl8wX2VuYWJsZV9nZHNfcGcoYWRldiwgdHJ1ZSk7CiAJCX0gZWxzZSB7 Ci0JCQlXUkVHMzIoUkxDX1NBVkVfQU5EX1JFU1RPUkVfQkFTRSwgYWRldi0+Z2Z4LnJsYy5zYXZl X3Jlc3RvcmVfZ3B1X2FkZHIgPj4gOCk7Ci0JCQlXUkVHMzIoUkxDX0NMRUFSX1NUQVRFX1JFU1RP UkVfQkFTRSwgYWRldi0+Z2Z4LnJsYy5jbGVhcl9zdGF0ZV9ncHVfYWRkciA+PiA4KTsKKwkJCVdS RUczMihtbVJMQ19TQVZFX0FORF9SRVNUT1JFX0JBU0UsIGFkZXYtPmdmeC5ybGMuc2F2ZV9yZXN0 b3JlX2dwdV9hZGRyID4+IDgpOworCQkJV1JFRzMyKG1tUkxDX0NMRUFSX1NUQVRFX1JFU1RPUkVf QkFTRSwgYWRldi0+Z2Z4LnJsYy5jbGVhcl9zdGF0ZV9ncHVfYWRkciA+PiA4KTsKIAogCQl9CiAJ CWdmeF92Nl8wX2luaXRfYW9fY3VfbWFzayhhZGV2KTsKIAkJZ2Z4X3Y2XzBfdXBkYXRlX2dmeF9w ZyhhZGV2LCB0cnVlKTsKIAl9IGVsc2UgewogCi0JCVdSRUczMihSTENfU0FWRV9BTkRfUkVTVE9S RV9CQVNFLCBhZGV2LT5nZngucmxjLnNhdmVfcmVzdG9yZV9ncHVfYWRkciA+PiA4KTsKLQkJV1JF RzMyKFJMQ19DTEVBUl9TVEFURV9SRVNUT1JFX0JBU0UsIGFkZXYtPmdmeC5ybGMuY2xlYXJfc3Rh dGVfZ3B1X2FkZHIgPj4gOCk7CisJCVdSRUczMihtbVJMQ19TQVZFX0FORF9SRVNUT1JFX0JBU0Us IGFkZXYtPmdmeC5ybGMuc2F2ZV9yZXN0b3JlX2dwdV9hZGRyID4+IDgpOworCQlXUkVHMzIobW1S TENfQ0xFQVJfU1RBVEVfUkVTVE9SRV9CQVNFLCBhZGV2LT5nZngucmxjLmNsZWFyX3N0YXRlX2dw dV9hZGRyID4+IDgpOwogCX0KIH0KIApAQCAtMjgwMCw5ICsyNzkyLDkgQEAgc3RhdGljIHVpbnQ2 NF90IGdmeF92Nl8wX2dldF9ncHVfY2xvY2tfY291bnRlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKIAl1aW50NjRfdCBjbG9jazsKIAogCW11dGV4X2xvY2soJmFkZXYtPmdmeC5ncHVfY2xv Y2tfbXV0ZXgpOwotCVdSRUczMihSTENfQ0FQVFVSRV9HUFVfQ0xPQ0tfQ09VTlQsIDEpOwotCWNs b2NrID0gKHVpbnQ2NF90KVJSRUczMihSTENfR1BVX0NMT0NLX0NPVU5UX0xTQikgfAotCSAgICAg ICAgKCh1aW50NjRfdClSUkVHMzIoUkxDX0dQVV9DTE9DS19DT1VOVF9NU0IpIDw8IDMyVUxMKTsK KwlXUkVHMzIobW1STENfQ0FQVFVSRV9HUFVfQ0xPQ0tfQ09VTlQsIDEpOworCWNsb2NrID0gKHVp bnQ2NF90KVJSRUczMihtbVJMQ19HUFVfQ0xPQ0tfQ09VTlRfTFNCKSB8CisJICAgICAgICAoKHVp bnQ2NF90KVJSRUczMihtbVJMQ19HUFVfQ0xPQ0tfQ09VTlRfTVNCKSA8PCAzMlVMTCk7CiAJbXV0 ZXhfdW5sb2NrKCZhZGV2LT5nZnguZ3B1X2Nsb2NrX211dGV4KTsKIAlyZXR1cm4gY2xvY2s7CiB9 CkBAIC0yOTY3LDcgKzI5NTksNyBAQCBzdGF0aWMgYm9vbCBnZnhfdjZfMF9pc19pZGxlKHZvaWQg KmhhbmRsZSkKIHsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqKWhhbmRsZTsKIAotCWlmIChSUkVHMzIoR1JCTV9TVEFUVVMpICYgR1JCTV9TVEFU VVNfX0dVSV9BQ1RJVkVfTUFTSykKKwlpZiAoUlJFRzMyKG1tR1JCTV9TVEFUVVMpICYgR1JCTV9T VEFUVVNfX0dVSV9BQ1RJVkVfTUFTSykKIAkJcmV0dXJuIGZhbHNlOwogCWVsc2UKIAkJcmV0dXJu IHRydWU7CkBAIC0yOTk4LDE0ICsyOTkwLDE0IEBAIHN0YXRpYyB2b2lkIGdmeF92Nl8wX3NldF9n ZnhfZW9wX2ludGVycnVwdF9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCXN3 aXRjaCAoc3RhdGUpIHsKIAljYXNlIEFNREdQVV9JUlFfU1RBVEVfRElTQUJMRToKLQkJY3BfaW50 X2NudGwgPSBSUkVHMzIoQ1BfSU5UX0NOVExfUklORzApOwotCQljcF9pbnRfY250bCAmPSB+Q1Bf SU5UX0NOVExfUklOR19fVElNRV9TVEFNUF9JTlRfRU5BQkxFX01BU0s7Ci0JCVdSRUczMihDUF9J TlRfQ05UTF9SSU5HMCwgY3BfaW50X2NudGwpOworCQljcF9pbnRfY250bCA9IFJSRUczMihtbUNQ X0lOVF9DTlRMX1JJTkcwKTsKKwkJY3BfaW50X2NudGwgJj0gfkNQX0lOVF9DTlRMX1JJTkcwX19U SU1FX1NUQU1QX0lOVF9FTkFCTEVfTUFTSzsKKwkJV1JFRzMyKG1tQ1BfSU5UX0NOVExfUklORzAs IGNwX2ludF9jbnRsKTsKIAkJYnJlYWs7CiAJY2FzZSBBTURHUFVfSVJRX1NUQVRFX0VOQUJMRToK LQkJY3BfaW50X2NudGwgPSBSUkVHMzIoQ1BfSU5UX0NOVExfUklORzApOwotCQljcF9pbnRfY250 bCB8PSBDUF9JTlRfQ05UTF9SSU5HX19USU1FX1NUQU1QX0lOVF9FTkFCTEVfTUFTSzsKLQkJV1JF RzMyKENQX0lOVF9DTlRMX1JJTkcwLCBjcF9pbnRfY250bCk7CisJCWNwX2ludF9jbnRsID0gUlJF RzMyKG1tQ1BfSU5UX0NOVExfUklORzApOworCQljcF9pbnRfY250bCB8PSBDUF9JTlRfQ05UTF9S SU5HMF9fVElNRV9TVEFNUF9JTlRfRU5BQkxFX01BU0s7CisJCVdSRUczMihtbUNQX0lOVF9DTlRM X1JJTkcwLCBjcF9pbnRfY250bCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWJyZWFrOwpAQCAt MzAyMCwyNyArMzAxMiwyNyBAQCBzdGF0aWMgdm9pZCBnZnhfdjZfMF9zZXRfY29tcHV0ZV9lb3Bf aW50ZXJydXB0X3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCXN3aXRjaCAoc3Rh dGUpewogCWNhc2UgQU1ER1BVX0lSUV9TVEFURV9ESVNBQkxFOgogCQlpZiAocmluZyA9PSAwKSB7 Ci0JCQljcF9pbnRfY250bCA9IFJSRUczMihDUF9JTlRfQ05UTF9SSU5HMSk7Ci0JCQljcF9pbnRf Y250bCAmPSB+Q1BfSU5UX0NOVExfUklOR19fVElNRV9TVEFNUF9JTlRfRU5BQkxFX01BU0s7Ci0J CQlXUkVHMzIoQ1BfSU5UX0NOVExfUklORzEsIGNwX2ludF9jbnRsKTsKKwkJCWNwX2ludF9jbnRs ID0gUlJFRzMyKG1tQ1BfSU5UX0NOVExfUklORzEpOworCQkJY3BfaW50X2NudGwgJj0gfkNQX0lO VF9DTlRMX1JJTkcxX19USU1FX1NUQU1QX0lOVF9FTkFCTEVfTUFTSzsKKwkJCVdSRUczMihtbUNQ X0lOVF9DTlRMX1JJTkcxLCBjcF9pbnRfY250bCk7CiAJCQlicmVhazsKIAkJfSBlbHNlIHsKLQkJ CWNwX2ludF9jbnRsID0gUlJFRzMyKENQX0lOVF9DTlRMX1JJTkcyKTsKLQkJCWNwX2ludF9jbnRs ICY9IH5DUF9JTlRfQ05UTF9SSU5HX19USU1FX1NUQU1QX0lOVF9FTkFCTEVfTUFTSzsKLQkJCVdS RUczMihDUF9JTlRfQ05UTF9SSU5HMiwgY3BfaW50X2NudGwpOworCQkJY3BfaW50X2NudGwgPSBS UkVHMzIobW1DUF9JTlRfQ05UTF9SSU5HMik7CisJCQljcF9pbnRfY250bCAmPSB+Q1BfSU5UX0NO VExfUklORzJfX1RJTUVfU1RBTVBfSU5UX0VOQUJMRV9NQVNLOworCQkJV1JFRzMyKG1tQ1BfSU5U X0NOVExfUklORzIsIGNwX2ludF9jbnRsKTsKIAkJCWJyZWFrOwogCiAJCX0KIAljYXNlIEFNREdQ VV9JUlFfU1RBVEVfRU5BQkxFOgogCQlpZiAocmluZyA9PSAwKSB7Ci0JCQljcF9pbnRfY250bCA9 IFJSRUczMihDUF9JTlRfQ05UTF9SSU5HMSk7Ci0JCQljcF9pbnRfY250bCB8PSBDUF9JTlRfQ05U TF9SSU5HX19USU1FX1NUQU1QX0lOVF9FTkFCTEVfTUFTSzsKLQkJCVdSRUczMihDUF9JTlRfQ05U TF9SSU5HMSwgY3BfaW50X2NudGwpOworCQkJY3BfaW50X2NudGwgPSBSUkVHMzIobW1DUF9JTlRf Q05UTF9SSU5HMSk7CisJCQljcF9pbnRfY250bCB8PSBDUF9JTlRfQ05UTF9SSU5HMV9fVElNRV9T VEFNUF9JTlRfRU5BQkxFX01BU0s7CisJCQlXUkVHMzIobW1DUF9JTlRfQ05UTF9SSU5HMSwgY3Bf aW50X2NudGwpOwogCQkJYnJlYWs7CiAJCX0gZWxzZSB7Ci0JCQljcF9pbnRfY250bCA9IFJSRUcz MihDUF9JTlRfQ05UTF9SSU5HMik7Ci0JCQljcF9pbnRfY250bCB8PSBDUF9JTlRfQ05UTF9SSU5H X19USU1FX1NUQU1QX0lOVF9FTkFCTEVfTUFTSzsKLQkJCVdSRUczMihDUF9JTlRfQ05UTF9SSU5H MiwgY3BfaW50X2NudGwpOworCQkJY3BfaW50X2NudGwgPSBSUkVHMzIobW1DUF9JTlRfQ05UTF9S SU5HMik7CisJCQljcF9pbnRfY250bCB8PSBDUF9JTlRfQ05UTF9SSU5HMl9fVElNRV9TVEFNUF9J TlRfRU5BQkxFX01BU0s7CisJCQlXUkVHMzIobW1DUF9JTlRfQ05UTF9SSU5HMiwgY3BfaW50X2Nu dGwpOwogCQkJYnJlYWs7CiAKIAkJfQpAQCAtMzA2MSwxNCArMzA1MywxNCBAQCBzdGF0aWMgaW50 IGdmeF92Nl8wX3NldF9wcml2X3JlZ19mYXVsdF9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKIAogCXN3aXRjaCAoc3RhdGUpIHsKIAljYXNlIEFNREdQVV9JUlFfU1RBVEVfRElTQUJM RToKLQkJY3BfaW50X2NudGwgPSBSUkVHMzIoQ1BfSU5UX0NOVExfUklORzApOworCQljcF9pbnRf Y250bCA9IFJSRUczMihtbUNQX0lOVF9DTlRMX1JJTkcwKTsKIAkJY3BfaW50X2NudGwgJj0gfkNQ X0lOVF9DTlRMX1JJTkcwX19QUklWX1JFR19JTlRfRU5BQkxFX01BU0s7Ci0JCVdSRUczMihDUF9J TlRfQ05UTF9SSU5HMCwgY3BfaW50X2NudGwpOworCQlXUkVHMzIobW1DUF9JTlRfQ05UTF9SSU5H MCwgY3BfaW50X2NudGwpOwogCQlicmVhazsKIAljYXNlIEFNREdQVV9JUlFfU1RBVEVfRU5BQkxF OgotCQljcF9pbnRfY250bCA9IFJSRUczMihDUF9JTlRfQ05UTF9SSU5HMCk7CisJCWNwX2ludF9j bnRsID0gUlJFRzMyKG1tQ1BfSU5UX0NOVExfUklORzApOwogCQljcF9pbnRfY250bCB8PSBDUF9J TlRfQ05UTF9SSU5HMF9fUFJJVl9SRUdfSU5UX0VOQUJMRV9NQVNLOwotCQlXUkVHMzIoQ1BfSU5U X0NOVExfUklORzAsIGNwX2ludF9jbnRsKTsKKwkJV1JFRzMyKG1tQ1BfSU5UX0NOVExfUklORzAs IGNwX2ludF9jbnRsKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJYnJlYWs7CkBAIC0zMDg2LDE0 ICszMDc4LDE0IEBAIHN0YXRpYyBpbnQgZ2Z4X3Y2XzBfc2V0X3ByaXZfaW5zdF9mYXVsdF9zdGF0 ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAogCXN3aXRjaCAoc3RhdGUpIHsKIAljYXNl IEFNREdQVV9JUlFfU1RBVEVfRElTQUJMRToKLQkJY3BfaW50X2NudGwgPSBSUkVHMzIoQ1BfSU5U X0NOVExfUklORzApOworCQljcF9pbnRfY250bCA9IFJSRUczMihtbUNQX0lOVF9DTlRMX1JJTkcw KTsKIAkJY3BfaW50X2NudGwgJj0gfkNQX0lOVF9DTlRMX1JJTkcwX19QUklWX0lOU1RSX0lOVF9F TkFCTEVfTUFTSzsKLQkJV1JFRzMyKENQX0lOVF9DTlRMX1JJTkcwLCBjcF9pbnRfY250bCk7CisJ CVdSRUczMihtbUNQX0lOVF9DTlRMX1JJTkcwLCBjcF9pbnRfY250bCk7CiAJCWJyZWFrOwogCWNh c2UgQU1ER1BVX0lSUV9TVEFURV9FTkFCTEU6Ci0JCWNwX2ludF9jbnRsID0gUlJFRzMyKENQX0lO VF9DTlRMX1JJTkcwKTsKKwkJY3BfaW50X2NudGwgPSBSUkVHMzIobW1DUF9JTlRfQ05UTF9SSU5H MCk7CiAJCWNwX2ludF9jbnRsIHw9IENQX0lOVF9DTlRMX1JJTkcwX19QUklWX0lOU1RSX0lOVF9F TkFCTEVfTUFTSzsKLQkJV1JFRzMyKENQX0lOVF9DTlRMX1JJTkcwLCBjcF9pbnRfY250bCk7CisJ CVdSRUczMihtbUNQX0lOVF9DTlRMX1JJTkcwLCBjcF9pbnRfY250bCk7CiAJCWJyZWFrOwogCWRl ZmF1bHQ6CiAJCWJyZWFrOwpAQCAtMzEzMyw3ICszMTI1LDcgQEAgc3RhdGljIGludCBnZnhfdjZf MF9lb3BfaXJxKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQlicmVhazsKIAljYXNlIDE6 CiAJY2FzZSAyOgotCQlhbWRncHVfZmVuY2VfcHJvY2VzcygmYWRldi0+Z2Z4LmNvbXB1dGVfcmlu Z1tlbnRyeS0+cmluZ19pZCAtMV0pOworCQlhbWRncHVfZmVuY2VfcHJvY2VzcygmYWRldi0+Z2Z4 LmNvbXB1dGVfcmluZ1tlbnRyeS0+cmluZ19pZCAtIDFdKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoK IAkJYnJlYWs7Ci0tIAoyLjUuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4Cg==