From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 04/15] drm/i915: dev_priv cleanup in i915_gem_gtt.c Date: Wed, 16 Nov 2016 08:55:34 +0000 Message-ID: <1479286545-15020-5-git-send-email-tvrtko.ursulin@linux.intel.com> References: <1479286545-15020-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8CFC66E661 for ; Wed, 16 Nov 2016 08:55:57 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id g23so8801940wme.1 for ; Wed, 16 Nov 2016 00:55:57 -0800 (PST) In-Reply-To: <1479286545-15020-1-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClN0YXJ0ZWQg d2l0aCByZW1vdmluZyBJTlRFTF9JTkZPKGRldikgYW5kIGNhc2NhZGVkIGludG8gYSBxdWl0ZQpi aWcgdHJpY2tsZSBvZiBmdW5jdGlvbiBwcm90b3R5cGUgY2hhbmdlcy4gU3RpbGwsIEkgdGhpbmsg aXQgaXMKZm9yIHRoZSBiZXR0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICB8ICAg MiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgfCAyNDggKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaCB8ICAgOCArLQogNCBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgMTI5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDc0ZjU0NWE1MGVhYy4u Y2UzNGU3YWI0NGFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTE0NDIsNyArMTQ0Miw3 IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CiAJaW50ZWxfc3VzcGVuZF9odyhkZXZfcHJpdik7CiAKLQlpOTE1X2dlbV9zdXNwZW5kX2d0dF9t YXBwaW5ncyhkZXYpOworCWk5MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKGRldl9wcml2KTsK IAogCWk5MTVfc2F2ZV9zdGF0ZShkZXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBj M2IyZmE0ZTVjZGIuLjE3YzUzOGY1NWFkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00 MjMwLDcgKzQyMzAsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCVdBUk5fT04oZGV2X3ByaXYtPmd0LmF3YWtlKTsKIAogCW11dGV4X2xvY2soJmRldi0+ c3RydWN0X211dGV4KTsKLQlpOTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5ncyhkZXYpOworCWk5 MTVfZ2VtX3Jlc3RvcmVfZ3R0X21hcHBpbmdzKGRldl9wcml2KTsKIAogCS8qIEFzIHdlIGRpZG4n dCBmbHVzaCB0aGUga2VybmVsIGNvbnRleHQgYmVmb3JlIHN1c3BlbmQsIHdlIGNhbm5vdAogCSAq IGd1YXJhbnRlZSB0aGF0IHRoZSBjb250ZXh0IGltYWdlIGlzIGNvbXBsZXRlLiBTbyBsZXQncyBq dXN0IHJlc2V0CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDU3ZTYxNzdjMGEz NC4uMTMzNGRhMTcyOTQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMzIw LDEwICszMjAsMTAgQEAgc3RhdGljIGdlbjZfcHRlX3QgaXJpc19wdGVfZW5jb2RlKGRtYV9hZGRy X3QgYWRkciwKIAlyZXR1cm4gcHRlOwogfQogCi1zdGF0aWMgaW50IF9fc2V0dXBfcGFnZV9kbWEo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKK3N0YXRpYyBpbnQgX19zZXR1cF9wYWdlX2RtYShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgc3RydWN0IGk5MTVfcGFnZV9k bWEgKnAsIGdmcF90IGZsYWdzKQogewotCXN0cnVjdCBkZXZpY2UgKmtkZXYgPSAmZGV2LT5wZGV2 LT5kZXY7CisJc3RydWN0IGRldmljZSAqa2RldiA9ICZkZXZfcHJpdi0+ZHJtLnBkZXYtPmRldjsK IAogCXAtPnBhZ2UgPSBhbGxvY19wYWdlKGZsYWdzKTsKIAlpZiAoIXAtPnBhZ2UpCkBAIC0zNDAs MTQgKzM0MCwxNiBAQCBzdGF0aWMgaW50IF9fc2V0dXBfcGFnZV9kbWEoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBzZXR1cF9wYWdlX2RtYShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqcCkKK3N0YXRpYyBpbnQg c2V0dXBfcGFnZV9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICBz dHJ1Y3QgaTkxNV9wYWdlX2RtYSAqcCkKIHsKLQlyZXR1cm4gX19zZXR1cF9wYWdlX2RtYShkZXYs IHAsIEk5MTVfR0ZQX0RNQSk7CisJcmV0dXJuIF9fc2V0dXBfcGFnZV9kbWEoZGV2X3ByaXYsIHAs IEk5MTVfR0ZQX0RNQSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsZWFudXBfcGFnZV9kbWEoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGk5MTVfcGFnZV9kbWEgKnApCitzdGF0aWMgdm9pZCBj bGVhbnVwX3BhZ2VfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAg ICAgc3RydWN0IGk5MTVfcGFnZV9kbWEgKnApCiB7Ci0Jc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBk ZXYtPnBkZXY7CisJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7CiAK IAlpZiAoV0FSTl9PTighcC0+cGFnZSkpCiAJCXJldHVybjsKQEAgLTM4MCw4ICszODIsOCBAQCBz dGF0aWMgdm9pZCBrdW5tYXBfcGFnZV9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB2b2lkICp2YWRkcikKICNkZWZpbmUga3VubWFwX3B4KHBwZ3R0LCB2YWRkcikgXAogCQlr dW5tYXBfcGFnZV9kbWEodG9faTkxNSgocHBndHQpLT5iYXNlLmRldiksICh2YWRkcikpCiAKLSNk ZWZpbmUgc2V0dXBfcHgoZGV2LCBweCkgc2V0dXBfcGFnZV9kbWEoKGRldiksIHB4X2Jhc2UocHgp KQotI2RlZmluZSBjbGVhbnVwX3B4KGRldiwgcHgpIGNsZWFudXBfcGFnZV9kbWEoKGRldiksIHB4 X2Jhc2UocHgpKQorI2RlZmluZSBzZXR1cF9weChkZXZfcHJpdiwgcHgpIHNldHVwX3BhZ2VfZG1h KChkZXZfcHJpdiksIHB4X2Jhc2UocHgpKQorI2RlZmluZSBjbGVhbnVwX3B4KGRldl9wcml2LCBw eCkgY2xlYW51cF9wYWdlX2RtYSgoZGV2X3ByaXYpLCBweF9iYXNlKHB4KSkKICNkZWZpbmUgZmls bF9weChkZXZfcHJpdiwgcHgsIHYpIGZpbGxfcGFnZV9kbWEoKGRldl9wcml2KSwgcHhfYmFzZShw eCksICh2KSkKICNkZWZpbmUgZmlsbDMyX3B4KGRldl9wcml2LCBweCwgdikgXAogCQlmaWxsX3Bh Z2VfZG1hXzMyKChkZXZfcHJpdiksIHB4X2Jhc2UocHgpLCAodikpCkBAIC00MDksMjQgKzQxMSwy MyBAQCBzdGF0aWMgdm9pZCBmaWxsX3BhZ2VfZG1hXzMyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIH0KIAogc3RhdGljIGludAotc2V0dXBfc2NyYXRjaF9wYWdlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCitzZXR1cF9zY3JhdGNoX3BhZ2Uoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQkgICBzdHJ1Y3QgaTkxNV9wYWdlX2RtYSAqc2NyYXRjaCwKIAkJICAg Z2ZwX3QgZ2ZwKQogewotCXJldHVybiBfX3NldHVwX3BhZ2VfZG1hKGRldiwgc2NyYXRjaCwgZ2Zw IHwgX19HRlBfWkVSTyk7CisJcmV0dXJuIF9fc2V0dXBfcGFnZV9kbWEoZGV2X3ByaXYsIHNjcmF0 Y2gsIGdmcCB8IF9fR0ZQX1pFUk8pOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhbnVwX3NjcmF0Y2hf cGFnZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorc3RhdGljIHZvaWQgY2xlYW51cF9zY3JhdGNo X3BhZ2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSBzdHJ1Y3QgaTkx NV9wYWdlX2RtYSAqc2NyYXRjaCkKIHsKLQljbGVhbnVwX3BhZ2VfZG1hKGRldiwgc2NyYXRjaCk7 CisJY2xlYW51cF9wYWdlX2RtYShkZXZfcHJpdiwgc2NyYXRjaCk7CiB9CiAKLXN0YXRpYyBzdHJ1 Y3QgaTkxNV9wYWdlX3RhYmxlICphbGxvY19wdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorc3Rh dGljIHN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKmFsbG9jX3B0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICpwdDsKLQljb25zdCBz aXplX3QgY291bnQgPSBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4ID8KLQkJR0VOOF9QVEVTIDog R0VONl9QVEVTOworCWNvbnN0IHNpemVfdCBjb3VudCA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0g OCA/IEdFTjhfUFRFUyA6IEdFTjZfUFRFUzsKIAlpbnQgcmV0ID0gLUVOT01FTTsKIAogCXB0ID0g a3phbGxvYyhzaXplb2YoKnB0KSwgR0ZQX0tFUk5FTCk7CkBAIC00MzksNyArNDQwLDcgQEAgc3Rh dGljIHN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKmFsbG9jX3B0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJaWYgKCFwdC0+dXNlZF9wdGVzKQogCQlnb3RvIGZhaWxfYml0bWFwOwogCi0JcmV0ID0g c2V0dXBfcHgoZGV2LCBwdCk7CisJcmV0ID0gc2V0dXBfcHgoZGV2X3ByaXYsIHB0KTsKIAlpZiAo cmV0KQogCQlnb3RvIGZhaWxfcGFnZV9tOwogCkBAIC00NTMsOSArNDU0LDEwIEBAIHN0YXRpYyBz dHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICphbGxvY19wdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVfcHQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgc3RydWN0IGk5MTVfcGFnZV90YWJsZSAqcHQpCitzdGF0aWMgdm9pZCBm cmVlX3B0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJICAgIHN0cnVjdCBp OTE1X3BhZ2VfdGFibGUgKnB0KQogewotCWNsZWFudXBfcHgoZGV2LCBwdCk7CisJY2xlYW51cF9w eChkZXZfcHJpdiwgcHQpOwogCWtmcmVlKHB0LT51c2VkX3B0ZXMpOwogCWtmcmVlKHB0KTsKIH0K QEAgLTQ4NCw3ICs0ODYsNyBAQCBzdGF0aWMgdm9pZCBnZW42X2luaXRpYWxpemVfcHQoc3RydWN0 IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJZmlsbDMyX3B4KHRvX2k5MTUodm0tPmRldiksIHB0 LCBzY3JhdGNoX3B0ZSk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAq YWxsb2NfcGQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9wYWdl X2RpcmVjdG9yeSAqYWxsb2NfcGQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog ewogCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZDsKIAlpbnQgcmV0ID0gLUVOT01FTTsK QEAgLTQ5OCw3ICs1MDAsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKmFs bG9jX3BkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKCFwZC0+dXNlZF9wZGVzKQogCQln b3RvIGZhaWxfYml0bWFwOwogCi0JcmV0ID0gc2V0dXBfcHgoZGV2LCBwZCk7CisJcmV0ID0gc2V0 dXBfcHgoZGV2X3ByaXYsIHBkKTsKIAlpZiAocmV0KQogCQlnb3RvIGZhaWxfcGFnZV9tOwogCkBA IC01MTIsMTAgKzUxNCwxMSBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKmFs bG9jX3BkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0K IAotc3RhdGljIHZvaWQgZnJlZV9wZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaTkx NV9wYWdlX2RpcmVjdG9yeSAqcGQpCitzdGF0aWMgdm9pZCBmcmVlX3BkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKKwkJICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpw ZCkKIHsKIAlpZiAocHhfcGFnZShwZCkpIHsKLQkJY2xlYW51cF9weChkZXYsIHBkKTsKKwkJY2xl YW51cF9weChkZXZfcHJpdiwgcGQpOwogCQlrZnJlZShwZC0+dXNlZF9wZGVzKTsKIAkJa2ZyZWUo cGQpOwogCX0KQEAgLTUzMSwxMCArNTM0LDEwIEBAIHN0YXRpYyB2b2lkIGdlbjhfaW5pdGlhbGl6 ZV9wZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAlmaWxsX3B4KHRvX2k5MTUodm0t PmRldiksIHBkLCBzY3JhdGNoX3BkZSk7CiB9CiAKLXN0YXRpYyBpbnQgX19wZHBfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAorc3RhdGljIGludCBfX3BkcF9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAkJICAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnlf cG9pbnRlciAqcGRwKQogewotCXNpemVfdCBwZHBlcyA9IEk5MTVfUERQRVNfUEVSX1BEUChkZXYp OworCXNpemVfdCBwZHBlcyA9IEk5MTVfUERQRVNfUEVSX1BEUChkZXZfcHJpdik7CiAKIAlwZHAt PnVzZWRfcGRwZXMgPSBrY2FsbG9jKEJJVFNfVE9fTE9OR1MocGRwZXMpLAogCQkJCSAgc2l6ZW9m KHVuc2lnbmVkIGxvbmcpLApAQCAtNTYzLDIyICs1NjYsMjIgQEAgc3RhdGljIHZvaWQgX19wZHBf ZmluaShzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHApCiB9CiAKIHN0YXRp YyBzdHJ1Y3QKLWk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqYWxsb2NfcGRwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCitpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKmFsbG9jX3BkcChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0IGk5MTVfcGFnZV9k aXJlY3RvcnlfcG9pbnRlciAqcGRwOwogCWludCByZXQgPSAtRU5PTUVNOwogCi0JV0FSTl9PTigh VVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikpOworCVdBUk5fT04oIVVTRVNfRlVMTF80OEJJVF9Q UEdUVChkZXZfcHJpdikpOwogCiAJcGRwID0ga3phbGxvYyhzaXplb2YoKnBkcCksIEdGUF9LRVJO RUwpOwogCWlmICghcGRwKQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAotCXJldCA9IF9f cGRwX2luaXQoZGV2LCBwZHApOworCXJldCA9IF9fcGRwX2luaXQoZGV2X3ByaXYsIHBkcCk7CiAJ aWYgKHJldCkKIAkJZ290byBmYWlsX2JpdG1hcDsKIAotCXJldCA9IHNldHVwX3B4KGRldiwgcGRw KTsKKwlyZXQgPSBzZXR1cF9weChkZXZfcHJpdiwgcGRwKTsKIAlpZiAocmV0KQogCQlnb3RvIGZh aWxfcGFnZV9tOwogCkBAIC01OTIsMTIgKzU5NSwxMiBAQCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3Bv aW50ZXIgKmFsbG9jX3BkcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiBFUlJfUFRS KHJldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVfcGRwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs CitzdGF0aWMgdm9pZCBmcmVlX3BkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCSAgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwKQogewogCV9f cGRwX2ZpbmkocGRwKTsKLQlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikpIHsKLQkJY2xl YW51cF9weChkZXYsIHBkcCk7CisJaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXZfcHJpdikp IHsKKwkJY2xlYW51cF9weChkZXZfcHJpdiwgcGRwKTsKIAkJa2ZyZWUocGRwKTsKIAl9CiB9CkBA IC02MzEsNyArNjM0LDcgQEAgZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9yeShzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQsCiB7CiAJZ2VuOF9wcGd0dF9wZHBlX3QgKnBhZ2VfZGlyZWN0b3J5cG87 CiAKLQlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKQorCWlmICgh VVNFU19GVUxMXzQ4QklUX1BQR1RUKHRvX2k5MTUocHBndHQtPmJhc2UuZGV2KSkpCiAJCXJldHVy bjsKIAogCXBhZ2VfZGlyZWN0b3J5cG8gPSBrbWFwX3B4KHBkcCk7CkBAIC02NDcsNyArNjUwLDcg QEAgZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9yeV9wb2ludGVyKHN0cnVjdCBpOTE1X2h3X3BwZ3R0 ICpwcGd0dCwKIHsKIAlnZW44X3BwZ3R0X3BtbDRlX3QgKnBhZ2VtYXAgPSBrbWFwX3B4KHBtbDQp OwogCi0JV0FSTl9PTighVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpOwor CVdBUk5fT04oIVVTRVNfRlVMTF80OEJJVF9QUEdUVCh0b19pOTE1KHBwZ3R0LT5iYXNlLmRldikp KTsKIAlwYWdlbWFwW2luZGV4XSA9IGdlbjhfcG1sNGVfZW5jb2RlKHB4X2RtYShwZHApLCBJOTE1 X0NBQ0hFX0xMQyk7CiAJa3VubWFwX3B4KHBwZ3R0LCBwYWdlbWFwKTsKIH0KQEAgLTczNCw3ICs3 MzcsNyBAQCBzdGF0aWMgYm9vbCBnZW44X3BwZ3R0X2NsZWFyX3B0KHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtLAogCWJpdG1hcF9jbGVhcihwdC0+dXNlZF9wdGVzLCBwdGUsIG51bV9lbnRy aWVzKTsKIAogCWlmIChiaXRtYXBfZW1wdHkocHQtPnVzZWRfcHRlcywgR0VOOF9QVEVTKSkgewot CQlmcmVlX3B0KHZtLT5kZXYsIHB0KTsKKwkJZnJlZV9wdCh0b19pOTE1KHZtLT5kZXYpLCBwdCk7 CiAJCXJldHVybiB0cnVlOwogCX0KIApAQCAtNzc2LDcgKzc3OSw3IEBAIHN0YXRpYyBib29sIGdl bjhfcHBndHRfY2xlYXJfcGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJfQogCiAJ aWYgKGJpdG1hcF9lbXB0eShwZC0+dXNlZF9wZGVzLCBJOTE1X1BERVMpKSB7Ci0JCWZyZWVfcGQo dm0tPmRldiwgcGQpOworCQlmcmVlX3BkKHRvX2k5MTUodm0tPmRldiksIHBkKTsKIAkJcmV0dXJu IHRydWU7CiAJfQogCkBAIC03OTIsNiArNzk1LDcgQEAgc3RhdGljIGJvb2wgZ2VuOF9wcGd0dF9j bGVhcl9wZHAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJCQkJIHVpbnQ2NF90IGxl bmd0aCkKIHsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBpOTE1X3ZtX3RvX3BwZ3R0 KHZtKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHZtLT5k ZXYpOwogCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZDsKIAl1aW50NjRfdCBwZHBlOwog CWdlbjhfcHBndHRfcGRwZV90ICpwZHBlX3ZhZGRyOwpAQCAtODA0LDcgKzgwOCw3IEBAIHN0YXRp YyBib29sIGdlbjhfcHBndHRfY2xlYXJfcGRwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt LAogCiAJCWlmIChnZW44X3BwZ3R0X2NsZWFyX3BkKHZtLCBwZCwgc3RhcnQsIGxlbmd0aCkpIHsK IAkJCV9fY2xlYXJfYml0KHBkcGUsIHBkcC0+dXNlZF9wZHBlcyk7Ci0JCQlpZiAoVVNFU19GVUxM XzQ4QklUX1BQR1RUKHZtLT5kZXYpKSB7CisJCQlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRl dl9wcml2KSkgewogCQkJCXBkcGVfdmFkZHIgPSBrbWFwX3B4KHBkcCk7CiAJCQkJcGRwZV92YWRk cltwZHBlXSA9IHNjcmF0Y2hfcGRwZTsKIAkJCQlrdW5tYXBfcHgocHBndHQsIHBkcGVfdmFkZHIp OwpAQCAtODE0LDkgKzgxOCw5IEBAIHN0YXRpYyBib29sIGdlbjhfcHBndHRfY2xlYXJfcGRwKHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCiAJbWFya190bGJzX2RpcnR5KHBwZ3R0KTsK IAotCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikgJiYKLQkgICAgYml0bWFwX2Vt cHR5KHBkcC0+dXNlZF9wZHBlcywgSTkxNV9QRFBFU19QRVJfUERQKHZtLT5kZXYpKSkgewotCQlm cmVlX3BkcCh2bS0+ZGV2LCBwZHApOworCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2X3By aXYpICYmCisJICAgIGJpdG1hcF9lbXB0eShwZHAtPnVzZWRfcGRwZXMsIEk5MTVfUERQRVNfUEVS X1BEUChkZXZfcHJpdikpKSB7CisJCWZyZWVfcGRwKGRldl9wcml2LCBwZHApOwogCQlyZXR1cm4g dHJ1ZTsKIAl9CiAKQEAgLTgzOSw3ICs4NDMsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2Ns ZWFyX3BtbDQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJZ2VuOF9wcGd0dF9wbWw0 ZV90IHNjcmF0Y2hfcG1sNGUgPQogCQlnZW44X3BtbDRlX2VuY29kZShweF9kbWEodm0tPnNjcmF0 Y2hfcGRwKSwgSTkxNV9DQUNIRV9MTEMpOwogCi0JR0VNX0JVR19PTighVVNFU19GVUxMXzQ4QklU X1BQR1RUKHZtLT5kZXYpKTsKKwlHRU1fQlVHX09OKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQodG9f aTkxNSh2bS0+ZGV2KSkpOwogCiAJZ2VuOF9mb3JfZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0 LCBsZW5ndGgsIHBtbDRlKSB7CiAJCWlmIChXQVJOX09OKCFwbWw0LT5wZHBzW3BtbDRlXSkpCkBA IC04NTksNyArODYzLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhcl9yYW5nZShzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIHsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQgPSBpOTE1X3ZtX3RvX3BwZ3R0KHZtKTsKIAotCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQo dm0tPmRldikpCisJaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVCh0b19pOTE1KHZtLT5kZXYpKSkK IAkJZ2VuOF9wcGd0dF9jbGVhcl9wbWw0KHZtLCAmcHBndHQtPnBtbDQsIHN0YXJ0LCBsZW5ndGgp OwogCWVsc2UKIAkJZ2VuOF9wcGd0dF9jbGVhcl9wZHAodm0sICZwcGd0dC0+cGRwLCBzdGFydCwg bGVuZ3RoKTsKQEAgLTg5NCw3ICs4OTgsNyBAQCBnZW44X3BwZ3R0X2luc2VydF9wdGVfZW50cmll cyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCWt1bm1hcF9weChwcGd0dCwgcHRf dmFkZHIpOwogCQkJcHRfdmFkZHIgPSBOVUxMOwogCQkJaWYgKCsrcGRlID09IEk5MTVfUERFUykg ewotCQkJCWlmICgrK3BkcGUgPT0gSTkxNV9QRFBFU19QRVJfUERQKHZtLT5kZXYpKQorCQkJCWlm ICgrK3BkcGUgPT0gSTkxNV9QRFBFU19QRVJfUERQKHRvX2k5MTUodm0tPmRldikpKQogCQkJCQli cmVhazsKIAkJCQlwZGUgPSAwOwogCQkJfQpAQCAtOTE3LDcgKzkyMSw3IEBAIHN0YXRpYyB2b2lk IGdlbjhfcHBndHRfaW5zZXJ0X2VudHJpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s CiAKIAlfX3NnX3BhZ2VfaXRlcl9zdGFydCgmc2dfaXRlciwgcGFnZXMtPnNnbCwgc2dfbmVudHMo cGFnZXMtPnNnbCksIDApOwogCi0JaWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQodm0tPmRldikp IHsKKwlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVCh0b19pOTE1KHZtLT5kZXYpKSkgewogCQln ZW44X3BwZ3R0X2luc2VydF9wdGVfZW50cmllcyh2bSwgJnBwZ3R0LT5wZHAsICZzZ19pdGVyLCBz dGFydCwKIAkJCQkJICAgICAgY2FjaGVfbGV2ZWwpOwogCX0gZWxzZSB7CkBAIC05MzIsNyArOTM2 LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9pbnNlcnRfZW50cmllcyhzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIGdlbjhfZnJlZV9wYWdlX3Rh YmxlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorc3RhdGljIHZvaWQgZ2VuOF9mcmVlX3BhZ2Vf dGFibGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgIHN0cnVjdCBp OTE1X3BhZ2VfZGlyZWN0b3J5ICpwZCkKIHsKIAlpbnQgaTsKQEAgLTk0NCwzNCArOTQ4LDM0IEBA IHN0YXRpYyB2b2lkIGdlbjhfZnJlZV9wYWdlX3RhYmxlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQlpZiAoV0FSTl9PTighcGQtPnBhZ2VfdGFibGVbaV0pKQogCQkJY29udGludWU7CiAKLQkJ ZnJlZV9wdChkZXYsIHBkLT5wYWdlX3RhYmxlW2ldKTsKKwkJZnJlZV9wdChkZXZfcHJpdiwgcGQt PnBhZ2VfdGFibGVbaV0pOwogCQlwZC0+cGFnZV90YWJsZVtpXSA9IE5VTEw7CiAJfQogfQogCiBz dGF0aWMgaW50IGdlbjhfaW5pdF9zY3JhdGNoKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2bS0+ZGV2OworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUodm0tPmRldik7CiAJaW50IHJldDsKIAotCXJl dCA9IHNldHVwX3NjcmF0Y2hfcGFnZShkZXYsICZ2bS0+c2NyYXRjaF9wYWdlLCBJOTE1X0dGUF9E TUEpOworCXJldCA9IHNldHVwX3NjcmF0Y2hfcGFnZShkZXZfcHJpdiwgJnZtLT5zY3JhdGNoX3Bh Z2UsIEk5MTVfR0ZQX0RNQSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXZtLT5zY3Jh dGNoX3B0ID0gYWxsb2NfcHQoZGV2KTsKKwl2bS0+c2NyYXRjaF9wdCA9IGFsbG9jX3B0KGRldl9w cml2KTsKIAlpZiAoSVNfRVJSKHZtLT5zY3JhdGNoX3B0KSkgewogCQlyZXQgPSBQVFJfRVJSKHZt LT5zY3JhdGNoX3B0KTsKIAkJZ290byBmcmVlX3NjcmF0Y2hfcGFnZTsKIAl9CiAKLQl2bS0+c2Ny YXRjaF9wZCA9IGFsbG9jX3BkKGRldik7CisJdm0tPnNjcmF0Y2hfcGQgPSBhbGxvY19wZChkZXZf cHJpdik7CiAJaWYgKElTX0VSUih2bS0+c2NyYXRjaF9wZCkpIHsKIAkJcmV0ID0gUFRSX0VSUih2 bS0+c2NyYXRjaF9wZCk7CiAJCWdvdG8gZnJlZV9wdDsKIAl9CiAKLQlpZiAoVVNFU19GVUxMXzQ4 QklUX1BQR1RUKGRldikpIHsKLQkJdm0tPnNjcmF0Y2hfcGRwID0gYWxsb2NfcGRwKGRldik7CisJ aWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXZfcHJpdikpIHsKKwkJdm0tPnNjcmF0Y2hfcGRw ID0gYWxsb2NfcGRwKGRldl9wcml2KTsKIAkJaWYgKElTX0VSUih2bS0+c2NyYXRjaF9wZHApKSB7 CiAJCQlyZXQgPSBQVFJfRVJSKHZtLT5zY3JhdGNoX3BkcCk7CiAJCQlnb3RvIGZyZWVfcGQ7CkBA IC05ODAsMTcgKzk4NCwxNyBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9zY3JhdGNoKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogCiAJZ2VuOF9pbml0aWFsaXplX3B0KHZtLCB2bS0+c2Ny YXRjaF9wdCk7CiAJZ2VuOF9pbml0aWFsaXplX3BkKHZtLCB2bS0+c2NyYXRjaF9wZCk7Ci0JaWYg KFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpKQorCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQo ZGV2X3ByaXYpKQogCQlnZW44X2luaXRpYWxpemVfcGRwKHZtLCB2bS0+c2NyYXRjaF9wZHApOwog CiAJcmV0dXJuIDA7CiAKIGZyZWVfcGQ6Ci0JZnJlZV9wZChkZXYsIHZtLT5zY3JhdGNoX3BkKTsK KwlmcmVlX3BkKGRldl9wcml2LCB2bS0+c2NyYXRjaF9wZCk7CiBmcmVlX3B0OgotCWZyZWVfcHQo ZGV2LCB2bS0+c2NyYXRjaF9wdCk7CisJZnJlZV9wdChkZXZfcHJpdiwgdm0tPnNjcmF0Y2hfcHQp OwogZnJlZV9zY3JhdGNoX3BhZ2U6Ci0JY2xlYW51cF9zY3JhdGNoX3BhZ2UoZGV2LCAmdm0tPnNj cmF0Y2hfcGFnZSk7CisJY2xlYW51cF9zY3JhdGNoX3BhZ2UoZGV2X3ByaXYsICZ2bS0+c2NyYXRj aF9wYWdlKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xMDI4LDU0ICsxMDMyLDU2IEBAIHN0YXRp YyBpbnQgZ2VuOF9wcGd0dF9ub3RpZnlfdmd0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwg Ym9vbCBjcmVhdGUpCiAKIHN0YXRpYyB2b2lkIGdlbjhfZnJlZV9zY3JhdGNoKHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2bS0+ZGV2 OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUodm0tPmRldik7 CiAKLQlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikpCi0JCWZyZWVfcGRwKGRldiwgdm0t PnNjcmF0Y2hfcGRwKTsKLQlmcmVlX3BkKGRldiwgdm0tPnNjcmF0Y2hfcGQpOwotCWZyZWVfcHQo ZGV2LCB2bS0+c2NyYXRjaF9wdCk7Ci0JY2xlYW51cF9zY3JhdGNoX3BhZ2UoZGV2LCAmdm0tPnNj cmF0Y2hfcGFnZSk7CisJaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXZfcHJpdikpCisJCWZy ZWVfcGRwKGRldl9wcml2LCB2bS0+c2NyYXRjaF9wZHApOworCWZyZWVfcGQoZGV2X3ByaXYsIHZt LT5zY3JhdGNoX3BkKTsKKwlmcmVlX3B0KGRldl9wcml2LCB2bS0+c2NyYXRjaF9wdCk7CisJY2xl YW51cF9zY3JhdGNoX3BhZ2UoZGV2X3ByaXYsICZ2bS0+c2NyYXRjaF9wYWdlKTsKIH0KIAotc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK K3N0YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cF8zbHZsKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCQkgICAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRl ciAqcGRwKQogewogCWludCBpOwogCi0JZm9yX2VhY2hfc2V0X2JpdChpLCBwZHAtPnVzZWRfcGRw ZXMsIEk5MTVfUERQRVNfUEVSX1BEUChkZXYpKSB7CisJZm9yX2VhY2hfc2V0X2JpdChpLCBwZHAt PnVzZWRfcGRwZXMsIEk5MTVfUERQRVNfUEVSX1BEUChkZXZfcHJpdikpIHsKIAkJaWYgKFdBUk5f T04oIXBkcC0+cGFnZV9kaXJlY3RvcnlbaV0pKQogCQkJY29udGludWU7CiAKLQkJZ2VuOF9mcmVl X3BhZ2VfdGFibGVzKGRldiwgcGRwLT5wYWdlX2RpcmVjdG9yeVtpXSk7Ci0JCWZyZWVfcGQoZGV2 LCBwZHAtPnBhZ2VfZGlyZWN0b3J5W2ldKTsKKwkJZ2VuOF9mcmVlX3BhZ2VfdGFibGVzKGRldl9w cml2LCBwZHAtPnBhZ2VfZGlyZWN0b3J5W2ldKTsKKwkJZnJlZV9wZChkZXZfcHJpdiwgcGRwLT5w YWdlX2RpcmVjdG9yeVtpXSk7CiAJfQogCi0JZnJlZV9wZHAoZGV2LCBwZHApOworCWZyZWVfcGRw KGRldl9wcml2LCBwZHApOwogfQogCiBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfNGx2 bChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShwcGd0dC0+YmFzZS5kZXYpOwogCWludCBpOwogCiAJZm9y X2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cG1sNC51c2VkX3BtbDRlcywgR0VOOF9QTUw0RVNfUEVS X1BNTDQpIHsKIAkJaWYgKFdBUk5fT04oIXBwZ3R0LT5wbWw0LnBkcHNbaV0pKQogCQkJY29udGlu dWU7CiAKLQkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwocHBndHQtPmJhc2UuZGV2LCBwcGd0dC0+ cG1sNC5wZHBzW2ldKTsKKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwoZGV2X3ByaXYsIHBwZ3R0 LT5wbWw0LnBkcHNbaV0pOwogCX0KIAotCWNsZWFudXBfcHgocHBndHQtPmJhc2UuZGV2LCAmcHBn dHQtPnBtbDQpOworCWNsZWFudXBfcHgoZGV2X3ByaXYsICZwcGd0dC0+cG1sNCk7CiB9CiAKIHN0 YXRpYyB2b2lkIGdlbjhfcHBndHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSkKIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHZtLT5k ZXYpOwogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9IGk5MTVfdm1fdG9fcHBndHQodm0p OwogCi0JaWYgKGludGVsX3ZncHVfYWN0aXZlKHRvX2k5MTUodm0tPmRldikpKQorCWlmIChpbnRl bF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpCiAJCWdlbjhfcHBndHRfbm90aWZ5X3ZndChwcGd0dCwg ZmFsc2UpOwogCi0JaWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkK LQkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBkcCk7 CisJaWYgKCFVU0VTX0ZVTExfNDhCSVRfUFBHVFQoZGV2X3ByaXYpKQorCQlnZW44X3BwZ3R0X2Ns ZWFudXBfM2x2bChkZXZfcHJpdiwgJnBwZ3R0LT5wZHApOwogCWVsc2UKIAkJZ2VuOF9wcGd0dF9j bGVhbnVwXzRsdmwocHBndHQpOwogCkBAIC0xMTA2LDcgKzExMTIsNyBAQCBzdGF0aWMgaW50IGdl bjhfcHBndHRfYWxsb2NfcGFnZXRhYnMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAJ CQkJICAgICB1aW50NjRfdCBsZW5ndGgsCiAJCQkJICAgICB1bnNpZ25lZCBsb25nICpuZXdfcHRz KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2bS0+ZGV2OworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUodm0tPmRldik7CiAJc3RydWN0IGk5MTVfcGFn ZV90YWJsZSAqcHQ7CiAJdWludDMyX3QgcGRlOwogCkBAIC0xMTE4LDcgKzExMjQsNyBAQCBzdGF0 aWMgaW50IGdlbjhfcHBndHRfYWxsb2NfcGFnZXRhYnMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCiAJCQljb250aW51ZTsKIAkJfQogCi0JCXB0ID0gYWxsb2NfcHQoZGV2KTsKKwkJcHQg PSBhbGxvY19wdChkZXZfcHJpdik7CiAJCWlmIChJU19FUlIocHQpKQogCQkJZ290byB1bndpbmRf b3V0OwogCkBAIC0xMTMyLDcgKzExMzgsNyBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfYWxsb2Nf cGFnZXRhYnMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIHVud2luZF9vdXQ6CiAJ Zm9yX2VhY2hfc2V0X2JpdChwZGUsIG5ld19wdHMsIEk5MTVfUERFUykKLQkJZnJlZV9wdChkZXYs IHBkLT5wYWdlX3RhYmxlW3BkZV0pOworCQlmcmVlX3B0KGRldl9wcml2LCBwZC0+cGFnZV90YWJs ZVtwZGVdKTsKIAogCXJldHVybiAtRU5PTUVNOwogfQpAQCAtMTE2NywxMCArMTE3MywxMCBAQCBn ZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCiAJCQkJICB1aW50NjRfdCBsZW5ndGgsCiAJCQkJICB1bnNpZ25lZCBsb25nICpuZXdf cGRzKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2bS0+ZGV2OworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUodm0tPmRldik7CiAJc3RydWN0IGk5MTVf cGFnZV9kaXJlY3RvcnkgKnBkOwogCXVpbnQzMl90IHBkcGU7Ci0JdWludDMyX3QgcGRwZXMgPSBJ OTE1X1BEUEVTX1BFUl9QRFAoZGV2KTsKKwl1aW50MzJfdCBwZHBlcyA9IEk5MTVfUERQRVNfUEVS X1BEUChkZXZfcHJpdik7CiAKIAlXQVJOX09OKCFiaXRtYXBfZW1wdHkobmV3X3BkcywgcGRwZXMp KTsKIApAQCAtMTE3OCw3ICsxMTg0LDcgQEAgZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcmVjdG9y aWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQlpZiAodGVzdF9iaXQocGRwZSwg cGRwLT51c2VkX3BkcGVzKSkKIAkJCWNvbnRpbnVlOwogCi0JCXBkID0gYWxsb2NfcGQoZGV2KTsK KwkJcGQgPSBhbGxvY19wZChkZXZfcHJpdik7CiAJCWlmIChJU19FUlIocGQpKQogCQkJZ290byB1 bndpbmRfb3V0OwogCkBAIC0xMTkyLDcgKzExOTgsNyBAQCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2Vf ZGlyZWN0b3JpZXMoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIHVud2luZF9vdXQ6 CiAJZm9yX2VhY2hfc2V0X2JpdChwZHBlLCBuZXdfcGRzLCBwZHBlcykKLQkJZnJlZV9wZChkZXYs IHBkcC0+cGFnZV9kaXJlY3RvcnlbcGRwZV0pOworCQlmcmVlX3BkKGRldl9wcml2LCBwZHAtPnBh Z2VfZGlyZWN0b3J5W3BkcGVdKTsKIAogCXJldHVybiAtRU5PTUVNOwogfQpAQCAtMTIyMCw3ICsx MjI2LDcgQEAgZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2RpcnBvaW50ZXJzKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAogCQkJCSAgdWludDY0X3QgbGVuZ3RoLAogCQkJCSAgdW5zaWduZWQg bG9uZyAqbmV3X3BkcHMpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHZtLT5kZXY7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNSh2bS0+ZGV2KTsKIAlz dHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHA7CiAJdWludDMyX3QgcG1sNGU7 CiAKQEAgLTEyMjgsNyArMTIzNCw3IEBAIGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJwb2ludGVy cyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAogCWdlbjhfZm9yX2VhY2hfcG1sNGUo cGRwLCBwbWw0LCBzdGFydCwgbGVuZ3RoLCBwbWw0ZSkgewogCQlpZiAoIXRlc3RfYml0KHBtbDRl LCBwbWw0LT51c2VkX3BtbDRlcykpIHsKLQkJCXBkcCA9IGFsbG9jX3BkcChkZXYpOworCQkJcGRw ID0gYWxsb2NfcGRwKGRldl9wcml2KTsKIAkJCWlmIChJU19FUlIocGRwKSkKIAkJCQlnb3RvIHVu d2luZF9vdXQ7CiAKQEAgLTEyNDYsNyArMTI1Miw3IEBAIGdlbjhfcHBndHRfYWxsb2NfcGFnZV9k aXJwb2ludGVycyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAogdW53aW5kX291dDoK IAlmb3JfZWFjaF9zZXRfYml0KHBtbDRlLCBuZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVSX1BNTDQp Ci0JCWZyZWVfcGRwKGRldiwgcG1sNC0+cGRwc1twbWw0ZV0pOworCQlmcmVlX3BkcChkZXZfcHJp diwgcG1sNC0+cGRwc1twbWw0ZV0pOwogCiAJcmV0dXJuIC1FTk9NRU07CiB9CkBAIC0xMjk1LDEy ICsxMzAxLDEyIEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZV8zbHZsKHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogewogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9 IGk5MTVfdm1fdG9fcHBndHQodm0pOwogCXVuc2lnbmVkIGxvbmcgKm5ld19wYWdlX2RpcnMsICpu ZXdfcGFnZV90YWJsZXM7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHZtLT5kZXY7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNSh2bS0+ZGV2KTsKIAlzdHJ1 Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQ7CiAJY29uc3QgdWludDY0X3Qgb3JpZ19zdGFydCA9 IHN0YXJ0OwogCWNvbnN0IHVpbnQ2NF90IG9yaWdfbGVuZ3RoID0gbGVuZ3RoOwogCXVpbnQzMl90 IHBkcGU7Ci0JdWludDMyX3QgcGRwZXMgPSBJOTE1X1BEUEVTX1BFUl9QRFAoZGV2KTsKKwl1aW50 MzJfdCBwZHBlcyA9IEk5MTVfUERQRVNfUEVSX1BEUChkZXZfcHJpdik7CiAJaW50IHJldDsKIAog CS8qIFdyYXAgaXMgbmV2ZXIgb2theSBzaW5jZSB3ZSBjYW4gb25seSByZXByZXNlbnQgNDhiLCBh bmQgd2UgZG9uJ3QKQEAgLTEzODgsMTEgKzEzOTQsMTIgQEAgc3RhdGljIGludCBnZW44X2FsbG9j X3ZhX3JhbmdlXzNsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIAkJZm9yX2Vh Y2hfc2V0X2JpdCh0ZW1wLCBuZXdfcGFnZV90YWJsZXMgKyBwZHBlICoKIAkJCQlCSVRTX1RPX0xP TkdTKEk5MTVfUERFUyksIEk5MTVfUERFUykKLQkJCWZyZWVfcHQoZGV2LCBwZHAtPnBhZ2VfZGly ZWN0b3J5W3BkcGVdLT5wYWdlX3RhYmxlW3RlbXBdKTsKKwkJCWZyZWVfcHQoZGV2X3ByaXYsCisJ CQkJcGRwLT5wYWdlX2RpcmVjdG9yeVtwZHBlXS0+cGFnZV90YWJsZVt0ZW1wXSk7CiAJfQogCiAJ Zm9yX2VhY2hfc2V0X2JpdChwZHBlLCBuZXdfcGFnZV9kaXJzLCBwZHBlcykKLQkJZnJlZV9wZChk ZXYsIHBkcC0+cGFnZV9kaXJlY3RvcnlbcGRwZV0pOworCQlmcmVlX3BkKGRldl9wcml2LCBwZHAt PnBhZ2VfZGlyZWN0b3J5W3BkcGVdKTsKIAogCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3Bh Z2VfZGlycywgbmV3X3BhZ2VfdGFibGVzKTsKIAltYXJrX3RsYnNfZGlydHkocHBndHQpOwpAQCAt MTQ0Myw3ICsxNDUwLDcgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIGVycl9vdXQ6CiAJZm9yX2VhY2hfc2V0X2Jp dChwbWw0ZSwgbmV3X3BkcHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KQotCQlnZW44X3BwZ3R0X2Ns ZWFudXBfM2x2bCh2bS0+ZGV2LCBwbWw0LT5wZHBzW3BtbDRlXSk7CisJCWdlbjhfcHBndHRfY2xl YW51cF8zbHZsKHRvX2k5MTUodm0tPmRldiksIHBtbDQtPnBkcHNbcG1sNGVdKTsKIAogCXJldHVy biByZXQ7CiB9CkBAIC0xNDUzLDcgKzE0NjAsNyBAQCBzdGF0aWMgaW50IGdlbjhfYWxsb2NfdmFf cmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiB7CiAJc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0ID0gaTkxNV92bV90b19wcGd0dCh2bSk7CiAKLQlpZiAoVVNFU19GVUxMXzQ4 QklUX1BQR1RUKHZtLT5kZXYpKQorCWlmIChVU0VTX0ZVTExfNDhCSVRfUFBHVFQodG9faTkxNSh2 bS0+ZGV2KSkpCiAJCXJldHVybiBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwodm0sICZwcGd0dC0+ cG1sNCwgc3RhcnQsIGxlbmd0aCk7CiAJZWxzZQogCQlyZXR1cm4gZ2VuOF9hbGxvY192YV9yYW5n ZV8zbHZsKHZtLCAmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCk7CkBAIC0xNTI0LDcgKzE1MzEs NyBAQCBzdGF0aWMgdm9pZCBnZW44X2R1bXBfcHBndHQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCiAJZ2VuOF9wdGVfdCBzY3JhdGNoX3B0ZSA9IGdlbjhf cHRlX2VuY29kZSh2bS0+c2NyYXRjaF9wYWdlLmRhZGRyLAogCQkJCQkJIEk5MTVfQ0FDSEVfTExD KTsKIAotCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHZtLT5kZXYpKSB7CisJaWYgKCFVU0VT X0ZVTExfNDhCSVRfUFBHVFQodG9faTkxNSh2bS0+ZGV2KSkpIHsKIAkJZ2VuOF9kdW1wX3BkcCgm cHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCwgc2NyYXRjaF9wdGUsIG0pOwogCX0gZWxzZSB7CiAJ CXVpbnQ2NF90IHBtbDRlOwpAQCAtMTU0NCw3ICsxNTUxLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9k dW1wX3BwZ3R0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgc3RydWN0IHNlcV9maWxlICpt KQogc3RhdGljIGludCBnZW44X3ByZWFsbG9jYXRlX3RvcF9sZXZlbF9wZHBzKHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCkKIHsKIAl1bnNpZ25lZCBsb25nICpuZXdfcGFnZV9kaXJzLCAqbmV3 X3BhZ2VfdGFibGVzOwotCXVpbnQzMl90IHBkcGVzID0gSTkxNV9QRFBFU19QRVJfUERQKGRldik7 CisJdWludDMyX3QgcGRwZXMgPSBJOTE1X1BEUEVTX1BFUl9QRFAodG9faTkxNShwcGd0dC0+YmFz ZS5kZXYpKTsKIAlpbnQgcmV0OwogCiAJLyogV2UgYWxsb2NhdGUgdGVtcCBiaXRtYXAgZm9yIHBh Z2UgdGFibGVzIGZvciBubyBnYWluCkBAIC0xNTc3LDYgKzE1ODQsNyBAQCBzdGF0aWMgaW50IGdl bjhfcHJlYWxsb2NhdGVfdG9wX2xldmVsX3BkcHMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 KQogICovCiBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQpCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShw cGd0dC0+YmFzZS5kZXYpOwogCWludCByZXQ7CiAKIAlyZXQgPSBnZW44X2luaXRfc2NyYXRjaCgm cHBndHQtPmJhc2UpOwpAQCAtMTU5Miw4ICsxNjAwLDggQEAgc3RhdGljIGludCBnZW44X3BwZ3R0 X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCXBwZ3R0LT5iYXNlLmJpbmRfdm1h ID0gcHBndHRfYmluZF92bWE7CiAJcHBndHQtPmRlYnVnX2R1bXAgPSBnZW44X2R1bXBfcHBndHQ7 CiAKLQlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKLQkJcmV0 ID0gc2V0dXBfcHgocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBtbDQpOworCWlmIChVU0VTX0ZV TExfNDhCSVRfUFBHVFQoZGV2X3ByaXYpKSB7CisJCXJldCA9IHNldHVwX3B4KGRldl9wcml2LCAm cHBndHQtPnBtbDQpOwogCQlpZiAocmV0KQogCQkJZ290byBmcmVlX3NjcmF0Y2g7CiAKQEAgLTE2 MDIsNyArMTYxMCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCkKIAkJcHBndHQtPmJhc2UudG90YWwgPSAxVUxMIDw8IDQ4OwogCQlwcGd0 dC0+c3dpdGNoX21tID0gZ2VuOF80OGJfbW1fc3dpdGNoOwogCX0gZWxzZSB7Ci0JCXJldCA9IF9f cGRwX2luaXQocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBkcCk7CisJCXJldCA9IF9fcGRwX2lu aXQoZGV2X3ByaXYsICZwcGd0dC0+cGRwKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gZnJlZV9zY3Jh dGNoOwogCkBAIC0xNjEyLDE0ICsxNjIwLDE0IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0 KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIAkJCQkJCQkgICAgICAwLCAwLAogCQkJCQkJ CSAgICAgIEdFTjhfUE1MNEVfU0hJRlQpOwogCi0JCWlmIChpbnRlbF92Z3B1X2FjdGl2ZSh0b19p OTE1KHBwZ3R0LT5iYXNlLmRldikpKSB7CisJCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJp dikpIHsKIAkJCXJldCA9IGdlbjhfcHJlYWxsb2NhdGVfdG9wX2xldmVsX3BkcHMocHBndHQpOwog CQkJaWYgKHJldCkKIAkJCQlnb3RvIGZyZWVfc2NyYXRjaDsKIAkJfQogCX0KIAotCWlmIChpbnRl bF92Z3B1X2FjdGl2ZSh0b19pOTE1KHBwZ3R0LT5iYXNlLmRldikpKQorCWlmIChpbnRlbF92Z3B1 X2FjdGl2ZShkZXZfcHJpdikpCiAJCWdlbjhfcHBndHRfbm90aWZ5X3ZndChwcGd0dCwgdHJ1ZSk7 CiAKIAlyZXR1cm4gMDsKQEAgLTE5MTksOCArMTkyNyw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9hbGxv Y192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCSAgICAgICB1aW50 NjRfdCBzdGFydF9pbiwgdWludDY0X3QgbGVuZ3RoX2luKQogewogCURFQ0xBUkVfQklUTUFQKG5l d19wYWdlX3RhYmxlcywgSTkxNV9QREVTKTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdm0t PmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNSh2bS0+ZGV2KTsK IAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5nZ3R0OwogCXN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCA9IGk5MTVfdm1fdG9fcHBndHQodm0pOwogCXN0cnVjdCBpOTE1X3Bh Z2VfdGFibGUgKnB0OwpAQCAtMTk1MCw3ICsxOTU3LDcgQEAgc3RhdGljIGludCBnZW42X2FsbG9j X3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkvKiBXZSd2ZSBhbHJl YWR5IGFsbG9jYXRlZCBhIHBhZ2UgdGFibGUgKi8KIAkJV0FSTl9PTighYml0bWFwX2VtcHR5KHB0 LT51c2VkX3B0ZXMsIEdFTjZfUFRFUykpOwogCi0JCXB0ID0gYWxsb2NfcHQoZGV2KTsKKwkJcHQg PSBhbGxvY19wdChkZXZfcHJpdik7CiAJCWlmIChJU19FUlIocHQpKSB7CiAJCQlyZXQgPSBQVFJf RVJSKHB0KTsKIAkJCWdvdG8gdW53aW5kX291dDsKQEAgLTE5OTgsNyArMjAwNSw3IEBAIHN0YXRp YyBpbnQgZ2VuNl9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwK IAkJc3RydWN0IGk5MTVfcGFnZV90YWJsZSAqcHQgPSBwcGd0dC0+cGQucGFnZV90YWJsZVtwZGVd OwogCiAJCXBwZ3R0LT5wZC5wYWdlX3RhYmxlW3BkZV0gPSB2bS0+c2NyYXRjaF9wdDsKLQkJZnJl ZV9wdCh2bS0+ZGV2LCBwdCk7CisJCWZyZWVfcHQoZGV2X3ByaXYsIHB0KTsKIAl9CiAKIAltYXJr X3RsYnNfZGlydHkocHBndHQpOwpAQCAtMjAwNywxNiArMjAxNCwxNiBAQCBzdGF0aWMgaW50IGdl bjZfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCiAKIHN0YXRp YyBpbnQgZ2VuNl9pbml0X3NjcmF0Y2goc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiB7 Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHZtLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNSh2bS0+ZGV2KTsKIAlpbnQgcmV0OwogCi0JcmV0ID0g c2V0dXBfc2NyYXRjaF9wYWdlKGRldiwgJnZtLT5zY3JhdGNoX3BhZ2UsIEk5MTVfR0ZQX0RNQSk7 CisJcmV0ID0gc2V0dXBfc2NyYXRjaF9wYWdlKGRldl9wcml2LCAmdm0tPnNjcmF0Y2hfcGFnZSwg STkxNV9HRlBfRE1BKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0Jdm0tPnNjcmF0Y2hf cHQgPSBhbGxvY19wdChkZXYpOworCXZtLT5zY3JhdGNoX3B0ID0gYWxsb2NfcHQoZGV2X3ByaXYp OwogCWlmIChJU19FUlIodm0tPnNjcmF0Y2hfcHQpKSB7Ci0JCWNsZWFudXBfc2NyYXRjaF9wYWdl KGRldiwgJnZtLT5zY3JhdGNoX3BhZ2UpOworCQljbGVhbnVwX3NjcmF0Y2hfcGFnZShkZXZfcHJp diwgJnZtLT5zY3JhdGNoX3BhZ2UpOwogCQlyZXR1cm4gUFRSX0VSUih2bS0+c2NyYXRjaF9wdCk7 CiAJfQogCkBAIC0yMDI3LDE3ICsyMDM0LDE3IEBAIHN0YXRpYyBpbnQgZ2VuNl9pbml0X3NjcmF0 Y2goc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiAKIHN0YXRpYyB2b2lkIGdlbjZfZnJl ZV9zY3JhdGNoKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogewotCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSB2bS0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUodm0tPmRldik7CiAKLQlmcmVlX3B0KGRldiwgdm0tPnNjcmF0Y2hfcHQpOwot CWNsZWFudXBfc2NyYXRjaF9wYWdlKGRldiwgJnZtLT5zY3JhdGNoX3BhZ2UpOworCWZyZWVfcHQo ZGV2X3ByaXYsIHZtLT5zY3JhdGNoX3B0KTsKKwljbGVhbnVwX3NjcmF0Y2hfcGFnZShkZXZfcHJp diwgJnZtLT5zY3JhdGNoX3BhZ2UpOwogfQogCiBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2NsZWFu dXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiB7CiAJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0ID0gaTkxNV92bV90b19wcGd0dCh2bSk7CiAJc3RydWN0IGk5MTVfcGFnZV9kaXJl Y3RvcnkgKnBkID0gJnBwZ3R0LT5wZDsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdm0tPmRl djsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHZtLT5kZXYp OwogCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGUgKnB0OwogCXVpbnQzMl90IHBkZTsKIApAQCAtMjA0 NSw3ICsyMDUyLDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtKQogCiAJZ2VuNl9mb3JfYWxsX3BkZXMocHQsIHBkLCBwZGUpCiAJ CWlmIChwdCAhPSB2bS0+c2NyYXRjaF9wdCkKLQkJCWZyZWVfcHQoZGV2LCBwdCk7CisJCQlmcmVl X3B0KGRldl9wcml2LCBwdCk7CiAKIAlnZW42X2ZyZWVfc2NyYXRjaCh2bSk7CiB9CkBAIC0yMDUz LDggKzIwNjAsNyBAQCBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2NsZWFudXAoc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pCiBzdGF0aWMgaW50IGdlbjZfcHBndHRfYWxsb2NhdGVfcGFnZV9k aXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiB7CiAJc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0gPSAmcHBndHQtPmJhc2U7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHBwZ3R0LT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShwcGd0dC0+YmFzZS5kZXYpOwogCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3By aXYtPmdndHQ7CiAJYm9vbCByZXRyaWVkID0gZmFsc2U7CiAJaW50IHJldDsKQEAgLTIxMTksOCAr MjEyNSw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfc2NyYXRjaF92YV9yYW5nZShzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQsCiAKIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9pbml0KHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCkKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcHBndHQtPmJh c2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBwZ3R0LT5i YXNlLmRldik7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKIAlp bnQgcmV0OwogCkBAIC0yMzQ5LDE1ICsyMzU0LDE0IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2d0dF9m bHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfQogfQogCi12b2lkIGk5 MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit2b2lk IGk5MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKIAogCS8q IERvbid0IGJvdGhlciBtZXNzaW5nIHdpdGggZmF1bHRzIHByZSBHRU42IGFzIHdlIGhhdmUgbGl0 dGxlCiAJICogZG9jdW1lbnRhdGlvbiBzdXBwb3J0aW5nIHRoYXQgaXQncyBhIGdvb2QgaWRlYS4K IAkgKi8KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQorCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNikKIAkJcmV0dXJuOwogCiAJaTkxNV9jaGVja19hbmRfY2xlYXJfZmF1bHRzKGRl dl9wcml2KTsKQEAgLTI5MTksNiArMjkyMyw3IEBAIHN0YXRpYyBzaXplX3QgZ2VuOV9nZXRfc3Rv bGVuX3NpemUodTE2IGdlbjlfZ21jaF9jdGwpCiAKIHN0YXRpYyBpbnQgZ2d0dF9wcm9iZV9jb21t b24oc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCwgdTY0IHNpemUpCiB7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShnZ3R0LT5iYXNlLmRldik7CiAJc3RydWN0IHBj aV9kZXYgKnBkZXYgPSBnZ3R0LT5iYXNlLmRldi0+cGRldjsKIAlwaHlzX2FkZHJfdCBwaHlzX2Fk ZHI7CiAJaW50IHJldDsKQEAgLTI5MzMsNyArMjkzOCw3IEBAIHN0YXRpYyBpbnQgZ2d0dF9wcm9i ZV9jb21tb24oc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCwgdTY0IHNpemUpCiAJICogcmVzb3J0IHRv IGFuIHVuY2FjaGVkIG1hcHBpbmcuIFRoZSBXQyBpc3N1ZSBpcyBlYXNpbHkgY2F1Z2h0IGJ5IHRo ZQogCSAqIHJlYWRiYWNrIGNoZWNrIHdoZW4gd3JpdGluZyBHVFQgUFRFIGVudHJpZXMuCiAJICov Ci0JaWYgKElTX0JST1hUT04odG9faTkxNShnZ3R0LT5iYXNlLmRldikpKQorCWlmIChJU19CUk9Y VE9OKGRldl9wcml2KSkKIAkJZ2d0dC0+Z3NtID0gaW9yZW1hcF9ub2NhY2hlKHBoeXNfYWRkciwg c2l6ZSk7CiAJZWxzZQogCQlnZ3R0LT5nc20gPSBpb3JlbWFwX3djKHBoeXNfYWRkciwgc2l6ZSk7 CkBAIC0yOTQyLDkgKzI5NDcsNyBAQCBzdGF0aWMgaW50IGdndHRfcHJvYmVfY29tbW9uKHN0cnVj dCBpOTE1X2dndHQgKmdndHQsIHU2NCBzaXplKQogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKLQly ZXQgPSBzZXR1cF9zY3JhdGNoX3BhZ2UoZ2d0dC0+YmFzZS5kZXYsCi0JCQkJICZnZ3R0LT5iYXNl LnNjcmF0Y2hfcGFnZSwKLQkJCQkgR0ZQX0RNQTMyKTsKKwlyZXQgPSBzZXR1cF9zY3JhdGNoX3Bh Z2UoZGV2X3ByaXYsICZnZ3R0LT5iYXNlLnNjcmF0Y2hfcGFnZSwgR0ZQX0RNQTMyKTsKIAlpZiAo cmV0KSB7CiAJCURSTV9FUlJPUigiU2NyYXRjaCBzZXR1cCBmYWlsZWRcbiIpOwogCQkvKiBpb3Vu bWFwIHdpbGwgYWxzbyBnZXQgY2FsbGVkIGF0IHJlbW92ZSwgYnV0IG1laCAqLwpAQCAtMzAzMyw3 ICszMDM2LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9nbWNoX3JlbW92ZShzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSkKIAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gaTkxNV92bV90b19nZ3R0 KHZtKTsKIAogCWlvdW5tYXAoZ2d0dC0+Z3NtKTsKLQljbGVhbnVwX3NjcmF0Y2hfcGFnZSh2bS0+ ZGV2LCAmdm0tPnNjcmF0Y2hfcGFnZSk7CisJY2xlYW51cF9zY3JhdGNoX3BhZ2UodG9faTkxNSh2 bS0+ZGV2KSwgJnZtLT5zY3JhdGNoX3BhZ2UpOwogfQogCiBzdGF0aWMgaW50IGdlbjhfZ21jaF9w cm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQpAQCAtMzI2OCw5ICszMjcxLDggQEAgaW50IGk5 MTVfZ2d0dF9lbmFibGVfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJl dHVybiAwOwogfQogCi12b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZ3R0X21hcHBpbmdzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZ3R0X21hcHBpbmdzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZk ZXZfcHJpdi0+Z2d0dDsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCAqb247CiAK QEAgLTMzMDUsNyArMzMwNyw3IEBAIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Mo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCWdndHQtPmJhc2UuY2xvc2VkID0gZmFsc2U7CiAK LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgeworCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDgpIHsKIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpIHx8IElTX0JST1hUT04o ZGV2X3ByaXYpKQogCQkJY2h2X3NldHVwX3ByaXZhdGVfcHBhdChkZXZfcHJpdik7CiAJCWVsc2UK QEAgLTMzMTQsNyArMzMxNiw3IEBAIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Mo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJcmV0dXJuOwogCX0KIAotCWlmIChVU0VTX1BQR1RU KGRldikpIHsKKwlpZiAoVVNFU19QUEdUVChkZXZfcHJpdikpIHsKIAkJc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm07CiAKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bSwgJmRldl9wcml2LT52 bV9saXN0LCBnbG9iYWxfbGluaykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAppbmRl eCA0OGI5NjAzM2M2N2UuLjRmMzViZTRjMjZjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmgKQEAgLTEyMCw4ICsxMjAsOCBAQCB0eXBlZGVmIHVpbnQ2NF90IGdlbjhfcHBndHRfcG1s NGVfdDsKICNkZWZpbmUgR0VOOF9MRUdBQ1lfUERQRVMJCTQKICNkZWZpbmUgR0VOOF9QVEVTCQkJ STkxNV9QVEVTKHNpemVvZihnZW44X3B0ZV90KSkKIAotI2RlZmluZSBJOTE1X1BEUEVTX1BFUl9Q RFAoZGV2KSAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikgP1wKLQkJCQkgR0VOOF9QTUw0RVNf UEVSX1BNTDQgOiBHRU44X0xFR0FDWV9QRFBFUykKKyNkZWZpbmUgSTkxNV9QRFBFU19QRVJfUERQ KGRldl9wcml2KQkoVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldl9wcml2KSA/XAorCQkJCQlHRU44 X1BNTDRFU19QRVJfUE1MNCA6IEdFTjhfTEVHQUNZX1BEUEVTKQogCiAjZGVmaW5lIFBQQVRfVU5D QUNIRURfSU5ERVgJCShfUEFHRV9QV1QgfCBfUEFHRV9QQ0QpCiAjZGVmaW5lIFBQQVRfQ0FDSEVE X1BERV9JTkRFWAkJMCAvKiBXQiBMTEMgKi8KQEAgLTUxMiw4ICs1MTIsOCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV9wcGd0dF9wdXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogfQog CiB2b2lkIGk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwotdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2d0dF9tYXBwaW5ncyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKLXZvaWQgaTkxNV9nZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Moc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cit2b2lkIGk5MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGk5MTVfZ2VtX3Jlc3Rv cmVfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIGlu dCBfX211c3RfY2hlY2sgaTkxNV9nZW1fZ3R0X3ByZXBhcmVfcGFnZXMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKIAkJCQkJICAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpOwotLSAK Mi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=