From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Subject: [PATCH libdrm 4/9] amdgpu: Add struct amdgpu_core_device and amdgpu_core_bo Date: Mon, 24 Jun 2019 18:54:01 +0200 Message-ID: <20190624165406.13682-5-michel@daenzer.net> References: <20190624165406.13682-1-michel@daenzer.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190624165406.13682-1-michel@daenzer.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: amd-gfx@lists.freedesktop.org Cc: Emil Velikov , dri-devel@lists.freedesktop.org List-Id: amd-gfx.lists.freedesktop.org RnJvbTogTWljaGVsIETDpG56ZXIgPG1pY2hlbC5kYWVuemVyQGFtZC5jb20+CgpUaGV5IGNhbiBi ZSByZWZlcmVuY2VkIGJ5IGFueSBudW1iZXIgb2Ygc3RydWN0IGFtZGdwdV9kZXZpY2UvYm8sIHdo aWNoCmFyZSB1c2VkIGZvciBhbWRncHVfZGV2aWNlL2JvX2hhbmRsZSBpbiB0aGUgcHVibGljIEFQ SS4KClRoaXMgYWxsb3dzIGtlZXBpbmcgdHJhY2sgb2YgdGhlIERSTSBmaWxlIGRlc2NyaXB0b3Ig cGFzc2VkIHRvCmFtZGdwdV9kZXZpY2VfaW5pdGlhbGl6ZSBhbmQgdGhlIG9uZSB1c2VkIGZvciBD UyBzdWJtaXNzaW9uIGV0Yy4Kc2VwYXJhdGVseS4gVGhlIGNvcmUgc3RydWN0cyBob2xkIHRoZSBp bmZvcm1hdGlvbiByZWxldmFudCBmb3IgdGhlCmxhdHRlci4KCkJlY2F1c2Ugd2Ugbm93IGFsd2F5 cyBrZWVwIGEgZHVwbGljYXRlIG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IgcGFzc2VkIHRvCmFtZGdw dV9kZXZpY2VfaW5pdGlhbGl6ZSwgd2UgY2FuIHVzZSB0aGF0IGZvciBmbGluaywgYW5kIHdlIG5v IGxvbmdlcgpuZWVkIHRvIGNoZWNrIGl0cyBhdXRoZW50aWNhdGlvbiBzdGF0dXMgKGZsaW5rIGNv dWxkIG5ldmVyIGJlIGV4cGVjdGVkCnRvIHdvcmsgYWZ0ZXIgcGFzc2luZyBhbiB1bmF1dGhlbnRp Y2F0ZWQgZmlsZSBkZXNjcmlwdG9yIHRvCmFtZGdwdV9kZXZpY2VfaW5pdGlhbGl6ZSkuCgpTaWdu ZWQtb2ZmLWJ5OiBNaWNoZWwgRMOkbnplciA8bWljaGVsLmRhZW56ZXJAYW1kLmNvbT4KLS0tCiBh bWRncHUvYW1kZ3B1X2FzaWNfaWQuYyAgICAgICB8ICAgNCArLQogYW1kZ3B1L2FtZGdwdV9iby5j ICAgICAgICAgICAgfCAyNTEgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogYW1k Z3B1L2FtZGdwdV9jcy5jICAgICAgICAgICAgfCAgNjQgKysrKystLS0tCiBhbWRncHUvYW1kZ3B1 X2RldmljZS5jICAgICAgICB8IDIxOSArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogYW1k Z3B1L2FtZGdwdV9ncHVfaW5mby5jICAgICAgfCAgMzUgKystLS0KIGFtZGdwdS9hbWRncHVfaW50 ZXJuYWwuaCAgICAgIHwgIDI3ICsrLS0KIGFtZGdwdS9hbWRncHVfdmFtZ3IuYyAgICAgICAgIHwg ICA5ICstCiBhbWRncHUvYW1kZ3B1X3ZtLmMgICAgICAgICAgICB8ICAgNCArLQogdGVzdHMvYW1k Z3B1L2FtZGdwdV90ZXN0LmMgICAgfCAgIDIgKy0KIHRlc3RzL2FtZGdwdS9ib190ZXN0cy5jICAg ICAgIHwgICAyICstCiB0ZXN0cy9hbWRncHUvY3NfdGVzdHMuYyAgICAgICB8ICAgOCArLQogdGVz dHMvYW1kZ3B1L2RlYWRsb2NrX3Rlc3RzLmMgfCAgIDggKy0KIHRlc3RzL2FtZGdwdS91dmRfZW5j X3Rlc3RzLmMgIHwgICAyICstCiB0ZXN0cy9hbWRncHUvdmNlX3Rlc3RzLmMgICAgICB8ICAxMiAr LQogdGVzdHMvYW1kZ3B1L3Zjbl90ZXN0cy5jICAgICAgfCAgIDQgKy0KIHRlc3RzL2FtZGdwdS92 bV90ZXN0cy5jICAgICAgIHwgICAyICstCiAxNiBmaWxlcyBjaGFuZ2VkLCAzNjAgaW5zZXJ0aW9u cygrKSwgMjkzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FtZGdwdS9hbWRncHVfYXNpY19p ZC5jIGIvYW1kZ3B1L2FtZGdwdV9hc2ljX2lkLmMKaW5kZXggYTUwMDdmZmMuLjM1NmM4YTU5IDEw MDY0NAotLS0gYS9hbWRncHUvYW1kZ3B1X2FzaWNfaWQuYworKysgYi9hbWRncHUvYW1kZ3B1X2Fz aWNfaWQuYwpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgImFtZGdwdV9kcm0uaCIKICNpbmNs dWRlICJhbWRncHVfaW50ZXJuYWwuaCIKIAotc3RhdGljIGludCBwYXJzZV9vbmVfbGluZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpsaW5lKQorc3RhdGljIGludCBwYXJz ZV9vbmVfbGluZShzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmxp bmUpCiB7CiAJY2hhciAqYnVmLCAqc2F2ZXB0cjsKIAljaGFyICpzX2RpZDsKQEAgLTEwNCw3ICsx MDQsNyBAQCBvdXQ6CiAJcmV0dXJuIHI7CiB9CiAKLXZvaWQgYW1kZ3B1X3BhcnNlX2FzaWNfaWRz KHN0cnVjdCBhbWRncHVfZGV2aWNlICpkZXYpCit2b2lkIGFtZGdwdV9wYXJzZV9hc2ljX2lkcyhz dHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlICpkZXYpCiB7CiAJRklMRSAqZnA7CiAJY2hhciAqbGlu ZSA9IE5VTEw7CmRpZmYgLS1naXQgYS9hbWRncHUvYW1kZ3B1X2JvLmMgYi9hbWRncHUvYW1kZ3B1 X2JvLmMKaW5kZXggNWJkYjhmZTguLjdmZWMxZjE1IDEwMDY0NAotLS0gYS9hbWRncHUvYW1kZ3B1 X2JvLmMKKysrIGIvYW1kZ3B1L2FtZGdwdV9iby5jCkBAIC00NywxNSArNDcsMTUgQEAgc3RhdGlj IGludCBhbWRncHVfY2xvc2Vfa21zX2hhbmRsZShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSkKIAly ZXR1cm4gZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9HRU1fQ0xPU0UsICZhcmdzKTsKIH0KIAotc3Rh dGljIGludCBhbWRncHVfYm9fY3JlYXRlKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKLQkJCSAg ICB1aW50NjRfdCBzaXplLAotCQkJICAgIHVpbnQzMl90IGhhbmRsZSwKLQkJCSAgICBhbWRncHVf Ym9faGFuZGxlICpidWZfaGFuZGxlKQorc3RhdGljIGludCBhbWRncHVfY29yZV9ib19jcmVhdGUo c3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAqZGV2LAorCQkJCSB1aW50NjRfdCBzaXplLAorCQkJ CSB1aW50MzJfdCBoYW5kbGUsCisJCQkJIHN0cnVjdCBhbWRncHVfY29yZV9ibyAqKm91dF9ibykK IHsKLQlzdHJ1Y3QgYW1kZ3B1X2JvICpibzsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfYm8gKmJvOwog CWludCByOwogCi0JYm8gPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBhbWRncHVfYm8pKTsKKwli byA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGFtZGdwdV9jb3JlX2JvKSk7CiAJaWYgKCFibykK IAkJcmV0dXJuIC1FTk9NRU07CiAKQEAgLTY2LDE5ICs2Niw2NCBAQCBzdGF0aWMgaW50IGFtZGdw dV9ib19jcmVhdGUoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAogCX0KIAogCWF0b21pY19zZXQo JmJvLT5yZWZjb3VudCwgMSk7Ci0JYm8tPmRldiA9IGRldjsKIAliby0+YWxsb2Nfc2l6ZSA9IHNp emU7CiAJYm8tPmhhbmRsZSA9IGhhbmRsZTsKIAlwdGhyZWFkX211dGV4X2luaXQoJmJvLT5jcHVf YWNjZXNzX211dGV4LCBOVUxMKTsKIAotCSpidWZfaGFuZGxlID0gYm87CisJKm91dF9ibyA9IGJv OwogCXJldHVybiAwOwogfQogCi1kcm1fcHVibGljIGludCBhbWRncHVfYm9fYWxsb2MoYW1kZ3B1 X2RldmljZV9oYW5kbGUgZGV2LAorc3RhdGljIGludCBhbWRncHVfYm9fY3JlYXRlKGFtZGdwdV9k ZXZpY2VfaGFuZGxlIHVzZXJfZGV2LAorCQkJICAgIHVpbnQ2NF90IHNpemUsCisJCQkgICAgdWlu dDMyX3QgaGFuZGxlLAorCQkJICAgIGFtZGdwdV9ib19oYW5kbGUgKmJ1Zl9oYW5kbGUpCit7CisJ c3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAqZGV2ID0gdXNlcl9kZXYtPmNvcmU7CisJc3RydWN0 IGFtZGdwdV9ibyAqdXNlcl9ibyA9IE5VTEw7CisJc3RydWN0IGFtZGdwdV9jb3JlX2JvICpibzsK KwlpbnQgcjsKKworCWJvID0gaGFuZGxlX3RhYmxlX2xvb2t1cCgmZGV2LT5ib19oYW5kbGVzLCBo YW5kbGUpOworCisJaWYgKGJvKSB7CisJCWZvciAodXNlcl9ibyA9IGJvLT51c2VyX2JvczsgdXNl cl9ibzsgdXNlcl9ibyA9IHVzZXJfYm8tPm5leHQpIHsKKwkJCWlmICh1c2VyX2JvLT5kZXYgPT0g dXNlcl9kZXYpIHsKKwkJCQkvKiBSZS11c2UgZXhpc3RpbmcgYnVmZmVyICovCisJCQkJYXRvbWlj X2luYygmdXNlcl9iby0+cmVmY291bnQpOworCQkJCXIgPSAwOworCQkJCWdvdG8gb3V0OworCQkJ fQorCQl9CisJCWF0b21pY19pbmMoJmJvLT5yZWZjb3VudCk7CisJfSBlbHNlIHsKKwkJciA9IGFt ZGdwdV9jb3JlX2JvX2NyZWF0ZShkZXYsIHNpemUsIGhhbmRsZSwgJmJvKTsKKwkJaWYgKHIpCisJ CQlnb3RvIG91dDsKKwl9CisKKwl1c2VyX2JvID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgYW1k Z3B1X2JvKSk7CisJaWYgKCF1c2VyX2JvKSB7CisJCXIgPSAtRU5PTUVNOworCQlnb3RvIG91dDsK Kwl9CisKKwlhdG9taWNfc2V0KCZ1c2VyX2JvLT5yZWZjb3VudCwgMSk7CisJdXNlcl9iby0+bmV4 dCA9IGJvLT51c2VyX2JvczsKKwliby0+dXNlcl9ib3MgPSB1c2VyX2JvOworCXVzZXJfYm8tPmNv cmUgPSBibzsKKwl1c2VyX2JvLT5kZXYgPSB1c2VyX2RldjsKKworb3V0OgorCSpidWZfaGFuZGxl ID0gdXNlcl9ibzsKKwlyZXR1cm4gcjsKK30KKworZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2JvX2Fs bG9jKGFtZGdwdV9kZXZpY2VfaGFuZGxlIHVzZXJfZGV2LAogCQkJICAgICAgIHN0cnVjdCBhbWRn cHVfYm9fYWxsb2NfcmVxdWVzdCAqYWxsb2NfYnVmZmVyLAogCQkJICAgICAgIGFtZGdwdV9ib19o YW5kbGUgKmJ1Zl9oYW5kbGUpCiB7CisJc3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAqZGV2ID0g dXNlcl9kZXYtPmNvcmU7CiAJdW5pb24gZHJtX2FtZGdwdV9nZW1fY3JlYXRlIGFyZ3M7CiAJaW50 IHI7CiAKQEAgLTk3LDggKzE0Miw4IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19hbGxvYyhh bWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCiAJCWdvdG8gb3V0OwogCiAJcHRocmVhZF9tdXRleF9s b2NrKCZkZXYtPmJvX3RhYmxlX211dGV4KTsKLQlyID0gYW1kZ3B1X2JvX2NyZWF0ZShkZXYsIGFs bG9jX2J1ZmZlci0+YWxsb2Nfc2l6ZSwgYXJncy5vdXQuaGFuZGxlLAotCQkJICAgICBidWZfaGFu ZGxlKTsKKwlyID0gYW1kZ3B1X2JvX2NyZWF0ZSh1c2VyX2RldiwgYWxsb2NfYnVmZmVyLT5hbGxv Y19zaXplLAorCQkJICAgICBhcmdzLm91dC5oYW5kbGUsIGJ1Zl9oYW5kbGUpOwogCXB0aHJlYWRf bXV0ZXhfdW5sb2NrKCZkZXYtPmJvX3RhYmxlX211dGV4KTsKIAlpZiAocikgewogCQlhbWRncHVf Y2xvc2Vfa21zX2hhbmRsZShkZXYtPmZkLCBhcmdzLm91dC5oYW5kbGUpOwpAQCAtMTA4LDkgKzE1 MywxMCBAQCBvdXQ6CiAJcmV0dXJuIHI7CiB9CiAKLWRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19z ZXRfbWV0YWRhdGEoYW1kZ3B1X2JvX2hhbmRsZSBibywKK2RybV9wdWJsaWMgaW50IGFtZGdwdV9i b19zZXRfbWV0YWRhdGEoYW1kZ3B1X2JvX2hhbmRsZSB1c2VyX2JvLAogCQkJCSAgICAgIHN0cnVj dCBhbWRncHVfYm9fbWV0YWRhdGEgKmluZm8pCiB7CisJc3RydWN0IGFtZGdwdV9jb3JlX2JvICpi byA9IHVzZXJfYm8tPmNvcmU7CiAJc3RydWN0IGRybV9hbWRncHVfZ2VtX21ldGFkYXRhIGFyZ3Mg PSB7fTsKIAogCWFyZ3MuaGFuZGxlID0gYm8tPmhhbmRsZTsKQEAgLTEyNiwxNyArMTcyLDE5IEBA IGRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19zZXRfbWV0YWRhdGEoYW1kZ3B1X2JvX2hhbmRsZSBi bywKIAkJbWVtY3B5KGFyZ3MuZGF0YS5kYXRhLCBpbmZvLT51bWRfbWV0YWRhdGEsIGluZm8tPnNp emVfbWV0YWRhdGEpOwogCX0KIAotCXJldHVybiBkcm1Db21tYW5kV3JpdGVSZWFkKGJvLT5kZXYt PmZkLAorCXJldHVybiBkcm1Db21tYW5kV3JpdGVSZWFkKHVzZXJfYm8tPmRldi0+Y29yZS0+ZmQs CiAJCQkJICAgRFJNX0FNREdQVV9HRU1fTUVUQURBVEEsCiAJCQkJICAgJmFyZ3MsIHNpemVvZihh cmdzKSk7CiB9CiAKLWRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19xdWVyeV9pbmZvKGFtZGdwdV9i b19oYW5kbGUgYm8sCitkcm1fcHVibGljIGludCBhbWRncHVfYm9fcXVlcnlfaW5mbyhhbWRncHVf Ym9faGFuZGxlIHVzZXJfYm8sCiAJCQkJICAgIHN0cnVjdCBhbWRncHVfYm9faW5mbyAqaW5mbykK IHsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfYm8gKmJvID0gdXNlcl9iby0+Y29yZTsKIAlzdHJ1Y3Qg ZHJtX2FtZGdwdV9nZW1fbWV0YWRhdGEgbWV0YWRhdGEgPSB7fTsKIAlzdHJ1Y3QgZHJtX2FtZGdw dV9nZW1fY3JlYXRlX2luIGJvX2luZm8gPSB7fTsKIAlzdHJ1Y3QgZHJtX2FtZGdwdV9nZW1fb3Ag Z2VtX29wID0ge307CisJaW50IGZkID0gdXNlcl9iby0+ZGV2LT5jb3JlLT5mZDsKIAlpbnQgcjsK IAogCS8qIFZhbGlkYXRlIHRoZSBCTyBwYXNzZWQgaW4gKi8KQEAgLTE0Nyw4ICsxOTUsOCBAQCBk cm1fcHVibGljIGludCBhbWRncHVfYm9fcXVlcnlfaW5mbyhhbWRncHVfYm9faGFuZGxlIGJvLAog CW1ldGFkYXRhLmhhbmRsZSA9IGJvLT5oYW5kbGU7CiAJbWV0YWRhdGEub3AgPSBBTURHUFVfR0VN X01FVEFEQVRBX09QX0dFVF9NRVRBREFUQTsKIAotCXIgPSBkcm1Db21tYW5kV3JpdGVSZWFkKGJv LT5kZXYtPmZkLCBEUk1fQU1ER1BVX0dFTV9NRVRBREFUQSwKLQkJCQkmbWV0YWRhdGEsIHNpemVv ZihtZXRhZGF0YSkpOworCXIgPSBkcm1Db21tYW5kV3JpdGVSZWFkKGZkLCBEUk1fQU1ER1BVX0dF TV9NRVRBREFUQSwgJm1ldGFkYXRhLAorCQkJCXNpemVvZihtZXRhZGF0YSkpOwogCWlmIChyKQog CQlyZXR1cm4gcjsKIApAQCAtMTYxLDggKzIwOSw3IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9i b19xdWVyeV9pbmZvKGFtZGdwdV9ib19oYW5kbGUgYm8sCiAJZ2VtX29wLm9wID0gQU1ER1BVX0dF TV9PUF9HRVRfR0VNX0NSRUFURV9JTkZPOwogCWdlbV9vcC52YWx1ZSA9ICh1aW50cHRyX3QpJmJv X2luZm87CiAKLQlyID0gZHJtQ29tbWFuZFdyaXRlUmVhZChiby0+ZGV2LT5mZCwgRFJNX0FNREdQ VV9HRU1fT1AsCi0JCQkJJmdlbV9vcCwgc2l6ZW9mKGdlbV9vcCkpOworCXIgPSBkcm1Db21tYW5k V3JpdGVSZWFkKGZkLCBEUk1fQU1ER1BVX0dFTV9PUCwgJmdlbV9vcCwgc2l6ZW9mKGdlbV9vcCkp OwogCWlmIChyKQogCQlyZXR1cm4gcjsKIApAQCAtMTgyLDI5ICsyMjksMzAgQEAgZHJtX3B1Ymxp YyBpbnQgYW1kZ3B1X2JvX3F1ZXJ5X2luZm8oYW1kZ3B1X2JvX2hhbmRsZSBibywKIAlyZXR1cm4g MDsKIH0KIAotc3RhdGljIGludCBhbWRncHVfYm9fZXhwb3J0X2ZsaW5rKGFtZGdwdV9ib19oYW5k bGUgYm8pCitzdGF0aWMgaW50IGFtZGdwdV9ib19leHBvcnRfZmxpbmsoYW1kZ3B1X2JvX2hhbmRs ZSB1c2VyX2JvKQogeworCXN0cnVjdCBhbWRncHVfY29yZV9kZXZpY2UgKmRldiA9IHVzZXJfYm8t PmRldi0+Y29yZTsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfYm8gKmJvID0gdXNlcl9iby0+Y29yZTsK KwlpbnQgdXNlcl9mZCA9IHVzZXJfYm8tPmRldi0+dXNlcl9mZDsKIAlzdHJ1Y3QgZHJtX2dlbV9m bGluayBmbGluazsKIAlpbnQgZmQsIGRtYV9mZDsKIAl1aW50MzJfdCBoYW5kbGU7CiAJaW50IHI7 CiAKLQlmZCA9IGJvLT5kZXYtPmZkOworCWZkID0gZGV2LT5mZDsKIAloYW5kbGUgPSBiby0+aGFu ZGxlOwogCWlmIChiby0+ZmxpbmtfbmFtZSkKIAkJcmV0dXJuIDA7CiAKLQotCWlmIChiby0+ZGV2 LT5mbGlua19mZCAhPSBiby0+ZGV2LT5mZCkgewotCQlyID0gZHJtUHJpbWVIYW5kbGVUb0ZEKGJv LT5kZXYtPmZkLCBiby0+aGFuZGxlLCBEUk1fQ0xPRVhFQywKLQkJCQkgICAgICAgJmRtYV9mZCk7 CisJaWYgKHVzZXJfZmQgIT0gZmQpIHsKKwkJciA9IGRybVByaW1lSGFuZGxlVG9GRChmZCwgYm8t PmhhbmRsZSwgRFJNX0NMT0VYRUMsICZkbWFfZmQpOwogCQlpZiAoIXIpIHsKLQkJCXIgPSBkcm1Q cmltZUZEVG9IYW5kbGUoYm8tPmRldi0+ZmxpbmtfZmQsIGRtYV9mZCwgJmhhbmRsZSk7CisJCQly ID0gZHJtUHJpbWVGRFRvSGFuZGxlKHVzZXJfZmQsIGRtYV9mZCwgJmhhbmRsZSk7CiAJCQljbG9z ZShkbWFfZmQpOwogCQl9CiAJCWlmIChyKQogCQkJcmV0dXJuIHI7Ci0JCWZkID0gYm8tPmRldi0+ ZmxpbmtfZmQ7CisJCWZkID0gdXNlcl9mZDsKIAl9CiAJbWVtc2V0KCZmbGluaywgMCwgc2l6ZW9m KGZsaW5rKSk7CiAJZmxpbmsuaGFuZGxlID0gaGFuZGxlOwpAQCAtMjE1LDI1ICsyNjMsMjYgQEAg c3RhdGljIGludCBhbWRncHVfYm9fZXhwb3J0X2ZsaW5rKGFtZGdwdV9ib19oYW5kbGUgYm8pCiAK IAliby0+ZmxpbmtfbmFtZSA9IGZsaW5rLm5hbWU7CiAKLQlpZiAoYm8tPmRldi0+ZmxpbmtfZmQg IT0gYm8tPmRldi0+ZmQpCi0JCWFtZGdwdV9jbG9zZV9rbXNfaGFuZGxlKGJvLT5kZXYtPmZsaW5r X2ZkLCBoYW5kbGUpOworCWlmICh1c2VyX2ZkICE9IGRldi0+ZmQpCisJCWFtZGdwdV9jbG9zZV9r bXNfaGFuZGxlKHVzZXJfZmQsIGhhbmRsZSk7CiAKLQlwdGhyZWFkX211dGV4X2xvY2soJmJvLT5k ZXYtPmJvX3RhYmxlX211dGV4KTsKLQlyID0gaGFuZGxlX3RhYmxlX2luc2VydCgmYm8tPmRldi0+ Ym9fZmxpbmtfbmFtZXMsIGJvLT5mbGlua19uYW1lLCBibyk7Ci0JcHRocmVhZF9tdXRleF91bmxv Y2soJmJvLT5kZXYtPmJvX3RhYmxlX211dGV4KTsKKwlwdGhyZWFkX211dGV4X2xvY2soJmRldi0+ Ym9fdGFibGVfbXV0ZXgpOworCXIgPSBoYW5kbGVfdGFibGVfaW5zZXJ0KCZkZXYtPmJvX2ZsaW5r X25hbWVzLCBiby0+ZmxpbmtfbmFtZSwgYm8pOworCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYt PmJvX3RhYmxlX211dGV4KTsKIAogCXJldHVybiByOwogfQogCi1kcm1fcHVibGljIGludCBhbWRn cHVfYm9fZXhwb3J0KGFtZGdwdV9ib19oYW5kbGUgYm8sCitkcm1fcHVibGljIGludCBhbWRncHVf Ym9fZXhwb3J0KGFtZGdwdV9ib19oYW5kbGUgdXNlcl9ibywKIAkJCQllbnVtIGFtZGdwdV9ib19o YW5kbGVfdHlwZSB0eXBlLAogCQkJCXVpbnQzMl90ICpzaGFyZWRfaGFuZGxlKQogeworCXN0cnVj dCBhbWRncHVfY29yZV9ibyAqYm8gPSB1c2VyX2JvLT5jb3JlOwogCWludCByOwogCiAJc3dpdGNo ICh0eXBlKSB7CiAJY2FzZSBhbWRncHVfYm9faGFuZGxlX3R5cGVfZ2VtX2ZsaW5rX25hbWU6Ci0J CXIgPSBhbWRncHVfYm9fZXhwb3J0X2ZsaW5rKGJvKTsKKwkJciA9IGFtZGdwdV9ib19leHBvcnRf ZmxpbmsodXNlcl9ibyk7CiAJCWlmIChyKQogCQkJcmV0dXJuIHI7CiAKQEAgLTI0NiwyMSArMjk1 LDI0IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19leHBvcnQoYW1kZ3B1X2JvX2hhbmRsZSBi bywKIAkJcmV0dXJuIDA7CiAKIAljYXNlIGFtZGdwdV9ib19oYW5kbGVfdHlwZV9kbWFfYnVmX2Zk OgotCQlyZXR1cm4gZHJtUHJpbWVIYW5kbGVUb0ZEKGJvLT5kZXYtPmZkLCBiby0+aGFuZGxlLAor CQlyZXR1cm4gZHJtUHJpbWVIYW5kbGVUb0ZEKHVzZXJfYm8tPmRldi0+Y29yZS0+ZmQsIGJvLT5o YW5kbGUsCiAJCQkJCSAgRFJNX0NMT0VYRUMgfCBEUk1fUkRXUiwKIAkJCQkJICAoaW50KilzaGFy ZWRfaGFuZGxlKTsKIAl9CiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLWRybV9wdWJsaWMgaW50IGFt ZGdwdV9ib19pbXBvcnQoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAorZHJtX3B1YmxpYyBpbnQg YW1kZ3B1X2JvX2ltcG9ydChhbWRncHVfZGV2aWNlX2hhbmRsZSB1c2VyX2RldiwKIAkJCQllbnVt IGFtZGdwdV9ib19oYW5kbGVfdHlwZSB0eXBlLAogCQkJCXVpbnQzMl90IHNoYXJlZF9oYW5kbGUs Ci0JCSAgICAgc3RydWN0IGFtZGdwdV9ib19pbXBvcnRfcmVzdWx0ICpvdXRwdXQpCisJCQkJc3Ry dWN0IGFtZGdwdV9ib19pbXBvcnRfcmVzdWx0ICpvdXRwdXQpCiB7CisJc3RydWN0IGFtZGdwdV9j b3JlX2RldmljZSAqZGV2ID0gdXNlcl9kZXYtPmNvcmU7CiAJc3RydWN0IGRybV9nZW1fb3BlbiBv cGVuX2FyZyA9IHt9OwotCXN0cnVjdCBhbWRncHVfYm8gKmJvID0gTlVMTDsKKwlzdHJ1Y3QgYW1k Z3B1X2JvICp1c2VyX2JvID0gTlVMTDsKIAl1aW50MzJfdCBoYW5kbGUgPSAwLCBmbGlua19uYW1l ID0gMDsKKwlpbnQgdXNlcl9mZCA9IHVzZXJfZGV2LT51c2VyX2ZkOworCXN0cnVjdCBhbWRncHVf Y29yZV9ibyAqYm87CiAJdWludDY0X3QgYWxsb2Nfc2l6ZSA9IDA7CiAJaW50IHIgPSAwOwogCWlu dCBkbWFfZmQ7CkBAIC0zMTMsMzcgKzM2NSwzMiBAQCBkcm1fcHVibGljIGludCBhbWRncHVfYm9f aW1wb3J0KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKIAl9CiAKIAlpZiAoYm8pIHsKLQkJLyog VGhlIGJ1ZmZlciBhbHJlYWR5IGV4aXN0cywganVzdCBidW1wIHRoZSByZWZjb3VudC4gKi8KLQkJ YXRvbWljX2luYygmYm8tPnJlZmNvdW50KTsKLQkJcHRocmVhZF9tdXRleF91bmxvY2soJmRldi0+ Ym9fdGFibGVfbXV0ZXgpOwotCi0JCW91dHB1dC0+YnVmX2hhbmRsZSA9IGJvOwotCQlvdXRwdXQt PmFsbG9jX3NpemUgPSBiby0+YWxsb2Nfc2l6ZTsKLQkJcmV0dXJuIDA7CisJCWhhbmRsZSA9IGJv LT5oYW5kbGU7CisJCWFsbG9jX3NpemUgPSBiby0+YWxsb2Nfc2l6ZTsKKwkJZ290byBib19jcmVh dGU7CiAJfQogCiAJLyogT3BlbiB0aGUgaGFuZGxlLiAqLwogCXN3aXRjaCAodHlwZSkgewogCWNh c2UgYW1kZ3B1X2JvX2hhbmRsZV90eXBlX2dlbV9mbGlua19uYW1lOgogCQlvcGVuX2FyZy5uYW1l ID0gc2hhcmVkX2hhbmRsZTsKLQkJciA9IGRybUlvY3RsKGRldi0+ZmxpbmtfZmQsIERSTV9JT0NU TF9HRU1fT1BFTiwgJm9wZW5fYXJnKTsKKwkJciA9IGRybUlvY3RsKHVzZXJfZmQsIERSTV9JT0NU TF9HRU1fT1BFTiwgJm9wZW5fYXJnKTsKIAkJaWYgKHIpCiAJCQlnb3RvIHVubG9jazsKIAogCQlm bGlua19uYW1lID0gc2hhcmVkX2hhbmRsZTsKIAkJaGFuZGxlID0gb3Blbl9hcmcuaGFuZGxlOwog CQlhbGxvY19zaXplID0gb3Blbl9hcmcuc2l6ZTsKLQkJaWYgKGRldi0+ZmxpbmtfZmQgIT0gZGV2 LT5mZCkgewotCQkJciA9IGRybVByaW1lSGFuZGxlVG9GRChkZXYtPmZsaW5rX2ZkLCBoYW5kbGUs Ci0JCQkJCSAgICAgICBEUk1fQ0xPRVhFQywgJmRtYV9mZCk7CisJCWlmICh1c2VyX2ZkICE9IGRl di0+ZmQpIHsKKwkJCXIgPSBkcm1QcmltZUhhbmRsZVRvRkQodXNlcl9mZCwgaGFuZGxlLCBEUk1f Q0xPRVhFQywKKwkJCQkJICAgICAgICZkbWFfZmQpOwogCQkJaWYgKHIpCiAJCQkJZ290byBmcmVl X2JvX2hhbmRsZTsKIAkJCXIgPSBkcm1QcmltZUZEVG9IYW5kbGUoZGV2LT5mZCwgZG1hX2ZkLCAm aGFuZGxlKTsKIAkJCWNsb3NlKGRtYV9mZCk7CiAJCQlpZiAocikKIAkJCQlnb3RvIGZyZWVfYm9f aGFuZGxlOwotCQkJciA9IGFtZGdwdV9jbG9zZV9rbXNfaGFuZGxlKGRldi0+ZmxpbmtfZmQsCi0J CQkJCQkgICAgb3Blbl9hcmcuaGFuZGxlKTsKKwkJCXIgPSBhbWRncHVfY2xvc2Vfa21zX2hhbmRs ZSh1c2VyX2ZkLCBvcGVuX2FyZy5oYW5kbGUpOwogCQkJaWYgKHIpCiAJCQkJZ290byBmcmVlX2Jv X2hhbmRsZTsKIAkJfQpAQCAtMzYwLDExICs0MDcsMTMgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1 X2JvX2ltcG9ydChhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCiAJCWFzc2VydCgwKTsgLyogdW5y ZWFjaGFibGUgKi8KIAl9CiAKK2JvX2NyZWF0ZToKIAkvKiBJbml0aWFsaXplIGl0LiAqLwotCXIg PSBhbWRncHVfYm9fY3JlYXRlKGRldiwgYWxsb2Nfc2l6ZSwgaGFuZGxlLCAmYm8pOworCXIgPSBh bWRncHVfYm9fY3JlYXRlKHVzZXJfZGV2LCBhbGxvY19zaXplLCBoYW5kbGUsICZ1c2VyX2JvKTsK IAlpZiAocikKIAkJZ290byBmcmVlX2JvX2hhbmRsZTsKIAorCWJvID0gdXNlcl9iby0+Y29yZTsK IAlpZiAoZmxpbmtfbmFtZSkgewogCQliby0+ZmxpbmtfbmFtZSA9IGZsaW5rX25hbWU7CiAJCXIg PSBoYW5kbGVfdGFibGVfaW5zZXJ0KCZkZXYtPmJvX2ZsaW5rX25hbWVzLCBmbGlua19uYW1lLApA QCAtMzc0LDE3ICs0MjMsMTcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2JvX2ltcG9ydChhbWRn cHVfZGV2aWNlX2hhbmRsZSBkZXYsCiAKIAl9CiAKLQlvdXRwdXQtPmJ1Zl9oYW5kbGUgPSBibzsK KwlvdXRwdXQtPmJ1Zl9oYW5kbGUgPSB1c2VyX2JvOwogCW91dHB1dC0+YWxsb2Nfc2l6ZSA9IGJv LT5hbGxvY19zaXplOwogCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYtPmJvX3RhYmxlX211dGV4 KTsKIAlyZXR1cm4gMDsKIAogZnJlZV9ib19oYW5kbGU6CiAJaWYgKGZsaW5rX25hbWUgJiYgb3Bl bl9hcmcuaGFuZGxlKQotCQlhbWRncHVfY2xvc2Vfa21zX2hhbmRsZShkZXYtPmZsaW5rX2ZkLCBv cGVuX2FyZy5oYW5kbGUpOworCQlhbWRncHVfY2xvc2Vfa21zX2hhbmRsZSh1c2VyX2ZkLCBvcGVu X2FyZy5oYW5kbGUpOwogCi0JaWYgKGJvKQotCQlhbWRncHVfYm9fZnJlZShibyk7CisJaWYgKHVz ZXJfYm8pCisJCWFtZGdwdV9ib19mcmVlKHVzZXJfYm8pOwogCWVsc2UKIAkJYW1kZ3B1X2Nsb3Nl X2ttc19oYW5kbGUoZGV2LT5mZCwgaGFuZGxlKTsKIHVubG9jazoKQEAgLTM5MiwxNCArNDQxLDEw IEBAIHVubG9jazoKIAlyZXR1cm4gcjsKIH0KIAotZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2JvX2Zy ZWUoYW1kZ3B1X2JvX2hhbmRsZSBidWZfaGFuZGxlKQorc3RhdGljIHZvaWQgYW1kZ3B1X2NvcmVf Ym9fZnJlZShzdHJ1Y3QgYW1kZ3B1X2JvICp1c2VyX2JvKQogewotCXN0cnVjdCBhbWRncHVfZGV2 aWNlICpkZXY7Ci0Jc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBidWZfaGFuZGxlOwotCi0JYXNzZXJ0 KGJvICE9IE5VTEwpOwotCWRldiA9IGJvLT5kZXY7Ci0JcHRocmVhZF9tdXRleF9sb2NrKCZkZXYt PmJvX3RhYmxlX211dGV4KTsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlICpkZXYgPSB1c2Vy X2JvLT5kZXYtPmNvcmU7CisJc3RydWN0IGFtZGdwdV9jb3JlX2JvICpibyA9IHVzZXJfYm8tPmNv cmU7CiAKIAlpZiAodXBkYXRlX3JlZmVyZW5jZXMoJmJvLT5yZWZjb3VudCwgTlVMTCkpIHsKIAkJ LyogUmVtb3ZlIHRoZSBidWZmZXIgZnJvbSB0aGUgaGFzaCB0YWJsZXMuICovCkBAIC00MTIsMTIg KzQ1NywzOSBAQCBkcm1fcHVibGljIGludCBhbWRncHVfYm9fZnJlZShhbWRncHVfYm9faGFuZGxl IGJ1Zl9oYW5kbGUpCiAJCS8qIFJlbGVhc2UgQ1BVIGFjY2Vzcy4gKi8KIAkJaWYgKGJvLT5jcHVf bWFwX2NvdW50ID4gMCkgewogCQkJYm8tPmNwdV9tYXBfY291bnQgPSAxOwotCQkJYW1kZ3B1X2Jv X2NwdV91bm1hcChibyk7CisJCQlhbWRncHVfYm9fY3B1X3VubWFwKHVzZXJfYm8pOwogCQl9CiAK IAkJYW1kZ3B1X2Nsb3NlX2ttc19oYW5kbGUoZGV2LT5mZCwgYm8tPmhhbmRsZSk7CiAJCXB0aHJl YWRfbXV0ZXhfZGVzdHJveSgmYm8tPmNwdV9hY2Nlc3NfbXV0ZXgpOwogCQlmcmVlKGJvKTsKKwl9 IGVsc2UgaWYgKGJvLT51c2VyX2JvcyA9PSB1c2VyX2JvKSB7CisJCWJvLT51c2VyX2JvcyA9IHVz ZXJfYm8tPm5leHQ7CisJfSBlbHNlIHsKKwkJc3RydWN0IGFtZGdwdV9ibyAqaXRlcjsKKworCQlm b3IgKGl0ZXIgPSBiby0+dXNlcl9ib3M7IGl0ZXItPm5leHQ7IGl0ZXIgPSBpdGVyLT5uZXh0KSB7 CisJCQlpZiAoaXRlci0+bmV4dCA9PSB1c2VyX2JvKSB7CisJCQkJaXRlci0+bmV4dCA9IHVzZXJf Ym8tPm5leHQ7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9Cit9CisKK2RybV9wdWJsaWMgaW50 IGFtZGdwdV9ib19mcmVlKGFtZGdwdV9ib19oYW5kbGUgYnVmX2hhbmRsZSkKK3sKKwlzdHJ1Y3Qg YW1kZ3B1X2JvICp1c2VyX2JvID0gYnVmX2hhbmRsZTsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2 aWNlICpkZXY7CisKKwlhc3NlcnQodXNlcl9ibyAhPSBOVUxMKTsKKwlkZXYgPSB1c2VyX2JvLT5k ZXYtPmNvcmU7CisKKwlwdGhyZWFkX211dGV4X2xvY2soJmRldi0+Ym9fdGFibGVfbXV0ZXgpOwor CisJaWYgKHVwZGF0ZV9yZWZlcmVuY2VzKCZ1c2VyX2JvLT5yZWZjb3VudCwgTlVMTCkpIHsKKwkJ YW1kZ3B1X2NvcmVfYm9fZnJlZSh1c2VyX2JvKTsKKwkJZnJlZSh1c2VyX2JvKTsKIAl9CiAKIAlw dGhyZWFkX211dGV4X3VubG9jaygmZGV2LT5ib190YWJsZV9tdXRleCk7CkBAIC00MzAsOCArNTAy LDEwIEBAIGRybV9wdWJsaWMgdm9pZCBhbWRncHVfYm9faW5jX3JlZihhbWRncHVfYm9faGFuZGxl IGJvKQogCWF0b21pY19pbmMoJmJvLT5yZWZjb3VudCk7CiB9CiAKLWRybV9wdWJsaWMgaW50IGFt ZGdwdV9ib19jcHVfbWFwKGFtZGdwdV9ib19oYW5kbGUgYm8sIHZvaWQgKipjcHUpCitkcm1fcHVi bGljIGludCBhbWRncHVfYm9fY3B1X21hcChhbWRncHVfYm9faGFuZGxlIHVzZXJfYm8sIHZvaWQg KipjcHUpCiB7CisJc3RydWN0IGFtZGdwdV9jb3JlX2JvICpibyA9IHVzZXJfYm8tPmNvcmU7CisJ aW50IGZkID0gdXNlcl9iby0+ZGV2LT5jb3JlLT5mZDsKIAl1bmlvbiBkcm1fYW1kZ3B1X2dlbV9t bWFwIGFyZ3M7CiAJdm9pZCAqcHRyOwogCWludCByOwpAQCAtNDU1LDggKzUyOSw3IEBAIGRybV9w dWJsaWMgaW50IGFtZGdwdV9ib19jcHVfbWFwKGFtZGdwdV9ib19oYW5kbGUgYm8sIHZvaWQgKipj cHUpCiAJICogVGhlIGtlcm5lbCBkcml2ZXIgaWdub3JlcyB0aGUgb2Zmc2V0IGFuZCBzaXplIHBh cmFtZXRlcnMuICovCiAJYXJncy5pbi5oYW5kbGUgPSBiby0+aGFuZGxlOwogCi0JciA9IGRybUNv bW1hbmRXcml0ZVJlYWQoYm8tPmRldi0+ZmQsIERSTV9BTURHUFVfR0VNX01NQVAsICZhcmdzLAot CQkJCXNpemVvZihhcmdzKSk7CisJciA9IGRybUNvbW1hbmRXcml0ZVJlYWQoZmQsIERSTV9BTURH UFVfR0VNX01NQVAsICZhcmdzLCBzaXplb2YoYXJncykpOwogCWlmIChyKSB7CiAJCXB0aHJlYWRf bXV0ZXhfdW5sb2NrKCZiby0+Y3B1X2FjY2Vzc19tdXRleCk7CiAJCXJldHVybiByOwpAQCAtNDY0 LDcgKzUzNyw3IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19jcHVfbWFwKGFtZGdwdV9ib19o YW5kbGUgYm8sIHZvaWQgKipjcHUpCiAKIAkvKiBNYXAgdGhlIGJ1ZmZlci4gKi8KIAlwdHIgPSBk cm1fbW1hcChOVUxMLCBiby0+YWxsb2Nfc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQ X1NIQVJFRCwKLQkJICAgICAgIGJvLT5kZXYtPmZkLCBhcmdzLm91dC5hZGRyX3B0cik7CisJCSAg ICAgICBmZCwgYXJncy5vdXQuYWRkcl9wdHIpOwogCWlmIChwdHIgPT0gTUFQX0ZBSUxFRCkgewog CQlwdGhyZWFkX211dGV4X3VubG9jaygmYm8tPmNwdV9hY2Nlc3NfbXV0ZXgpOwogCQlyZXR1cm4g LWVycm5vOwpAQCAtNDc4LDggKzU1MSw5IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19jcHVf bWFwKGFtZGdwdV9ib19oYW5kbGUgYm8sIHZvaWQgKipjcHUpCiAJcmV0dXJuIDA7CiB9CiAKLWRy bV9wdWJsaWMgaW50IGFtZGdwdV9ib19jcHVfdW5tYXAoYW1kZ3B1X2JvX2hhbmRsZSBibykKK2Ry bV9wdWJsaWMgaW50IGFtZGdwdV9ib19jcHVfdW5tYXAoYW1kZ3B1X2JvX2hhbmRsZSB1c2VyX2Jv KQogeworCXN0cnVjdCBhbWRncHVfY29yZV9ibyAqYm8gPSB1c2VyX2JvLT5jb3JlOwogCWludCBy OwogCiAJcHRocmVhZF9tdXRleF9sb2NrKCZiby0+Y3B1X2FjY2Vzc19tdXRleCk7CkBAIC01MDQs MTggKzU3OCwyMSBAQCBkcm1fcHVibGljIGludCBhbWRncHVfYm9fY3B1X3VubWFwKGFtZGdwdV9i b19oYW5kbGUgYm8pCiAJcmV0dXJuIHI7CiB9CiAKLWRybV9wdWJsaWMgaW50IGFtZGdwdV9xdWVy eV9idWZmZXJfc2l6ZV9hbGlnbm1lbnQoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAorZHJtX3B1 YmxpYyBpbnQgYW1kZ3B1X3F1ZXJ5X2J1ZmZlcl9zaXplX2FsaWdubWVudChhbWRncHVfZGV2aWNl X2hhbmRsZSB1c2VyX2RldiwKIAkJCQlzdHJ1Y3QgYW1kZ3B1X2J1ZmZlcl9zaXplX2FsaWdubWVu dHMgKmluZm8pCiB7CisJc3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAqZGV2ID0gdXNlcl9kZXYt PmNvcmU7CisKIAlpbmZvLT5zaXplX2xvY2FsID0gZGV2LT5kZXZfaW5mby5wdGVfZnJhZ21lbnRf c2l6ZTsKIAlpbmZvLT5zaXplX3JlbW90ZSA9IGRldi0+ZGV2X2luZm8uZ2FydF9wYWdlX3NpemU7 CiAJcmV0dXJuIDA7CiB9CiAKLWRybV9wdWJsaWMgaW50IGFtZGdwdV9ib193YWl0X2Zvcl9pZGxl KGFtZGdwdV9ib19oYW5kbGUgYm8sCitkcm1fcHVibGljIGludCBhbWRncHVfYm9fd2FpdF9mb3Jf aWRsZShhbWRncHVfYm9faGFuZGxlIHVzZXJfYm8sCiAJCQkJICAgICAgIHVpbnQ2NF90IHRpbWVv dXRfbnMsCiAJCQkgICAgYm9vbCAqYnVzeSkKIHsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfYm8gKmJv ID0gdXNlcl9iby0+Y29yZTsKIAl1bmlvbiBkcm1fYW1kZ3B1X2dlbV93YWl0X2lkbGUgYXJnczsK IAlpbnQgcjsKIApAQCAtNTIzLDcgKzYwMCw3IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9ib193 YWl0X2Zvcl9pZGxlKGFtZGdwdV9ib19oYW5kbGUgYm8sCiAJYXJncy5pbi5oYW5kbGUgPSBiby0+ aGFuZGxlOwogCWFyZ3MuaW4udGltZW91dCA9IGFtZGdwdV9jc19jYWxjdWxhdGVfdGltZW91dCh0 aW1lb3V0X25zKTsKIAotCXIgPSBkcm1Db21tYW5kV3JpdGVSZWFkKGJvLT5kZXYtPmZkLCBEUk1f QU1ER1BVX0dFTV9XQUlUX0lETEUsCisJciA9IGRybUNvbW1hbmRXcml0ZVJlYWQodXNlcl9iby0+ ZGV2LT5jb3JlLT5mZCwgRFJNX0FNREdQVV9HRU1fV0FJVF9JRExFLAogCQkJCSZhcmdzLCBzaXpl b2YoYXJncykpOwogCiAJaWYgKHIgPT0gMCkgewpAQCAtNTM1LDEzICs2MTIsMTQgQEAgZHJtX3B1 YmxpYyBpbnQgYW1kZ3B1X2JvX3dhaXRfZm9yX2lkbGUoYW1kZ3B1X2JvX2hhbmRsZSBibywKIAl9 CiB9CiAKLWRybV9wdWJsaWMgaW50IGFtZGdwdV9maW5kX2JvX2J5X2NwdV9tYXBwaW5nKGFtZGdw dV9kZXZpY2VfaGFuZGxlIGRldiwKK2RybV9wdWJsaWMgaW50IGFtZGdwdV9maW5kX2JvX2J5X2Nw dV9tYXBwaW5nKGFtZGdwdV9kZXZpY2VfaGFuZGxlIHVzZXJfZGV2LAogCQkJCQkgICAgIHZvaWQg KmNwdSwKIAkJCQkJICAgICB1aW50NjRfdCBzaXplLAogCQkJCQkgICAgIGFtZGdwdV9ib19oYW5k bGUgKmJ1Zl9oYW5kbGUsCiAJCQkJCSAgICAgdWludDY0X3QgKm9mZnNldF9pbl9ibykKIHsKLQlz dHJ1Y3QgYW1kZ3B1X2JvICpibzsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlICpkZXYgPSB1 c2VyX2Rldi0+Y29yZTsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfYm8gKmJvOwogCXVpbnQzMl90IGk7 CiAJaW50IHIgPSAwOwogCkBAIC01NjQsOCArNjQyLDggQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1 X2ZpbmRfYm9fYnlfY3B1X21hcHBpbmcoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAogCX0KIAog CWlmIChpIDwgZGV2LT5ib19oYW5kbGVzLm1heF9rZXkpIHsKLQkJYXRvbWljX2luYygmYm8tPnJl ZmNvdW50KTsKLQkJKmJ1Zl9oYW5kbGUgPSBibzsKKwkJciA9IGFtZGdwdV9ib19jcmVhdGUodXNl cl9kZXYsIGJvLT5hbGxvY19zaXplLCBiby0+aGFuZGxlLAorCQkJCSAgICAgYnVmX2hhbmRsZSk7 CiAJCSpvZmZzZXRfaW5fYm8gPSAodWludHB0cl90KWNwdSAtICh1aW50cHRyX3QpYm8tPmNwdV9w dHI7CiAJfSBlbHNlIHsKIAkJKmJ1Zl9oYW5kbGUgPSBOVUxMOwpAQCAtNTc3LDExICs2NTUsMTIg QEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2ZpbmRfYm9fYnlfY3B1X21hcHBpbmcoYW1kZ3B1X2Rl dmljZV9oYW5kbGUgZGV2LAogCXJldHVybiByOwogfQogCi1kcm1fcHVibGljIGludCBhbWRncHVf Y3JlYXRlX2JvX2Zyb21fdXNlcl9tZW0oYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAorZHJtX3B1 YmxpYyBpbnQgYW1kZ3B1X2NyZWF0ZV9ib19mcm9tX3VzZXJfbWVtKGFtZGdwdV9kZXZpY2VfaGFu ZGxlIHVzZXJfZGV2LAogCQkJCQkgICAgICB2b2lkICpjcHUsCiAJCQkJCSAgICAgIHVpbnQ2NF90 IHNpemUsCiAJCQkJCSAgICAgIGFtZGdwdV9ib19oYW5kbGUgKmJ1Zl9oYW5kbGUpCiB7CisJc3Ry dWN0IGFtZGdwdV9jb3JlX2RldmljZSAqZGV2ID0gdXNlcl9kZXYtPmNvcmU7CiAJaW50IHI7CiAJ c3RydWN0IGRybV9hbWRncHVfZ2VtX3VzZXJwdHIgYXJnczsKIApAQCAtNTk1LDcgKzY3NCw3IEBA IGRybV9wdWJsaWMgaW50IGFtZGdwdV9jcmVhdGVfYm9fZnJvbV91c2VyX21lbShhbWRncHVfZGV2 aWNlX2hhbmRsZSBkZXYsCiAJCWdvdG8gb3V0OwogCiAJcHRocmVhZF9tdXRleF9sb2NrKCZkZXYt PmJvX3RhYmxlX211dGV4KTsKLQlyID0gYW1kZ3B1X2JvX2NyZWF0ZShkZXYsIHNpemUsIGFyZ3Mu aGFuZGxlLCBidWZfaGFuZGxlKTsKKwlyID0gYW1kZ3B1X2JvX2NyZWF0ZSh1c2VyX2Rldiwgc2l6 ZSwgYXJncy5oYW5kbGUsIGJ1Zl9oYW5kbGUpOwogCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXYt PmJvX3RhYmxlX211dGV4KTsKIAlpZiAocikgewogCQlhbWRncHVfY2xvc2Vfa21zX2hhbmRsZShk ZXYtPmZkLCBhcmdzLmhhbmRsZSk7CkBAIC02MDUsMTEgKzY4NCwxMiBAQCBvdXQ6CiAJcmV0dXJu IHI7CiB9CiAKLWRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19saXN0X2NyZWF0ZV9yYXcoYW1kZ3B1 X2RldmljZV9oYW5kbGUgZGV2LAorZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2JvX2xpc3RfY3JlYXRl X3JhdyhhbWRncHVfZGV2aWNlX2hhbmRsZSB1c2VyX2RldiwKIAkJCQkJIHVpbnQzMl90IG51bWJl cl9vZl9idWZmZXJzLAogCQkJCQkgc3RydWN0IGRybV9hbWRncHVfYm9fbGlzdF9lbnRyeSAqYnVm ZmVycywKIAkJCQkJIHVpbnQzMl90ICpyZXN1bHQpCiB7CisJc3RydWN0IGFtZGdwdV9jb3JlX2Rl dmljZSAqZGV2ID0gdXNlcl9kZXYtPmNvcmU7CiAJdW5pb24gZHJtX2FtZGdwdV9ib19saXN0IGFy Z3M7CiAJaW50IHI7CiAKQEAgLTYyNiw5ICs3MDYsMTAgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1 X2JvX2xpc3RfY3JlYXRlX3JhdyhhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCiAJcmV0dXJuIHI7 CiB9CiAKLWRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19saXN0X2Rlc3Ryb3lfcmF3KGFtZGdwdV9k ZXZpY2VfaGFuZGxlIGRldiwKK2RybV9wdWJsaWMgaW50IGFtZGdwdV9ib19saXN0X2Rlc3Ryb3lf cmF3KGFtZGdwdV9kZXZpY2VfaGFuZGxlIHVzZXJfZGV2LAogCQkJCQkgIHVpbnQzMl90IGJvX2xp c3QpCiB7CisJc3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAqZGV2ID0gdXNlcl9kZXYtPmNvcmU7 CiAJdW5pb24gZHJtX2FtZGdwdV9ib19saXN0IGFyZ3M7CiAKIAltZW1zZXQoJmFyZ3MsIDAsIHNp emVvZihhcmdzKSk7CkBAIC02MzksMTIgKzcyMCwxMyBAQCBkcm1fcHVibGljIGludCBhbWRncHVf Ym9fbGlzdF9kZXN0cm95X3JhdyhhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCiAJCQkJICAgJmFy Z3MsIHNpemVvZihhcmdzKSk7CiB9CiAKLWRybV9wdWJsaWMgaW50IGFtZGdwdV9ib19saXN0X2Ny ZWF0ZShhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCitkcm1fcHVibGljIGludCBhbWRncHVfYm9f bGlzdF9jcmVhdGUoYW1kZ3B1X2RldmljZV9oYW5kbGUgdXNlcl9kZXYsCiAJCQkJICAgICB1aW50 MzJfdCBudW1iZXJfb2ZfcmVzb3VyY2VzLAogCQkJCSAgICAgYW1kZ3B1X2JvX2hhbmRsZSAqcmVz b3VyY2VzLAogCQkJCSAgICAgdWludDhfdCAqcmVzb3VyY2VfcHJpb3MsCiAJCQkJICAgICBhbWRn cHVfYm9fbGlzdF9oYW5kbGUgKnJlc3VsdCkKIHsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNl ICpkZXYgPSB1c2VyX2Rldi0+Y29yZTsKIAlzdHJ1Y3QgZHJtX2FtZGdwdV9ib19saXN0X2VudHJ5 ICpsaXN0OwogCXVuaW9uIGRybV9hbWRncHVfYm9fbGlzdCBhcmdzOwogCXVuc2lnbmVkIGk7CkBA IC02NzQsNyArNzU2LDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2JvX2xpc3RfY3JlYXRlKGFt ZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKIAlhcmdzLmluLmJvX2luZm9fcHRyID0gKHVpbnQ2NF90 KSh1aW50cHRyX3QpbGlzdDsKIAogCWZvciAoaSA9IDA7IGkgPCBudW1iZXJfb2ZfcmVzb3VyY2Vz OyBpKyspIHsKLQkJbGlzdFtpXS5ib19oYW5kbGUgPSByZXNvdXJjZXNbaV0tPmhhbmRsZTsKKwkJ bGlzdFtpXS5ib19oYW5kbGUgPSByZXNvdXJjZXNbaV0tPmNvcmUtPmhhbmRsZTsKIAkJaWYgKHJl c291cmNlX3ByaW9zKQogCQkJbGlzdFtpXS5ib19wcmlvcml0eSA9IHJlc291cmNlX3ByaW9zW2ld OwogCQllbHNlCkBAIC03NDAsNyArODIyLDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2JvX2xp c3RfdXBkYXRlKGFtZGdwdV9ib19saXN0X2hhbmRsZSBoYW5kbGUsCiAJYXJncy5pbi5ib19pbmZv X3B0ciA9ICh1aW50cHRyX3QpbGlzdDsKIAogCWZvciAoaSA9IDA7IGkgPCBudW1iZXJfb2ZfcmVz b3VyY2VzOyBpKyspIHsKLQkJbGlzdFtpXS5ib19oYW5kbGUgPSByZXNvdXJjZXNbaV0tPmhhbmRs ZTsKKwkJbGlzdFtpXS5ib19oYW5kbGUgPSByZXNvdXJjZXNbaV0tPmNvcmUtPmhhbmRsZTsKIAkJ aWYgKHJlc291cmNlX3ByaW9zKQogCQkJbGlzdFtpXS5ib19wcmlvcml0eSA9IHJlc291cmNlX3By aW9zW2ldOwogCQllbHNlCkBAIC03NzAsNyArODUyLDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1 X2JvX3ZhX29wKGFtZGdwdV9ib19oYW5kbGUgYm8sCiAJCQkJICAgQU1ER1BVX1ZNX1BBR0VfRVhF Q1VUQUJMRSwgb3BzKTsKIH0KIAotZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2JvX3ZhX29wX3Jhdyhh bWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCitkcm1fcHVibGljIGludCBhbWRncHVfYm9fdmFfb3Bf cmF3KGFtZGdwdV9kZXZpY2VfaGFuZGxlIHVzZXJfZGV2LAogCQkJCSAgIGFtZGdwdV9ib19oYW5k bGUgYm8sCiAJCQkJICAgdWludDY0X3Qgb2Zmc2V0LAogCQkJCSAgIHVpbnQ2NF90IHNpemUsCkBA IC03NzgsNiArODYwLDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2JvX3ZhX29wX3JhdyhhbWRn cHVfZGV2aWNlX2hhbmRsZSBkZXYsCiAJCQkJICAgdWludDY0X3QgZmxhZ3MsCiAJCQkJICAgdWlu dDMyX3Qgb3BzKQogeworCXN0cnVjdCBhbWRncHVfY29yZV9kZXZpY2UgKmRldiA9IHVzZXJfZGV2 LT5jb3JlOwogCXN0cnVjdCBkcm1fYW1kZ3B1X2dlbV92YSB2YTsKIAlpbnQgcjsKIApAQCAtNzg2 LDcgKzg2OSw3IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9ib192YV9vcF9yYXcoYW1kZ3B1X2Rl dmljZV9oYW5kbGUgZGV2LAogCQlyZXR1cm4gLUVJTlZBTDsKIAogCW1lbXNldCgmdmEsIDAsIHNp emVvZih2YSkpOwotCXZhLmhhbmRsZSA9IGJvID8gYm8tPmhhbmRsZSA6IDA7CisJdmEuaGFuZGxl ID0gYm8gPyBiby0+Y29yZS0+aGFuZGxlIDogMDsKIAl2YS5vcGVyYXRpb24gPSBvcHM7CiAJdmEu ZmxhZ3MgPSBmbGFnczsKIAl2YS52YV9hZGRyZXNzID0gYWRkcjsKZGlmZiAtLWdpdCBhL2FtZGdw dS9hbWRncHVfY3MuYyBiL2FtZGdwdS9hbWRncHVfY3MuYwppbmRleCAyMGQ1YWVmMi4uOTgxMzAx MDUgMTAwNjQ0Ci0tLSBhL2FtZGdwdS9hbWRncHVfY3MuYworKysgYi9hbWRncHUvYW1kZ3B1X2Nz LmMKQEAgLTQ4LDIyICs0OCwyNCBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19yZXNldF9zZW0oYW1k Z3B1X3NlbWFwaG9yZV9oYW5kbGUgc2VtKTsKICAqCiAgKiBccmV0dXJuICAwIG9uIHN1Y2Nlc3Mg b3RoZXJ3aXNlIFBPU0lYIEVycm9yIGNvZGUKICovCi1kcm1fcHVibGljIGludCBhbWRncHVfY3Nf Y3R4X2NyZWF0ZTIoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAorZHJtX3B1YmxpYyBpbnQgYW1k Z3B1X2NzX2N0eF9jcmVhdGUyKGFtZGdwdV9kZXZpY2VfaGFuZGxlIHVzZXJfZGV2LAogCQkJCSAg ICAgdWludDMyX3QgcHJpb3JpdHksCiAJCQkJICAgICBhbWRncHVfY29udGV4dF9oYW5kbGUgKmNv bnRleHQpCiB7CiAJc3RydWN0IGFtZGdwdV9jb250ZXh0ICpncHVfY29udGV4dDsKKwlzdHJ1Y3Qg YW1kZ3B1X2NvcmVfZGV2aWNlICpkZXY7CiAJdW5pb24gZHJtX2FtZGdwdV9jdHggYXJnczsKIAlp bnQgaSwgaiwgazsKIAlpbnQgcjsKIAotCWlmICghZGV2IHx8ICFjb250ZXh0KQorCWlmICghdXNl cl9kZXYgfHwgIWNvbnRleHQpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJZ3B1X2NvbnRleHQgPSBj YWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBhbWRncHVfY29udGV4dCkpOwogCWlmICghZ3B1X2NvbnRl eHQpCiAJCXJldHVybiAtRU5PTUVNOwogCisJZGV2ID0gdXNlcl9kZXYtPmNvcmU7CiAJZ3B1X2Nv bnRleHQtPmRldiA9IGRldjsKIAogCXIgPSBwdGhyZWFkX211dGV4X2luaXQoJmdwdV9jb250ZXh0 LT5zZXF1ZW5jZV9tdXRleCwgTlVMTCk7CkBAIC0xNTYsNyArMTU4LDcgQEAgZHJtX3B1YmxpYyBp bnQgYW1kZ3B1X2NzX2N0eF9vdmVycmlkZV9wcmlvcml0eShhbWRncHVfZGV2aWNlX2hhbmRsZSBk ZXYsCiAJbWVtc2V0KCZhcmdzLCAwLCBzaXplb2YoYXJncykpOwogCiAJYXJncy5pbi5vcCA9IEFN REdQVV9TQ0hFRF9PUF9DT05URVhUX1BSSU9SSVRZX09WRVJSSURFOwotCWFyZ3MuaW4uZmQgPSBk ZXYtPmZkOworCWFyZ3MuaW4uZmQgPSBkZXYtPmNvcmUtPmZkOwogCWFyZ3MuaW4ucHJpb3JpdHkg PSBwcmlvcml0eTsKIAlhcmdzLmluLmN0eF9pZCA9IGNvbnRleHQtPmlkOwogCkBAIC0yNjksNyAr MjcxLDcgQEAgc3RhdGljIGludCBhbWRncHVfY3Nfc3VibWl0X29uZShhbWRncHVfY29udGV4dF9o YW5kbGUgY29udGV4dCwKIAkJY2h1bmtzW2ldLmNodW5rX2RhdGEgPSAodWludDY0X3QpKHVpbnRw dHJfdCkmY2h1bmtfZGF0YVtpXTsKIAogCQkvKiBmZW5jZSBibyBoYW5kbGUgKi8KLQkJY2h1bmtf ZGF0YVtpXS5mZW5jZV9kYXRhLmhhbmRsZSA9IGlic19yZXF1ZXN0LT5mZW5jZV9pbmZvLmhhbmRs ZS0+aGFuZGxlOworCQljaHVua19kYXRhW2ldLmZlbmNlX2RhdGEuaGFuZGxlID0gaWJzX3JlcXVl c3QtPmZlbmNlX2luZm8uaGFuZGxlLT5jb3JlLT5oYW5kbGU7CiAJCS8qIG9mZnNldCAqLwogCQlj aHVua19kYXRhW2ldLmZlbmNlX2RhdGEub2Zmc2V0ID0gCiAJCQlpYnNfcmVxdWVzdC0+ZmVuY2Vf aW5mby5vZmZzZXQgKiBzaXplb2YodWludDY0X3QpOwpAQCAtNDA5LDcgKzQxMSw3IEBAIHN0YXRp YyBpbnQgYW1kZ3B1X2lvY3RsX3dhaXRfY3MoYW1kZ3B1X2NvbnRleHRfaGFuZGxlIGNvbnRleHQs CiAJCQkJdWludDY0X3QgZmxhZ3MsCiAJCQkJYm9vbCAqYnVzeSkKIHsKLQlhbWRncHVfZGV2aWNl X2hhbmRsZSBkZXYgPSBjb250ZXh0LT5kZXY7CisJc3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAq ZGV2ID0gY29udGV4dC0+ZGV2OwogCXVuaW9uIGRybV9hbWRncHVfd2FpdF9jcyBhcmdzOwogCWlu dCByOwogCkBAIC00NzEsOCArNDczLDggQEAgc3RhdGljIGludCBhbWRncHVfaW9jdGxfd2FpdF9m ZW5jZXMoc3RydWN0IGFtZGdwdV9jc19mZW5jZSAqZmVuY2VzLAogCQkJCSAgICB1aW50MzJfdCAq c3RhdHVzLAogCQkJCSAgICB1aW50MzJfdCAqZmlyc3QpCiB7CisJc3RydWN0IGFtZGdwdV9jb3Jl X2RldmljZSAqZGV2ID0gZmVuY2VzWzBdLmNvbnRleHQtPmRldjsKIAlzdHJ1Y3QgZHJtX2FtZGdw dV9mZW5jZSAqZHJtX2ZlbmNlczsKLQlhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYgPSBmZW5jZXNb MF0uY29udGV4dC0+ZGV2OwogCXVuaW9uIGRybV9hbWRncHVfd2FpdF9mZW5jZXMgYXJnczsKIAlp bnQgcjsKIAl1aW50MzJfdCBpOwpAQCAtNjMzLDcgKzYzNSw3IEBAIGRybV9wdWJsaWMgaW50IGFt ZGdwdV9jc19jcmVhdGVfc3luY29iajIoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAogCWlmIChO VUxMID09IGRldikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXR1cm4gZHJtU3luY29iakNyZWF0 ZShkZXYtPmZkLCBmbGFncywgaGFuZGxlKTsKKwlyZXR1cm4gZHJtU3luY29iakNyZWF0ZShkZXYt PmNvcmUtPmZkLCBmbGFncywgaGFuZGxlKTsKIH0KIAogZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2Nz X2NyZWF0ZV9zeW5jb2JqKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKQEAgLTY0Miw3ICs2NDQs NyBAQCBkcm1fcHVibGljIGludCBhbWRncHVfY3NfY3JlYXRlX3N5bmNvYmooYW1kZ3B1X2Rldmlj ZV9oYW5kbGUgZGV2LAogCWlmIChOVUxMID09IGRldikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQly ZXR1cm4gZHJtU3luY29iakNyZWF0ZShkZXYtPmZkLCAwLCBoYW5kbGUpOworCXJldHVybiBkcm1T eW5jb2JqQ3JlYXRlKGRldi0+Y29yZS0+ZmQsIDAsIGhhbmRsZSk7CiB9CiAKIGRybV9wdWJsaWMg aW50IGFtZGdwdV9jc19kZXN0cm95X3N5bmNvYmooYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LApA QCAtNjUxLDcgKzY1Myw3IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9jc19kZXN0cm95X3N5bmNv YmooYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAogCWlmIChOVUxMID09IGRldikKIAkJcmV0dXJu IC1FSU5WQUw7CiAKLQlyZXR1cm4gZHJtU3luY29iakRlc3Ryb3koZGV2LT5mZCwgaGFuZGxlKTsK KwlyZXR1cm4gZHJtU3luY29iakRlc3Ryb3koZGV2LT5jb3JlLT5mZCwgaGFuZGxlKTsKIH0KIAog ZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2NzX3N5bmNvYmpfcmVzZXQoYW1kZ3B1X2RldmljZV9oYW5k bGUgZGV2LApAQCAtNjYxLDcgKzY2Myw3IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9jc19zeW5j b2JqX3Jlc2V0KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKIAlpZiAoTlVMTCA9PSBkZXYpCiAJ CXJldHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGRybVN5bmNvYmpSZXNldChkZXYtPmZkLCBzeW5j b2Jqcywgc3luY29ial9jb3VudCk7CisJcmV0dXJuIGRybVN5bmNvYmpSZXNldChkZXYtPmNvcmUt PmZkLCBzeW5jb2Jqcywgc3luY29ial9jb3VudCk7CiB9CiAKIGRybV9wdWJsaWMgaW50IGFtZGdw dV9jc19zeW5jb2JqX3NpZ25hbChhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCkBAIC02NzEsNyAr NjczLDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2NzX3N5bmNvYmpfc2lnbmFsKGFtZGdwdV9k ZXZpY2VfaGFuZGxlIGRldiwKIAlpZiAoTlVMTCA9PSBkZXYpCiAJCXJldHVybiAtRUlOVkFMOwog Ci0JcmV0dXJuIGRybVN5bmNvYmpTaWduYWwoZGV2LT5mZCwgc3luY29ianMsIHN5bmNvYmpfY291 bnQpOworCXJldHVybiBkcm1TeW5jb2JqU2lnbmFsKGRldi0+Y29yZS0+ZmQsIHN5bmNvYmpzLCBz eW5jb2JqX2NvdW50KTsKIH0KIAogZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2NzX3N5bmNvYmpfdGlt ZWxpbmVfc2lnbmFsKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKQEAgLTY4Miw3ICs2ODQsNyBA QCBkcm1fcHVibGljIGludCBhbWRncHVfY3Nfc3luY29ial90aW1lbGluZV9zaWduYWwoYW1kZ3B1 X2RldmljZV9oYW5kbGUgZGV2LAogCWlmIChOVUxMID09IGRldikKIAkJcmV0dXJuIC1FSU5WQUw7 CiAKLQlyZXR1cm4gZHJtU3luY29ialRpbWVsaW5lU2lnbmFsKGRldi0+ZmQsIHN5bmNvYmpzLAor CXJldHVybiBkcm1TeW5jb2JqVGltZWxpbmVTaWduYWwoZGV2LT5jb3JlLT5mZCwgc3luY29ianMs CiAJCQkJCXBvaW50cywgc3luY29ial9jb3VudCk7CiB9CiAKQEAgLTY5NCw3ICs2OTYsNyBAQCBk cm1fcHVibGljIGludCBhbWRncHVfY3Nfc3luY29ial93YWl0KGFtZGdwdV9kZXZpY2VfaGFuZGxl IGRldiwKIAlpZiAoTlVMTCA9PSBkZXYpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGRy bVN5bmNvYmpXYWl0KGRldi0+ZmQsIGhhbmRsZXMsIG51bV9oYW5kbGVzLCB0aW1lb3V0X25zZWMs CisJcmV0dXJuIGRybVN5bmNvYmpXYWl0KGRldi0+Y29yZS0+ZmQsIGhhbmRsZXMsIG51bV9oYW5k bGVzLCB0aW1lb3V0X25zZWMsCiAJCQkgICAgICBmbGFncywgZmlyc3Rfc2lnbmFsZWQpOwogfQog CkBAIC03MDcsNyArNzA5LDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2NzX3N5bmNvYmpfdGlt ZWxpbmVfd2FpdChhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCiAJaWYgKE5VTEwgPT0gZGV2KQog CQlyZXR1cm4gLUVJTlZBTDsKIAotCXJldHVybiBkcm1TeW5jb2JqVGltZWxpbmVXYWl0KGRldi0+ ZmQsIGhhbmRsZXMsIHBvaW50cywgbnVtX2hhbmRsZXMsCisJcmV0dXJuIGRybVN5bmNvYmpUaW1l bGluZVdhaXQoZGV2LT5jb3JlLT5mZCwgaGFuZGxlcywgcG9pbnRzLCBudW1faGFuZGxlcywKIAkJ CQkgICAgICB0aW1lb3V0X25zZWMsIGZsYWdzLCBmaXJzdF9zaWduYWxlZCk7CiB9CiAKQEAgLTcx OCw3ICs3MjAsNyBAQCBkcm1fcHVibGljIGludCBhbWRncHVfY3Nfc3luY29ial9xdWVyeShhbWRn cHVfZGV2aWNlX2hhbmRsZSBkZXYsCiAJaWYgKE5VTEwgPT0gZGV2KQogCQlyZXR1cm4gLUVJTlZB TDsKIAotCXJldHVybiBkcm1TeW5jb2JqUXVlcnkoZGV2LT5mZCwgaGFuZGxlcywgcG9pbnRzLCBu dW1faGFuZGxlcyk7CisJcmV0dXJuIGRybVN5bmNvYmpRdWVyeShkZXYtPmNvcmUtPmZkLCBoYW5k bGVzLCBwb2ludHMsIG51bV9oYW5kbGVzKTsKIH0KIAogZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2Nz X2V4cG9ydF9zeW5jb2JqKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKQEAgLTcyOCw3ICs3MzAs NyBAQCBkcm1fcHVibGljIGludCBhbWRncHVfY3NfZXhwb3J0X3N5bmNvYmooYW1kZ3B1X2Rldmlj ZV9oYW5kbGUgZGV2LAogCWlmIChOVUxMID09IGRldikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQly ZXR1cm4gZHJtU3luY29iakhhbmRsZVRvRkQoZGV2LT5mZCwgaGFuZGxlLCBzaGFyZWRfZmQpOwor CXJldHVybiBkcm1TeW5jb2JqSGFuZGxlVG9GRChkZXYtPmNvcmUtPmZkLCBoYW5kbGUsIHNoYXJl ZF9mZCk7CiB9CiAKIGRybV9wdWJsaWMgaW50IGFtZGdwdV9jc19pbXBvcnRfc3luY29iaihhbWRn cHVfZGV2aWNlX2hhbmRsZSBkZXYsCkBAIC03MzgsNyArNzQwLDcgQEAgZHJtX3B1YmxpYyBpbnQg YW1kZ3B1X2NzX2ltcG9ydF9zeW5jb2JqKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKIAlpZiAo TlVMTCA9PSBkZXYpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGRybVN5bmNvYmpGRFRv SGFuZGxlKGRldi0+ZmQsIHNoYXJlZF9mZCwgaGFuZGxlKTsKKwlyZXR1cm4gZHJtU3luY29iakZE VG9IYW5kbGUoZGV2LT5jb3JlLT5mZCwgc2hhcmVkX2ZkLCBoYW5kbGUpOwogfQogCiBkcm1fcHVi bGljIGludCBhbWRncHVfY3Nfc3luY29ial9leHBvcnRfc3luY19maWxlKGFtZGdwdV9kZXZpY2Vf aGFuZGxlIGRldiwKQEAgLTc0OCw3ICs3NTAsNyBAQCBkcm1fcHVibGljIGludCBhbWRncHVfY3Nf c3luY29ial9leHBvcnRfc3luY19maWxlKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKIAlpZiAo TlVMTCA9PSBkZXYpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0dXJuIGRybVN5bmNvYmpFeHBv cnRTeW5jRmlsZShkZXYtPmZkLCBzeW5jb2JqLCBzeW5jX2ZpbGVfZmQpOworCXJldHVybiBkcm1T eW5jb2JqRXhwb3J0U3luY0ZpbGUoZGV2LT5jb3JlLT5mZCwgc3luY29iaiwgc3luY19maWxlX2Zk KTsKIH0KIAogZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2NzX3N5bmNvYmpfaW1wb3J0X3N5bmNfZmls ZShhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYsCkBAIC03NTgsMjEgKzc2MCwyNCBAQCBkcm1fcHVi bGljIGludCBhbWRncHVfY3Nfc3luY29ial9pbXBvcnRfc3luY19maWxlKGFtZGdwdV9kZXZpY2Vf aGFuZGxlIGRldiwKIAlpZiAoTlVMTCA9PSBkZXYpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmV0 dXJuIGRybVN5bmNvYmpJbXBvcnRTeW5jRmlsZShkZXYtPmZkLCBzeW5jb2JqLCBzeW5jX2ZpbGVf ZmQpOworCXJldHVybiBkcm1TeW5jb2JqSW1wb3J0U3luY0ZpbGUoZGV2LT5jb3JlLT5mZCwgc3lu Y29iaiwgc3luY19maWxlX2ZkKTsKIH0KIAotZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2NzX3N5bmNv YmpfZXhwb3J0X3N5bmNfZmlsZTIoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAorZHJtX3B1Ymxp YyBpbnQgYW1kZ3B1X2NzX3N5bmNvYmpfZXhwb3J0X3N5bmNfZmlsZTIoYW1kZ3B1X2RldmljZV9o YW5kbGUgdXNlcl9kZXYsCiAJCQkJCQkgICB1aW50MzJfdCBzeW5jb2JqLAogCQkJCQkJICAgdWlu dDY0X3QgcG9pbnQsCiAJCQkJCQkgICB1aW50MzJfdCBmbGFncywKIAkJCQkJCSAgIGludCAqc3lu Y19maWxlX2ZkKQogeworCXN0cnVjdCBhbWRncHVfY29yZV9kZXZpY2UgKmRldjsKIAl1aW50MzJf dCBiaW5hcnlfaGFuZGxlOwogCWludCByZXQ7CiAKLQlpZiAoTlVMTCA9PSBkZXYpCisJaWYgKCF1 c2VyX2RldikKIAkJcmV0dXJuIC1FSU5WQUw7CiAKKwlkZXYgPSB1c2VyX2Rldi0+Y29yZTsKKwog CWlmICghcG9pbnQpCiAJCXJldHVybiBkcm1TeW5jb2JqRXhwb3J0U3luY0ZpbGUoZGV2LT5mZCwg c3luY29iaiwgc3luY19maWxlX2ZkKTsKIApAQCAtNzkwLDE3ICs3OTUsMjAgQEAgb3V0OgogCXJl dHVybiByZXQ7CiB9CiAKLWRybV9wdWJsaWMgaW50IGFtZGdwdV9jc19zeW5jb2JqX2ltcG9ydF9z eW5jX2ZpbGUyKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKK2RybV9wdWJsaWMgaW50IGFtZGdw dV9jc19zeW5jb2JqX2ltcG9ydF9zeW5jX2ZpbGUyKGFtZGdwdV9kZXZpY2VfaGFuZGxlIHVzZXJf ZGV2LAogCQkJCQkJICAgdWludDMyX3Qgc3luY29iaiwKIAkJCQkJCSAgIHVpbnQ2NF90IHBvaW50 LAogCQkJCQkJICAgaW50IHN5bmNfZmlsZV9mZCkKIHsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2 aWNlICpkZXY7CiAJdWludDMyX3QgYmluYXJ5X2hhbmRsZTsKIAlpbnQgcmV0OwogCi0JaWYgKE5V TEwgPT0gZGV2KQorCWlmICghdXNlcl9kZXYpCiAJCXJldHVybiAtRUlOVkFMOwogCisJZGV2ID0g dXNlcl9kZXYtPmNvcmU7CisKIAlpZiAoIXBvaW50KQogCQlyZXR1cm4gZHJtU3luY29iakltcG9y dFN5bmNGaWxlKGRldi0+ZmQsIHN5bmNvYmosIHN5bmNfZmlsZV9mZCk7CiAKQEAgLTgyNyw3ICs4 MzUsNyBAQCBkcm1fcHVibGljIGludCBhbWRncHVfY3Nfc3luY29ial90cmFuc2ZlcihhbWRncHVf ZGV2aWNlX2hhbmRsZSBkZXYsCiAJaWYgKE5VTEwgPT0gZGV2KQogCQlyZXR1cm4gLUVJTlZBTDsK IAotCXJldHVybiBkcm1TeW5jb2JqVHJhbnNmZXIoZGV2LT5mZCwKKwlyZXR1cm4gZHJtU3luY29i alRyYW5zZmVyKGRldi0+Y29yZS0+ZmQsCiAJCQkJICBkc3RfaGFuZGxlLCBkc3RfcG9pbnQsCiAJ CQkJICBzcmNfaGFuZGxlLCBzcmNfcG9pbnQsCiAJCQkJICBmbGFncyk7CkBAIC04NTQsNyArODYy LDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2NzX3N1Ym1pdF9yYXcoYW1kZ3B1X2RldmljZV9o YW5kbGUgZGV2LAogCWNzLmluLmN0eF9pZCA9IGNvbnRleHQtPmlkOwogCWNzLmluLmJvX2xpc3Rf aGFuZGxlID0gYm9fbGlzdF9oYW5kbGUgPyBib19saXN0X2hhbmRsZS0+aGFuZGxlIDogMDsKIAlj cy5pbi5udW1fY2h1bmtzID0gbnVtX2NodW5rczsKLQlyID0gZHJtQ29tbWFuZFdyaXRlUmVhZChk ZXYtPmZkLCBEUk1fQU1ER1BVX0NTLAorCXIgPSBkcm1Db21tYW5kV3JpdGVSZWFkKGRldi0+Y29y ZS0+ZmQsIERSTV9BTURHUFVfQ1MsCiAJCQkJJmNzLCBzaXplb2YoY3MpKTsKIAlpZiAocikKIAkJ cmV0dXJuIHI7CkBAIC04ODMsNyArODkxLDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2NzX3N1 Ym1pdF9yYXcyKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKIAljcy5pbi5jdHhfaWQgPSBjb250 ZXh0LT5pZDsKIAljcy5pbi5ib19saXN0X2hhbmRsZSA9IGJvX2xpc3RfaGFuZGxlOwogCWNzLmlu Lm51bV9jaHVua3MgPSBudW1fY2h1bmtzOwotCXIgPSBkcm1Db21tYW5kV3JpdGVSZWFkKGRldi0+ ZmQsIERSTV9BTURHUFVfQ1MsCisJciA9IGRybUNvbW1hbmRXcml0ZVJlYWQoZGV2LT5jb3JlLT5m ZCwgRFJNX0FNREdQVV9DUywKIAkJCQkmY3MsIHNpemVvZihjcykpOwogCWlmICghciAmJiBzZXFf bm8pCiAJCSpzZXFfbm8gPSBjcy5vdXQuaGFuZGxlOwpAQCAtODkzLDcgKzkwMSw3IEBAIGRybV9w dWJsaWMgaW50IGFtZGdwdV9jc19zdWJtaXRfcmF3MihhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYs CiBkcm1fcHVibGljIHZvaWQgYW1kZ3B1X2NzX2NodW5rX2ZlbmNlX2luZm9fdG9fZGF0YShzdHJ1 Y3QgYW1kZ3B1X2NzX2ZlbmNlX2luZm8gKmZlbmNlX2luZm8sCiAJCQkJCXN0cnVjdCBkcm1fYW1k Z3B1X2NzX2NodW5rX2RhdGEgKmRhdGEpCiB7Ci0JZGF0YS0+ZmVuY2VfZGF0YS5oYW5kbGUgPSBm ZW5jZV9pbmZvLT5oYW5kbGUtPmhhbmRsZTsKKwlkYXRhLT5mZW5jZV9kYXRhLmhhbmRsZSA9IGZl bmNlX2luZm8tPmhhbmRsZS0+Y29yZS0+aGFuZGxlOwogCWRhdGEtPmZlbmNlX2RhdGEub2Zmc2V0 ID0gZmVuY2VfaW5mby0+b2Zmc2V0ICogc2l6ZW9mKHVpbnQ2NF90KTsKIH0KIApAQCAtOTIzLDcg KzkzMSw3IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9jc19mZW5jZV90b19oYW5kbGUoYW1kZ3B1 X2RldmljZV9oYW5kbGUgZGV2LAogCWZ0aC5pbi5mZW5jZS5zZXFfbm8gPSBmZW5jZS0+ZmVuY2U7 CiAJZnRoLmluLndoYXQgPSB3aGF0OwogCi0JciA9IGRybUNvbW1hbmRXcml0ZVJlYWQoZGV2LT5m ZCwgRFJNX0FNREdQVV9GRU5DRV9UT19IQU5ETEUsCisJciA9IGRybUNvbW1hbmRXcml0ZVJlYWQo ZGV2LT5jb3JlLT5mZCwgRFJNX0FNREdQVV9GRU5DRV9UT19IQU5ETEUsCiAJCQkJJmZ0aCwgc2l6 ZW9mKGZ0aCkpOwogCWlmIChyID09IDApCiAJCSpvdXRfaGFuZGxlID0gZnRoLm91dC5oYW5kbGU7 CmRpZmYgLS1naXQgYS9hbWRncHUvYW1kZ3B1X2RldmljZS5jIGIvYW1kZ3B1L2FtZGdwdV9kZXZp Y2UuYwppbmRleCA3NmI0ZTVlYi4uYWJmNWY5NDIgMTAwNjQ0Ci0tLSBhL2FtZGdwdS9hbWRncHVf ZGV2aWNlLmMKKysrIGIvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwpAQCAtNDQsNyArNDQsNyBAQAog I2RlZmluZSBQVFJfVE9fVUlOVCh4KSAoKHVuc2lnbmVkKSgoaW50cHRyX3QpKHgpKSkKIAogc3Rh dGljIHB0aHJlYWRfbXV0ZXhfdCBkZXZfbXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVS Owotc3RhdGljIGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldl9saXN0Oworc3RhdGljIHN0cnVjdCBh bWRncHVfY29yZV9kZXZpY2UgKmRldl9saXN0OwogCiBzdGF0aWMgaW50IGZkX2NvbXBhcmUoaW50 IGZkMSwgaW50IGZkMikKIHsKQEAgLTY1LDQ3ICs2NSwxNSBAQCBzdGF0aWMgaW50IGZkX2NvbXBh cmUoaW50IGZkMSwgaW50IGZkMikKIAlyZXR1cm4gcmVzdWx0OwogfQogCi0vKioKLSogR2V0IHRo ZSBhdXRoZW50aWNhdGVkIGZvcm0gZmQsCi0qCi0qIFxwYXJhbSAgIGZkICAgLSBcYyBbaW5dICBG aWxlIGRlc2NyaXB0b3IgZm9yIEFNRCBHUFUgZGV2aWNlCi0qIFxwYXJhbSAgIGF1dGggLSBcYyBb b3V0XSBQb2ludGVyIHRvIG91dHB1dCB0aGUgZmQgaXMgYXV0aGVudGljYXRlZCBvciBub3QKLSog ICAgICAgICAgICAgICAgICAgICAgICAgIEEgcmVuZGVyIG5vZGUgZmQsIG91dHB1dCBhdXRoID0g MAotKiAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsZWdhY3kgZmQsIGdldCB0aGUgYXV0aGVu dGljYXRlZCBmb3IgY29tcGF0aWJpbGl0eSByb290Ci0qCi0qIFxyZXR1cm4gICAwIG9uIHN1Y2Nl c3NcbgotKiAgICAgICAgICA+MCAtIEFNRCBzcGVjaWZpYyBlcnJvciBjb2RlXG4KLSogICAgICAg ICAgPDAgLSBOZWdhdGl2ZSBQT1NJWCBFcnJvciBjb2RlCi0qLwotc3RhdGljIGludCBhbWRncHVf Z2V0X2F1dGgoaW50IGZkLCBpbnQgKmF1dGgpCitzdGF0aWMgdm9pZCBhbWRncHVfZGV2aWNlX2Zy ZWUoc3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAqZGV2KQogewotCWludCByID0gMDsKLQlkcm1f Y2xpZW50X3QgY2xpZW50ID0ge307Ci0KLQlpZiAoZHJtR2V0Tm9kZVR5cGVGcm9tRmQoZmQpID09 IERSTV9OT0RFX1JFTkRFUikKLQkJKmF1dGggPSAwOwotCWVsc2UgewotCQljbGllbnQuaWR4ID0g MDsKLQkJciA9IGRybUlvY3RsKGZkLCBEUk1fSU9DVExfR0VUX0NMSUVOVCwgJmNsaWVudCk7Ci0J CWlmICghcikKLQkJCSphdXRoID0gY2xpZW50LmF1dGg7Ci0JfQotCXJldHVybiByOwotfQorCXN0 cnVjdCBhbWRncHVfY29yZV9kZXZpY2UgKipub2RlID0gJmRldl9saXN0OwogCi1zdGF0aWMgdm9p ZCBhbWRncHVfZGV2aWNlX2ZyZWVfaW50ZXJuYWwoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2KQot ewotCWFtZGdwdV9kZXZpY2VfaGFuZGxlICpub2RlID0gJmRldl9saXN0OwotCi0JcHRocmVhZF9t dXRleF9sb2NrKCZkZXZfbXV0ZXgpOwogCXdoaWxlICgqbm9kZSAhPSBkZXYgJiYgKCpub2RlKS0+ bmV4dCkKIAkJbm9kZSA9ICYoKm5vZGUpLT5uZXh0OwogCSpub2RlID0gKCpub2RlKS0+bmV4dDsK LQlwdGhyZWFkX211dGV4X3VubG9jaygmZGV2X211dGV4KTsKIAogCWNsb3NlKGRldi0+ZmQpOwot CWlmICgoZGV2LT5mbGlua19mZCA+PSAwKSAmJiAoZGV2LT5mZCAhPSBkZXYtPmZsaW5rX2ZkKSkK LQkJY2xvc2UoZGV2LT5mbGlua19mZCk7CiAKIAlhbWRncHVfdmFtZ3JfZGVpbml0KCZkZXYtPnZh bWdyXzMyKTsKIAlhbWRncHVfdmFtZ3JfZGVpbml0KCZkZXYtPnZhbWdyKTsKQEAgLTExOCw4NyAr ODYsMzkgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2RldmljZV9mcmVlX2ludGVybmFsKGFtZGdwdV9k ZXZpY2VfaGFuZGxlIGRldikKIAlmcmVlKGRldik7CiB9CiAKLS8qKgotICogQXNzaWdubWVudCBi ZXR3ZWVuIHR3byBhbWRncHVfZGV2aWNlIHBvaW50ZXJzIHdpdGggcmVmZXJlbmNlIGNvdW50aW5n LgotICoKLSAqIFVzYWdlOgotICogICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmRzdCA9IC4uLiAs ICpzcmMgPSAuLi47Ci0gKgotICogICAgZHN0ID0gc3JjOwotICogICAgLy8gTm8gcmVmZXJlbmNl IGNvdW50aW5nLiBPbmx5IHVzZSB0aGlzIHdoZW4geW91IG5lZWQgdG8gbW92ZQotICogICAgLy8g YSByZWZlcmVuY2UgZnJvbSBvbmUgcG9pbnRlciB0byBhbm90aGVyLgotICoKLSAqICAgIGFtZGdw dV9kZXZpY2VfcmVmZXJlbmNlKCZkc3QsIHNyYyk7Ci0gKiAgICAvLyBSZWZlcmVuY2UgY291bnRl cnMgYXJlIHVwZGF0ZWQuIGRzdCBpcyBkZWNyZW1lbnRlZCBhbmQgc3JjIGlzCi0gKiAgICAvLyBp bmNyZW1lbnRlZC4gZHN0IGlzIGZyZWVkIGlmIGl0cyByZWZlcmVuY2UgY291bnRlciBpcyAwLgot ICovCi1zdGF0aWMgdm9pZCBhbWRncHVfZGV2aWNlX3JlZmVyZW5jZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqKmRzdCwKLQkJCQkgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKnNyYykKK3N0YXRpYyBp bnQgYW1kZ3B1X2RldmljZV9pbml0KGFtZGdwdV9kZXZpY2VfaGFuZGxlIHVzZXJfZGV2KQogewot CWlmICh1cGRhdGVfcmVmZXJlbmNlcygmKCpkc3QpLT5yZWZjb3VudCwgJnNyYy0+cmVmY291bnQp KQotCQlhbWRncHVfZGV2aWNlX2ZyZWVfaW50ZXJuYWwoKmRzdCk7Ci0JKmRzdCA9IHNyYzsKLX0K LQotZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2RldmljZV9pbml0aWFsaXplKGludCBmZCwKLQkJCQkJ dWludDMyX3QgKm1ham9yX3ZlcnNpb24sCi0JCQkJCXVpbnQzMl90ICptaW5vcl92ZXJzaW9uLAot CQkJCQlhbWRncHVfZGV2aWNlX2hhbmRsZSAqZGV2aWNlX2hhbmRsZSkKLXsKLQlzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqZGV2OworCXN0cnVjdCBhbWRncHVfY29yZV9kZXZpY2UgKmRldjsKIAlkcm1W ZXJzaW9uUHRyIHZlcnNpb247Ci0JaW50IHI7Ci0JaW50IGZsYWdfYXV0aCA9IDA7Ci0JaW50IGZs YWdfYXV0aGV4aXN0PTA7Ci0JdWludDMyX3QgYWNjZWxfd29ya2luZyA9IDA7CiAJdWludDY0X3Qg c3RhcnQsIG1heDsKLQotCSpkZXZpY2VfaGFuZGxlID0gTlVMTDsKLQotCXB0aHJlYWRfbXV0ZXhf bG9jaygmZGV2X211dGV4KTsKLQlyID0gYW1kZ3B1X2dldF9hdXRoKGZkLCAmZmxhZ19hdXRoKTsK LQlpZiAocikgewotCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBhbWRncHVfZ2V0X2F1dGggKDEpIGZh aWxlZCAoJWkpXG4iLAotCQkJX19mdW5jX18sIHIpOwotCQlwdGhyZWFkX211dGV4X3VubG9jaygm ZGV2X211dGV4KTsKLQkJcmV0dXJuIHI7Ci0JfQorCWludCByOwogCiAJZm9yIChkZXYgPSBkZXZf bGlzdDsgZGV2OyBkZXYgPSBkZXYtPm5leHQpCi0JCWlmIChmZF9jb21wYXJlKGRldi0+ZmQsIGZk KSA9PSAwKQorCQlpZiAoZmRfY29tcGFyZShkZXYtPmZkLCB1c2VyX2Rldi0+dXNlcl9mZCkgPT0g MCkKIAkJCWJyZWFrOwogCiAJaWYgKGRldikgewotCQlyID0gYW1kZ3B1X2dldF9hdXRoKGRldi0+ ZmQsICZmbGFnX2F1dGhleGlzdCk7Ci0JCWlmIChyKSB7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgIiVz OiBhbWRncHVfZ2V0X2F1dGggKDIpIGZhaWxlZCAoJWkpXG4iLAotCQkJCV9fZnVuY19fLCByKTsK LQkJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXZfbXV0ZXgpOwotCQkJcmV0dXJuIHI7Ci0JCX0K LQkJaWYgKChmbGFnX2F1dGgpICYmICghZmxhZ19hdXRoZXhpc3QpKSB7Ci0JCQlkZXYtPmZsaW5r X2ZkID0gZmNudGwoZmQsIEZfRFVQRkRfQ0xPRVhFQywgMCk7Ci0JCX0KLQkJKm1ham9yX3ZlcnNp b24gPSBkZXYtPm1ham9yX3ZlcnNpb247Ci0JCSptaW5vcl92ZXJzaW9uID0gZGV2LT5taW5vcl92 ZXJzaW9uOwotCQlhbWRncHVfZGV2aWNlX3JlZmVyZW5jZShkZXZpY2VfaGFuZGxlLCBkZXYpOwot CQlwdGhyZWFkX211dGV4X3VubG9jaygmZGV2X211dGV4KTsKKwkJYXRvbWljX2luYygmZGV2LT5y ZWZjb3VudCk7CisJCXVzZXJfZGV2LT5jb3JlID0gZGV2OwogCQlyZXR1cm4gMDsKIAl9CiAKLQlk ZXYgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBhbWRncHVfZGV2aWNlKSk7CisJZGV2ID0gY2Fs bG9jKDEsIHNpemVvZihzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlKSk7CiAJaWYgKCFkZXYpIHsK IAkJZnByaW50ZihzdGRlcnIsICIlczogY2FsbG9jIGZhaWxlZFxuIiwgX19mdW5jX18pOwotCQlw dGhyZWFkX211dGV4X3VubG9jaygmZGV2X211dGV4KTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQog Ci0JZGV2LT5mZCA9IC0xOwotCWRldi0+ZmxpbmtfZmQgPSAtMTsKLQogCWF0b21pY19zZXQoJmRl di0+cmVmY291bnQsIDEpOworCXB0aHJlYWRfbXV0ZXhfaW5pdCgmZGV2LT5ib190YWJsZV9tdXRl eCwgTlVMTCk7CisKKwlkZXYtPmZkID0gdXNlcl9kZXYtPnVzZXJfZmQ7CisJdXNlcl9kZXYtPmNv cmUgPSBkZXY7CisKKwlkZXYtPm5leHQgPSBkZXZfbGlzdDsKKwlkZXZfbGlzdCA9IGRldjsKIAot CXZlcnNpb24gPSBkcm1HZXRWZXJzaW9uKGZkKTsKKwl2ZXJzaW9uID0gZHJtR2V0VmVyc2lvbihk ZXYtPmZkKTsKIAlpZiAodmVyc2lvbi0+dmVyc2lvbl9tYWpvciAhPSAzKSB7CiAJCWZwcmludGYo c3RkZXJyLCAiJXM6IERSTSB2ZXJzaW9uIGlzICVkLiVkLiVkIGJ1dCB0aGlzIGRyaXZlciBpcyAi CiAJCQkib25seSBjb21wYXRpYmxlIHdpdGggMy54LnguXG4iLApAQCAtMjExLDI4ICsxMzEsMTEg QEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X2RldmljZV9pbml0aWFsaXplKGludCBmZCwKIAkJZ290 byBjbGVhbnVwOwogCX0KIAotCWRldi0+ZmQgPSBmY250bChmZCwgRl9EVVBGRF9DTE9FWEVDLCAw KTsKLQlkZXYtPmZsaW5rX2ZkID0gZGV2LT5mZDsKIAlkZXYtPm1ham9yX3ZlcnNpb24gPSB2ZXJz aW9uLT52ZXJzaW9uX21ham9yOwogCWRldi0+bWlub3JfdmVyc2lvbiA9IHZlcnNpb24tPnZlcnNp b25fbWlub3I7CiAJZHJtRnJlZVZlcnNpb24odmVyc2lvbik7CiAKLQlwdGhyZWFkX211dGV4X2lu aXQoJmRldi0+Ym9fdGFibGVfbXV0ZXgsIE5VTEwpOwotCi0JLyogQ2hlY2sgaWYgYWNjZWxlcmF0 aW9uIGlzIHdvcmtpbmcuICovCi0JciA9IGFtZGdwdV9xdWVyeV9pbmZvKGRldiwgQU1ER1BVX0lO Rk9fQUNDRUxfV09SS0lORywgNCwgJmFjY2VsX3dvcmtpbmcpOwotCWlmIChyKSB7Ci0JCWZwcmlu dGYoc3RkZXJyLCAiJXM6IGFtZGdwdV9xdWVyeV9pbmZvKEFDQ0VMX1dPUktJTkcpIGZhaWxlZCAo JWkpXG4iLAotCQkJX19mdW5jX18sIHIpOwotCQlnb3RvIGNsZWFudXA7Ci0JfQotCWlmICghYWNj ZWxfd29ya2luZykgewotCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBBTURHUFVfSU5GT19BQ0NFTF9X T1JLSU5HID0gMFxuIiwgX19mdW5jX18pOwotCQlyID0gLUVCQURGOwotCQlnb3RvIGNsZWFudXA7 Ci0JfQotCi0JciA9IGFtZGdwdV9xdWVyeV9ncHVfaW5mb19pbml0KGRldik7CisJciA9IGFtZGdw dV9xdWVyeV9ncHVfaW5mb19pbml0KHVzZXJfZGV2KTsKIAlpZiAocikgewogCQlmcHJpbnRmKHN0 ZGVyciwgIiVzOiBhbWRncHVfcXVlcnlfZ3B1X2luZm9faW5pdCBmYWlsZWRcbiIsIF9fZnVuY19f KTsKIAkJZ290byBjbGVhbnVwOwpAQCAtMjYxLDM5ICsxNjQsOTcgQEAgZHJtX3B1YmxpYyBpbnQg YW1kZ3B1X2RldmljZV9pbml0aWFsaXplKGludCBmZCwKIAkJCSAgZGV2LT5kZXZfaW5mby52aXJ0 dWFsX2FkZHJlc3NfYWxpZ25tZW50KTsKIAogCWFtZGdwdV9wYXJzZV9hc2ljX2lkcyhkZXYpOwor CXJldHVybiAwOwogCi0JKm1ham9yX3ZlcnNpb24gPSBkZXYtPm1ham9yX3ZlcnNpb247Ci0JKm1p bm9yX3ZlcnNpb24gPSBkZXYtPm1pbm9yX3ZlcnNpb247Ci0JKmRldmljZV9oYW5kbGUgPSBkZXY7 Ci0JZGV2LT5uZXh0ID0gZGV2X2xpc3Q7Ci0JZGV2X2xpc3QgPSBkZXY7CitjbGVhbnVwOgorCXVz ZXJfZGV2LT5jb3JlID0gTlVMTDsKKwljbG9zZShkZXYtPmZkKTsKKwlmcmVlKGRldik7CisJcmV0 dXJuIHI7Cit9CisKK2RybV9wdWJsaWMgaW50IGFtZGdwdV9kZXZpY2VfaW5pdGlhbGl6ZShpbnQg ZmQsCisJCQkJCXVpbnQzMl90ICptYWpvcl92ZXJzaW9uLAorCQkJCQl1aW50MzJfdCAqbWlub3Jf dmVyc2lvbiwKKwkJCQkJYW1kZ3B1X2RldmljZV9oYW5kbGUgKmRldmljZV9oYW5kbGUpCit7CisJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKnVzZXJfZGV2OworCXVpbnQzMl90IGFjY2VsX3dvcmtpbmcg PSAwOworCWludCByOworCisJKmRldmljZV9oYW5kbGUgPSBOVUxMOworCisJdXNlcl9kZXYgPSBj YWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBhbWRncHVfZGV2aWNlKSk7CisJaWYgKCF1c2VyX2Rldikg eworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBjYWxsb2MgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CisJ CXJldHVybiAtRU5PTUVNOworCX0KKworCXVzZXJfZGV2LT51c2VyX2ZkID0gZmNudGwoZmQsIEZf RFVQRkRfQ0xPRVhFQywgMCk7CisKKwlwdGhyZWFkX211dGV4X2xvY2soJmRldl9tdXRleCk7CisK KwlyID0gYW1kZ3B1X2RldmljZV9pbml0KHVzZXJfZGV2KTsKKwlpZiAociAhPSAwKQorCQlnb3Rv IGNsZWFudXA7CisKKwkvKiBDaGVjayBpZiBhY2NlbGVyYXRpb24gaXMgd29ya2luZy4gKi8KKwly ID0gYW1kZ3B1X3F1ZXJ5X2luZm8odXNlcl9kZXYsIEFNREdQVV9JTkZPX0FDQ0VMX1dPUktJTkcs IDQsICZhY2NlbF93b3JraW5nKTsKKwlpZiAocikgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBh bWRncHVfcXVlcnlfaW5mbyhBQ0NFTF9XT1JLSU5HKSBmYWlsZWQgKCVpKVxuIiwKKwkJCV9fZnVu Y19fLCByKTsKKwkJZ290byBjbGVhbnVwOworCX0KKwlpZiAoIWFjY2VsX3dvcmtpbmcpIHsKKwkJ ZnByaW50ZihzdGRlcnIsICIlczogQU1ER1BVX0lORk9fQUNDRUxfV09SS0lORyA9IDBcbiIsIF9f ZnVuY19fKTsKKwkJciA9IC1FQkFERjsKKwkJZ290byBjbGVhbnVwOworCX0KKworCSptYWpvcl92 ZXJzaW9uID0gdXNlcl9kZXYtPmNvcmUtPm1ham9yX3ZlcnNpb247CisJKm1pbm9yX3ZlcnNpb24g PSB1c2VyX2Rldi0+Y29yZS0+bWlub3JfdmVyc2lvbjsKKwkqZGV2aWNlX2hhbmRsZSA9IHVzZXJf ZGV2OwogCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXZfbXV0ZXgpOwogCiAJcmV0dXJuIDA7CiAK IGNsZWFudXA6Ci0JaWYgKGRldi0+ZmQgPj0gMCkKLQkJY2xvc2UoZGV2LT5mZCk7Ci0JZnJlZShk ZXYpOworCWlmICghdXNlcl9kZXYtPmNvcmUgfHwgdXNlcl9kZXYtPnVzZXJfZmQgIT0gdXNlcl9k ZXYtPmNvcmUtPmZkKQorCQljbG9zZSh1c2VyX2Rldi0+dXNlcl9mZCk7CisJaWYgKHVzZXJfZGV2 LT5jb3JlICYmIHVwZGF0ZV9yZWZlcmVuY2VzKCZ1c2VyX2Rldi0+Y29yZS0+cmVmY291bnQsIE5V TEwpKQorCQlhbWRncHVfZGV2aWNlX2ZyZWUodXNlcl9kZXYtPmNvcmUpOworCWZyZWUodXNlcl9k ZXYpOwogCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXZfbXV0ZXgpOwogCXJldHVybiByOwogfQog Ci1kcm1fcHVibGljIGludCBhbWRncHVfZGV2aWNlX2RlaW5pdGlhbGl6ZShhbWRncHVfZGV2aWNl X2hhbmRsZSBkZXYpCitkcm1fcHVibGljIGludCBhbWRncHVfZGV2aWNlX2RlaW5pdGlhbGl6ZShh bWRncHVfZGV2aWNlX2hhbmRsZSB1c2VyX2RldikKIHsKLQlhbWRncHVfZGV2aWNlX3JlZmVyZW5j ZSgmZGV2LCBOVUxMKTsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlICpkZXYgPSB1c2VyX2Rl di0+Y29yZTsKKworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZGV2X211dGV4KTsKKworCWlmICh1c2Vy X2Rldi0+dXNlcl9mZCAhPSBkZXYtPmZkKQorCQljbG9zZSh1c2VyX2Rldi0+dXNlcl9mZCk7CisK KwlpZiAodXBkYXRlX3JlZmVyZW5jZXMoJmRldi0+cmVmY291bnQsIE5VTEwpKQorCQlhbWRncHVf ZGV2aWNlX2ZyZWUoZGV2KTsKKworCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZXZfbXV0ZXgpOwor CWZyZWUodXNlcl9kZXYpOwogCXJldHVybiAwOwogfQogCi1kcm1fcHVibGljIGNvbnN0IGNoYXIg KmFtZGdwdV9nZXRfbWFya2V0aW5nX25hbWUoYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2KQorZHJt X3B1YmxpYyBjb25zdCBjaGFyICphbWRncHVfZ2V0X21hcmtldGluZ19uYW1lKGFtZGdwdV9kZXZp Y2VfaGFuZGxlIHVzZXJfZGV2KQogewotCXJldHVybiBkZXYtPm1hcmtldGluZ19uYW1lOworCXJl dHVybiB1c2VyX2Rldi0+Y29yZS0+bWFya2V0aW5nX25hbWU7CiB9CiAKLWRybV9wdWJsaWMgaW50 IGFtZGdwdV9xdWVyeV9zd19pbmZvKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKK2RybV9wdWJs aWMgaW50IGFtZGdwdV9xdWVyeV9zd19pbmZvKGFtZGdwdV9kZXZpY2VfaGFuZGxlIHVzZXJfZGV2 LAogCQkJCSAgICBlbnVtIGFtZGdwdV9zd19pbmZvIGluZm8sCiAJCQkJICAgIHZvaWQgKnZhbHVl KQogeworCXN0cnVjdCBhbWRncHVfY29yZV9kZXZpY2UgKmRldiA9IHVzZXJfZGV2LT5jb3JlOwog CXVpbnQzMl90ICp2YWwzMiA9ICh1aW50MzJfdCopdmFsdWU7CiAKIAlzd2l0Y2ggKGluZm8pIHsK ZGlmZiAtLWdpdCBhL2FtZGdwdS9hbWRncHVfZ3B1X2luZm8uYyBiL2FtZGdwdS9hbWRncHVfZ3B1 X2luZm8uYwppbmRleCA3NzcwODdmMi4uNzI1M2ZiZWEgMTAwNjQ0Ci0tLSBhL2FtZGdwdS9hbWRn cHVfZ3B1X2luZm8uYworKysgYi9hbWRncHUvYW1kZ3B1X2dwdV9pbmZvLmMKQEAgLTQwLDcgKzQw LDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X3F1ZXJ5X2luZm8oYW1kZ3B1X2RldmljZV9oYW5k bGUgZGV2LCB1bnNpZ25lZCBpbmZvX2lkLAogCXJlcXVlc3QucmV0dXJuX3NpemUgPSBzaXplOwog CXJlcXVlc3QucXVlcnkgPSBpbmZvX2lkOwogCi0JcmV0dXJuIGRybUNvbW1hbmRXcml0ZShkZXYt PmZkLCBEUk1fQU1ER1BVX0lORk8sICZyZXF1ZXN0LAorCXJldHVybiBkcm1Db21tYW5kV3JpdGUo ZGV2LT5jb3JlLT5mZCwgRFJNX0FNREdQVV9JTkZPLCAmcmVxdWVzdCwKIAkJCSAgICAgICBzaXpl b2Yoc3RydWN0IGRybV9hbWRncHVfaW5mbykpOwogfQogCkBAIC01NSw3ICs1NSw3IEBAIGRybV9w dWJsaWMgaW50IGFtZGdwdV9xdWVyeV9jcnRjX2Zyb21faWQoYW1kZ3B1X2RldmljZV9oYW5kbGUg ZGV2LCB1bnNpZ25lZCBpZCwKIAlyZXF1ZXN0LnF1ZXJ5ID0gQU1ER1BVX0lORk9fQ1JUQ19GUk9N X0lEOwogCXJlcXVlc3QubW9kZV9jcnRjLmlkID0gaWQ7CiAKLQlyZXR1cm4gZHJtQ29tbWFuZFdy aXRlKGRldi0+ZmQsIERSTV9BTURHUFVfSU5GTywgJnJlcXVlc3QsCisJcmV0dXJuIGRybUNvbW1h bmRXcml0ZShkZXYtPmNvcmUtPmZkLCBEUk1fQU1ER1BVX0lORk8sICZyZXF1ZXN0LAogCQkJICAg ICAgIHNpemVvZihzdHJ1Y3QgZHJtX2FtZGdwdV9pbmZvKSk7CiB9CiAKQEAgLTc0LDcgKzc0LDcg QEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X3JlYWRfbW1fcmVnaXN0ZXJzKGFtZGdwdV9kZXZpY2Vf aGFuZGxlIGRldiwKIAlyZXF1ZXN0LnJlYWRfbW1yX3JlZy5pbnN0YW5jZSA9IGluc3RhbmNlOwog CXJlcXVlc3QucmVhZF9tbXJfcmVnLmZsYWdzID0gZmxhZ3M7CiAKLQlyZXR1cm4gZHJtQ29tbWFu ZFdyaXRlKGRldi0+ZmQsIERSTV9BTURHUFVfSU5GTywgJnJlcXVlc3QsCisJcmV0dXJuIGRybUNv bW1hbmRXcml0ZShkZXYtPmNvcmUtPmZkLCBEUk1fQU1ER1BVX0lORk8sICZyZXF1ZXN0LAogCQkJ ICAgICAgIHNpemVvZihzdHJ1Y3QgZHJtX2FtZGdwdV9pbmZvKSk7CiB9CiAKQEAgLTkwLDcgKzkw LDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X3F1ZXJ5X2h3X2lwX2NvdW50KGFtZGdwdV9kZXZp Y2VfaGFuZGxlIGRldiwKIAlyZXF1ZXN0LnF1ZXJ5ID0gQU1ER1BVX0lORk9fSFdfSVBfQ09VTlQ7 CiAJcmVxdWVzdC5xdWVyeV9od19pcC50eXBlID0gdHlwZTsKIAotCXJldHVybiBkcm1Db21tYW5k V3JpdGUoZGV2LT5mZCwgRFJNX0FNREdQVV9JTkZPLCAmcmVxdWVzdCwKKwlyZXR1cm4gZHJtQ29t bWFuZFdyaXRlKGRldi0+Y29yZS0+ZmQsIERSTV9BTURHUFVfSU5GTywgJnJlcXVlc3QsCiAJCQkg ICAgICAgc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1X2luZm8pKTsKIH0KIApAQCAtMTA3LDcgKzEw Nyw3IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9xdWVyeV9od19pcF9pbmZvKGFtZGdwdV9kZXZp Y2VfaGFuZGxlIGRldiwgdW5zaWduZWQgdHlwZSwKIAlyZXF1ZXN0LnF1ZXJ5X2h3X2lwLnR5cGUg PSB0eXBlOwogCXJlcXVlc3QucXVlcnlfaHdfaXAuaXBfaW5zdGFuY2UgPSBpcF9pbnN0YW5jZTsK IAotCXJldHVybiBkcm1Db21tYW5kV3JpdGUoZGV2LT5mZCwgRFJNX0FNREdQVV9JTkZPLCAmcmVx dWVzdCwKKwlyZXR1cm4gZHJtQ29tbWFuZFdyaXRlKGRldi0+Y29yZS0+ZmQsIERSTV9BTURHUFVf SU5GTywgJnJlcXVlc3QsCiAJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1X2luZm8p KTsKIH0KIApAQCAtMTI3LDcgKzEyNyw3IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9xdWVyeV9m aXJtd2FyZV92ZXJzaW9uKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKIAlyZXF1ZXN0LnF1ZXJ5 X2Z3LmlwX2luc3RhbmNlID0gaXBfaW5zdGFuY2U7CiAJcmVxdWVzdC5xdWVyeV9mdy5pbmRleCA9 IGluZGV4OwogCi0JciA9IGRybUNvbW1hbmRXcml0ZShkZXYtPmZkLCBEUk1fQU1ER1BVX0lORk8s ICZyZXF1ZXN0LAorCXIgPSBkcm1Db21tYW5kV3JpdGUoZGV2LT5jb3JlLT5mZCwgRFJNX0FNREdQ VV9JTkZPLCAmcmVxdWVzdCwKIAkJCSAgICBzaXplb2Yoc3RydWN0IGRybV9hbWRncHVfaW5mbykp OwogCWlmIChyKQogCQlyZXR1cm4gcjsKQEAgLTEzNywxMSArMTM3LDEyIEBAIGRybV9wdWJsaWMg aW50IGFtZGdwdV9xdWVyeV9maXJtd2FyZV92ZXJzaW9uKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRl diwKIAlyZXR1cm4gMDsKIH0KIAotZHJtX3ByaXZhdGUgaW50IGFtZGdwdV9xdWVyeV9ncHVfaW5m b19pbml0KGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldikKK2RybV9wcml2YXRlIGludCBhbWRncHVf cXVlcnlfZ3B1X2luZm9faW5pdChhbWRncHVfZGV2aWNlX2hhbmRsZSB1c2VyX2RldikKIHsKKwlz dHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlICpkZXYgPSB1c2VyX2Rldi0+Y29yZTsKIAlpbnQgciwg aTsKIAotCXIgPSBhbWRncHVfcXVlcnlfaW5mbyhkZXYsIEFNREdQVV9JTkZPX0RFVl9JTkZPLCBz aXplb2YoZGV2LT5kZXZfaW5mbyksCisJciA9IGFtZGdwdV9xdWVyeV9pbmZvKHVzZXJfZGV2LCBB TURHUFVfSU5GT19ERVZfSU5GTywgc2l6ZW9mKGRldi0+ZGV2X2luZm8pLAogCQkJICAgICAgJmRl di0+ZGV2X2luZm8pOwogCWlmIChyKQogCQlyZXR1cm4gcjsKQEAgLTE3Miw3ICsxNzMsNyBAQCBk cm1fcHJpdmF0ZSBpbnQgYW1kZ3B1X3F1ZXJ5X2dwdV9pbmZvX2luaXQoYW1kZ3B1X2RldmljZV9o YW5kbGUgZGV2KQogCQkJCQkgICAgKEFNREdQVV9JTkZPX01NUl9TSF9JTkRFWF9NQVNLIDw8CiAJ CQkJCSAgICAgQU1ER1BVX0lORk9fTU1SX1NIX0lOREVYX1NISUZUKTsKIAotCQkJciA9IGFtZGdw dV9yZWFkX21tX3JlZ2lzdGVycyhkZXYsIDB4MjYzZCwgMSwgaW5zdGFuY2UsIDAsCisJCQlyID0g YW1kZ3B1X3JlYWRfbW1fcmVnaXN0ZXJzKHVzZXJfZGV2LCAweDI2M2QsIDEsIGluc3RhbmNlLCAw LAogCQkJCQkJICAgICAmZGV2LT5pbmZvLmJhY2tlbmRfZGlzYWJsZVtpXSk7CiAJCQlpZiAocikK IAkJCQlyZXR1cm4gcjsKQEAgLTE4MCwxMyArMTgxLDEzIEBAIGRybV9wcml2YXRlIGludCBhbWRn cHVfcXVlcnlfZ3B1X2luZm9faW5pdChhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYpCiAJCQlkZXYt PmluZm8uYmFja2VuZF9kaXNhYmxlW2ldID0KIAkJCQkoZGV2LT5pbmZvLmJhY2tlbmRfZGlzYWJs ZVtpXSA+PiAxNikgJiAweGZmOwogCi0JCQlyID0gYW1kZ3B1X3JlYWRfbW1fcmVnaXN0ZXJzKGRl diwgMHhhMGQ0LCAxLCBpbnN0YW5jZSwgMCwKKwkJCXIgPSBhbWRncHVfcmVhZF9tbV9yZWdpc3Rl cnModXNlcl9kZXYsIDB4YTBkNCwgMSwgaW5zdGFuY2UsIDAsCiAJCQkJCQkgICAgICZkZXYtPmlu Zm8ucGFfc2NfcmFzdGVyX2NmZ1tpXSk7CiAJCQlpZiAocikKIAkJCQlyZXR1cm4gcjsKIAogCQkJ aWYgKGRldi0+aW5mby5mYW1pbHlfaWQgPj0gQU1ER1BVX0ZBTUlMWV9DSSkgewotCQkJCXIgPSBh bWRncHVfcmVhZF9tbV9yZWdpc3RlcnMoZGV2LCAweGEwZDUsIDEsIGluc3RhbmNlLCAwLAorCQkJ CXIgPSBhbWRncHVfcmVhZF9tbV9yZWdpc3RlcnModXNlcl9kZXYsIDB4YTBkNSwgMSwgaW5zdGFu Y2UsIDAsCiAJCQkJCQkgICAgICZkZXYtPmluZm8ucGFfc2NfcmFzdGVyX2NmZzFbaV0pOwogCQkJ CWlmIChyKQogCQkJCQlyZXR1cm4gcjsKQEAgLTE5NCwyNSArMTk1LDI1IEBAIGRybV9wcml2YXRl IGludCBhbWRncHVfcXVlcnlfZ3B1X2luZm9faW5pdChhbWRncHVfZGV2aWNlX2hhbmRsZSBkZXYp CiAJCX0KIAl9CiAKLQlyID0gYW1kZ3B1X3JlYWRfbW1fcmVnaXN0ZXJzKGRldiwgMHgyNjNlLCAx LCAweGZmZmZmZmZmLCAwLAorCXIgPSBhbWRncHVfcmVhZF9tbV9yZWdpc3RlcnModXNlcl9kZXYs IDB4MjYzZSwgMSwgMHhmZmZmZmZmZiwgMCwKIAkJCQkJICAgICAmZGV2LT5pbmZvLmdiX2FkZHJf Y2ZnKTsKIAlpZiAocikKIAkJcmV0dXJuIHI7CiAKIAlpZiAoZGV2LT5pbmZvLmZhbWlseV9pZCA8 IEFNREdQVV9GQU1JTFlfQUkpIHsKLQkJciA9IGFtZGdwdV9yZWFkX21tX3JlZ2lzdGVycyhkZXYs IDB4MjY0NCwgMzIsIDB4ZmZmZmZmZmYsIDAsCisJCXIgPSBhbWRncHVfcmVhZF9tbV9yZWdpc3Rl cnModXNlcl9kZXYsIDB4MjY0NCwgMzIsIDB4ZmZmZmZmZmYsIDAsCiAJCQkJCSAgICAgZGV2LT5p bmZvLmdiX3RpbGVfbW9kZSk7CiAJCWlmIChyKQogCQkJcmV0dXJuIHI7CiAKIAkJaWYgKGRldi0+ aW5mby5mYW1pbHlfaWQgPj0gQU1ER1BVX0ZBTUlMWV9DSSkgewotCQkJciA9IGFtZGdwdV9yZWFk X21tX3JlZ2lzdGVycyhkZXYsIDB4MjY2NCwgMTYsIDB4ZmZmZmZmZmYsIDAsCisJCQlyID0gYW1k Z3B1X3JlYWRfbW1fcmVnaXN0ZXJzKHVzZXJfZGV2LCAweDI2NjQsIDE2LCAweGZmZmZmZmZmLCAw LAogCQkJCQkJICAgICBkZXYtPmluZm8uZ2JfbWFjcm9fdGlsZV9tb2RlKTsKIAkJCWlmIChyKQog CQkJCXJldHVybiByOwogCQl9CiAKLQkJciA9IGFtZGdwdV9yZWFkX21tX3JlZ2lzdGVycyhkZXYs IDB4OWQ4LCAxLCAweGZmZmZmZmZmLCAwLAorCQlyID0gYW1kZ3B1X3JlYWRfbW1fcmVnaXN0ZXJz KHVzZXJfZGV2LCAweDlkOCwgMSwgMHhmZmZmZmZmZiwgMCwKIAkJCQkJICAgICAmZGV2LT5pbmZv Lm1jX2FyYl9yYW1jZmcpOwogCQlpZiAocikKIAkJCXJldHVybiByOwpAQCAtMjM1LDcgKzIzNiw3 IEBAIGRybV9wdWJsaWMgaW50IGFtZGdwdV9xdWVyeV9ncHVfaW5mbyhhbWRncHVfZGV2aWNlX2hh bmRsZSBkZXYsCiAJCXJldHVybiAtRUlOVkFMOwogCiAJLyogR2V0IEFTSUMgaW5mbyovCi0JKmlu Zm8gPSBkZXYtPmluZm87CisJKmluZm8gPSBkZXYtPmNvcmUtPmluZm87CiAKIAlyZXR1cm4gMDsK IH0KQEAgLTMyOCw2ICszMjksNiBAQCBkcm1fcHVibGljIGludCBhbWRncHVfcXVlcnlfc2Vuc29y X2luZm8oYW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LCB1bnNpZ25lZCBzZW5zbwogCXJlcXVlc3Qu cXVlcnkgPSBBTURHUFVfSU5GT19TRU5TT1I7CiAJcmVxdWVzdC5zZW5zb3JfaW5mby50eXBlID0g c2Vuc29yX3R5cGU7CiAKLQlyZXR1cm4gZHJtQ29tbWFuZFdyaXRlKGRldi0+ZmQsIERSTV9BTURH UFVfSU5GTywgJnJlcXVlc3QsCisJcmV0dXJuIGRybUNvbW1hbmRXcml0ZShkZXYtPmNvcmUtPmZk LCBEUk1fQU1ER1BVX0lORk8sICZyZXF1ZXN0LAogCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgZHJt X2FtZGdwdV9pbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9hbWRncHUvYW1kZ3B1X2ludGVybmFsLmgg Yi9hbWRncHUvYW1kZ3B1X2ludGVybmFsLmgKaW5kZXggYTM0MGFiYmQuLjNhMmFiNzRjIDEwMDY0 NAotLS0gYS9hbWRncHUvYW1kZ3B1X2ludGVybmFsLmgKKysrIGIvYW1kZ3B1L2FtZGdwdV9pbnRl cm5hbC5oCkBAIC02NCwxNCArNjQsMTMgQEAgc3RydWN0IGFtZGdwdV92YSB7CiAJc3RydWN0IGFt ZGdwdV9ib192YV9tZ3IgKnZhbWdyOwogfTsKIAotc3RydWN0IGFtZGdwdV9kZXZpY2Ugeworc3Ry dWN0IGFtZGdwdV9jb3JlX2RldmljZSB7CiAJYXRvbWljX3QgcmVmY291bnQ7Ci0Jc3RydWN0IGFt ZGdwdV9kZXZpY2UgKm5leHQ7CiAJaW50IGZkOwotCWludCBmbGlua19mZDsKIAl1bnNpZ25lZCBt YWpvcl92ZXJzaW9uOwogCXVuc2lnbmVkIG1pbm9yX3ZlcnNpb247CiAKKwlzdHJ1Y3QgYW1kZ3B1 X2NvcmVfZGV2aWNlICpuZXh0OwogCWNoYXIgKm1hcmtldGluZ19uYW1lOwogCS8qKiBMaXN0IG9m IGJ1ZmZlciBoYW5kbGVzLiBQcm90ZWN0ZWQgYnkgYm9fdGFibGVfbXV0ZXguICovCiAJc3RydWN0 IGhhbmRsZV90YWJsZSBib19oYW5kbGVzOwpAQCAtOTEsOSArOTAsMTQgQEAgc3RydWN0IGFtZGdw dV9kZXZpY2UgewogCXN0cnVjdCBhbWRncHVfYm9fdmFfbWdyIHZhbWdyX2hpZ2hfMzI7CiB9Owog Ci1zdHJ1Y3QgYW1kZ3B1X2JvIHsKK3N0cnVjdCBhbWRncHVfZGV2aWNlIHsKKwlpbnQgdXNlcl9m ZDsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlICpjb3JlOworfTsKKworc3RydWN0IGFtZGdw dV9jb3JlX2JvIHsKIAlhdG9taWNfdCByZWZjb3VudDsKLQlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq ZGV2OworCWFtZGdwdV9ib19oYW5kbGUgdXNlcl9ib3M7CiAKIAl1aW50NjRfdCBhbGxvY19zaXpl OwogCkBAIC0xMDUsMTQgKzEwOSwyMSBAQCBzdHJ1Y3QgYW1kZ3B1X2JvIHsKIAlpbnQgY3B1X21h cF9jb3VudDsKIH07CiAKLXN0cnVjdCBhbWRncHVfYm9fbGlzdCB7CitzdHJ1Y3QgYW1kZ3B1X2Jv IHsKKwlhdG9taWNfdCByZWZjb3VudDsKKwlzdHJ1Y3QgYW1kZ3B1X2JvICpuZXh0OworCXN0cnVj dCBhbWRncHVfY29yZV9ibyAqY29yZTsKIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqZGV2OworfTsK Kworc3RydWN0IGFtZGdwdV9ib19saXN0IHsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlICpk ZXY7CiAKIAl1aW50MzJfdCBoYW5kbGU7CiB9OwogCiBzdHJ1Y3QgYW1kZ3B1X2NvbnRleHQgewot CXN0cnVjdCBhbWRncHVfZGV2aWNlICpkZXY7CisJc3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAq ZGV2OwogCS8qKiBNdXRleCBmb3IgYWNjZXNzaW5nIGZlbmNlcyBhbmQgdG8gbWFpbnRhaW4gY29t bWFuZCBzdWJtaXNzaW9ucwogCSAgICBpbiBnb29kIHNlcXVlbmNlLiAqLwogCXB0aHJlYWRfbXV0 ZXhfdCBzZXF1ZW5jZV9tdXRleDsKQEAgLTE0MSw3ICsxNTIsNyBAQCBkcm1fcHJpdmF0ZSB2b2lk IGFtZGdwdV92YW1ncl9pbml0KHN0cnVjdCBhbWRncHVfYm9fdmFfbWdyICptZ3IsIHVpbnQ2NF90 IHN0YXJ0LAogCiBkcm1fcHJpdmF0ZSB2b2lkIGFtZGdwdV92YW1ncl9kZWluaXQoc3RydWN0IGFt ZGdwdV9ib192YV9tZ3IgKm1ncik7CiAKLWRybV9wcml2YXRlIHZvaWQgYW1kZ3B1X3BhcnNlX2Fz aWNfaWRzKHN0cnVjdCBhbWRncHVfZGV2aWNlICpkZXYpOworZHJtX3ByaXZhdGUgdm9pZCBhbWRn cHVfcGFyc2VfYXNpY19pZHMoc3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAqZGV2KTsKIAogZHJt X3ByaXZhdGUgaW50IGFtZGdwdV9xdWVyeV9ncHVfaW5mb19pbml0KGFtZGdwdV9kZXZpY2VfaGFu ZGxlIGRldik7CiAKZGlmZiAtLWdpdCBhL2FtZGdwdS9hbWRncHVfdmFtZ3IuYyBiL2FtZGdwdS9h bWRncHVfdmFtZ3IuYwppbmRleCBkMjVkNDIxNi4uNTYwYjg0ZTcgMTAwNjQ0Ci0tLSBhL2FtZGdw dS9hbWRncHVfdmFtZ3IuYworKysgYi9hbWRncHUvYW1kZ3B1X3ZhbWdyLmMKQEAgLTI5LDEwICsy OSwxMiBAQAogI2luY2x1ZGUgImFtZGdwdV9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInV0aWxfbWF0 aC5oIgogCi1kcm1fcHVibGljIGludCBhbWRncHVfdmFfcmFuZ2VfcXVlcnkoYW1kZ3B1X2Rldmlj ZV9oYW5kbGUgZGV2LAorZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X3ZhX3JhbmdlX3F1ZXJ5KGFtZGdw dV9kZXZpY2VfaGFuZGxlIHVzZXJfZGV2LAogCQkJCSAgICAgZW51bSBhbWRncHVfZ3B1X3ZhX3Jh bmdlIHR5cGUsCiAJCQkJICAgICB1aW50NjRfdCAqc3RhcnQsIHVpbnQ2NF90ICplbmQpCiB7CisJ c3RydWN0IGFtZGdwdV9jb3JlX2RldmljZSAqZGV2ID0gdXNlcl9kZXYtPmNvcmU7CisKIAlpZiAo dHlwZSAhPSBhbWRncHVfZ3B1X3ZhX3JhbmdlX2dlbmVyYWwpCiAJCXJldHVybiAtRUlOVkFMOwog CkBAIC0xODYsNyArMTg4LDcgQEAgb3V0OgogCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtZ3ItPmJv X3ZhX211dGV4KTsKIH0KIAotZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X3ZhX3JhbmdlX2FsbG9jKGFt ZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKK2RybV9wdWJsaWMgaW50IGFtZGdwdV92YV9yYW5nZV9h bGxvYyhhbWRncHVfZGV2aWNlX2hhbmRsZSB1c2VyX2RldiwKIAkJCQkgICAgIGVudW0gYW1kZ3B1 X2dwdV92YV9yYW5nZSB2YV9yYW5nZV90eXBlLAogCQkJCSAgICAgdWludDY0X3Qgc2l6ZSwKIAkJ CQkgICAgIHVpbnQ2NF90IHZhX2Jhc2VfYWxpZ25tZW50LApAQCAtMTk1LDYgKzE5Nyw3IEBAIGRy bV9wdWJsaWMgaW50IGFtZGdwdV92YV9yYW5nZV9hbGxvYyhhbWRncHVfZGV2aWNlX2hhbmRsZSBk ZXYsCiAJCQkJICAgICBhbWRncHVfdmFfaGFuZGxlICp2YV9yYW5nZV9oYW5kbGUsCiAJCQkJICAg ICB1aW50NjRfdCBmbGFncykKIHsKKwlzdHJ1Y3QgYW1kZ3B1X2NvcmVfZGV2aWNlICpkZXYgPSB1 c2VyX2Rldi0+Y29yZTsKIAlzdHJ1Y3QgYW1kZ3B1X2JvX3ZhX21nciAqdmFtZ3I7CiAKIAkvKiBD bGVhciB0aGUgZmxhZyB3aGVuIHRoZSBoaWdoIFZBIG1hbmFnZXIgaXMgbm90IGluaXRpYWxpemVk ICovCkBAIC0yMzcsNyArMjQwLDcgQEAgZHJtX3B1YmxpYyBpbnQgYW1kZ3B1X3ZhX3JhbmdlX2Fs bG9jKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRldiwKIAkJCWFtZGdwdV92YW1ncl9mcmVlX3ZhKHZh bWdyLCAqdmFfYmFzZV9hbGxvY2F0ZWQsIHNpemUpOwogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0K LQkJdmEtPmRldiA9IGRldjsKKwkJdmEtPmRldiA9IHVzZXJfZGV2OwogCQl2YS0+YWRkcmVzcyA9 ICp2YV9iYXNlX2FsbG9jYXRlZDsKIAkJdmEtPnNpemUgPSBzaXplOwogCQl2YS0+cmFuZ2UgPSB2 YV9yYW5nZV90eXBlOwpkaWZmIC0tZ2l0IGEvYW1kZ3B1L2FtZGdwdV92bS5jIGIvYW1kZ3B1L2Ft ZGdwdV92bS5jCmluZGV4IDdlNmUyOGYwLi5kZTQ0ZTZjMiAxMDA2NDQKLS0tIGEvYW1kZ3B1L2Ft ZGdwdV92bS5jCisrKyBiL2FtZGdwdS9hbWRncHVfdm0uYwpAQCAtMzMsNyArMzMsNyBAQCBkcm1f cHVibGljIGludCBhbWRncHVfdm1fcmVzZXJ2ZV92bWlkKGFtZGdwdV9kZXZpY2VfaGFuZGxlIGRl diwgdWludDMyX3QgZmxhZ3MpCiAJdm0uaW4ub3AgPSBBTURHUFVfVk1fT1BfUkVTRVJWRV9WTUlE OwogCXZtLmluLmZsYWdzID0gZmxhZ3M7CiAKLQlyZXR1cm4gZHJtQ29tbWFuZFdyaXRlUmVhZChk ZXYtPmZkLCBEUk1fQU1ER1BVX1ZNLAorCXJldHVybiBkcm1Db21tYW5kV3JpdGVSZWFkKGRldi0+ Y29yZS0+ZmQsIERSTV9BTURHUFVfVk0sCiAJCQkJICAgJnZtLCBzaXplb2Yodm0pKTsKIH0KIApA QCAtNDUsNiArNDUsNiBAQCBkcm1fcHVibGljIGludCBhbWRncHVfdm1fdW5yZXNlcnZlX3ZtaWQo YW1kZ3B1X2RldmljZV9oYW5kbGUgZGV2LAogCXZtLmluLm9wID0gQU1ER1BVX1ZNX09QX1VOUkVT RVJWRV9WTUlEOwogCXZtLmluLmZsYWdzID0gZmxhZ3M7CiAKLQlyZXR1cm4gZHJtQ29tbWFuZFdy aXRlUmVhZChkZXYtPmZkLCBEUk1fQU1ER1BVX1ZNLAorCXJldHVybiBkcm1Db21tYW5kV3JpdGVS ZWFkKGRldi0+Y29yZS0+ZmQsIERSTV9BTURHUFVfVk0sCiAJCQkJICAgJnZtLCBzaXplb2Yodm0p KTsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2FtZGdwdS9hbWRncHVfdGVzdC5jIGIvdGVzdHMvYW1k Z3B1L2FtZGdwdV90ZXN0LmMKaW5kZXggNzM0MDNmYjQuLjcwOTVjNGU0IDEwMDY0NAotLS0gYS90 ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3QuYworKysgYi90ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3Qu YwpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kaXNhYmxlX3N1aXRlcygp CiAJCQkJICAgJm1pbm9yX3ZlcnNpb24sICZkZXZpY2VfaGFuZGxlKSkKIAkJcmV0dXJuOwogCi0J ZmFtaWx5X2lkID0gZGV2aWNlX2hhbmRsZS0+aW5mby5mYW1pbHlfaWQ7CisJZmFtaWx5X2lkID0g ZGV2aWNlX2hhbmRsZS0+Y29yZS0+aW5mby5mYW1pbHlfaWQ7CiAKIAlpZiAoYW1kZ3B1X2Rldmlj ZV9kZWluaXRpYWxpemUoZGV2aWNlX2hhbmRsZSkpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3Rl c3RzL2FtZGdwdS9ib190ZXN0cy5jIGIvdGVzdHMvYW1kZ3B1L2JvX3Rlc3RzLmMKaW5kZXggN2Nm ZjRjZjcuLmQ4OWM5NDRkIDEwMDY0NAotLS0gYS90ZXN0cy9hbWRncHUvYm9fdGVzdHMuYworKysg Yi90ZXN0cy9hbWRncHUvYm9fdGVzdHMuYwpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lk IGFtZGdwdV9ib19maW5kX2J5X2NwdV9tYXBwaW5nKHZvaWQpCiAJCQkJCSAgJm9mZnNldCk7CiAJ Q1VfQVNTRVJUX0VRVUFMKHIsIDApOwogCUNVX0FTU0VSVF9FUVVBTChvZmZzZXQsIDApOwotCUNV X0FTU0VSVF9FUVVBTChib19oYW5kbGUtPmhhbmRsZSwgZmluZF9ib19oYW5kbGUtPmhhbmRsZSk7 CisJQ1VfQVNTRVJUX0VRVUFMKGJvX2hhbmRsZS0+Y29yZS0+aGFuZGxlLCBmaW5kX2JvX2hhbmRs ZS0+Y29yZS0+aGFuZGxlKTsKIAogCWF0b21pY19kZWMoJmZpbmRfYm9faGFuZGxlLT5yZWZjb3Vu dCwgMSk7CiAJciA9IGFtZGdwdV9ib191bm1hcF9hbmRfZnJlZShib19oYW5kbGUsIHZhX2hhbmRs ZSwKZGlmZiAtLWdpdCBhL3Rlc3RzL2FtZGdwdS9jc190ZXN0cy5jIGIvdGVzdHMvYW1kZ3B1L2Nz X3Rlc3RzLmMKaW5kZXggN2FkMGYwZGMuLjhhNWY2ZWQzIDEwMDY0NAotLS0gYS90ZXN0cy9hbWRn cHUvY3NfdGVzdHMuYworKysgYi90ZXN0cy9hbWRncHUvY3NfdGVzdHMuYwpAQCAtNjgsNyArNjgs NyBAQCBDVV9CT09MIHN1aXRlX2NzX3Rlc3RzX2VuYWJsZSh2b2lkKQogCQkJCQkgICAgICZtaW5v cl92ZXJzaW9uLCAmZGV2aWNlX2hhbmRsZSkpCiAJCXJldHVybiBDVV9GQUxTRTsKIAotCWZhbWls eV9pZCA9IGRldmljZV9oYW5kbGUtPmluZm8uZmFtaWx5X2lkOworCWZhbWlseV9pZCA9IGRldmlj ZV9oYW5kbGUtPmNvcmUtPmluZm8uZmFtaWx5X2lkOwogCiAJaWYgKGFtZGdwdV9kZXZpY2VfZGVp bml0aWFsaXplKGRldmljZV9oYW5kbGUpKQogCQlyZXR1cm4gQ1VfRkFMU0U7CkBAIC0xMDEsMTAg KzEwMSwxMCBAQCBpbnQgc3VpdGVfY3NfdGVzdHNfaW5pdCh2b2lkKQogCQlyZXR1cm4gQ1VFX1NJ TklUX0ZBSUxFRDsKIAl9CiAKLQlmYW1pbHlfaWQgPSBkZXZpY2VfaGFuZGxlLT5pbmZvLmZhbWls eV9pZDsKKwlmYW1pbHlfaWQgPSBkZXZpY2VfaGFuZGxlLT5jb3JlLT5pbmZvLmZhbWlseV9pZDsK IAkvKiBWSSBhc2ljIFBPTEFSSVMxMC8xMSBoYXZlIHNwZWNpZmljIGV4dGVybmFsX3Jldl9pZCAq LwotCWNoaXBfcmV2ID0gZGV2aWNlX2hhbmRsZS0+aW5mby5jaGlwX3JldjsKLQljaGlwX2lkID0g ZGV2aWNlX2hhbmRsZS0+aW5mby5jaGlwX2V4dGVybmFsX3JldjsKKwljaGlwX3JldiA9IGRldmlj ZV9oYW5kbGUtPmNvcmUtPmluZm8uY2hpcF9yZXY7CisJY2hpcF9pZCA9IGRldmljZV9oYW5kbGUt PmNvcmUtPmluZm8uY2hpcF9leHRlcm5hbF9yZXY7CiAKIAlyID0gYW1kZ3B1X2NzX2N0eF9jcmVh dGUoZGV2aWNlX2hhbmRsZSwgJmNvbnRleHRfaGFuZGxlKTsKIAlpZiAocikKZGlmZiAtLWdpdCBh L3Rlc3RzL2FtZGdwdS9kZWFkbG9ja190ZXN0cy5jIGIvdGVzdHMvYW1kZ3B1L2RlYWRsb2NrX3Rl c3RzLmMKaW5kZXggOTEzNjhjMTUuLjg1MjZiYWU3IDEwMDY0NAotLS0gYS90ZXN0cy9hbWRncHUv ZGVhZGxvY2tfdGVzdHMuYworKysgYi90ZXN0cy9hbWRncHUvZGVhZGxvY2tfdGVzdHMuYwpAQCAt MTI3LDE0ICsxMjcsMTQgQEAgQ1VfQk9PTCBzdWl0ZV9kZWFkbG9ja190ZXN0c19lbmFibGUodm9p ZCkKIAkgKiBPbmx5IGVuYWJsZSBmb3IgQVNJQ3Mgc3VwcG9ydGluZyBHUFUgcmVzZXQgYW5kIGZv ciB3aGljaCBpdCdzIGVuYWJsZWQKIAkgKiBieSBkZWZhdWx0IChjdXJyZW50bHkgR0ZYOC85IGRH UFVTKQogCSAqLwotCWlmIChkZXZpY2VfaGFuZGxlLT5pbmZvLmZhbWlseV9pZCAhPSBBTURHUFVf RkFNSUxZX1ZJICYmCi0JICAgIGRldmljZV9oYW5kbGUtPmluZm8uZmFtaWx5X2lkICE9IEFNREdQ VV9GQU1JTFlfQUkgJiYKLQkgICAgZGV2aWNlX2hhbmRsZS0+aW5mby5mYW1pbHlfaWQgIT0gQU1E R1BVX0ZBTUlMWV9DSSkgeworCWlmIChkZXZpY2VfaGFuZGxlLT5jb3JlLT5pbmZvLmZhbWlseV9p ZCAhPSBBTURHUFVfRkFNSUxZX1ZJICYmCisJICAgIGRldmljZV9oYW5kbGUtPmNvcmUtPmluZm8u ZmFtaWx5X2lkICE9IEFNREdQVV9GQU1JTFlfQUkgJiYKKwkgICAgZGV2aWNlX2hhbmRsZS0+Y29y ZS0+aW5mby5mYW1pbHlfaWQgIT0gQU1ER1BVX0ZBTUlMWV9DSSkgewogCQlwcmludGYoIlxuXG5H UFUgcmVzZXQgaXMgbm90IGVuYWJsZWQgZm9yIHRoZSBBU0lDLCBkZWFkbG9jayBzdWl0ZSBkaXNh YmxlZFxuIik7CiAJCWVuYWJsZSA9IENVX0ZBTFNFOwogCX0KIAotCWlmIChkZXZpY2VfaGFuZGxl LT5pbmZvLmZhbWlseV9pZCA+PSBBTURHUFVfRkFNSUxZX0FJKQorCWlmIChkZXZpY2VfaGFuZGxl LT5jb3JlLT5pbmZvLmZhbWlseV9pZCA+PSBBTURHUFVfRkFNSUxZX0FJKQogCQl1c2VfdWNfbXR5 cGUgPSAxOwogCiAJaWYgKGFtZGdwdV9kZXZpY2VfZGVpbml0aWFsaXplKGRldmljZV9oYW5kbGUp KQpkaWZmIC0tZ2l0IGEvdGVzdHMvYW1kZ3B1L3V2ZF9lbmNfdGVzdHMuYyBiL3Rlc3RzL2FtZGdw dS91dmRfZW5jX3Rlc3RzLmMKaW5kZXggYjQyNTFiY2YuLjg1NmU3YWUxIDEwMDY0NAotLS0gYS90 ZXN0cy9hbWRncHUvdXZkX2VuY190ZXN0cy5jCisrKyBiL3Rlc3RzL2FtZGdwdS91dmRfZW5jX3Rl c3RzLmMKQEAgLTExNCw3ICsxMTQsNyBAQCBpbnQgc3VpdGVfdXZkX2VuY190ZXN0c19pbml0KHZv aWQpCiAJaWYgKHIpCiAJCXJldHVybiBDVUVfU0lOSVRfRkFJTEVEOwogCi0JZmFtaWx5X2lkID0g ZGV2aWNlX2hhbmRsZS0+aW5mby5mYW1pbHlfaWQ7CisJZmFtaWx5X2lkID0gZGV2aWNlX2hhbmRs ZS0+Y29yZS0+aW5mby5mYW1pbHlfaWQ7CiAKIAlyID0gYW1kZ3B1X2NzX2N0eF9jcmVhdGUoZGV2 aWNlX2hhbmRsZSwgJmNvbnRleHRfaGFuZGxlKTsKIAlpZiAocikKZGlmZiAtLWdpdCBhL3Rlc3Rz L2FtZGdwdS92Y2VfdGVzdHMuYyBiL3Rlc3RzL2FtZGdwdS92Y2VfdGVzdHMuYwppbmRleCAwMDI2 ODI2ZS4uMDVkOWVmNTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2FtZGdwdS92Y2VfdGVzdHMuYworKysg Yi90ZXN0cy9hbWRncHUvdmNlX3Rlc3RzLmMKQEAgLTEwMywxMCArMTAzLDEwIEBAIENVX0JPT0wg c3VpdGVfdmNlX3Rlc3RzX2VuYWJsZSh2b2lkKQogCQkJCQkgICAgICZtaW5vcl92ZXJzaW9uLCAm ZGV2aWNlX2hhbmRsZSkpCiAJCXJldHVybiBDVV9GQUxTRTsKIAotCWZhbWlseV9pZCA9IGRldmlj ZV9oYW5kbGUtPmluZm8uZmFtaWx5X2lkOwotCWNoaXBfcmV2ID0gZGV2aWNlX2hhbmRsZS0+aW5m by5jaGlwX3JldjsKLQljaGlwX2lkID0gZGV2aWNlX2hhbmRsZS0+aW5mby5jaGlwX2V4dGVybmFs X3JldjsKLQlpZHNfZmxhZ3MgPSBkZXZpY2VfaGFuZGxlLT5pbmZvLmlkc19mbGFnczsKKwlmYW1p bHlfaWQgPSBkZXZpY2VfaGFuZGxlLT5jb3JlLT5pbmZvLmZhbWlseV9pZDsKKwljaGlwX3JldiA9 IGRldmljZV9oYW5kbGUtPmNvcmUtPmluZm8uY2hpcF9yZXY7CisJY2hpcF9pZCA9IGRldmljZV9o YW5kbGUtPmNvcmUtPmluZm8uY2hpcF9leHRlcm5hbF9yZXY7CisJaWRzX2ZsYWdzID0gZGV2aWNl X2hhbmRsZS0+Y29yZS0+aW5mby5pZHNfZmxhZ3M7CiAKIAlhbWRncHVfcXVlcnlfZmlybXdhcmVf dmVyc2lvbihkZXZpY2VfaGFuZGxlLCBBTURHUFVfSU5GT19GV19WQ0UsIDAsCiAJCQkJCSAgMCwg JnZlcnNpb24sICZmZWF0dXJlKTsKQEAgLTE1Myw4ICsxNTMsOCBAQCBpbnQgc3VpdGVfdmNlX3Rl c3RzX2luaXQodm9pZCkKIAkJcmV0dXJuIENVRV9TSU5JVF9GQUlMRUQ7CiAJfQogCi0JZmFtaWx5 X2lkID0gZGV2aWNlX2hhbmRsZS0+aW5mby5mYW1pbHlfaWQ7Ci0JdmNlX2hhcnZlc3RfY29uZmln ID0gZGV2aWNlX2hhbmRsZS0+aW5mby52Y2VfaGFydmVzdF9jb25maWc7CisJZmFtaWx5X2lkID0g ZGV2aWNlX2hhbmRsZS0+Y29yZS0+aW5mby5mYW1pbHlfaWQ7CisJdmNlX2hhcnZlc3RfY29uZmln ID0gZGV2aWNlX2hhbmRsZS0+Y29yZS0+aW5mby52Y2VfaGFydmVzdF9jb25maWc7CiAKIAlyID0g YW1kZ3B1X2NzX2N0eF9jcmVhdGUoZGV2aWNlX2hhbmRsZSwgJmNvbnRleHRfaGFuZGxlKTsKIAlp ZiAocikKZGlmZiAtLWdpdCBhL3Rlc3RzL2FtZGdwdS92Y25fdGVzdHMuYyBiL3Rlc3RzL2FtZGdw dS92Y25fdGVzdHMuYwppbmRleCBhZDQzOGYzNS4uMTcyNDg0NDQgMTAwNjQ0Ci0tLSBhL3Rlc3Rz L2FtZGdwdS92Y25fdGVzdHMuYworKysgYi90ZXN0cy9hbWRncHUvdmNuX3Rlc3RzLmMKQEAgLTk0 LDcgKzk0LDcgQEAgQ1VfQk9PTCBzdWl0ZV92Y25fdGVzdHNfZW5hYmxlKHZvaWQpCiAJCQkJICAg Jm1pbm9yX3ZlcnNpb24sICZkZXZpY2VfaGFuZGxlKSkKIAkJcmV0dXJuIENVX0ZBTFNFOwogCi0J ZmFtaWx5X2lkID0gZGV2aWNlX2hhbmRsZS0+aW5mby5mYW1pbHlfaWQ7CisJZmFtaWx5X2lkID0g ZGV2aWNlX2hhbmRsZS0+Y29yZS0+aW5mby5mYW1pbHlfaWQ7CiAKIAlpZiAoYW1kZ3B1X2Rldmlj ZV9kZWluaXRpYWxpemUoZGV2aWNlX2hhbmRsZSkpCiAJCQlyZXR1cm4gQ1VfRkFMU0U7CkBAIC0x MzIsNyArMTMyLDcgQEAgaW50IHN1aXRlX3Zjbl90ZXN0c19pbml0KHZvaWQpCiAJaWYgKHIpCiAJ CXJldHVybiBDVUVfU0lOSVRfRkFJTEVEOwogCi0JZmFtaWx5X2lkID0gZGV2aWNlX2hhbmRsZS0+ aW5mby5mYW1pbHlfaWQ7CisJZmFtaWx5X2lkID0gZGV2aWNlX2hhbmRsZS0+Y29yZS0+aW5mby5m YW1pbHlfaWQ7CiAKIAlyID0gYW1kZ3B1X2NzX2N0eF9jcmVhdGUoZGV2aWNlX2hhbmRsZSwgJmNv bnRleHRfaGFuZGxlKTsKIAlpZiAocikKZGlmZiAtLWdpdCBhL3Rlc3RzL2FtZGdwdS92bV90ZXN0 cy5jIGIvdGVzdHMvYW1kZ3B1L3ZtX3Rlc3RzLmMKaW5kZXggNjliYzQ2ODMuLmU1MmFlZjI1IDEw MDY0NAotLS0gYS90ZXN0cy9hbWRncHUvdm1fdGVzdHMuYworKysgYi90ZXN0cy9hbWRncHUvdm1f dGVzdHMuYwpAQCAtNDMsNyArNDMsNyBAQCBDVV9CT09MIHN1aXRlX3ZtX3Rlc3RzX2VuYWJsZSh2 b2lkKQogCQkJCSAgICAgJm1pbm9yX3ZlcnNpb24sICZkZXZpY2VfaGFuZGxlKSkKIAkJcmV0dXJu IENVX0ZBTFNFOwogCi0JaWYgKGRldmljZV9oYW5kbGUtPmluZm8uZmFtaWx5X2lkID09IEFNREdQ VV9GQU1JTFlfU0kpIHsKKwlpZiAoZGV2aWNlX2hhbmRsZS0+Y29yZS0+aW5mby5mYW1pbHlfaWQg PT0gQU1ER1BVX0ZBTUlMWV9TSSkgewogCQlwcmludGYoIlxuXG5DdXJyZW50bHkgaGFuZ3MgdGhl IENQIG9uIHRoaXMgQVNJQywgVk0gc3VpdGUgZGlzYWJsZWRcbiIpOwogCQllbmFibGUgPSBDVV9G QUxTRTsKIAl9Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbA==