From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Weinehall Subject: Re: [PATCH 07/19] drm/i915: Make INTEL_DEVID only take dev_priv Date: Wed, 12 Oct 2016 13:43:05 +0300 Message-ID: <20161012104305.3jb73lstroda2a6u@boom> References: <1476192112-25336-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1476192112-25336-8-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9AAF56E80A for ; Wed, 12 Oct 2016 10:43:08 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1476192112-25336-8-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: Tvrtko Ursulin Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMTEsIDIwMTYgYXQgMDI6MjE6NDBQTSArMDEwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBTYXZlcyA0NDcyIGJ5dGVzIG9mIC5yb2RhdGEgc3RyaW5ncy4KPiAKPiB2MjogQWRkIHBh cmFudGhlc2VzIGFyb3VuZCBkZXZfcHJpdi4gKFZpbGxlIFN5cmphbGEpCgpSZXZpZXdlZC1ieTog RGF2aWQgV2VpbmVoYWxsIDxkYXZpZC53ZWluZWhhbGxAbGludXguaW50ZWwuY29tPgoKPiAKPiBT aWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+ IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICB8ICAxNCArKyst LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8IDExMSArKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyAgICAgICAgfCAgMzYgKysrKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fc3RvbGVuLmMgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dGlsaW5nLmMgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAg ICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgICAgICAgfCAg IDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgfCAgNTggKysr KysrKysrLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAg fCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICAgfCAgIDIg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMgICAgICAgfCAgIDUgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jICAgICAgfCAgIDkgKystCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgIHwgIDI2ICsrKystLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYyAgICAgIHwgIDExICsrLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdHYuYyAgICAgICAgfCAgIDQgKy0KPiAgMTUgZmlsZXMgY2hhbmdl ZCwgMTUxIGluc2VydGlvbnMoKyksIDE0MiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPiBpbmRleCBmYmI0ZTJlMGQxMjQuLmJmZGJiYjc0NTkzOSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwo+IEBAIC0xODgsMTIgKzE4OCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kZXRlY3RfcGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCQlkZXZfcHJpdi0+cGNo X3R5cGUgPSBQQ0hfTFBUOwo+ICAJCQkJRFJNX0RFQlVHX0tNUygiRm91bmQgTHlueFBvaW50IFBD SFxuIik7Cj4gIAkJCQlXQVJOX09OKCFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VMTChk ZXYpKTsKPiAtCQkJCVdBUk5fT04oSVNfSFNXX1VMVChkZXYpIHx8IElTX0JEV19VTFQoZGV2KSk7 Cj4gKwkJCQlXQVJOX09OKElTX0hTV19VTFQoZGV2X3ByaXYpIHx8Cj4gKwkJCQkJSVNfQkRXX1VM VChkZXZfcHJpdikpOwo+ICAJCQl9IGVsc2UgaWYgKGlkID09IElOVEVMX1BDSF9MUFRfTFBfREVW SUNFX0lEX1RZUEUpIHsKPiAgCQkJCWRldl9wcml2LT5wY2hfdHlwZSA9IFBDSF9MUFQ7Cj4gIAkJ CQlEUk1fREVCVUdfS01TKCJGb3VuZCBMeW54UG9pbnQgTFAgUENIXG4iKTsKPiAgCQkJCVdBUk5f T04oIUlTX0hBU1dFTEwoZGV2KSAmJiAhSVNfQlJPQURXRUxMKGRldikpOwo+IC0JCQkJV0FSTl9P TighSVNfSFNXX1VMVChkZXYpICYmICFJU19CRFdfVUxUKGRldikpOwo+ICsJCQkJV0FSTl9PTigh SVNfSFNXX1VMVChkZXZfcHJpdikgJiYKPiArCQkJCQkhSVNfQkRXX1VMVChkZXZfcHJpdikpOwo+ ICAJCQl9IGVsc2UgaWYgKGlkID09IElOVEVMX1BDSF9TUFRfREVWSUNFX0lEX1RZUEUpIHsKPiAg CQkJCWRldl9wcml2LT5wY2hfdHlwZSA9IFBDSF9TUFQ7Cj4gIAkJCQlEUk1fREVCVUdfS01TKCJG b3VuZCBTdW5yaXNlUG9pbnQgUENIXG4iKTsKPiBAQCAtNDIyLDcgKzQyNCw3IEBAIGludGVsX3Nl dHVwX21jaGJhcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWRldl9wcml2LT5tY2hi YXJfbmVlZF9kaXNhYmxlID0gZmFsc2U7Cj4gIAo+IC0JaWYgKElTX0k5MTVHKGRldikgfHwgSVNf STkxNUdNKGRldikpIHsKPiArCWlmIChJU19JOTE1RyhkZXZfcHJpdikgfHwgSVNfSTkxNUdNKGRl dl9wcml2KSkgewo+ICAJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXZfcHJpdi0+YnJpZGdlX2Rl diwgREVWRU4sICZ0ZW1wKTsKPiAgCQllbmFibGVkID0gISEodGVtcCAmIERFVkVOX01DSEJBUl9F Tik7Cj4gIAl9IGVsc2Ugewo+IEBAIC00NDAsNyArNDQyLDcgQEAgaW50ZWxfc2V0dXBfbWNoYmFy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlkZXZfcHJpdi0+bWNoYmFyX25lZWRfZGlzYWJs ZSA9IHRydWU7Cj4gIAo+ICAJLyogU3BhY2UgaXMgYWxsb2NhdGVkIG9yIHJlc2VydmVkLCBzbyBl bmFibGUgaXQuICovCj4gLQlpZiAoSVNfSTkxNUcoZGV2KSB8fCBJU19JOTE1R00oZGV2KSkgewo+ ICsJaWYgKElTX0k5MTVHKGRldl9wcml2KSB8fCBJU19JOTE1R00oZGV2X3ByaXYpKSB7Cj4gIAkJ cGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXZfcHJpdi0+YnJpZGdlX2RldiwgREVWRU4sCj4gIAkJ CQkgICAgICAgdGVtcCB8IERFVkVOX01DSEJBUl9FTik7Cj4gIAl9IGVsc2Ugewo+IEBAIC00NTYs NyArNDU4LDcgQEAgaW50ZWxfdGVhcmRvd25fbWNoYmFyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAlpbnQgbWNoYmFyX3JlZyA9IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQgPyBNQ0hCQVJf STk2NSA6IE1DSEJBUl9JOTE1Owo+ICAKPiAgCWlmIChkZXZfcHJpdi0+bWNoYmFyX25lZWRfZGlz YWJsZSkgewo+IC0JCWlmIChJU19JOTE1RyhkZXYpIHx8IElTX0k5MTVHTShkZXYpKSB7Cj4gKwkJ aWYgKElTX0k5MTVHKGRldl9wcml2KSB8fCBJU19JOTE1R00oZGV2X3ByaXYpKSB7Cj4gIAkJCXUz MiBkZXZlbl92YWw7Cj4gIAo+ICAJCQlwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2X3ByaXYtPmJy aWRnZV9kZXYsIERFVkVOLAo+IEBAIC0xMDc3LDcgKzEwNzksNyBAQCBzdGF0aWMgaW50IGk5MTVf ZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICog YmUgbG9zdCBvciBkZWxheWVkLCBidXQgd2UgdXNlIHRoZW0gYW55d2F5cyB0byBhdm9pZAo+ICAJ ICogc3R1Y2sgaW50ZXJydXB0cyBvbiBzb21lIG1hY2hpbmVzLgo+ICAJICovCj4gLQlpZiAoIUlT X0k5NDVHKGRldikgJiYgIUlTX0k5NDVHTShkZXYpKSB7Cj4gKwlpZiAoIUlTX0k5NDVHKGRldl9w cml2KSAmJiAhSVNfSTk0NUdNKGRldl9wcml2KSkgewo+ICAJCWlmIChwY2lfZW5hYmxlX21zaShw ZGV2KSA8IDApCj4gIAkJCURSTV9ERUJVR19EUklWRVIoImNhbid0IGVuYWJsZSBNU0kiKTsKPiAg CX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA1ODA0NWNkN2EwODcuLjdhNDBkZmE4 MzBlNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yNjA1LDcgKzI2MDUsOCBA QCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiAgfSkKPiAgI2RlZmluZSBJTlRFTF9JTkZP KHApCSgmX19JOTE1X18ocCktPmluZm8pCj4gICNkZWZpbmUgSU5URUxfR0VOKHApCShJTlRFTF9J TkZPKHApLT5nZW4pCj4gLSNkZWZpbmUgSU5URUxfREVWSUQocCkJKElOVEVMX0lORk8ocCktPmRl dmljZV9pZCkKPiArCj4gKyNkZWZpbmUgSU5URUxfREVWSUQoZGV2X3ByaXYpCSgoZGV2X3ByaXYp LT5pbmZvLmRldmljZV9pZCkKPiAgCj4gICNkZWZpbmUgUkVWSURfRk9SRVZFUgkJMHhmZgo+ICAj ZGVmaW5lIElOVEVMX1JFVklEKHApCShfX0k5MTVfXyhwKS0+ZHJtLnBkZXYtPnJldmlzaW9uKQo+ IEBAIC0yNjM3LDI3ICsyNjM4LDI3IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+ICAj ZGVmaW5lIElTX1JFVklEKHAsIHNpbmNlLCB1bnRpbCkgXAo+ICAJKElOVEVMX1JFVklEKHApID49 IChzaW5jZSkgJiYgSU5URUxfUkVWSUQocCkgPD0gKHVudGlsKSkKPiAgCj4gLSNkZWZpbmUgSVNf STgzMChkZXYpCQkoSU5URUxfREVWSUQoZGV2KSA9PSAweDM1NzcpCj4gLSNkZWZpbmUgSVNfODQ1 RyhkZXYpCQkoSU5URUxfREVWSUQoZGV2KSA9PSAweDI1NjIpCj4gKyNkZWZpbmUgSVNfSTgzMChk ZXZfcHJpdikJKElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDM1NzcpCj4gKyNkZWZpbmUgSVNf ODQ1RyhkZXZfcHJpdikJKElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDI1NjIpCj4gICNkZWZp bmUgSVNfSTg1WChkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5pc19pODV4KQo+IC0jZGVmaW5lIElT X0k4NjVHKGRldikJCShJTlRFTF9ERVZJRChkZXYpID09IDB4MjU3MikKPiArI2RlZmluZSBJU19J ODY1RyhkZXZfcHJpdikJKElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDI1NzIpCj4gICNkZWZp bmUgSVNfSTkxNUcoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+aXNfaTkxNWcpCj4gLSNkZWZpbmUg SVNfSTkxNUdNKGRldikJCShJTlRFTF9ERVZJRChkZXYpID09IDB4MjU5MikKPiAtI2RlZmluZSBJ U19JOTQ1RyhkZXYpCQkoSU5URUxfREVWSUQoZGV2KSA9PSAweDI3NzIpCj4gKyNkZWZpbmUgSVNf STkxNUdNKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MjU5MikKPiArI2Rl ZmluZSBJU19JOTQ1RyhkZXZfcHJpdikJKElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDI3NzIp Cj4gICNkZWZpbmUgSVNfSTk0NUdNKGRldikJCShJTlRFTF9JTkZPKGRldiktPmlzX2k5NDVnbSkK PiAgI2RlZmluZSBJU19CUk9BRFdBVEVSKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNfYnJvYWR3 YXRlcikKPiAgI2RlZmluZSBJU19DUkVTVExJTkUoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19j cmVzdGxpbmUpCj4gLSNkZWZpbmUgSVNfR000NShkZXYpCQkoSU5URUxfREVWSUQoZGV2KSA9PSAw eDJBNDIpCj4gKyNkZWZpbmUgSVNfR000NShkZXZfcHJpdikJKElOVEVMX0RFVklEKGRldl9wcml2 KSA9PSAweDJBNDIpCj4gICNkZWZpbmUgSVNfRzRYKGRldikJCShJTlRFTF9JTkZPKGRldiktPmlz X2c0eCkKPiAtI2RlZmluZSBJU19QSU5FVklFV19HKGRldikJKElOVEVMX0RFVklEKGRldikgPT0g MHhhMDAxKQo+IC0jZGVmaW5lIElTX1BJTkVWSUVXX00oZGV2KQkoSU5URUxfREVWSUQoZGV2KSA9 PSAweGEwMTEpCj4gKyNkZWZpbmUgSVNfUElORVZJRVdfRyhkZXZfcHJpdikJKElOVEVMX0RFVklE KGRldl9wcml2KSA9PSAweGEwMDEpCj4gKyNkZWZpbmUgSVNfUElORVZJRVdfTShkZXZfcHJpdikJ KElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweGEwMTEpCj4gICNkZWZpbmUgSVNfUElORVZJRVco ZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19waW5ldmlldykKPiAgI2RlZmluZSBJU19HMzMoZGV2 KQkJKElOVEVMX0lORk8oZGV2KS0+aXNfZzMzKQo+IC0jZGVmaW5lIElTX0lST05MQUtFX00oZGV2 KQkoSU5URUxfREVWSUQoZGV2KSA9PSAweDAwNDYpCj4gKyNkZWZpbmUgSVNfSVJPTkxBS0VfTShk ZXZfcHJpdikJKElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDAwNDYpCj4gICNkZWZpbmUgSVNf SVZZQlJJREdFKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNfaXZ5YnJpZGdlKQo+IC0jZGVmaW5l IElTX0lWQl9HVDEoZGV2KQkJKElOVEVMX0RFVklEKGRldikgPT0gMHgwMTU2IHx8IFwKPiAtCQkJ CSBJTlRFTF9ERVZJRChkZXYpID09IDB4MDE1MiB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2 KSA9PSAweDAxNWEpCj4gKyNkZWZpbmUgSVNfSVZCX0dUMShkZXZfcHJpdikJKElOVEVMX0RFVklE KGRldl9wcml2KSA9PSAweDAxNTYgfHwgXAo+ICsJCQkJIElOVEVMX0RFVklEKGRldl9wcml2KSA9 PSAweDAxNTIgfHwgXAo+ICsJCQkJIElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDAxNWEpCj4g ICNkZWZpbmUgSVNfVkFMTEVZVklFVyhkZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX3ZhbGxleXZp ZXcpCj4gICNkZWZpbmUgSVNfQ0hFUlJZVklFVyhkZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX2No ZXJyeXZpZXcpCj4gICNkZWZpbmUgSVNfSEFTV0VMTChkZXYpCShJTlRFTF9JTkZPKGRldiktPmlz X2hhc3dlbGwpCj4gQEAgLTI2NjYsNDQgKzI2NjcsNDQgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90 YWJsZSB7Cj4gICNkZWZpbmUgSVNfQlJPWFRPTihkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5pc19i cm94dG9uKQo+ICAjZGVmaW5lIElTX0tBQllMQUtFKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNf a2FieWxha2UpCj4gICNkZWZpbmUgSVNfTU9CSUxFKGRldikJCShJTlRFTF9JTkZPKGRldiktPmlz X21vYmlsZSkKPiAtI2RlZmluZSBJU19IU1dfRUFSTFlfU0RWKGRldikJKElTX0hBU1dFTEwoZGV2 KSAmJiBcCj4gLQkJCQkgKElOVEVMX0RFVklEKGRldikgJiAweEZGMDApID09IDB4MEMwMCkKPiAt I2RlZmluZSBJU19CRFdfVUxUKGRldikJCShJU19CUk9BRFdFTEwoZGV2KSAmJiBcCj4gLQkJCQkg KChJTlRFTF9ERVZJRChkZXYpICYgMHhmKSA9PSAweDYgfHwJXAo+IC0JCQkJIChJTlRFTF9ERVZJ RChkZXYpICYgMHhmKSA9PSAweGIgfHwJXAo+IC0JCQkJIChJTlRFTF9ERVZJRChkZXYpICYgMHhm KSA9PSAweGUpKQo+ICsjZGVmaW5lIElTX0hTV19FQVJMWV9TRFYoZGV2X3ByaXYpIChJU19IQVNX RUxMKGRldl9wcml2KSAmJiBcCj4gKwkJCQkgICAgKElOVEVMX0RFVklEKGRldl9wcml2KSAmIDB4 RkYwMCkgPT0gMHgwQzAwKQoKV2UndmUgZ290IGEgcG9saWN5IGZvciB0aGUgZHJpdmVyIGVsc2V3 aGVyZSB0aGF0IHdlIGRyb3Agd29ya2Fyb3VuZHMgZm9yCnByZS1yZWxlYXNlIGhhcmR3YXJlIG9u Y2UgcHJvcGVyIGhhcmR3YXJlIGlzIGF2YWlsYWJsZS4gIFdoYXQncyBzbwpzcGVjaWFsIGFib3V0 IHRoaXMgcGFydGljdWxhciBwaWVjZSBvZiBoYXJkd2FyZSB0aGF0IG1ha2VzIHRoZQp3b3JrYXJv dW5kIHdvcnRoIGtlZXBpbmcgYXJvdW5kPyAgQW55b25lPwoKPiArI2RlZmluZSBJU19CRFdfVUxU KGRldl9wcml2KQkoSVNfQlJPQURXRUxMKGRldl9wcml2KSAmJiBcCj4gKwkJCQkgKChJTlRFTF9E RVZJRChkZXZfcHJpdikgJiAweGYpID09IDB4NiB8fAlcCj4gKwkJCQkgKElOVEVMX0RFVklEKGRl dl9wcml2KSAmIDB4ZikgPT0gMHhiIHx8CVwKPiArCQkJCSAoSU5URUxfREVWSUQoZGV2X3ByaXYp ICYgMHhmKSA9PSAweGUpKQo+ICAvKiBVTFggbWFjaGluZXMgYXJlIGFsc28gY29uc2lkZXJlZCBV TFQuICovCj4gLSNkZWZpbmUgSVNfQkRXX1VMWChkZXYpCQkoSVNfQlJPQURXRUxMKGRldikgJiYg XAo+IC0JCQkJIChJTlRFTF9ERVZJRChkZXYpICYgMHhmKSA9PSAweGUpCj4gLSNkZWZpbmUgSVNf QkRXX0dUMyhkZXYpCQkoSVNfQlJPQURXRUxMKGRldikgJiYgXAo+IC0JCQkJIChJTlRFTF9ERVZJ RChkZXYpICYgMHgwMEYwKSA9PSAweDAwMjApCj4gLSNkZWZpbmUgSVNfSFNXX1VMVChkZXYpCQko SVNfSEFTV0VMTChkZXYpICYmIFwKPiAtCQkJCSAoSU5URUxfREVWSUQoZGV2KSAmIDB4RkYwMCkg PT0gMHgwQTAwKQo+IC0jZGVmaW5lIElTX0hTV19HVDMoZGV2KQkJKElTX0hBU1dFTEwoZGV2KSAm JiBcCj4gLQkJCQkgKElOVEVMX0RFVklEKGRldikgJiAweDAwRjApID09IDB4MDAyMCkKPiArI2Rl ZmluZSBJU19CRFdfVUxYKGRldl9wcml2KQkoSVNfQlJPQURXRUxMKGRldl9wcml2KSAmJiBcCj4g KwkJCQkgKElOVEVMX0RFVklEKGRldl9wcml2KSAmIDB4ZikgPT0gMHhlKQo+ICsjZGVmaW5lIElT X0JEV19HVDMoZGV2X3ByaXYpCShJU19CUk9BRFdFTEwoZGV2X3ByaXYpICYmIFwKPiArCQkJCSAo SU5URUxfREVWSUQoZGV2X3ByaXYpICYgMHgwMEYwKSA9PSAweDAwMjApCj4gKyNkZWZpbmUgSVNf SFNXX1VMVChkZXZfcHJpdikJKElTX0hBU1dFTEwoZGV2X3ByaXYpICYmIFwKPiArCQkJCSAoSU5U RUxfREVWSUQoZGV2X3ByaXYpICYgMHhGRjAwKSA9PSAweDBBMDApCj4gKyNkZWZpbmUgSVNfSFNX X0dUMyhkZXZfcHJpdikJKElTX0hBU1dFTEwoZGV2X3ByaXYpICYmIFwKPiArCQkJCSAoSU5URUxf REVWSUQoZGV2X3ByaXYpICYgMHgwMEYwKSA9PSAweDAwMjApCj4gIC8qIFVMWCBtYWNoaW5lcyBh cmUgYWxzbyBjb25zaWRlcmVkIFVMVC4gKi8KPiAtI2RlZmluZSBJU19IU1dfVUxYKGRldikJCShJ TlRFTF9ERVZJRChkZXYpID09IDB4MEEwRSB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2KSA9 PSAweDBBMUUpCj4gLSNkZWZpbmUgSVNfU0tMX1VMVChkZXYpCQkoSU5URUxfREVWSUQoZGV2KSA9 PSAweDE5MDYgfHwgXAo+IC0JCQkJIElOVEVMX0RFVklEKGRldikgPT0gMHgxOTEzIHx8IFwKPiAt CQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4MTkxNiB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQo ZGV2KSA9PSAweDE5MjEgfHwgXAo+IC0JCQkJIElOVEVMX0RFVklEKGRldikgPT0gMHgxOTI2KQo+ IC0jZGVmaW5lIElTX1NLTF9VTFgoZGV2KQkJKElOVEVMX0RFVklEKGRldikgPT0gMHgxOTBFIHx8 IFwKPiAtCQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4MTkxNSB8fCBcCj4gLQkJCQkgSU5URUxf REVWSUQoZGV2KSA9PSAweDE5MUUpCj4gLSNkZWZpbmUgSVNfS0JMX1VMVChkZXYpCQkoSU5URUxf REVWSUQoZGV2KSA9PSAweDU5MDYgfHwgXAo+IC0JCQkJIElOVEVMX0RFVklEKGRldikgPT0gMHg1 OTEzIHx8IFwKPiAtCQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4NTkxNiB8fCBcCj4gLQkJCQkg SU5URUxfREVWSUQoZGV2KSA9PSAweDU5MjEgfHwgXAo+IC0JCQkJIElOVEVMX0RFVklEKGRldikg PT0gMHg1OTI2KQo+IC0jZGVmaW5lIElTX0tCTF9VTFgoZGV2KQkJKElOVEVMX0RFVklEKGRldikg PT0gMHg1OTBFIHx8IFwKPiAtCQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4NTkxNSB8fCBcCj4g LQkJCQkgSU5URUxfREVWSUQoZGV2KSA9PSAweDU5MUUpCj4gLSNkZWZpbmUgSVNfU0tMX0dUMyhk ZXYpCQkoSVNfU0tZTEFLRShkZXYpICYmIFwKPiAtCQkJCSAoSU5URUxfREVWSUQoZGV2KSAmIDB4 MDBGMCkgPT0gMHgwMDIwKQo+IC0jZGVmaW5lIElTX1NLTF9HVDQoZGV2KQkJKElTX1NLWUxBS0Uo ZGV2KSAmJiBcCj4gLQkJCQkgKElOVEVMX0RFVklEKGRldikgJiAweDAwRjApID09IDB4MDAzMCkK PiArI2RlZmluZSBJU19IU1dfVUxYKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09 IDB4MEEwRSB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MEExRSkKPiAr I2RlZmluZSBJU19TS0xfVUxUKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4 MTkwNiB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MTkxMyB8fCBcCj4g KwkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MTkxNiB8fCBcCj4gKwkJCQkgSU5URUxf REVWSUQoZGV2X3ByaXYpID09IDB4MTkyMSB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2X3By aXYpID09IDB4MTkyNikKPiArI2RlZmluZSBJU19TS0xfVUxYKGRldl9wcml2KQkoSU5URUxfREVW SUQoZGV2X3ByaXYpID09IDB4MTkwRSB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYp ID09IDB4MTkxNSB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MTkxRSkK PiArI2RlZmluZSBJU19LQkxfVUxUKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09 IDB4NTkwNiB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkxMyB8fCBc Cj4gKwkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkxNiB8fCBcCj4gKwkJCQkgSU5U RUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkyMSB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2 X3ByaXYpID09IDB4NTkyNikKPiArI2RlZmluZSBJU19LQkxfVUxYKGRldl9wcml2KQkoSU5URUxf REVWSUQoZGV2X3ByaXYpID09IDB4NTkwRSB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2X3By aXYpID09IDB4NTkxNSB8fCBcCj4gKwkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkx RSkKPiArI2RlZmluZSBJU19TS0xfR1QzKGRldl9wcml2KQkoSVNfU0tZTEFLRShkZXZfcHJpdikg JiYgXAo+ICsJCQkJIChJTlRFTF9ERVZJRChkZXZfcHJpdikgJiAweDAwRjApID09IDB4MDAyMCkK PiArI2RlZmluZSBJU19TS0xfR1Q0KGRldl9wcml2KQkoSVNfU0tZTEFLRShkZXZfcHJpdikgJiYg XAo+ICsJCQkJIChJTlRFTF9ERVZJRChkZXZfcHJpdikgJiAweDAwRjApID09IDB4MDAzMCkKPiAg Cj4gICNkZWZpbmUgSVNfUFJFTElNSU5BUllfSFcoaW50ZWxfaW5mbykgKChpbnRlbF9pbmZvKS0+ aXNfcHJlbGltaW5hcnkpCj4gIAo+IEBAIC0yNzgyLDcgKzI3ODMsNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfY21kX3RhYmxlIHsKPiAgI2RlZmluZSBPVkVSTEFZX05FRURTX1BIWVNJQ0FMKGRldikJKElO VEVMX0lORk8oZGV2KS0+b3ZlcmxheV9uZWVkc19waHlzaWNhbCkKPiAgCj4gIC8qIEVhcmx5IGdl bjIgaGF2ZSBhIHRvdGFsbHkgYnVzdGVkIENTIHRsYiBhbmQgcmVxdWlyZSBwaW5uZWQgYmF0Y2hl cy4gKi8KPiAtI2RlZmluZSBIQVNfQlJPS0VOX0NTX1RMQihkZXYpCQkoSVNfSTgzMChkZXYpIHx8 IElTXzg0NUcoZGV2KSkKPiArI2RlZmluZSBIQVNfQlJPS0VOX0NTX1RMQihkZXZfcHJpdikJKElT X0k4MzAoZGV2X3ByaXYpIHx8IElTXzg0NUcoZGV2X3ByaXYpKQo+ICAKPiAgLyogV2FSc0Rpc2Fi bGVDb2Fyc2VQb3dlckdhdGluZzpza2wsYnh0ICovCj4gICNkZWZpbmUgTkVFRFNfV2FSc0Rpc2Fi bGVDb2Fyc2VQb3dlckdhdGluZyhkZXZfcHJpdikgXAo+IEBAIC0yODAyLDggKzI4MDMsOSBAQCBz dHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiAgLyogV2l0aCB0aGUgOTQ1IGFuZCBsYXRlciwg WSB0aWxpbmcgZ290IGFkanVzdGVkIHNvIHRoYXQgaXQgd2FzIDMyIDEyOC1ieXRlCj4gICAqIHJv d3MsIHdoaWNoIGNoYW5nZWQgdGhlIGFsaWdubWVudCByZXF1aXJlbWVudHMgYW5kIGZlbmNlIHBy b2dyYW1taW5nLgo+ICAgKi8KPiAtI2RlZmluZSBIQVNfMTI4X0JZVEVfWV9USUxJTkcoZGV2KSAo IUlTX0dFTjIoZGV2KSAmJiAhKElTX0k5MTVHKGRldikgfHwgXAo+IC0JCQkJCQkgICAgICBJU19J OTE1R00oZGV2KSkpCj4gKyNkZWZpbmUgSEFTXzEyOF9CWVRFX1lfVElMSU5HKGRldl9wcml2KSAo IUlTX0dFTjIoZGV2X3ByaXYpICYmIFwKPiArCQkJCQkgIShJU19JOTE1RyhkZXZfcHJpdikgfHwg XAo+ICsJCQkJCSBJU19JOTE1R00oZGV2X3ByaXYpKSkKPiAgI2RlZmluZSBTVVBQT1JUU19UVihk ZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5zdXBwb3J0c190dikKPiAgI2RlZmluZSBJOTE1X0hBU19I T1RQTFVHKGRldikJCSAoSU5URUxfSU5GTyhkZXYpLT5oYXNfaG90cGx1ZykKPiAgCj4gQEAgLTI4 MTEsNyArMjgxMyw3IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+ICAjZGVmaW5lIEhB U19QSVBFX0NYU1IoZGV2KSAoSU5URUxfSU5GTyhkZXYpLT5oYXNfcGlwZV9jeHNyKQo+ICAjZGVm aW5lIEhBU19GQkMoZGV2KSAoSU5URUxfSU5GTyhkZXYpLT5oYXNfZmJjKQo+ICAKPiAtI2RlZmlu ZSBIQVNfSVBTKGRldikJCShJU19IU1dfVUxUKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCj4g KyNkZWZpbmUgSEFTX0lQUyhkZXZfcHJpdikJKElTX0hTV19VTFQoZGV2X3ByaXYpIHx8IElTX0JS T0FEV0VMTChkZXZfcHJpdikpCj4gIAo+ICAjZGVmaW5lIEhBU19EUF9NU1QoZGV2KQkoSU5URUxf SU5GTyhkZXYpLT5oYXNfZHBfbXN0KQo+ICAKPiBAQCAtMjg2Nyw3ICsyODY5LDggQEAgc3RydWN0 IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4gIAo+ICAvKiBEUEYgPT0gZHluYW1pYyBwYXJpdHkgZmVh dHVyZSAqLwo+ICAjZGVmaW5lIEhBU19MM19EUEYoZGV2KSAoSU5URUxfSU5GTyhkZXYpLT5oYXNf bDNfZHBmKQo+IC0jZGVmaW5lIE5VTV9MM19TTElDRVMoZGV2KSAoSVNfSFNXX0dUMyhkZXYpID8g MiA6IEhBU19MM19EUEYoZGV2KSkKPiArI2RlZmluZSBOVU1fTDNfU0xJQ0VTKGRldl9wcml2KSAo SVNfSFNXX0dUMyhkZXZfcHJpdikgPyBcCj4gKwkJCQkgMiA6IEhBU19MM19EUEYoZGV2X3ByaXYp KQo+ICAKPiAgI2RlZmluZSBHVF9GUkVRVUVOQ1lfTVVMVElQTElFUiA1MAo+ICAjZGVmaW5lIEdF TjlfRlJFUV9TQ0FMRVIgMwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDZiMDk5ZjAx OThjYy4uYWZhYTQ5OTQ2MDQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTQz MjEsMzAgKzQzMjEsMjggQEAgdm9pZCBpOTE1X2dlbV9pbml0X3N3aXp6bGluZyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAJCUJVRygpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbml0X3Vu dXNlZF9yaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBiYXNlKQo+ICtzdGF0aWMgdm9p ZCBpbml0X3VudXNlZF9yaW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMy IGJhc2UpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKPiAtCj4gIAlJOTE1X1dSSVRFKFJJTkdfQ1RMKGJhc2UpLCAwKTsKPiAgCUk5MTVf V1JJVEUoUklOR19IRUFEKGJhc2UpLCAwKTsKPiAgCUk5MTVfV1JJVEUoUklOR19UQUlMKGJhc2Up LCAwKTsKPiAgCUk5MTVfV1JJVEUoUklOR19TVEFSVChiYXNlKSwgMCk7Cj4gIH0KPiAgCj4gLXN0 YXRpYyB2b2lkIGluaXRfdW51c2VkX3JpbmdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gLXsK PiAtCWlmIChJU19JODMwKGRldikpIHsKPiAtCQlpbml0X3VudXNlZF9yaW5nKGRldiwgUFJCMV9C QVNFKTsKPiAtCQlpbml0X3VudXNlZF9yaW5nKGRldiwgU1JCMF9CQVNFKTsKPiAtCQlpbml0X3Vu dXNlZF9yaW5nKGRldiwgU1JCMV9CQVNFKTsKPiAtCQlpbml0X3VudXNlZF9yaW5nKGRldiwgU1JC Ml9CQVNFKTsKPiAtCQlpbml0X3VudXNlZF9yaW5nKGRldiwgU1JCM19CQVNFKTsKPiAtCX0gZWxz ZSBpZiAoSVNfR0VOMihkZXYpKSB7Cj4gLQkJaW5pdF91bnVzZWRfcmluZyhkZXYsIFNSQjBfQkFT RSk7Cj4gLQkJaW5pdF91bnVzZWRfcmluZyhkZXYsIFNSQjFfQkFTRSk7Cj4gLQl9IGVsc2UgaWYg KElTX0dFTjMoZGV2KSkgewo+IC0JCWluaXRfdW51c2VkX3JpbmcoZGV2LCBQUkIxX0JBU0UpOwo+ IC0JCWluaXRfdW51c2VkX3JpbmcoZGV2LCBQUkIyX0JBU0UpOwo+ICtzdGF0aWMgdm9pZCBpbml0 X3VudXNlZF9yaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiAr CWlmIChJU19JODMwKGRldl9wcml2KSkgewo+ICsJCWluaXRfdW51c2VkX3JpbmcoZGV2X3ByaXYs IFBSQjFfQkFTRSk7Cj4gKwkJaW5pdF91bnVzZWRfcmluZyhkZXZfcHJpdiwgU1JCMF9CQVNFKTsK PiArCQlpbml0X3VudXNlZF9yaW5nKGRldl9wcml2LCBTUkIxX0JBU0UpOwo+ICsJCWluaXRfdW51 c2VkX3JpbmcoZGV2X3ByaXYsIFNSQjJfQkFTRSk7Cj4gKwkJaW5pdF91bnVzZWRfcmluZyhkZXZf cHJpdiwgU1JCM19CQVNFKTsKPiArCX0gZWxzZSBpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKPiAr CQlpbml0X3VudXNlZF9yaW5nKGRldl9wcml2LCBTUkIwX0JBU0UpOwo+ICsJCWluaXRfdW51c2Vk X3JpbmcoZGV2X3ByaXYsIFNSQjFfQkFTRSk7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTjMoZGV2X3By aXYpKSB7Cj4gKwkJaW5pdF91bnVzZWRfcmluZyhkZXZfcHJpdiwgUFJCMV9CQVNFKTsKPiArCQlp bml0X3VudXNlZF9yaW5nKGRldl9wcml2LCBQUkIyX0JBU0UpOwo+ICAJfQo+ICB9Cj4gIAo+IEBA IC00MzYyLDcgKzQzNjAsNyBAQCBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIAkJSTkxNV9XUklURShIU1dfSURJQ1IsIEk5MTVfUkVBRChIU1dfSURJQ1IpIHwgSURJ SEFTSE1TSygweGYpKTsKPiAgCj4gIAlpZiAoSVNfSEFTV0VMTChkZXYpKQo+IC0JCUk5MTVfV1JJ VEUoTUlfUFJFRElDQVRFX1JFU1VMVF8yLCBJU19IU1dfR1QzKGRldikgPwo+ICsJCUk5MTVfV1JJ VEUoTUlfUFJFRElDQVRFX1JFU1VMVF8yLCBJU19IU1dfR1QzKGRldl9wcml2KSA/Cj4gIAkJCSAg IExPV0VSX1NMSUNFX0VOQUJMRUQgOiBMT1dFUl9TTElDRV9ESVNBQkxFRCk7Cj4gIAo+ICAJaWYg KEhBU19QQ0hfTk9QKGRldl9wcml2KSkgewo+IEBAIC00Mzg1LDcgKzQzODMsNyBAQCBpOTE1X2dl bV9pbml0X2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkgKiB3aWxsIHByZXZlbnQgYzMg ZW50cnkuIE1ha2VzIHN1cmUgYWxsIHVudXNlZCByaW5ncwo+ICAJICogYXJlIHRvdGFsbHkgaWRs ZS4KPiAgCSAqLwo+IC0JaW5pdF91bnVzZWRfcmluZ3MoZGV2KTsKPiArCWluaXRfdW51c2VkX3Jp bmdzKGRldl9wcml2KTsKPiAgCj4gIAlCVUdfT04oIWRldl9wcml2LT5rZXJuZWxfY29udGV4dCk7 Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gaW5kZXggNTk5ODll OGVlNWRjLi5jYmVhNmZiODNjZTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc3RvbGVuLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9z dG9sZW4uYwo+IEBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaTkxNV9z dG9sZW5fdG9fcGh5c2ljYWwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlwY2lfcmVhZF9j b25maWdfZHdvcmQocGRldiwgSU5URUxfQlNNLCAmYnNtKTsKPiAgCj4gIAkJYmFzZSA9IGJzbSAm IElOVEVMX0JTTV9NQVNLOwo+IC0JfSBlbHNlIGlmIChJU19JODY1RyhkZXYpKSB7Cj4gKwl9IGVs c2UgaWYgKElTX0k4NjVHKGRldl9wcml2KSkgewo+ICAJCXUzMiB0c2VnX3NpemUgPSAwOwo+ICAJ CXUxNiB0b3VkID0gMDsKPiAgCQl1OCB0bXA7Cj4gQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMg dW5zaWduZWQgbG9uZyBpOTE1X3N0b2xlbl90b19waHlzaWNhbChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAJCXRvbSA9IHRtcCAqIE1CKDMyKTsKPiAgCj4gIAkJYmFzZSA9IHRvbSAtIHRzZWdf c2l6ZSAtIGdndHQtPnN0b2xlbl9zaXplOwo+IC0JfSBlbHNlIGlmIChJU184NDVHKGRldikpIHsK PiArCX0gZWxzZSBpZiAoSVNfODQ1RyhkZXZfcHJpdikpIHsKPiAgCQl1MzIgdHNlZ19zaXplID0g MDsKPiAgCQl1MzIgdG9tOwo+ICAJCXU4IHRtcDsKPiBAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRp YyB1bnNpZ25lZCBsb25nIGk5MTVfc3RvbGVuX3RvX3BoeXNpY2FsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIAkJdG9tID0gdG1wICogTUIoMzIpOwo+ICAKPiAgCQliYXNlID0gdG9tIC0gdHNl Z19zaXplIC0gZ2d0dC0+c3RvbGVuX3NpemU7Cj4gLQl9IGVsc2UgaWYgKElTX0k4MzAoZGV2KSkg ewo+ICsJfSBlbHNlIGlmIChJU19JODMwKGRldl9wcml2KSkgewo+ICAJCXUzMiB0c2VnX3NpemUg PSAwOwo+ICAJCXUzMiB0b207Cj4gIAkJdTggdG1wOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3RpbGluZy5jCj4gaW5kZXggYTE0YjFlM2Q0Yzc4Li44OWQxZDIzNGExYjQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwo+IEBAIC02Miw2ICs2Miw3IEBACj4g IHN0YXRpYyBib29sCj4gIGk5MTVfdGlsaW5nX29rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBzdHJpZGUsIGludCBzaXplLCBpbnQgdGlsaW5nX21vZGUpCj4gIHsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCWludCB0aWxlX3dpZHRo Owo+ICAKPiAgCS8qIExpbmVhciBpcyBhbHdheXMgZmluZSAqLwo+IEBAIC03Miw3ICs3Myw3IEBA IGk5MTVfdGlsaW5nX29rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBzdHJpZGUsIGludCBz aXplLCBpbnQgdGlsaW5nX21vZGUpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCWlmIChJU19H RU4yKGRldikgfHwKPiAtCSAgICAodGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfWSAmJiBIQVNf MTI4X0JZVEVfWV9USUxJTkcoZGV2KSkpCj4gKwkgICAgKHRpbGluZ19tb2RlID09IEk5MTVfVElM SU5HX1kgJiYgSEFTXzEyOF9CWVRFX1lfVElMSU5HKGRldl9wcml2KSkpCj4gIAkJdGlsZV93aWR0 aCA9IDEyODsKPiAgCWVsc2UKPiAgCQl0aWxlX3dpZHRoID0gNTEyOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYwo+IGluZGV4IDg4MzQ3NDQxMWFlZS4uNWZiM2IxYzlhNTJjIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCj4gQEAgLTM2NTYsNyArMzY1Niw3IEBAIHN0YXRpYyBpbnQgaXJvbmxh a2VfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJaWJ4X2ly cV9wb3N0aW5zdGFsbChkZXYpOwo+ICAKPiAtCWlmIChJU19JUk9OTEFLRV9NKGRldikpIHsKPiAr CWlmIChJU19JUk9OTEFLRV9NKGRldl9wcml2KSkgewo+ICAJCS8qIEVuYWJsZSBQQ1UgZXZlbnQg aW50ZXJydXB0cwo+ICAJCSAqCj4gIAkJICogc3BpbmxvY2tpbmcgbm90IHJlcXVpcmVkIGhlcmUg Zm9yIGNvcnJlY3RuZXNzIHNpbmNlIGludGVycnVwdAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5j Cj4gaW5kZXggZjg5MTllZjNhN2FmLi5kNDM4OGMwM2I0ZGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jcnQuYwo+IEBAIC00MzEsNyArNDMxLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0X2Rl dGVjdF9ob3RwbHVnKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAkgKiB0byBn ZXQgYSByZWxpYWJsZSByZXN1bHQuCj4gIAkgKi8KPiAgCj4gLQlpZiAoSVNfRzRYKGRldikgJiYg IUlTX0dNNDUoZGV2KSkKPiArCWlmIChJU19HNFgoZGV2X3ByaXYpICYmICFJU19HTTQ1KGRldl9w cml2KSkKPiAgCQl0cmllcyA9IDI7Cj4gIAllbHNlCj4gIAkJdHJpZXMgPSAxOwo+IEBAIC04OTQs NyArODk0LDcgQEAgdm9pZCBpbnRlbF9jcnRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAKPiAgCWNydC0+YmFzZS50eXBlID0gSU5URUxfT1VUUFVUX0FOQUxPRzsKPiAgCWNydC0+YmFz ZS5jbG9uZWFibGUgPSAoMSA8PCBJTlRFTF9PVVRQVVRfRFZPKSB8ICgxIDw8IElOVEVMX09VVFBV VF9IRE1JKTsKPiAtCWlmIChJU19JODMwKGRldikpCj4gKwlpZiAoSVNfSTgzMChkZXZfcHJpdikp Cj4gIAkJY3J0LT5iYXNlLmNydGNfbWFzayA9ICgxIDw8IDApOwo+ICAJZWxzZQo+ICAJCWNydC0+ YmFzZS5jcnRjX21hc2sgPSAoMSA8PCAwKSB8ICgxIDw8IDEpIHwgKDEgPDwgMik7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGI3Njg1OTM2ZDMyNC4uZWUzYjU5M2Qz ZWMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMjMwLDEw ICsxMjMwLDkgQEAgdm9pZCBhc3NlcnRfcGFuZWxfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPiAgc3RhdGljIHZvaWQgYXNzZXJ0X2N1 cnNvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgZW51bSBwaXBl IHBpcGUsIGJvb2wgc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2 X3ByaXYtPmRybTsKPiAgCWJvb2wgY3VyX3N0YXRlOwo+ICAKPiAtCWlmIChJU184NDVHKGRldikg fHwgSVNfSTg2NUcoZGV2KSkKPiArCWlmIChJU184NDVHKGRldl9wcml2KSB8fCBJU19JODY1Ryhk ZXZfcHJpdikpCj4gIAkJY3VyX3N0YXRlID0gSTkxNV9SRUFEKENVUkNOVFIoUElQRV9BKSkgJiBD VVJTT1JfRU5BQkxFOwo+ICAJZWxzZQo+ICAJCWN1cl9zdGF0ZSA9IEk5MTVfUkVBRChDVVJDTlRS KHBpcGUpKSAmIENVUlNPUl9NT0RFOwo+IEBAIC0xNjE3LDExICsxNjE2LDExIEBAIHN0YXRpYyB2 b2lkIGk5eHhfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCWFzc2VydF9w aXBlX2Rpc2FibGVkKGRldl9wcml2LCBjcnRjLT5waXBlKTsKPiAgCj4gIAkvKiBQTEwgaXMgcHJv dGVjdGVkIGJ5IHBhbmVsLCBtYWtlIHN1cmUgd2UgY2FuIHdyaXRlIGl0ICovCj4gLQlpZiAoSVNf TU9CSUxFKGRldikgJiYgIUlTX0k4MzAoZGV2KSkKPiArCWlmIChJU19NT0JJTEUoZGV2X3ByaXYp ICYmICFJU19JODMwKGRldl9wcml2KSkKPiAgCQlhc3NlcnRfcGFuZWxfdW5sb2NrZWQoZGV2X3By aXYsIGNydGMtPnBpcGUpOwo+ICAKPiAgCS8qIEVuYWJsZSBEVk8gMnggY2xvY2sgb24gYm90aCBQ TExzIGlmIG5lY2Vzc2FyeSAqLwo+IC0JaWYgKElTX0k4MzAoZGV2KSAmJiBpbnRlbF9udW1fZHZv X3BpcGVzKGRldikgPiAwKSB7Cj4gKwlpZiAoSVNfSTgzMChkZXZfcHJpdikgJiYgaW50ZWxfbnVt X2R2b19waXBlcyhkZXYpID4gMCkgewo+ICAJCS8qCj4gIAkJICogSXQgYXBwZWFycyB0byBiZSBp bXBvcnRhbnQgdGhhdCB3ZSBkb24ndCBlbmFibGUgdGhpcwo+ICAJCSAqIGZvciB0aGUgY3VycmVu dCBwaXBlIGJlZm9yZSBvdGhlcndpc2UgY29uZmlndXJpbmcgdGhlCj4gQEAgLTE2ODYsNyArMTY4 NSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZGlzYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNy dGMpCj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAo+ICAJLyogRGlzYWJsZSBE Vk8gMnggY2xvY2sgb24gYm90aCBQTExzIGlmIG5lY2Vzc2FyeSAqLwo+IC0JaWYgKElTX0k4MzAo ZGV2KSAmJgo+ICsJaWYgKElTX0k4MzAoZGV2X3ByaXYpICYmCj4gIAkgICAgaW50ZWxfY3J0Y19o YXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EVk8pICYmCj4gIAkgICAgIWludGVs X251bV9kdm9fcGlwZXMoZGV2KSkgewo+ICAJCUk5MTVfV1JJVEUoRFBMTChQSVBFX0IpLAo+IEBA IC01MzkyLDcgKzUzOTEsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIC8qIElQUyBvbmx5IGV4aXN0cyBv biBVTFQgbWFjaGluZXMgYW5kIGlzIHRpZWQgdG8gcGlwZSBBLiAqLwo+ICBzdGF0aWMgYm9vbCBo c3dfY3J0Y19zdXBwb3J0c19pcHMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIHsKPiAtCXJl dHVybiBIQVNfSVBTKGNydGMtPmJhc2UuZGV2KSAmJiBjcnRjLT5waXBlID09IFBJUEVfQTsKPiAr CXJldHVybiBIQVNfSVBTKHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpKSAmJiBjcnRjLT5waXBlID09 IFBJUEVfQTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gQEAgLTU4NjQsOSArNTg2Myw5IEBA IHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9tYXhfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCQkgKi8KPiAgCQlpZiAoSTkxNV9SRUFEKEZVU0VfU1RSQVApICYgSFNXX0NEQ0xLX0xJ TUlUKQo+ICAJCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA0NTAwMDA7Cj4gLQkJZWxzZSBp ZiAoSVNfQkRXX1VMWChkZXYpKQo+ICsJCWVsc2UgaWYgKElTX0JEV19VTFgoZGV2X3ByaXYpKQo+ ICAJCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA0NTAwMDA7Cj4gLQkJZWxzZSBpZiAoSVNf QkRXX1VMVChkZXYpKQo+ICsJCWVsc2UgaWYgKElTX0JEV19VTFQoZGV2X3ByaXYpKQo+ICAJCQlk ZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA1NDAwMDA7Cj4gIAkJZWxzZQo+ICAJCQlkZXZfcHJp di0+bWF4X2NkY2xrX2ZyZXEgPSA2NzUwMDA7Cj4gQEAgLTcyMjUsNyArNzIyNCw3IEBAIHN0YXRp YyBpbnQgaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiAgCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID09IGFkanVzdGVkX21vZGUtPmNy dGNfaGRpc3BsYXkpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JaWYgKEhBU19JUFMoZGV2 KSkKPiArCWlmIChIQVNfSVBTKGRldl9wcml2KSkKPiAgCQloc3dfY29tcHV0ZV9pcHNfY29uZmln KGNydGMsIHBpcGVfY29uZmlnKTsKPiAgCj4gIAlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5j b2RlcikKPiBAQCAtNzM2Myw3ICs3MzYyLDcgQEAgc3RhdGljIGludCBoYXN3ZWxsX2dldF9kaXNw bGF5X2Nsb2NrX3NwZWVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJcmV0dXJuIDQ1MDAw MDsKPiAgCWVsc2UgaWYgKGZyZXEgPT0gTENQTExfQ0xLX0ZSRVFfNDUwKQo+ICAJCXJldHVybiA0 NTAwMDA7Cj4gLQllbHNlIGlmIChJU19IU1dfVUxUKGRldikpCj4gKwllbHNlIGlmIChJU19IU1df VUxUKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gMzM3NTAwOwo+ICAJZWxzZQo+ICAJCXJldHVybiA1 NDAwMDA7Cj4gQEAgLTc1MzMsNyArNzUzMiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxf aHBsbF92Y28oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXVpbnQ4X3QgdG1wID0gMDsKPiAg Cj4gIAkvKiBGSVhNRSBvdGhlciBjaGlwc2V0cz8gKi8KPiAtCWlmIChJU19HTTQ1KGRldikpCj4g KwlpZiAoSVNfR000NShkZXZfcHJpdikpCj4gIAkJdmNvX3RhYmxlID0gY3RnX3ZjbzsKPiAgCWVs c2UgaWYgKElTX0c0WChkZXYpKQo+ICAJCXZjb190YWJsZSA9IGVsa192Y287Cj4gQEAgLTgxNTIs NyArODE1MSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY29tcHV0ZV9kcGxsKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJZWxzZQo+ICAJCWRwbGwgfD0gRFBMTEJfTU9ERV9EQUNfU0VSSUFMOwo+ ICAKPiAtCWlmIChJU19JOTQ1RyhkZXYpIHx8IElTX0k5NDVHTShkZXYpIHx8IElTX0czMyhkZXYp KSB7Cj4gKwlpZiAoSVNfSTk0NUcoZGV2X3ByaXYpIHx8IElTX0k5NDVHTShkZXZfcHJpdikgfHwg SVNfRzMzKGRldl9wcml2KSkgewo+ICAJCWRwbGwgfD0gKGNydGNfc3RhdGUtPnBpeGVsX211bHRp cGxpZXIgLSAxKQo+ICAJCQk8PCBTRFZPX01VTFRJUExJRVJfU0hJRlRfSElSRVM7Cj4gIAl9Cj4g QEAgLTgyMzEsNyArODIzMCw4IEBAIHN0YXRpYyB2b2lkIGk4eHhfY29tcHV0ZV9kcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQlkcGxsIHw9IFBMTF9QMl9ESVZJREVfQllfNDsKPiAg CX0KPiAgCj4gLQlpZiAoIUlTX0k4MzAoZGV2KSAmJiBpbnRlbF9jcnRjX2hhc190eXBlKGNydGNf c3RhdGUsIElOVEVMX09VVFBVVF9EVk8pKQo+ICsJaWYgKCFJU19JODMwKGRldl9wcml2KSAmJgo+ ICsJICAgIGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0RWTykp Cj4gIAkJZHBsbCB8PSBEUExMX0RWT18yWF9NT0RFOwo+ICAKPiAgCWlmIChpbnRlbF9jcnRjX2hh c190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9MVkRTKSAmJgo+IEBAIC04NjU0LDcgKzg2 NTQsOCBAQCBzdGF0aWMgdm9pZCBpOXh4X2dldF9wZml0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKPiAgCXVpbnQzMl90IHRtcDsKPiAgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PD0gMyAmJiAoSVNfSTgzMChkZXYpIHx8ICFJU19NT0JJTEUoZGV2KSkpCj4gKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8PSAzICYmCj4gKwkgICAgKElTX0k4MzAoZGV2X3ByaXYpIHx8ICFJU19N T0JJTEUoZGV2X3ByaXYpKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJdG1wID0gSTkxNV9SRUFEKFBG SVRfQ09OVFJPTCk7Cj4gQEAgLTg4NjQsNyArODg2NSw4IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0 X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkoKHRtcCAmIERQTExf TURfVURJX01VTFRJUExJRVJfTUFTSykKPiAgCQkJID4+IERQTExfTURfVURJX01VTFRJUExJRVJf U0hJRlQpICsgMTsKPiAgCQlwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxsX21kID0gdG1w Owo+IC0JfSBlbHNlIGlmIChJU19JOTQ1RyhkZXYpIHx8IElTX0k5NDVHTShkZXYpIHx8IElTX0cz MyhkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0k5NDVHKGRldl9wcml2KSB8fCBJU19JOTQ1R00o ZGV2X3ByaXYpIHx8Cj4gKwkJICAgSVNfRzMzKGRldl9wcml2KSkgewo+ICAJCXRtcCA9IEk5MTVf UkVBRChEUExMKGNydGMtPnBpcGUpKTsKPiAgCQlwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGll ciA9Cj4gIAkJCSgodG1wICYgU0RWT19NVUxUSVBMSUVSX01BU0spCj4gQEAgLTg4ODIsNyArODg4 NCw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ICAJCSAqIG9uIDgzMC4gRmlsdGVyIGl0IG91dCBoZXJlIHNvIHRoYXQgd2UgZG9u J3QKPiAgCQkgKiByZXBvcnQgZXJyb3JzIGR1ZSB0byB0aGF0Lgo+ICAJCSAqLwo+IC0JCWlmIChJ U19JODMwKGRldikpCj4gKwkJaWYgKElTX0k4MzAoZGV2X3ByaXYpKQo+ICAJCQlwaXBlX2NvbmZp Zy0+ZHBsbF9od19zdGF0ZS5kcGxsICY9IH5EUExMX0RWT18yWF9NT0RFOwo+ICAKPiAgCQlwaXBl X2NvbmZpZy0+ZHBsbF9od19zdGF0ZS5mcDAgPSBJOTE1X1JFQUQoRlAwKGNydGMtPnBpcGUpKTsK PiBAQCAtMTA5MDQsMTMgKzEwOTA2LDEzIEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfdXBkYXRl X2N1cnNvcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJSTkxNV9XUklURShDVVJQT1Mo cGlwZSksIHBvcyk7Cj4gIAo+IC0JaWYgKElTXzg0NUcoZGV2KSB8fCBJU19JODY1RyhkZXYpKQo+ ICsJaWYgKElTXzg0NUcoZGV2X3ByaXYpIHx8IElTX0k4NjVHKGRldl9wcml2KSkKPiAgCQlpODQ1 X3VwZGF0ZV9jdXJzb3IoY3J0YywgYmFzZSwgcGxhbmVfc3RhdGUpOwo+ICAJZWxzZQo+ICAJCWk5 eHhfdXBkYXRlX2N1cnNvcihjcnRjLCBiYXNlLCBwbGFuZV9zdGF0ZSk7Cj4gIH0KPiAgCj4gLXN0 YXRpYyBib29sIGN1cnNvcl9zaXplX29rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gK3N0YXRp YyBib29sIGN1cnNvcl9zaXplX29rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgCQkJICAgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKPiAgewo+ICAJaWYgKHdp ZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCj4gQEAgLTEwOTIyLDExICsxMDkyNCwxMSBAQCBzdGF0 aWMgYm9vbCBjdXJzb3Jfc2l6ZV9vayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJICogdGhl IHByZWNpc2lvbiBvZiB0aGUgcmVnaXN0ZXIuIEV2ZXJ5dGhpbmcgZWxzZSByZXF1aXJlcwo+ICAJ ICogc3F1YXJlIGN1cnNvcnMsIGxpbWl0ZWQgdG8gYSBmZXcgcG93ZXItb2YtdHdvIHNpemVzLgo+ ICAJICovCj4gLQlpZiAoSVNfODQ1RyhkZXYpIHx8IElTX0k4NjVHKGRldikpIHsKPiArCWlmIChJ U184NDVHKGRldl9wcml2KSB8fCBJU19JODY1RyhkZXZfcHJpdikpIHsKPiAgCQlpZiAoKHdpZHRo ICYgNjMpICE9IDApCj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCj4gLQkJaWYgKHdpZHRoID4gKElT Xzg0NUcoZGV2KSA/IDY0IDogNTEyKSkKPiArCQlpZiAod2lkdGggPiAoSVNfODQ1RyhkZXZfcHJp dikgPyA2NCA6IDUxMikpCj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCj4gIAkJaWYgKGhlaWdodCA+ IDEwMjMpCj4gQEAgLTEwOTM1LDcgKzEwOTM3LDcgQEAgc3RhdGljIGJvb2wgY3Vyc29yX3NpemVf b2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlzd2l0Y2ggKHdpZHRoIHwgaGVpZ2h0KSB7 Cj4gIAkJY2FzZSAyNTY6Cj4gIAkJY2FzZSAxMjg6Cj4gLQkJCWlmIChJU19HRU4yKGRldikpCj4g KwkJCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiAgCQkJCXJldHVybiBmYWxzZTsKPiAgCQljYXNl IDY0Ogo+ICAJCQlicmVhazsKPiBAQCAtMTEzNzcsNyArMTEzNzksNyBAQCBzdGF0aWMgdm9pZCBp OXh4X2NydGNfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCWVsc2UKPiAg CQkJcG9ydF9jbG9jayA9IGk5eHhfY2FsY19kcGxsX3BhcmFtcyhyZWZjbGssICZjbG9jayk7Cj4g IAl9IGVsc2Ugewo+IC0JCXUzMiBsdmRzID0gSVNfSTgzMChkZXYpID8gMCA6IEk5MTVfUkVBRChM VkRTKTsKPiArCQl1MzIgbHZkcyA9IElTX0k4MzAoZGV2X3ByaXYpID8gMCA6IEk5MTVfUkVBRChM VkRTKTsKPiAgCQlib29sIGlzX2x2ZHMgPSAocGlwZSA9PSAxKSAmJiAobHZkcyAmIExWRFNfUE9S VF9FTik7Cj4gIAo+ICAJCWlmIChpc19sdmRzKSB7Cj4gQEAgLTE0NjU4LDYgKzE0NjYwLDcgQEAg aW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkgICAg ICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g bmV3X3N0YXRlLT5mYjsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRl bF9mYl9vYmooZmIpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBp bnRlbF9mYl9vYmoocGxhbmUtPnN0YXRlLT5mYik7Cj4gQEAgLTE0NzA5LDcgKzE0NzEyLDcgQEAg aW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCj4gIAlp ZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SICYmCj4gIAkgICAgSU5URUxf SU5GTyhkZXYpLT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwpIHsKPiAtCQlpbnQgYWxpZ24gPSBJU19J ODMwKGRldikgPyAxNiAqIDEwMjQgOiAyNTY7Cj4gKwkJaW50IGFsaWduID0gSVNfSTgzMChkZXZf cHJpdikgPyAxNiAqIDEwMjQgOiAyNTY7Cj4gIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2F0dGFj aF9waHlzKG9iaiwgYWxpZ24pOwo+ICAJCWlmIChyZXQpCj4gIAkJCURSTV9ERUJVR19LTVMoImZh aWxlZCB0byBhdHRhY2ggcGh5cyBvYmplY3RcbiIpOwo+IEBAIC0xNTAzMSw3ICsxNTAzNCw4IEBA IGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQly ZXR1cm4gMDsKPiAgCj4gIAkvKiBDaGVjayBmb3Igd2hpY2ggY3Vyc29yIHR5cGVzIHdlIHN1cHBv cnQgKi8KPiAtCWlmICghY3Vyc29yX3NpemVfb2socGxhbmUtPmRldiwgc3RhdGUtPmJhc2UuY3J0 Y193LCBzdGF0ZS0+YmFzZS5jcnRjX2gpKSB7Cj4gKwlpZiAoIWN1cnNvcl9zaXplX29rKHRvX2k5 MTUocGxhbmUtPmRldiksIHN0YXRlLT5iYXNlLmNydGNfdywKPiArCQkJICAgIHN0YXRlLT5iYXNl LmNydGNfaCkpIHsKPiAgCQlEUk1fREVCVUcoIkN1cnNvciBkaW1lbnNpb24gJWR4JWQgbm90IHN1 cHBvcnRlZFxuIiwKPiAgCQkJICBzdGF0ZS0+YmFzZS5jcnRjX3csIHN0YXRlLT5iYXNlLmNydGNf aCk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTE1MzI1LDcgKzE1MzI5LDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfY3J0X3ByZXNlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlpZiAo SVNfSFNXX1VMVChkZXYpIHx8IElTX0JEV19VTFQoZGV2KSkKPiArCWlmIChJU19IU1dfVUxUKGRl dl9wcml2KSB8fCBJU19CRFdfVUxUKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKPiBAQCAtMTYzODQsOCArMTYzODgsOCBAQCB2b2lk IGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCWRldi0+bW9k ZV9jb25maWcubWF4X2hlaWdodCA9IDgxOTI7Cj4gIAl9Cj4gIAo+IC0JaWYgKElTXzg0NUcoZGV2 KSB8fCBJU19JODY1RyhkZXYpKSB7Cj4gLQkJZGV2LT5tb2RlX2NvbmZpZy5jdXJzb3Jfd2lkdGgg PSBJU184NDVHKGRldikgPyA2NCA6IDUxMjsKPiArCWlmIChJU184NDVHKGRldl9wcml2KSB8fCBJ U19JODY1RyhkZXZfcHJpdikpIHsKPiArCQlkZXYtPm1vZGVfY29uZmlnLmN1cnNvcl93aWR0aCA9 IElTXzg0NUcoZGV2X3ByaXYpID8gNjQgOiA1MTI7Cj4gIAkJZGV2LT5tb2RlX2NvbmZpZy5jdXJz b3JfaGVpZ2h0ID0gMTAyMzsKPiAgCX0gZWxzZSBpZiAoSVNfR0VOMihkZXYpKSB7Cj4gIAkJZGV2 LT5tb2RlX2NvbmZpZy5jdXJzb3Jfd2lkdGggPSBHRU4yX0NVUlNPUl9XSURUSDsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKPiBpbmRleCA1MWQ5MmE5YzZjYjEuLjJlMDZkZmI2NGJkNCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC01NzQ4LDcgKzU3NDgsNyBAQCBpbnRlbF9kcF9p bml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwK PiAgCSAqIDB4ZC4gIEZhaWx1cmUgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gc3B1cmlvdXMgaW50 ZXJydXB0cyBiZWluZwo+ICAJICogZ2VuZXJhdGVkIG9uIHRoZSBwb3J0IHdoZW4gYSBjYWJsZSBp cyBub3QgYXR0YWNoZWQuCj4gIAkgKi8KPiAtCWlmIChJU19HNFgoZGV2KSAmJiAhSVNfR000NShk ZXYpKSB7Cj4gKwlpZiAoSVNfRzRYKGRldl9wcml2KSAmJiAhSVNfR000NShkZXZfcHJpdikpIHsK PiAgCQl1MzIgdGVtcCA9IEk5MTVfUkVBRChQRUdfQkFORF9HQVBfREFUQSk7Cj4gIAkJSTkxNV9X UklURShQRUdfQkFORF9HQVBfREFUQSwgKHRlbXAgJiB+MHhmKSB8IDB4ZCk7Cj4gIAl9Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IGluZGV4IGFkM2ZmNGZlNjNjZi4uNjYwN2M0ZTNjMzZj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IEBAIC0xOTIxLDcgKzE5MjEsNyBA QCB2b2lkIGludGVsX2hkbWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqaW50ZWxfZGlnX3BvcnQsCj4gIAkgKiAweGQuICBGYWlsdXJlIHRvIGRvIHNvIHdpbGwgcmVz dWx0IGluIHNwdXJpb3VzIGludGVycnVwdHMgYmVpbmcKPiAgCSAqIGdlbmVyYXRlZCBvbiB0aGUg cG9ydCB3aGVuIGEgY2FibGUgaXMgbm90IGF0dGFjaGVkLgo+ICAJICovCj4gLQlpZiAoSVNfRzRY KGRldikgJiYgIUlTX0dNNDUoZGV2KSkgewo+ICsJaWYgKElTX0c0WChkZXZfcHJpdikgJiYgIUlT X0dNNDUoZGV2X3ByaXYpKSB7Cj4gIAkJdTMyIHRlbXAgPSBJOTE1X1JFQUQoUEVHX0JBTkRfR0FQ X0RBVEEpOwo+ICAJCUk5MTVfV1JJVEUoUEVHX0JBTkRfR0FQX0RBVEEsICh0ZW1wICYgfjB4Zikg fCAweGQpOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9p MmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gaW5kZXggMTQxMDMzMGVj OWJiLi5hZmIyNjUyOTE5ZDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaTJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+IEBAIC0x MzgsMTEgKzEzOCwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pMmNfcXVpcmtfc2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBlbmFibGUpCj4gIHN0YXRpYyB1MzIgZ2V0 X3Jlc2VydmVkKHN0cnVjdCBpbnRlbF9nbWJ1cyAqYnVzKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBidXMtPmRldl9wcml2Owo+IC0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICAJdTMyIHJlc2VydmVkID0gMDsKPiAgCj4gIAkv KiBPbiBtb3N0IGNoaXBzLCB0aGVzZSBiaXRzIG11c3QgYmUgcHJlc2VydmVkIGluIHNvZnR3YXJl LiAqLwo+IC0JaWYgKCFJU19JODMwKGRldikgJiYgIUlTXzg0NUcoZGV2KSkKPiArCWlmICghSVNf STgzMChkZXZfcHJpdikgJiYgIUlTXzg0NUcoZGV2X3ByaXYpKQo+ICAJCXJlc2VydmVkID0gSTkx NV9SRUFEX05PVFJBQ0UoYnVzLT5ncGlvX3JlZykgJgo+ICAJCQkJCSAgICAgKEdQSU9fREFUQV9Q VUxMVVBfRElTQUJMRSB8Cj4gIAkJCQkJICAgICAgR1BJT19DTE9DS19QVUxMVVBfRElTQUJMRSk7 Cj4gQEAgLTY3NCw3ICs2NzMsNyBAQCBpbnQgaW50ZWxfc2V0dXBfZ21idXMoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgCQlidXMtPnJlZzAgPSBwaW4gfCBHTUJVU19SQVRFXzEwMEtIWjsKPiAg Cj4gIAkJLyogZ21idXMgc2VlbXMgdG8gYmUgYnJva2VuIG9uIGk4MzAgKi8KPiAtCQlpZiAoSVNf STgzMChkZXYpKQo+ICsJCWlmIChJU19JODMwKGRldl9wcml2KSkKPiAgCQkJYnVzLT5mb3JjZV9i aXQgPSAxOwo+ICAKPiAgCQlpbnRlbF9ncGlvX3NldHVwKGJ1cywgcGluKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHZkcy5jCj4gaW5kZXggYmFhZjJlZDg5N2VmLi4xYzQ3Zjk5OTE3ZTYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCj4gQEAgLTk0OSwxMCArOTQ5LDggQEAgc3RhdGlj IGJvb2wgY29tcHV0ZV9pc19kdWFsX2xpbmtfbHZkcyhzdHJ1Y3QgaW50ZWxfbHZkc19lbmNvZGVy ICpsdmRzX2VuY29kZXIpCj4gIAlyZXR1cm4gKHZhbCAmIExWRFNfQ0xLQl9QT1dFUl9NQVNLKSA9 PSBMVkRTX0NMS0JfUE9XRVJfVVA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIGludGVsX2x2ZHNf c3VwcG9ydGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyBib29sIGludGVsX2x2 ZHNfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0KPiAg CS8qIFdpdGggdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgUENIIHdlIGdhaW5lZCBhIGRlZGljYXRl ZAo+ICAJICogTFZEUyBwcmVzZW5jZSBwaW4sIHVzZSBpdC4gKi8KPiAgCWlmIChIQVNfUENIX0lC WChkZXZfcHJpdikgfHwgSEFTX1BDSF9DUFQoZGV2X3ByaXYpKQo+IEBAIC05NjAsNyArOTU4LDgg QEAgc3RhdGljIGJvb2wgaW50ZWxfbHZkc19zdXBwb3J0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCj4gIAkvKiBPdGhlcndpc2UgTFZEUyB3YXMgb25seSBhdHRhY2hlZCB0byBtb2JpbGUg cHJvZHVjdHMsCj4gIAkgKiBleGNlcHQgZm9yIHRoZSBpbmdsb3Jpb3VzIDgzMGdtICovCj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCAmJiBJU19NT0JJTEUoZGV2KSAmJiAhSVNfSTgz MChkZXYpKQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCAmJgo+ICsJICAgIElTX01P QklMRShkZXZfcHJpdikgJiYgIUlTX0k4MzAoZGV2X3ByaXYpKQo+ICAJCXJldHVybiB0cnVlOwo+ ICAKPiAgCXJldHVybiBmYWxzZTsKPiBAQCAtOTkyLDcgKzk5MSw3IEBAIHZvaWQgaW50ZWxfbHZk c19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpbnQgcGlwZTsKPiAgCXU4IHBpbjsK PiAgCj4gLQlpZiAoIWludGVsX2x2ZHNfc3VwcG9ydGVkKGRldikpCj4gKwlpZiAoIWludGVsX2x2 ZHNfc3VwcG9ydGVkKGRldl9wcml2KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJLyogU2tpcCBpbml0 IG9uIG1hY2hpbmVzIHdlIGtub3cgZmFsc2VseSByZXBvcnQgTFZEUyAqLwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+IGluZGV4IDg2MDUxZWYyNzE2ZS4uMDRhMzhhMzdhZjJlIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTMzNCwxMiArMzM0LDEyIEBAIHZvaWQgaW50ZWxfc2V0 X21lbW9yeV9jeHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBlbmFi bGUpCj4gIAkJdmFsIHw9IGVuYWJsZSA/IFBJTkVWSUVXX1NFTEZfUkVGUkVTSF9FTiA6IDA7Cj4g IAkJSTkxNV9XUklURShEU1BGVzMsIHZhbCk7Cj4gIAkJUE9TVElOR19SRUFEKERTUEZXMyk7Cj4g LQl9IGVsc2UgaWYgKElTX0k5NDVHKGRldikgfHwgSVNfSTk0NUdNKGRldikpIHsKPiArCX0gZWxz ZSBpZiAoSVNfSTk0NUcoZGV2X3ByaXYpIHx8IElTX0k5NDVHTShkZXZfcHJpdikpIHsKPiAgCQl2 YWwgPSBlbmFibGUgPyBfTUFTS0VEX0JJVF9FTkFCTEUoRldfQkxDX1NFTEZfRU4pIDoKPiAgCQkJ ICAgICAgIF9NQVNLRURfQklUX0RJU0FCTEUoRldfQkxDX1NFTEZfRU4pOwo+ICAJCUk5MTVfV1JJ VEUoRldfQkxDX1NFTEYsIHZhbCk7Cj4gIAkJUE9TVElOR19SRUFEKEZXX0JMQ19TRUxGKTsKPiAt CX0gZWxzZSBpZiAoSVNfSTkxNUdNKGRldikpIHsKPiArCX0gZWxzZSBpZiAoSVNfSTkxNUdNKGRl dl9wcml2KSkgewo+ICAJCS8qCj4gIAkJICogRklYTUUgY2FuJ3QgZmluZCBhIGJpdCBsaWtlIHRo aXMgZm9yIDkxNUcsIGFuZAo+ICAJCSAqIGFuZCB5ZXQgaXQgZG9lcyBoYXZlIHRoZSByZWxhdGVk IHdhdGVybWFyayBpbgo+IEBAIC02NDgsOCArNjQ4LDEwIEBAIHN0YXRpYyB2b2lkIHBpbmV2aWV3 X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQo+ICAJdTMyIHJlZzsKPiAg CXVuc2lnbmVkIGxvbmcgd207Cj4gIAo+IC0JbGF0ZW5jeSA9IGludGVsX2dldF9jeHNyX2xhdGVu Y3koSVNfUElORVZJRVdfRyhkZXYpLCBkZXZfcHJpdi0+aXNfZGRyMywKPiAtCQkJCQkgZGV2X3By aXYtPmZzYl9mcmVxLCBkZXZfcHJpdi0+bWVtX2ZyZXEpOwo+ICsJbGF0ZW5jeSA9IGludGVsX2dl dF9jeHNyX2xhdGVuY3koSVNfUElORVZJRVdfRyhkZXZfcHJpdiksCj4gKwkJCQkJIGRldl9wcml2 LT5pc19kZHIzLAo+ICsJCQkJCSBkZXZfcHJpdi0+ZnNiX2ZyZXEsCj4gKwkJCQkJIGRldl9wcml2 LT5tZW1fZnJlcSk7Cj4gIAlpZiAoIWxhdGVuY3kpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJVbmtu b3duIEZTQi9NRU0gZm91bmQsIGRpc2FibGUgQ3hTUlxuIik7Cj4gIAkJaW50ZWxfc2V0X21lbW9y eV9jeHNyKGRldl9wcml2LCBmYWxzZSk7Cj4gQEAgLTE1NzksNyArMTU4MSw3IEBAIHN0YXRpYyB2 b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqdW51c2VkX2NydGMpCj4gIAo+ICAJ RFJNX0RFQlVHX0tNUygiRklGTyB3YXRlcm1hcmtzIC0gQTogJWQsIEI6ICVkXG4iLCBwbGFuZWFf d20sIHBsYW5lYl93bSk7Cj4gIAo+IC0JaWYgKElTX0k5MTVHTShkZXYpICYmIGVuYWJsZWQpIHsK PiArCWlmIChJU19JOTE1R00oZGV2X3ByaXYpICYmIGVuYWJsZWQpIHsKPiAgCQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAKPiAgCQlvYmogPSBpbnRlbF9mYl9vYmooZW5hYmxl ZC0+cHJpbWFyeS0+c3RhdGUtPmZiKTsKPiBAQCAtMTYwOSw3ICsxNjExLDcgQEAgc3RhdGljIHZv aWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0YykKPiAgCQl1bnNp Z25lZCBsb25nIGxpbmVfdGltZV91czsKPiAgCQlpbnQgZW50cmllczsKPiAgCj4gLQkJaWYgKElT X0k5MTVHTShkZXYpIHx8IElTX0k5NDVHTShkZXYpKQo+ICsJCWlmIChJU19JOTE1R00oZGV2X3By aXYpIHx8IElTX0k5NDVHTShkZXZfcHJpdikpCj4gIAkJCWNwcCA9IDQ7Cj4gIAo+ICAJCWxpbmVf dGltZV91cyA9IG1heChodG90YWwgKiAxMDAwIC8gY2xvY2ssIDEpOwo+IEBAIC0xNjIzLDcgKzE2 MjUsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNl ZF9jcnRjKQo+ICAJCWlmIChzcndtIDwgMCkKPiAgCQkJc3J3bSA9IDE7Cj4gIAo+IC0JCWlmIChJ U19JOTQ1RyhkZXYpIHx8IElTX0k5NDVHTShkZXYpKQo+ICsJCWlmIChJU19JOTQ1RyhkZXZfcHJp dikgfHwgSVNfSTk0NUdNKGRldl9wcml2KSkKPiAgCQkJSTkxNV9XUklURShGV19CTENfU0VMRiwK PiAgCQkJCSAgIEZXX0JMQ19TRUxGX0ZJRk9fTUFTSyB8IChzcndtICYgMHhmZikpOwo+ICAJCWVs c2UKPiBAQCAtNjkzMCw3ICs2OTMyLDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfaW5pdF9jbG9j a19nYXRpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCSAqIFRoZSBiaXQgMjIgb2YgMHg0 MjAwNAo+ICAJICogVGhlIGJpdCA3LDgsOSBvZiAweDQyMDIwLgo+ICAJICovCj4gLQlpZiAoSVNf SVJPTkxBS0VfTShkZXYpKSB7Cj4gKwlpZiAoSVNfSVJPTkxBS0VfTShkZXZfcHJpdikpIHsKPiAg CQkvKiBXYUZiY0FzeW5jaEZsaXBEaXNhYmxlRmJjUXVldWU6aWxrICovCj4gIAkJSTkxNV9XUklU RShJTEtfRElTUExBWV9DSElDS0VOMSwKPiAgCQkJICAgSTkxNV9SRUFEKElMS19ESVNQTEFZX0NI SUNLRU4xKSB8Cj4gQEAgLTczNDAsNyArNzM0Miw3IEBAIHN0YXRpYyB2b2lkIGl2eWJyaWRnZV9p bml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCSAgIENISUNLRU4z X0RHTUdfRE9ORV9GSVhfRElTQUJMRSk7Cj4gIAo+ICAJLyogV2FEaXNhYmxlUFNERHVhbERpc3Bh dGNoRW5hYmxlOml2YiAqLwo+IC0JaWYgKElTX0lWQl9HVDEoZGV2KSkKPiArCWlmIChJU19JVkJf R1QxKGRldl9wcml2KSkKPiAgCQlJOTE1X1dSSVRFKEdFTjdfSEFMRl9TTElDRV9DSElDS0VOMSwK PiAgCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdFTjdfUFNEX1NJTkdMRV9QT1JUX0RJU1BBVENI X0VOQUJMRSkpOwo+ICAKPiBAQCAtNzM1Niw3ICs3MzU4LDcgQEAgc3RhdGljIHZvaWQgaXZ5YnJp ZGdlX2luaXRfY2xvY2tfZ2F0aW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCUdFTjdf V0FfRk9SX0dFTjdfTDNfQ09OVFJPTCk7Cj4gIAlJOTE1X1dSSVRFKEdFTjdfTDNfQ0hJQ0tFTl9N T0RFX1JFR0lTVEVSLAo+ICAJCSAgIEdFTjdfV0FfTDNfQ0hJQ0tFTl9NT0RFKTsKPiAtCWlmIChJ U19JVkJfR1QxKGRldikpCj4gKwlpZiAoSVNfSVZCX0dUMShkZXZfcHJpdikpCj4gIAkJSTkxNV9X UklURShHRU43X1JPV19DSElDS0VOMiwKPiAgCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKERPUF9D TE9DS19HQVRJTkdfRElTQUJMRSkpOwo+ICAJZWxzZSB7Cj4gQEAgLTc1NTAsNyArNzU1Miw3IEBA IHN0YXRpYyB2b2lkIGc0eF9pbml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJZHNwY2xrX2dhdGUgPSBWUkhVTklUX0NMT0NLX0dBVEVfRElTQUJMRSB8Cj4gIAkJT1ZS VU5JVF9DTE9DS19HQVRFX0RJU0FCTEUgfAo+ICAJCU9WQ1VOSVRfQ0xPQ0tfR0FURV9ESVNBQkxF Owo+IC0JaWYgKElTX0dNNDUoZGV2KSkKPiArCWlmIChJU19HTTQ1KGRldl9wcml2KSkKPiAgCQlk c3BjbGtfZ2F0ZSB8PSBEU1NVTklUX0NMT0NLX0dBVEVfRElTQUJMRTsKPiAgCUk5MTVfV1JJVEUo RFNQQ0xLX0dBVEVfRCwgZHNwY2xrX2dhdGUpOwo+ICAKPiBAQCAtNzc1Nyw3ICs3NzU5LDcgQEAg dm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJdmx2X3NldHVw X3dtX2xhdGVuY3koZGV2KTsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSB2bHZf dXBkYXRlX3dtOwo+ICAJfSBlbHNlIGlmIChJU19QSU5FVklFVyhkZXYpKSB7Cj4gLQkJaWYgKCFp bnRlbF9nZXRfY3hzcl9sYXRlbmN5KElTX1BJTkVWSUVXX0coZGV2KSwKPiArCQlpZiAoIWludGVs X2dldF9jeHNyX2xhdGVuY3koSVNfUElORVZJRVdfRyhkZXZfcHJpdiksCj4gIAkJCQkJICAgIGRl dl9wcml2LT5pc19kZHIzLAo+ICAJCQkJCSAgICBkZXZfcHJpdi0+ZnNiX2ZyZXEsCj4gIAkJCQkJ ICAgIGRldl9wcml2LT5tZW1fZnJlcSkpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc2R2by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jCj4g aW5kZXggMGQ5MTE0ZjljZTI3Li41ZmU0MjM1NzFhN2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc2R2by5jCj4gQEAgLTEyOTYsNyArMTI5Niw4IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9f cHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiAgCj4gIAlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICAJCS8qIGRvbmUgaW4gY3J0Y19tb2Rl X3NldCBhcyB0aGUgZHBsbF9tZCByZWcgbXVzdCBiZSB3cml0dGVuIGVhcmx5ICovCj4gLQl9IGVs c2UgaWYgKElTX0k5NDVHKGRldikgfHwgSVNfSTk0NUdNKGRldikgfHwgSVNfRzMzKGRldikpIHsK PiArCX0gZWxzZSBpZiAoSVNfSTk0NUcoZGV2X3ByaXYpIHx8IElTX0k5NDVHTShkZXZfcHJpdikg fHwKPiArCQkgICBJU19HMzMoZGV2X3ByaXYpKSB7Cj4gIAkJLyogZG9uZSBpbiBjcnRjX21vZGVf c2V0IGFzIGl0IGxpdmVzIGluc2lkZSB0aGUgZHBsbCByZWdpc3RlciAqLwo+ICAJfSBlbHNlIHsK PiAgCQlzZHZveCB8PSAoY3J0Y19zdGF0ZS0+cGl4ZWxfbXVsdGlwbGllciAtIDEpCj4gQEAgLTEz ODksNyArMTM5MCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fZ2V0X2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCSAqIGVuY29kZXItPmdldF9jb25maWcgd2Ugc28g YWxyZWFkeSBoYXZlIGEgdmFsaWQgcGl4ZWwgbXVsdHBsaWVyIG9uIGFsbAo+ICAJICogb3RoZXIg cGxhdGZyb21zLgo+ICAJICovCj4gLQlpZiAoSVNfSTkxNUcoZGV2KSB8fCBJU19JOTE1R00oZGV2 KSkgewo+ICsJaWYgKElTX0k5MTVHKGRldl9wcml2KSB8fCBJU19JOTE1R00oZGV2X3ByaXYpKSB7 Cj4gIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIgPQo+ICAJCQkoKHNkdm94ICYgU0RW T19QT1JUX01VTFRJUExZX01BU0spCj4gIAkJCSA+PiBTRFZPX1BPUlRfTVVMVElQTFlfU0hJRlQp ICsgMTsKPiBAQCAtMTU5NSwxNSArMTU5NiwxNSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX2dl dF9jYXBhYmlsaXRpZXMoc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sIHN0cnVjdCBpbgo+ ICAKPiAgc3RhdGljIHVpbnQxNl90IGludGVsX3Nkdm9fZ2V0X2hvdHBsdWdfc3VwcG9ydChzdHJ1 Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bykKPiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGludGVsX3Nkdm8tPmJhc2UuYmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX3Nkdm8tPmJhc2UuYmFzZS5kZXYpOwo+ICAJdWlu dDE2X3QgaG90cGx1ZzsKPiAgCj4gLQlpZiAoIUk5MTVfSEFTX0hPVFBMVUcoZGV2KSkKPiArCWlm ICghSTkxNV9IQVNfSE9UUExVRyhkZXZfcHJpdikpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJLyog SFcgRXJyYXR1bTogU0RWTyBIb3RwbHVnIGlzIGJyb2tlbiBvbiBhbGwgaTk0NUcgY2hpcHMsIHRo ZXJlJ3Mgbm9pc2UKPiAgCSAqIG9uIHRoZSBsaW5lLiAqLwo+IC0JaWYgKElTX0k5NDVHKGRldikg fHwgSVNfSTk0NUdNKGRldikpCj4gKwlpZiAoSVNfSTk0NUcoZGV2X3ByaXYpIHx8IElTX0k5NDVH TShkZXZfcHJpdikpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKCFpbnRlbF9zZHZvX2dldF92 YWx1ZShpbnRlbF9zZHZvLCBTRFZPX0NNRF9HRVRfSE9UX1BMVUdfU1VQUE9SVCwKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3R2LmMKPiBpbmRleCAzOTg4YzQ1ZjllNWYuLmRmMTZiMWRjNGMyZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdHYuYwo+IEBAIC0xMDk1LDcgKzEwOTUsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF90dl9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ CXR2X21vZGUtPmRkYTNfaW5jIDw8IFRWX1NDRERBM19JTkNfU0hJRlQ7Cj4gIAo+ICAJLyogRW5h YmxlIHR3byBmaXhlcyBmb3IgdGhlIGNoaXBzIHRoYXQgbmVlZCB0aGVtLiAqLwo+IC0JaWYgKElT X0k5MTVHTShkZXYpKQo+ICsJaWYgKElTX0k5MTVHTShkZXZfcHJpdikpCj4gIAkJdHZfY3RsIHw9 IFRWX0VOQ19DMF9GSVggfCBUVl9FTkNfU0RQX0ZJWDsKPiAgCj4gIAlzZXRfdHZfbW9kZV90aW1p bmdzKGRldl9wcml2LCB0dl9tb2RlLCBidXJzdF9lbmEpOwo+IEBAIC0xMjIwLDcgKzEyMjAsNyBA QCBpbnRlbF90dl9kZXRlY3RfdHlwZShzdHJ1Y3QgaW50ZWxfdHYgKmludGVsX3R2LAo+ICAJICog VGhlIFRWIHNlbnNlIHN0YXRlIHNob3VsZCBiZSBjbGVhcmVkIHRvIHplcm8gb24gY2FudGlnYSBw bGF0Zm9ybS4gT3RoZXJ3aXNlCj4gIAkgKiB0aGUgVFYgaXMgbWlzZGV0ZWN0ZWQuIFRoaXMgaXMg aGFyZHdhcmUgcmVxdWlyZW1lbnQuCj4gIAkgKi8KPiAtCWlmIChJU19HTTQ1KGRldikpCj4gKwlp ZiAoSVNfR000NShkZXZfcHJpdikpCj4gIAkJdHZfZGFjICY9IH4oVFZEQUNfU1RBVEVfQ0hHX0VO IHwgVFZEQUNfQV9TRU5TRV9DVEwgfAo+ICAJCQkgICAgVFZEQUNfQl9TRU5TRV9DVEwgfCBUVkRB Q19DX1NFTlNFX0NUTCk7Cj4gIAo+IC0tIAo+IDIuNy40Cj4gCj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4g SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=