From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [RFC] Prefer INTEL_INFO(dev_priv) to INTEL_INFO(dev) Date: Fri, 08 Apr 2016 09:09:24 +0300 Message-ID: <1460095764.4532.4.camel@linux.intel.com> References: <1460016485-8089-3-git-send-email-joonas.lahtinen@linux.intel.com> <1460051867-23254-1-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 5F4E86E277 for ; Fri, 8 Apr 2016 06:08:34 +0000 (UTC) In-Reply-To: <1460051867-23254-1-git-send-email-david.s.gordon@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTYtMDQtMDcgYXQgMTg6NTcgKzAxMDAsIERhdmUgR29yZG9uIHdyb3RlOgo+IFdo ZXJlIHdlIGhhdmUgYSBzdWl0YWJsZSBkZXZfcHJpdiBwb2ludGVyLCB3ZSBjYW4gdXNlIHRoYXQg cmF0aGVyIHRoYW4KPiAnZGV2JyBmb3IgYWNjZXNzaW5nIElOVEVMX0lORk8oKS7CoMKgVGhpcyBy ZW1vdmVzIG9uZSBsZXZlbCBvZiBtZW1vcnkKPiByZWZlcmVuY2UsIGRlY3JlYXNpbmcgY29kZSBz aXplIGEgbGl0dGxlIGFuZCBwb3NzaWJseSBtYWtpbmcgZXZlcnl0aGluZwo+IGEgbGl0dGxlIGZh c3Rlci4gV2UgY291bGQgYWxzbyBkbyB0aGlzIGZvciBhbGwgdGhlIG1hY3JvcyB0aGF0IGltcGxp Y2l0bHkKPiB1c2UgSU5URUxfSU5GTyBlLmcuIElTX0NIRVJSWVZJRVcoKS4KCklmIGFwcGxpZWQg dG8gYWxsIG1hY3Jvcywgc291bmRzIGxpa2UgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLiBBbHRob3Vn aCwKSSB3b3VsZCBwcmVmZXIgdG8gc2VlIHMvZGV2X3ByaXYvaTkxNS9nIGFuZCB0aGVuIGk5MTUt PmluZm8uZ2VuLCBpOTE1LQo+aW5mby5pc19jaGVycnl2aWV3IGV0Yy4gcmF0aGVyIHRoYW4gZG96 ZW5zIG9mIG1hY3Jvcy4KCkl0J3MgZ29pbmcgdG8gY2F1c2UgYSBsb3Qgb2YgcmViYXNpbmcsIHRo b3VnaC4gU28gZGVwZW5kaW5nIG9uIHdoZW4gd2UKYXBwbHkgZGV2X3ByaXYgLT4gaTkxNSwgbWln aHQgYmUgb3IgbWlnaHQgbm90IGJlIHdvcnRoIHRoZSBoYXNzbGUgbm93LgoKUmVnYXJkcywgSm9v bmFzCgo+IAo+IENvY2NpbmVsbGU6Cj4gCj4gwqDCoMKgwqBAZGV2X3ByaXZfcGFyYW1ACj4gwqDC oMKgwqDCoMKgZnVuY3Rpb24gRlVOQzsKPiDCoMKgwqDCoMKgwqBpZGV4cHJlc3Npb24gc3RydWN0 IGRybV9kZXZpY2UgKkRFVjsKPiDCoMKgwqDCoMKgwqBpZGVudGlmaWVyIERFVl9QUklWOwo+IMKg wqDCoMKgQEAKPiDCoMKgwqDCoMKgwqBGVU5DKC4uLiwgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KkRFVl9QUklWLCAuLi4pCj4gwqDCoMKgwqDCoMKgewo+IAk8Li4uCj4gCUlOVEVMX0lORk8KPiAJ KAo+IMKgwqDCoMKgLcKgwqDCoMKgwqBERVYKPiDCoMKgwqDCoCvCoMKgwqDCoMKgREVWX1BSSVYK PiAJKQo+IAkuLi4+Cj4gwqDCoMKgwqDCoMKgfQo+IAo+IMKgwqDCoMKgQGRldl9wcml2X2xvY2Fs QAo+IMKgwqDCoMKgwqDCoGlkZXhwcmVzc2lvbiBzdHJ1Y3QgZHJtX2RldmljZSAqREVWOwo+IMKg wqDCoMKgwqDCoGlkZW50aWZpZXIgREVWX1BSSVY7Cj4gwqDCoMKgwqDCoMKgZXhwcmVzc2lvbiBF Owo+IMKgwqDCoMKgQEAKPiDCoMKgwqDCoMKgwqB7Cj4gCS4uLgo+IMKgwqDCoMKgKAo+IAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqREVWX1BSSVY7Cj4gwqDCoMKgwqB8Cj4gCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpERVZfUFJJViA9IEU7Cj4gwqDCoMKgwqApCj4gCTwuLi4KPiAJSU5URUxf SU5GTwo+IAkoCj4gwqDCoMKgwqAtwqDCoMKgwqDCoERFVgo+IMKgwqDCoMKgK8KgwqDCoMKgwqBE RVZfUFJJVgo+IAkpCj4gCS4uLj4KPiDCoMKgwqDCoMKgwqB9Cj4gCj4gZm9sbG93ZWQgYnkgbWFu dWFsbHkgZGVsZXRpbmcgNiBub3ctdW51c2VkICJkZXYiIGxvY2Fscy4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+IC0tLQo+IMKgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmPCoMKgwqDCoMKgwqDCoMKgfMKgwqA2NiAr KysrKysrLS0tLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuY8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHzCoMKgMzAgKysrLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDQgKy0KPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgNiAr LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jwqDCoMKgwqB8wqDC oMKgMiArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHzC oMKgwqA4ICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jwqDCoMKg wqDCoMKgfMKgwqDCoDggKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j wqDCoMKgwqDCoMKgwqDCoHzCoMKgMTQgKy0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9zdG9sZW4uY8KgwqDCoMKgwqB8wqDCoMKgNiArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuY8KgwqDCoMKgwqDCoHzCoMKgMzIgKysrLS0tLQo+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMzYg KysrKy0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jwqDCoMKgwqDC oMKgwqDCoHzCoMKgMjAgKystLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3Iu Y8KgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMTYgKystLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY3J0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDYgKy0KPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA0ICst Cj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmPCoMKgwqDCoMKgwqDCoHwg MTQxICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAyMCArKy0tCj4gwqBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jwqDCoMKgwqDCoMKgfMKgwqDCoDIgKy0K PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmPCoMKgwqDCoMKgwqDCoMKgwqB8 wqDCoMKgNCArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfMKgwqDCoDIgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2 ZHMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDQgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuY8KgwqDCoMKgwqDCoMKgfMKgwqDCoDQgKy0KPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDUwICsr KysrLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHzCoMKgwqA2ICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmPCoMKgwqDCoHzCoMKgNDAgKysrKy0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Nkdm8uY8KgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDggKy0KPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3R2LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMiAr LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmPCoMKgwqDCoMKgwqDCoMKg fMKgwqDCoDYgKy0KPiDCoDI4IGZpbGVzIGNoYW5nZWQsIDI3MCBpbnNlcnRpb25zKCspLCAyNzcg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBi ZTRiY2RjLi5kN2Y0NzFiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBA QCAtNjEyLDcgKzYxMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fcGFnZWZsaXBfaW5mbyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gwqAJCQkJc2VxX3B1dHMobSwgIlN0YWxsIGNo ZWNrIHdhaXRpbmcgZm9yIHBhZ2UgZmxpcCBpb2N0bCwgIik7Cj4gwqAJCQlzZXFfcHJpbnRmKG0s ICIlZCBwcmVwYXJlc1xuIiwgYXRvbWljX3JlYWQoJndvcmstPnBlbmRpbmcpKTsKPiDCoAo+IC0J CQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKPiArCQkJaWYgKElOVEVMX0lORk8oZGV2 X3ByaXYpLT5nZW4gPj0gNCkKPiDCoAkJCQlhZGRyID0gSTkxNV9ISV9ESVNQQkFTRShJOTE1X1JF QUQoRFNQU1VSRihjcnRjLT5wbGFuZSkpKTsKPiDCoAkJCWVsc2UKPiDCoAkJCQlhZGRyID0gSTkx NV9SRUFEKERTUEFERFIoY3J0Yy0+cGxhbmUpKTsKPiBAQCAtODA5LDcgKzgwOSw3IEBAIHN0YXRp YyBpbnQgaTkxNV9pbnRlcnJ1cHRfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gwqAJCQnCoMKgwqBJOTE1X1JFQUQoR0VOOF9QQ1VfSUlSKSk7Cj4gwqAJCXNlcV9wcmludGYo bSwgIlBDVSBpbnRlcnJ1cHQgZW5hYmxlOlx0JTA4eFxuIiwKPiDCoAkJCcKgwqDCoEk5MTVfUkVB RChHRU44X1BDVV9JRVIpKTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OCkgewo+ICsJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDgpIHsKPiDC oAkJc2VxX3ByaW50ZihtLCAiTWFzdGVyIEludGVycnVwdCBDb250cm9sOlx0JTA4eFxuIiwKPiDC oAkJCcKgwqDCoEk5MTVfUkVBRChHRU44X01BU1RFUl9JUlEpKTsKPiDCoAo+IEBAIC05MzUsNyAr OTM1LDcgQEAgc3RhdGljIGludCBpOTE1X2ludGVycnVwdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqZGF0YSkKPiDCoAkJCcKgwqDCoEk5MTVfUkVBRChHVElNUikpOwo+IMKgCX0KPiDC oAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikgewo+IC0JCWlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA2KSB7Cj4gKwkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0g Nikgewo+IMKgCQkJc2VxX3ByaW50ZihtLAo+IMKgCQkJCcKgwqDCoCJHcmFwaGljcyBJbnRlcnJ1 cHQgbWFzayAoJXMpOgklMDh4XG4iLAo+IMKgCQkJCcKgwqDCoGVuZ2luZS0+bmFtZSwgSTkxNV9S RUFEX0lNUihlbmdpbmUpKTsKPiBAQCAtMTE3Miw3ICsxMTcyLDcgQEAgc3RhdGljIGludCBpOTE1 X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+IMKgCQkJ wqDCoMKgImVmZmljaWVudCAoUlBlKSBmcmVxdWVuY3k6ICVkIE1IelxuIiwKPiDCoAkJCcKgwqDC oGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9mcmVxKSk7 Cj4gwqAJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiAtCX0gZWxzZSBp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJfSBlbHNlIGlmIChJTlRFTF9JTkZP KGRldl9wcml2KS0+Z2VuID49IDYpIHsKPiDCoAkJdTMyIHJwX3N0YXRlX2xpbWl0czsKPiDCoAkJ dTMyIGd0X3BlcmZfc3RhdHVzOwo+IMKgCQl1MzIgcnBfc3RhdGVfY2FwOwo+IEBAIC0xNjgwLDcg KzE2ODAsNyBAQCBzdGF0aWMgaW50IGk5MTVfZmJjX2ZjX2dldCh2b2lkICpkYXRhLCB1NjQgKnZh bCkKPiDCoAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGF0YTsKPiDCoAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPCA3IHx8ICFIQVNfRkJDKGRldikpCj4gKwlpZiAoSU5URUxfSU5G TyhkZXZfcHJpdiktPmdlbiA8IDcgfHwgIUhBU19GQkMoZGV2KSkKPiDCoAkJcmV0dXJuIC1FTk9E RVY7Cj4gwqAKPiDCoAkqdmFsID0gZGV2X3ByaXYtPmZiYy5mYWxzZV9jb2xvcjsKPiBAQCAtMTY5 NCw3ICsxNjk0LDcgQEAgc3RhdGljIGludCBpOTE1X2ZiY19mY19zZXQodm9pZCAqZGF0YSwgdTY0 IHZhbCkKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+IMKgCXUzMiByZWc7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8 IDcgfHwgIUhBU19GQkMoZGV2KSkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwg NyB8fCAhSEFTX0ZCQyhkZXYpKQo+IMKgCQlyZXR1cm4gLUVOT0RFVjsKPiDCoAo+IMKgCW11dGV4 X2xvY2soJmRldl9wcml2LT5mYmMubG9jayk7Cj4gQEAgLTE3MzAsNyArMTczMCw3IEBAIHN0YXRp YyBpbnQgaTkxNV9pcHNfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ IMKgCXNlcV9wcmludGYobSwgIkVuYWJsZWQgYnkga2VybmVsIHBhcmFtZXRlcjogJXNcbiIsCj4g wqAJCcKgwqDCoHllc25vKGk5MTUuZW5hYmxlX2lwcykpOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gOCkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0g OCkgewo+IMKgCQlzZXFfcHV0cyhtLCAiQ3VycmVudGx5OiB1bmtub3duXG4iKTsKPiDCoAl9IGVs c2Ugewo+IMKgCQlpZiAoSTkxNV9SRUFEKElQU19DVEwpICYgSVBTX0VOQUJMRSkKPiBAQCAtMjIw MSw3ICsyMjAxLDcgQEAgc3RhdGljIGludCBpOTE1X3N3aXp6bGVfaW5mbyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCj4gwqAJCQnCoMKgwqBJOTE1X1JFQUQxNihDMERSQjMpKTsKPiDC oAkJc2VxX3ByaW50ZihtLCAiQzFEUkIzID0gMHglMDR4XG4iLAo+IMKgCQkJwqDCoMKgSTkxNV9S RUFEMTYoQzFEUkIzKSk7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYp IHsKPiArCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA2KSB7Cj4gwqAJ CXNlcV9wcmludGYobSwgIk1BRF9ESU1NX0MwID0gMHglMDh4XG4iLAo+IMKgCQkJwqDCoMKgSTkx NV9SRUFEKE1BRF9ESU1NX0MwKSk7Cj4gwqAJCXNlcV9wcmludGYobSwgIk1BRF9ESU1NX0MxID0g MHglMDh4XG4iLAo+IEBAIC0yMjEwLDcgKzIyMTAsNyBAQCBzdGF0aWMgaW50IGk5MTVfc3dpenps ZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiDCoAkJCcKgwqDCoEk5MTVf UkVBRChNQURfRElNTV9DMikpOwo+IMKgCQlzZXFfcHJpbnRmKG0sICJUSUxFQ1RMID0gMHglMDh4 XG4iLAo+IMKgCQkJwqDCoMKgSTkxNV9SRUFEKFRJTEVDVEwpKTsKPiAtCQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gOCkKPiArCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4 KQo+IMKgCQkJc2VxX3ByaW50ZihtLCAiR0FNVEFSQk1PREUgPSAweCUwOHhcbiIsCj4gwqAJCQkJ wqDCoMKgSTkxNV9SRUFEKEdBTVRBUkJNT0RFKSk7Cj4gwqAJCWVsc2UKPiBAQCAtMjI3NiwxMiAr MjI3NiwxMiBAQCBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2luZm8oc3RydWN0IHNlcV9maWxlICpt LCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gNikKPiArCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID09IDYpCj4gwqAJCXNlcV9wcmludGYobSwgIkdGWF9N T0RFOiAweCUwOHhcbiIsIEk5MTVfUkVBRChHRlhfTU9ERSkpOwo+IMKgCj4gwqAJZm9yX2VhY2hf ZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpIHsKPiDCoAkJc2VxX3ByaW50ZihtLCAiJXNcbiIsIGVu Z2luZS0+bmFtZSk7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDcpCj4gKwkJaWYg KElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPT0gNykKPiDCoAkJCXNlcV9wcmludGYobSwgIkdG WF9NT0RFOiAweCUwOHhcbiIsCj4gwqAJCQkJwqDCoMKgSTkxNV9SRUFEKFJJTkdfTU9ERV9HRU43 KGVuZ2luZSkpKTsKPiDCoAkJc2VxX3ByaW50ZihtLCAiUFBfRElSX0JBU0U6IDB4JTA4eFxuIiwK PiBAQCAtMjMxNSw5ICsyMzE1LDkgQEAgc3RhdGljIGludCBpOTE1X3BwZ3R0X2luZm8oc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+IMKgCQlyZXR1cm4gcmV0Owo+IMKgCWludGVsX3J1 bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDgpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4KQo+IMKgCQlnZW44 X3BwZ3R0X2luZm8obSwgZGV2KTsKPiAtCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDYpCj4gKwllbHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYpCj4gwqAJCWdl bjZfcHBndHRfaW5mbyhtLCBkZXYpOwo+IMKgCj4gwqAJbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZl cnNlKGZpbGUsICZkZXYtPmZpbGVsaXN0LCBsaGVhZCkgewo+IEBAIC0yNjY5LDcgKzI2NjksNyBA QCBzdGF0aWMgaW50IGk5MTVfZW5lcmd5X3VKKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKPiDCoAl1NjQgcG93ZXI7Cj4gwqAJdTMyIHVuaXRzOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA2KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA2KQo+ IMKgCQlyZXR1cm4gLUVOT0RFVjsKPiDCoAo+IMKgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9w cml2KTsKPiBAQCAtMzEzNyw3ICszMTM3LDcgQEAgc3RhdGljIGludCBpOTE1X3NlbWFwaG9yZV9z dGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gwqAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7Cj4gLQlpbnQgbnVtX3JpbmdzID0gaHdlaWdodDMyKElOVEVMX0lORk8oZGV2 KS0+cmluZ19tYXNrKTsKPiArCWludCBudW1fcmluZ3MgPSBod2VpZ2h0MzIoSU5URUxfSU5GTyhk ZXZfcHJpdiktPnJpbmdfbWFzayk7Cj4gwqAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gwqAJ aW50IGosIHJldDsKPiDCoAo+IEBAIC0zMjgyLDcgKzMyODIsNyBAQCBzdGF0aWMgaW50IGk5MTVf ZGRiX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gwqAJZW51bSBwaXBl IHBpcGU7Cj4gwqAJaW50IHBsYW5lOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA5KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA5KQo+IMKgCQlyZXR1cm4g MDsKPiDCoAo+IMKgCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7Cj4gQEAgLTQwMzQsNyArNDAz NCw3IEBAIHN0YXRpYyBpbnQgcGlwZV9jcmNfc2V0X3NvdXJjZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBlbnVtIHBpcGUgcGlwZSwKPiDCoAo+IMKgCWlmIChJU19HRU4yKGRldikpCj4gwqAJCXJl dCA9IGk4eHhfcGlwZV9jcmNfY3RsX3JlZygmc291cmNlLCAmdmFsKTsKPiAtCWVsc2UgaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuIDwgNSkKPiArCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYp LT5nZW4gPCA1KQo+IMKgCQlyZXQgPSBpOXh4X3BpcGVfY3JjX2N0bF9yZWcoZGV2LCBwaXBlLCAm c291cmNlLCAmdmFsKTsKPiDCoAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hF UlJZVklFVyhkZXYpKQo+IMKgCQlyZXQgPSB2bHZfcGlwZV9jcmNfY3RsX3JlZyhkZXYsIHBpcGUs ICZzb3VyY2UsICZ2YWwpOwo+IEBAIC00NTIxLDcgKzQ1MjEsNyBAQCBzdGF0aWMgaW50IHByaV93 bV9sYXRlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+IMKgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAJY29u c3QgdWludDE2X3QgKmxhdGVuY2llczsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDkpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQo+IMKgCQlsYXRl bmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7Cj4gwqAJZWxzZQo+IMKgCQlsYXRlbmNp ZXMgPSB0b19pOTE1KGRldiktPndtLnByaV9sYXRlbmN5Owo+IEBAIC00NTM3LDcgKzQ1MzcsNyBA QCBzdGF0aWMgaW50IHNwcl93bV9sYXRlbmN5X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICpkYXRhKQo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gwqAJY29uc3QgdWludDE2X3QgKmxhdGVuY2llczsKPiDCoAo+IC0JaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdl biA+PSA5KQo+IMKgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7Cj4gwqAJ ZWxzZQo+IMKgCQlsYXRlbmNpZXMgPSB0b19pOTE1KGRldiktPndtLnNwcl9sYXRlbmN5Owo+IEBA IC00NTUzLDcgKzQ1NTMsNyBAQCBzdGF0aWMgaW50IGN1cl93bV9sYXRlbmN5X3Nob3coc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAJY29uc3QgdWludDE2X3QgKmxhdGVuY2ll czsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4gKwlpZiAoSU5URUxf SU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQo+IMKgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20u c2tsX2xhdGVuY3k7Cj4gwqAJZWxzZQo+IMKgCQlsYXRlbmNpZXMgPSB0b19pOTE1KGRldiktPndt LmN1cl9sYXRlbmN5Owo+IEBAIC00NjQ0LDcgKzQ2NDQsNyBAQCBzdGF0aWMgc3NpemVfdCBwcmlf d21fbGF0ZW5jeV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVi dWYsCj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiDCoAl1aW50MTZfdCAqbGF0ZW5jaWVzOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gOSkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCj4g wqAJCWxhdGVuY2llcyA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeTsKPiDCoAllbHNlCj4gwqAJ CWxhdGVuY2llcyA9IHRvX2k5MTUoZGV2KS0+d20ucHJpX2xhdGVuY3k7Cj4gQEAgLTQ2NjAsNyAr NDY2MCw3IEBAIHN0YXRpYyBzc2l6ZV90IHNwcl93bV9sYXRlbmN5X3dyaXRlKHN0cnVjdCBmaWxl ICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCXVpbnQxNl90ICpsYXRlbmNp ZXM7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICsJaWYgKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkKPiDCoAkJbGF0ZW5jaWVzID0gZGV2X3ByaXYtPndt LnNrbF9sYXRlbmN5Owo+IMKgCWVsc2UKPiDCoAkJbGF0ZW5jaWVzID0gdG9faTkxNShkZXYpLT53 bS5zcHJfbGF0ZW5jeTsKPiBAQCAtNDY3Niw3ICs0Njc2LDcgQEAgc3RhdGljIHNzaXplX3QgY3Vy X3dtX2xhdGVuY3lfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1 YnVmLAo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gwqAJdWludDE2X3QgKmxhdGVuY2llczsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDkpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQo+ IMKgCQlsYXRlbmNpZXMgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3k7Cj4gwqAJZWxzZQo+IMKg CQlsYXRlbmNpZXMgPSB0b19pOTE1KGRldiktPndtLmN1cl9sYXRlbmN5Owo+IEBAIC00OTE2LDcg KzQ5MTYsNyBAQCBpOTE1X21heF9mcmVxX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbCkKPiDCoAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKg CWludCByZXQ7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDYpCj4gKwlpZiAo SU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDYpCj4gwqAJCXJldHVybiAtRU5PREVWOwo+IMKg Cj4gwqAJZmx1c2hfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cnBzLmRlbGF5ZWRfcmVzdW1lX3dv cmspOwo+IEBAIC00OTM5LDcgKzQ5MzksNyBAQCBpOTE1X21heF9mcmVxX3NldCh2b2lkICpkYXRh LCB1NjQgdmFsKQo+IMKgCXUzMiBod19tYXgsIGh3X21pbjsKPiDCoAlpbnQgcmV0Owo+IMKgCj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPCA2KQo+IMKgCQlyZXR1cm4gLUVOT0RFVjsKPiDCoAo+IMKgCWZsdXNoX2RlbGF5 ZWRfd29yaygmZGV2X3ByaXYtPnJwcy5kZWxheWVkX3Jlc3VtZV93b3JrKTsKPiBAQCAtNDk4Myw3 ICs0OTgzLDcgQEAgaTkxNV9taW5fZnJlcV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCj4gwqAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDC oAlpbnQgcmV0Owo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ICsJaWYg KElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA2KQo+IMKgCQlyZXR1cm4gLUVOT0RFVjsKPiDC oAo+IMKgCWZsdXNoX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPnJwcy5kZWxheWVkX3Jlc3VtZV93 b3JrKTsKPiBAQCAtNTAwNiw3ICs1MDA2LDcgQEAgaTkxNV9taW5fZnJlcV9zZXQodm9pZCAqZGF0 YSwgdTY0IHZhbCkKPiDCoAl1MzIgaHdfbWF4LCBod19taW47Cj4gwqAJaW50IHJldDsKPiDCoAo+ IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNikKPiArCWlmIChJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuIDwgNikKPiDCoAkJcmV0dXJuIC1FTk9ERVY7Cj4gwqAKPiDCoAlmbHVzaF9kZWxh eWVkX3dvcmsoJmRldl9wcml2LT5ycHMuZGVsYXllZF9yZXN1bWVfd29yayk7Cj4gQEAgLTUxNzgs NyArNTE3OCw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gwqAJCXN0YXQtPnNsaWNlX3RvdGFsKys7Cj4gwqAKPiDCoAkJaWYg KElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKQo+IC0JCQlzc19jbnQgPSBJTlRF TF9JTkZPKGRldiktPnN1YnNsaWNlX3Blcl9zbGljZTsKPiArCQkJc3NfY250ID0gSU5URUxfSU5G TyhkZXZfcHJpdiktPnN1YnNsaWNlX3Blcl9zbGljZTsKPiDCoAo+IMKgCQlmb3IgKHNzID0gMDsg c3MgPCBzc19tYXg7IHNzKyspIHsKPiDCoAkJCXVuc2lnbmVkIGludCBldV9jbnQ7Cj4gQEAgLTUy MTQsMTUgKzUyMTQsMTUgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfZGV2aWNlX3N0YXR1 cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IMKgCXN0YXQtPnNsaWNlX3RvdGFsID0gaHdlaWdo dDMyKHNsaWNlX2luZm8gJiBHRU44X0xTTElDRVNUQVRfTUFTSyk7Cj4gwqAKPiDCoAlpZiAoc3Rh dC0+c2xpY2VfdG90YWwpIHsKPiAtCQlzdGF0LT5zdWJzbGljZV9wZXJfc2xpY2UgPSBJTlRFTF9J TkZPKGRldiktPnN1YnNsaWNlX3Blcl9zbGljZTsKPiArCQlzdGF0LT5zdWJzbGljZV9wZXJfc2xp Y2UgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+c3Vic2xpY2VfcGVyX3NsaWNlOwo+IMKgCQlzdGF0 LT5zdWJzbGljZV90b3RhbCA9IHN0YXQtPnNsaWNlX3RvdGFsICoKPiDCoAkJCQnCoMKgwqDCoMKg wqDCoHN0YXQtPnN1YnNsaWNlX3Blcl9zbGljZTsKPiAtCQlzdGF0LT5ldV9wZXJfc3Vic2xpY2Ug PSBJTlRFTF9JTkZPKGRldiktPmV1X3Blcl9zdWJzbGljZTsKPiArCQlzdGF0LT5ldV9wZXJfc3Vi c2xpY2UgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+ZXVfcGVyX3N1YnNsaWNlOwo+IMKgCQlzdGF0 LT5ldV90b3RhbCA9IHN0YXQtPmV1X3Blcl9zdWJzbGljZSAqIHN0YXQtPnN1YnNsaWNlX3RvdGFs Owo+IMKgCj4gwqAJCS8qIHN1YnRyYWN0IGZ1c2VkIG9mZiBFVShzKSBmcm9tIGVuYWJsZWQgc2xp Y2UocykgKi8KPiDCoAkJZm9yIChzID0gMDsgcyA8IHN0YXQtPnNsaWNlX3RvdGFsOyBzKyspIHsK PiAtCQkJdTggc3Vic2xpY2VfN2V1ID0gSU5URUxfSU5GTyhkZXYpLT5zdWJzbGljZV83ZXVbc107 Cj4gKwkJCXU4IHN1YnNsaWNlXzdldSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5zdWJzbGljZV83 ZXVbc107Cj4gwqAKPiDCoAkJCXN0YXQtPmV1X3RvdGFsIC09IGh3ZWlnaHQ4KHN1YnNsaWNlXzdl dSk7Cj4gwqAJCX0KPiBAQCAtNTI4NCw3ICs1Mjg0LDcgQEAgc3RhdGljIGludCBpOTE1X2ZvcmNl d2FrZV9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQo+IMKgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbm9kZS0+aV9wcml2YXRlOwo+IMKgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAKPiAtCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA8IDYpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdl biA8IDYpCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gwqAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2 X3ByaXYpOwo+IEBAIC01Mjk4LDcgKzUyOTgsNyBAQCBzdGF0aWMgaW50IGk5MTVfZm9yY2V3YWtl X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gwqAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGlub2RlLT5pX3ByaXZhdGU7Cj4gwqAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAo+IC0JaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuIDwgNikKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu IDwgNikKPiDCoAkJcmV0dXJuIDA7Cj4gwqAKPiDCoAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1 dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gaW5k ZXggYjM3Nzc1My4uZmNkYjFlMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RtYS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IEBAIC0x NjUsNyArMTY1LDcgQEAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gwqAJCXZhbHVlID0gMTsKPiDCoAkJYnJlYWs7Cj4gwqAJY2Fz ZSBJOTE1X1BBUkFNX0hBU19FWEVDX0NPTlNUQU5UUzoKPiAtCQl2YWx1ZSA9IElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDQ7Cj4gKwkJdmFsdWUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49 IDQ7Cj4gwqAJCWJyZWFrOwo+IMKgCWNhc2UgSTkxNV9QQVJBTV9IQVNfUkVMQVhFRF9ERUxUQToK PiDCoAkJdmFsdWUgPSAxOwo+IEBAIC0yMTMsMTIgKzIxMywxMiBAQCBzdGF0aWMgaW50IGk5MTVf Z2V0cGFyYW0oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiDCoAkJdmFsdWUg PSAxOwo+IMKgCQlicmVhazsKPiDCoAljYXNlIEk5MTVfUEFSQU1fU1VCU0xJQ0VfVE9UQUw6Cj4g LQkJdmFsdWUgPSBJTlRFTF9JTkZPKGRldiktPnN1YnNsaWNlX3RvdGFsOwo+ICsJCXZhbHVlID0g SU5URUxfSU5GTyhkZXZfcHJpdiktPnN1YnNsaWNlX3RvdGFsOwo+IMKgCQlpZiAoIXZhbHVlKQo+ IMKgCQkJcmV0dXJuIC1FTk9ERVY7Cj4gwqAJCWJyZWFrOwo+IMKgCWNhc2UgSTkxNV9QQVJBTV9F VV9UT1RBTDoKPiAtCQl2YWx1ZSA9IElOVEVMX0lORk8oZGV2KS0+ZXVfdG90YWw7Cj4gKwkJdmFs dWUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+ZXVfdG90YWw7Cj4gwqAJCWlmICghdmFsdWUpCj4g wqAJCQlyZXR1cm4gLUVOT0RFVjsKPiDCoAkJYnJlYWs7Cj4gQEAgLTI2OSwxMiArMjY5LDEyIEBA IHN0YXRpYyBpbnQKPiDCoGludGVsX2FsbG9jX21jaGJhcl9yZXNvdXJjZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+IMKgewo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlpbnQgcmVnID0gSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g NCA/IE1DSEJBUl9JOTY1IDogTUNIQkFSX0k5MTU7Cj4gKwlpbnQgcmVnID0gSU5URUxfSU5GTyhk ZXZfcHJpdiktPmdlbiA+PSA0ID8gTUNIQkFSX0k5NjUgOiBNQ0hCQVJfSTkxNTsKPiDCoAl1MzIg dGVtcF9sbywgdGVtcF9oaSA9IDA7Cj4gwqAJdTY0IG1jaGJhcl9hZGRyOwo+IMKgCWludCByZXQ7 Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KQo+ICsJaWYgKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPj0gNCkKPiDCoAkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldl9w cml2LT5icmlkZ2VfZGV2LCByZWcgKyA0LCAmdGVtcF9oaSk7Cj4gwqAJcGNpX3JlYWRfY29uZmln X2R3b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcsICZ0ZW1wX2xvKTsKPiDCoAltY2hiYXJf YWRkciA9ICgodTY0KXRlbXBfaGkgPDwgMzIpIHwgdGVtcF9sbzsKPiBAQCAtMzAxLDcgKzMwMSw3 IEBAIGludGVsX2FsbG9jX21jaGJhcl9yZXNvdXJjZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ IMKgCQlyZXR1cm4gcmV0Owo+IMKgCX0KPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDQpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA0KQo+IMKgCQlwY2lf d3JpdGVfY29uZmlnX2R3b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcgKyA0LAo+IMKgCQkJ CcKgwqDCoMKgwqDCoMKgdXBwZXJfMzJfYml0cyhkZXZfcHJpdi0+bWNoX3Jlcy5zdGFydCkpOwo+ IMKgCj4gQEAgLTMxNSw3ICszMTUsNyBAQCBzdGF0aWMgdm9pZAo+IMKgaW50ZWxfc2V0dXBfbWNo YmFyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWludCBtY2hiYXJfcmVnID0g SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCA/IE1DSEJBUl9JOTY1IDogTUNIQkFSX0k5MTU7Cj4g KwlpbnQgbWNoYmFyX3JlZyA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNCA/IE1DSEJB Ul9JOTY1IDogTUNIQkFSX0k5MTU7Cj4gwqAJdTMyIHRlbXA7Cj4gwqAJYm9vbCBlbmFibGVkOwo+ IMKgCj4gQEAgLTM1NSw3ICszNTUsNyBAQCBzdGF0aWMgdm9pZAo+IMKgaW50ZWxfdGVhcmRvd25f bWNoYmFyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWludCBtY2hiYXJfcmVn ID0gSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCA/IE1DSEJBUl9JOTY1IDogTUNIQkFSX0k5MTU7 Cj4gKwlpbnQgbWNoYmFyX3JlZyA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNCA/IE1D SEJBUl9JOTY1IDogTUNIQkFSX0k5MTU7Cj4gwqAJdTMyIHRlbXA7Cj4gwqAKPiDCoAlpZiAoZGV2 X3ByaXYtPm1jaGJhcl9uZWVkX2Rpc2FibGUpIHsKPiBAQCAtNDc5LDcgKzQ3OSw3IEBAIHN0YXRp YyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKg CS8qIEFsd2F5cyBzYWZlIGluIHRoZSBtb2RlIHNldHRpbmcgY2FzZS4gKi8KPiDCoAkvKiBGSVhN RTogZG8gcHJlL3Bvc3QtbW9kZSBzZXQgc3R1ZmYgaW4gY29yZSBLTVMgY29kZSAqLwo+IMKgCWRl di0+dmJsYW5rX2Rpc2FibGVfYWxsb3dlZCA9IHRydWU7Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5udW1fcGlwZXMgPT0gMCkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVz ID09IDApCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gwqAJcmV0ID0gaW50ZWxfZmJkZXZfaW5pdChk ZXYpOwo+IEBAIC04NTMsNyArODUzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9f cnVudGltZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCURSTV9JTkZPKCJEaXNw bGF5IGRpc2FibGVkIChtb2R1bGUgcGFyYW1ldGVyKVxuIik7Cj4gwqAJCWluZm8tPm51bV9waXBl cyA9IDA7Cj4gwqAJfSBlbHNlIGlmIChpbmZvLT5udW1fcGlwZXMgPiAwICYmCj4gLQkJwqDCoMKg KElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDcgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gOCkg JiYKPiArCQnCoMKgwqAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA9PSA3IHx8IElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPT0gOCkgJiYKPiDCoAkJwqDCoMKgSEFTX1BDSF9TUExJVChkZXYp KSB7Cj4gwqAJCXUzMiBmdXNlX3N0cmFwID0gSTkxNV9SRUFEKEZVU0VfU1RSQVApOwo+IMKgCQl1 MzIgc2Z1c2Vfc3RyYXAgPSBJOTE1X1JFQUQoU0ZVU0VfU1RSQVApOwo+IEBAIC04NzcsNyArODc3 LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gwqAJCQlEUk1fSU5GTygiUGlwZUMgZnVzZWQgb2ZmXG4iKTsKPiDC oAkJCWluZm8tPm51bV9waXBlcyAtPSAxOwo+IMKgCQl9Cj4gLQl9IGVsc2UgaWYgKGluZm8tPm51 bV9waXBlcyA+IDAgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gOSkgewo+ICsJfSBlbHNlIGlm IChpbmZvLT5udW1fcGlwZXMgPiAwICYmIElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPT0gOSkg ewo+IMKgCQl1MzIgZGZzbSA9IEk5MTVfUkVBRChTS0xfREZTTSk7Cj4gwqAJCXU4IGRpc2FibGVk X21hc2sgPSAwOwo+IMKgCQlib29sIGludmFsaWQ7Cj4gQEAgLTkxNSw3ICs5MTUsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiDCoAkJY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChkZXYpOwo+IMKgCWVsc2UgaWYg KElTX0JST0FEV0VMTChkZXYpKQo+IMKgCQlicm9hZHdlbGxfc3NldV9pbmZvX2luaXQoZGV2KTsK PiAtCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4gKwllbHNlIGlmIChJTlRF TF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCj4gwqAJCWdlbjlfc3NldV9pbmZvX2luaXQoZGV2 KTsKPiDCoAo+IMKgCS8qIFNub29waW5nIGlzIGJyb2tlbiBvbiBCWFQgQSBzdGVwcGluZy4gKi8K PiBAQCAtMTA5MSw3ICsxMDkxLDcgQEAgc3RhdGljIGludCBpOTE1X21taW9fc2V0dXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiDCoAnCoCogdGhlIHJlZ2lzdGVyIEJBUiByZW1haW5zIHRoZSBz YW1lIHNpemUgZm9yIGFsbCB0aGUgZWFybGllcgo+IMKgCcKgKiBnZW5lcmF0aW9ucyB1cCB0byBJ cm9ubGFrZS4KPiDCoAnCoCovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KQo+ICsJ aWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA1KQo+IMKgCQltbWlvX3NpemUgPSA1MTIg KiAxMDI0Owo+IMKgCWVsc2UKPiDCoAkJbW1pb19zaXplID0gMiAqIDEwMjQgKiAxMDI0Owo+IEBA IC0xMzczLDggKzEzNzMsOCBAQCBpbnQgaTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+IMKgCcKgKiBvZiB0aGUgaTkxNV9kcml2ZXJf aW5pdF8vaTkxNV9kcml2ZXJfcmVnaXN0ZXIgZnVuY3Rpb25zIGFjY29yZGluZwo+IMKgCcKgKiB0 byB0aGUgcm9sZS9lZmZlY3Qgb2YgdGhlIGdpdmVuIGluaXQgc3RlcC4KPiDCoAnCoCovCj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5udW1fcGlwZXMpIHsKPiAtCQlyZXQgPSBkcm1fdmJsYW5rX2lu aXQoZGV2LCBJTlRFTF9JTkZPKGRldiktPm51bV9waXBlcyk7Cj4gKwlpZiAoSU5URUxfSU5GTyhk ZXZfcHJpdiktPm51bV9waXBlcykgewo+ICsJCXJldCA9IGRybV92YmxhbmtfaW5pdChkZXYsIElO VEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcGlwZXMpOwo+IMKgCQlpZiAocmV0KQo+IMKgCQkJZ290 byBvdXRfY2xlYW51cF9odzsKPiDCoAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXgg MjliNGU3OS4uZDUwZGU2NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC00NTgs NyArNDU4LDcgQEAgdm9pZCBpbnRlbF9kZXRlY3RfcGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gwqAJLyogSW4gYWxsIGN1cnJlbnQgY2FzZXMsIG51bV9waXBlcyBpcyBlcXVpdmFsZW50IHRv IHRoZSBQQ0hfTk9QIHNldHRpbmcKPiDCoAnCoCogKHdoaWNoIHJlYWxseSBhbW91bnRzIHRvIGEg UENIIGJ1dCBubyBTb3V0aCBEaXNwbGF5KS4KPiDCoAnCoCovCj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5udW1fcGlwZXMgPT0gMCkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1f cGlwZXMgPT0gMCkgewo+IMKgCQlkZXZfcHJpdi0+cGNoX3R5cGUgPSBQQ0hfTk9QOwo+IMKgCQly ZXR1cm47Cj4gwqAJfQo+IEBAIC05NDksNyArOTQ5LDcgQEAgaW50IGk5MTVfcmVzZXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiDCoAnCoCogcHJldmlvdXMgY29uY2VybnMgdGhhdCBpdCBkb2Vz bid0IHJlc3BvbmQgd2VsbCB0byBzb21lIGZvcm1zCj4gwqAJwqAqIG9mIHJlLWluaXQgYWZ0ZXIg cmVzZXQuCj4gwqAJwqAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gNSkKPiArCWlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID4gNSkKPiDCoAkJaW50ZWxfZW5hYmxlX2d0X3Bv d2Vyc2F2ZShkZXYpOwo+IMKgCj4gwqAJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gaW5kZXggYjM0MmY2Ny4uOWQxM2E3MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ IEBAIC00NzMwLDcgKzQ3MzAsNyBAQCB2b2lkIGk5MTVfZ2VtX2luaXRfc3dpenpsaW5nKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuIDwgNSB8fAo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA1IHx8Cj4gwqAJ wqDCoMKgwqBkZXZfcHJpdi0+bW0uYml0XzZfc3dpenpsZV94ID09IEk5MTVfQklUXzZfU1dJWlpM RV9OT05FKQo+IMKgCQlyZXR1cm47Cj4gwqAKPiBAQCAtNDgzMiw3ICs0ODMyLDcgQEAgaTkxNV9n ZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZTsKPiDCoAlpbnQgcmV0LCBqOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA2ICYmICFpbnRlbF9lbmFibGVfZ3R0KCkpCj4gKwlpZiAoSU5URUxfSU5GTyhk ZXZfcHJpdiktPmdlbiA8IDYgJiYgIWludGVsX2VuYWJsZV9ndHQoKSkKPiDCoAkJcmV0dXJuIC1F SU87Cj4gwqAKPiDCoAkvKiBEb3VibGUgbGF5ZXIgc2VjdXJpdHkgYmxhbmtldCwgc2VlIGk5MTVf Z2VtX2luaXQoKSAqLwo+IEBAIC00ODUwLDcgKzQ4NTAsNyBAQCBpOTE1X2dlbV9pbml0X2h3KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCQl1MzIgdGVtcCA9IEk5MTVfUkVBRChHRU43X01T R19DVEwpOwo+IMKgCQkJdGVtcCAmPSB+KFdBSVRfRk9SX1BDSF9GTFJfQUNLIHwgV0FJVF9GT1Jf UENIX1JFU0VUX0FDSyk7Cj4gwqAJCQlJOTE1X1dSSVRFKEdFTjdfTVNHX0NUTCwgdGVtcCk7Cj4g LQkJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSB7Cj4gKwkJfSBlbHNlIGlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDcpIHsKPiDCoAkJCXUzMiB0ZW1wID0gSTkx NV9SRUFEKEhTV19OREVfUlNUV1JOX09QVCk7Cj4gwqAJCQl0ZW1wICY9IH5SRVNFVF9QQ0hfSEFO RFNIQUtFX0VOQUJMRTsKPiDCoAkJCUk5MTVfV1JJVEUoSFNXX05ERV9SU1RXUk5fT1BULCB0ZW1w KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggZmU1ODBj Yi4uOTJhZTEwNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMK PiBAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBpbnQgZ2V0X2NvbnRleHRfc2l6ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+IMKgCWludCByZXQ7Cj4gwqAJdTMyIHJlZzsKPiDCoAo+IC0Jc3dp dGNoIChJTlRFTF9JTkZPKGRldiktPmdlbikgewo+ICsJc3dpdGNoIChJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuKSB7Cj4gwqAJY2FzZSA2Ogo+IMKgCQlyZWcgPSBJOTE1X1JFQUQoQ1hUX1NJWkUp Owo+IMKgCQlyZXQgPSBHRU42X0NYVF9UT1RBTF9TSVpFKHJlZykgKiA2NDsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggMGVlNjFmZC4uY2Q2YTI1 YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVy LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBA QCAtMzM1LDcgKzMzNSw3IEBAIHJlbG9jYXRlX2VudHJ5X2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAo+IMKgCQkJCQnCoMKgwqDCoMKgwqBvZmZzZXQgJiBQQUdFX01BU0spOwo+ IMKgCWlvd3JpdGUzMihsb3dlcl8zMl9iaXRzKGRlbHRhKSwgcmVsb2NfcGFnZSArIG9mZnNldF9p bl9wYWdlKG9mZnNldCkpOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkg ewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOCkgewo+IMKgCQlvZmZzZXQg Kz0gc2l6ZW9mKHVpbnQzMl90KTsKPiDCoAo+IMKgCQlpZiAob2Zmc2V0X2luX3BhZ2Uob2Zmc2V0 KSA9PSAwKSB7Cj4gQEAgLTEyNjQsMTkgKzEyNjQsMTkgQEAgaTkxNV9nZW1fcmluZ2J1ZmZlcl9z dWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCj4gwqAJCX0K PiDCoAo+IMKgCQlpZiAoaW5zdHBfbW9kZSAhPSBkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRz X21vZGUpIHsKPiAtCQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkgewo+ICsJCQlpZiAo SU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDQpIHsKPiDCoAkJCQlEUk1fREVCVUcoIm5vIHJl bCBjb25zdGFudHMgb24gcHJlLWdlbjRcbiIpOwo+IMKgCQkJCXJldHVybiAtRUlOVkFMOwo+IMKg CQkJfQo+IMKgCj4gLQkJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDUgJiYKPiArCQkJaWYg KElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPiA1ICYmCj4gwqAJCQnCoMKgwqDCoGluc3RwX21v ZGUgPT0gSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxfU1VSRkFDRSkgewo+IMKgCQkJCURSTV9ERUJV RygicmVsIHN1cmZhY2UgY29uc3RhbnRzIG1vZGUgaW52YWxpZCBvbiBnZW41K1xuIik7Cj4gwqAJ CQkJcmV0dXJuIC1FSU5WQUw7Cj4gwqAJCQl9Cj4gwqAKPiDCoAkJCS8qIFRoZSBIVyBjaGFuZ2Vk IHRoZSBtZWFuaW5nIG9uIHRoaXMgYml0IG9uIGdlbjYgKi8KPiAtCQkJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDYpCj4gKwkJCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYp Cj4gwqAJCQkJaW5zdHBfbWFzayAmPSB+STkxNV9FWEVDX0NPTlNUQU5UU19SRUxfU1VSRkFDRTsK PiDCoAkJfQo+IMKgCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMK PiBpbmRleCBhMmI5MzhlLi5iOGM4MTBmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2ZlbmNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9mZW5jZS5jCj4gQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHZvaWQgaTk2NV93cml0ZV9mZW5j ZV9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHJlZywKPiDCoAlpOTE1X3JlZ190IGZl bmNlX3JlZ19sbywgZmVuY2VfcmVnX2hpOwo+IMKgCWludCBmZW5jZV9waXRjaF9zaGlmdDsKPiDC oAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiArCWlmIChJTlRFTF9JTkZP KGRldl9wcml2KS0+Z2VuID49IDYpIHsKPiDCoAkJZmVuY2VfcmVnX2xvID0gRkVOQ0VfUkVHX0dF TjZfTE8ocmVnKTsKPiDCoAkJZmVuY2VfcmVnX2hpID0gRkVOQ0VfUkVHX0dFTjZfSEkocmVnKTsK PiDCoAkJZmVuY2VfcGl0Y2hfc2hpZnQgPSBHRU42X0ZFTkNFX1BJVENIX1NISUZUOwo+IEBAIC0y MDksNyArMjA5LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fd3JpdGVfZmVuY2Uoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaW50IHJlZywKPiDCoAkJaTgzMF93cml0ZV9mZW5jZV9yZWcoZGV2LCBy ZWcsIG9iaik7Cj4gwqAJZWxzZSBpZiAoSVNfR0VOMyhkZXYpKQo+IMKgCQlpOTE1X3dyaXRlX2Zl bmNlX3JlZyhkZXYsIHJlZywgb2JqKTsKPiAtCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDQpCj4gKwllbHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpCj4gwqAJ CWk5NjVfd3JpdGVfZmVuY2VfcmVnKGRldiwgcmVnLCBvYmopOwo+IMKgCj4gwqAJLyogQW5kIHNp bWlsYXJseSBiZSBwYXJhbm9pZCB0aGF0IG5vIGRpcmVjdCBhY2Nlc3MgdG8gdGhpcyByZWdpb24K PiBAQCAtNTUzLDcgKzU1Myw3IEBAIGk5MTVfZ2VtX2RldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJdWludDMyX3Qgc3dpenpsZV94ID0gSTkxNV9CSVRfNl9T V0laWkxFX1VOS05PV047Cj4gwqAJdWludDMyX3Qgc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0la WkxFX1VOS05PV047Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4IHx8IElT X1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0g OCB8fCBJU19WQUxMRVlWSUVXKGRldikpIHsKPiDCoAkJLyoKPiDCoAkJwqAqIE9uIEJEVyssIHN3 aXp6bGluZyBpcyBub3QgdXNlZC4gV2UgbGVhdmUgdGhlIENQVSBtZW1vcnkKPiDCoAkJwqAqIGNv bnRyb2xsZXIgaW4gY2hhcmdlIG9mIG9wdGltaXppbmcgbWVtb3J5IGFjY2Vzc2VzIHdpdGhvdXQK PiBAQCAtNTYzLDcgKzU2Myw3IEBAIGk5MTVfZ2VtX2RldGVjdF9iaXRfNl9zd2l6emxlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCcKgKi8KPiDCoAkJc3dpenpsZV94ID0gSTkxNV9CSVRf Nl9TV0laWkxFX05PTkU7Cj4gwqAJCXN3aXp6bGVfeSA9IEk5MTVfQklUXzZfU1dJWlpMRV9OT05F Owo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KSB7Cj4gKwl9IGVsc2Ug aWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikgewo+IMKgCQlpZiAoZGV2X3ByaXYt PnByZXNlcnZlX2Jpb3Nfc3dpenpsZSkgewo+IMKgCQkJaWYgKEk5MTVfUkVBRChESVNQX0FSQl9D VEwpICYKPiDCoAkJCcKgwqDCoMKgRElTUF9USUxFX1NVUkZBQ0VfU1dJWlpMSU5HKSB7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCBkYTZlM2E1Li41OWFlZmJkIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMjI4MSw3ICsyMjgxLDcgQEAg dm9pZCBpOTE1X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl Owo+IMKgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiDCoAo+IC0JaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuIDwgNikKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwg NikKPiDCoAkJcmV0dXJuOwo+IMKgCj4gwqAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3By aXYpIHsKPiBAQCAtMjMyMiw3ICsyMzIyLDcgQEAgdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2d0dF9t YXBwaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCS8qIERvbid0IGJvdGhlciBtZXNz aW5nIHdpdGggZmF1bHRzIHByZSBHRU42IGFzIHdlIGhhdmUgbGl0dGxlCj4gwqAJwqAqIGRvY3Vt ZW50YXRpb24gc3VwcG9ydGluZyB0aGF0IGl0J3MgYSBnb29kIGlkZWEuCj4gwqAJwqAqLwo+IC0J aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNikKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2 KS0+Z2VuIDwgNikKPiDCoAkJcmV0dXJuOwo+IMKgCj4gwqAJaTkxNV9jaGVja19hbmRfY2xlYXJf ZmF1bHRzKGRldik7Cj4gQEAgLTMwNTAsNyArMzA1MCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9nbWNo X3Byb2JlKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCj4gwqAKPiDCoAlwY2lfcmVhZF9jb25maWdf d29yZChkZXYtPnBkZXYsIFNOQl9HTUNIX0NUUkwsICZzbmJfZ21jaF9jdGwpOwo+IMKgCj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPj0gOSkgewo+IMKgCQlnZ3R0LT5zdG9sZW5fc2l6ZSA9IGdlbjlfZ2V0X3N0b2xl bl9zaXplKHNuYl9nbWNoX2N0bCk7Cj4gwqAJCWdndHQtPnNpemUgPSBnZW44X2dldF90b3RhbF9n dHRfc2l6ZShzbmJfZ21jaF9jdGwpOwo+IMKgCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXYp KSB7Cj4gQEAgLTMxNjYsMTAgKzMxNjYsMTAgQEAgaW50IGk5MTVfZ2d0dF9pbml0X2h3KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJp di0+Z2d0dDsKPiDCoAlpbnQgcmV0Owo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PD0gNSkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPD0gNSkgewo+IMKgCQln Z3R0LT5wcm9iZSA9IGk5MTVfZ21jaF9wcm9iZTsKPiDCoAkJZ2d0dC0+YmFzZS5jbGVhbnVwID0g aTkxNV9nbWNoX3JlbW92ZTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4 KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA4KSB7Cj4gwqAJ CWdndHQtPnByb2JlID0gZ2VuNl9nbWNoX3Byb2JlOwo+IMKgCQlnZ3R0LT5iYXNlLmNsZWFudXAg PSBnZW42X2dtY2hfcmVtb3ZlOwo+IMKgCQlpZiAoSVNfSEFTV0VMTChkZXYpICYmIGRldl9wcml2 LT5lbGxjX3NpemUpCj4gQEAgLTMxNzgsNyArMzE3OCw3IEBAIGludCBpOTE1X2dndHRfaW5pdF9o dyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCQkJZ2d0dC0+YmFzZS5wdGVfZW5jb2RlID0g aHN3X3B0ZV9lbmNvZGU7Cj4gwqAJCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiDCoAkJ CWdndHQtPmJhc2UucHRlX2VuY29kZSA9IGJ5dF9wdGVfZW5jb2RlOwo+IC0JCWVsc2UgaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDcpCj4gKwkJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA+PSA3KQo+IMKgCQkJZ2d0dC0+YmFzZS5wdGVfZW5jb2RlID0gaXZiX3B0ZV9lbmNv ZGU7Cj4gwqAJCWVsc2UKPiDCoAkJCWdndHQtPmJhc2UucHRlX2VuY29kZSA9IHNuYl9wdGVfZW5j b2RlOwo+IEBAIC0zMjY3LDcgKzMyNjcsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZ3R0X21h cHBpbmdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCQlpOTE1X2dlbV9jbGZsdXNoX29i amVjdChvYmosIG9iai0+cGluX2Rpc3BsYXkpOwo+IMKgCX0KPiDCoAo+IC0JaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDgpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49 IDgpIHsKPiDCoAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSB8fCBJU19CUk9YVE9OKGRldikpCj4g wqAJCQljaHZfc2V0dXBfcHJpdmF0ZV9wcGF0KGRldl9wcml2KTsKPiDCoAkJZWxzZQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gaW5kZXggZWEwNmRhMC4uZmUxZTVmNCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gQEAgLTEwNiw3ICsx MDYsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBpOTE1X3N0b2xlbl90b19waHlzaWNhbChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCcKgKgo+IMKgCcKgKi8KPiDCoAliYXNlID0gMDsKPiAt CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSAzKSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZf cHJpdiktPmdlbiA+PSAzKSB7Cj4gwqAJCS8qIFJlYWQgR3JhcGhpY3MgQmFzZSBvZiBTdG9sZW4g TWVtb3J5IGRpcmVjdGx5ICovCj4gwqAJCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXYtPnBkZXYs IDB4NWMsICZiYXNlKTsKPiDCoAkJYmFzZSAmPSB+KCgxPDwyMCkgLSAxKTsKPiBAQCAtMTg4LDcg KzE4OCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGk5MTVfc3RvbGVuX3RvX3BoeXNpY2FsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gwqAJLyogbWFrZSBz dXJlIHdlIGRvbid0IGNsb2JiZXIgdGhlIEdUVCBpZiBpdCdzIHdpdGhpbiBzdG9sZW4gbWVtb3J5 ICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCAmJiAhSVNfRzMzKGRldikgJiYg IUlTX0c0WChkZXYpKSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8PSA0ICYm ICFJU19HMzMoZGV2KSAmJiAhSVNfRzRYKGRldikpIHsKPiDCoAkJc3RydWN0IHsKPiDCoAkJCXUz MiBzdGFydCwgZW5kOwo+IMKgCQl9IHN0b2xlblsyXSA9IHsKPiBAQCAtNDAxLDcgKzQwMSw3IEBA IGludCBpOTE1X2dlbV9pbml0X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCW11 dGV4X2luaXQoJmRldl9wcml2LT5tbS5zdG9sZW5fbG9jayk7Cj4gwqAKPiDCoCNpZmRlZiBDT05G SUdfSU5URUxfSU9NTVUKPiAtCWlmIChpbnRlbF9pb21tdV9nZnhfbWFwcGVkICYmIElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgOCkgewo+ICsJaWYgKGludGVsX2lvbW11X2dmeF9tYXBwZWQgJiYgSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDgpIHsKPiDCoAkJRFJNX0lORk8oIkRNQVIgYWN0aXZl LCBkaXNhYmxpbmcgdXNlIG9mIHN0b2xlbiBtZW1vcnlcbiIpOwo+IMKgCQlyZXR1cm4gMDsKPiDC oAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggNmQ2M2EyZi4u ZmE3YWFmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC0z ODEsNyArMzgxLDcgQEAgaW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkx NV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gwqAKPiDCoAllcnJfcHJpbnRmKG0sICJFSVI6IDB4JTA4 eFxuIiwgZXJyb3ItPmVpcik7Cj4gwqAJZXJyX3ByaW50ZihtLCAiSUVSOiAweCUwOHhcbiIsIGVy cm9yLT5pZXIpOwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKPiArCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDgpIHsKPiDCoAkJZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykKPiDCoAkJCWVycl9wcmludGYobSwgIkdUSUVSIGd0ICVkOiAweCUwOHhcbiIsIGksCj4g wqAJCQkJwqDCoMKgZXJyb3ItPmd0aWVyW2ldKTsKPiBAQCAtNDAwLDE3ICs0MDAsMTcgQEAgaW50 IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYg Km0sCj4gwqAJCWVycl9wcmludGYobSwgIsKgwqBJTlNURE9ORV8lZDogMHglMDh4XG4iLCBpLAo+ IMKgCQkJwqDCoMKgZXJyb3ItPmV4dHJhX2luc3Rkb25lW2ldKTsKPiDCoAo+IC0JaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu ID49IDYpIHsKPiDCoAkJZXJyX3ByaW50ZihtLCAiRVJST1I6IDB4JTA4eFxuIiwgZXJyb3ItPmVy cm9yKTsKPiDCoAo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KQo+ICsJCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDgpCj4gwqAJCQllcnJfcHJpbnRmKG0sICJGQVVM VF9UTEJfREFUQTogMHglMDh4IDB4JTA4eFxuIiwKPiDCoAkJCQnCoMKgwqBlcnJvci0+ZmF1bHRf ZGF0YTEsIGVycm9yLT5mYXVsdF9kYXRhMCk7Cj4gwqAKPiDCoAkJZXJyX3ByaW50ZihtLCAiRE9O RV9SRUc6IDB4JTA4eFxuIiwgZXJyb3ItPmRvbmVfcmVnKTsKPiDCoAl9Cj4gwqAKPiAtCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA9PSA3KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5n ZW4gPT0gNykKPiDCoAkJZXJyX3ByaW50ZihtLCAiRVJSX0lOVDogMHglMDh4XG4iLCBlcnJvci0+ ZXJyX2ludCk7Cj4gwqAKPiDCoAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShlcnJvci0+cmlu Zyk7IGkrKykKPiBAQCAtODM1LDcgKzgzNSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29y ZF9mZW5jZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiDCoAl9IGVsc2UgaWYgKElTX0dFTjUo ZGV2KSB8fCBJU19HRU40KGRldikpIHsKPiDCoAkJZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5u dW1fZmVuY2VfcmVnczsgaSsrKQo+IMKgCQkJZXJyb3ItPmZlbmNlW2ldID0gSTkxNV9SRUFENjQo RkVOQ0VfUkVHXzk2NV9MTyhpKSk7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDYpIHsKPiArCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA2KSB7 Cj4gwqAJCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3M7IGkrKykKPiDC oAkJCWVycm9yLT5mZW5jZVtpXSA9IEk5MTVfUkVBRDY0KEZFTkNFX1JFR19HRU42X0xPKGkpKTsK PiDCoAl9Cj4gQEAgLTg5OSwyNCArODk5LDI0IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVjb3JkX3Jp bmdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5n ZW4gPj0gNikgewo+IMKgCQllcmluZy0+cmNfcHNtaSA9IEk5MTVfUkVBRChSSU5HX1BTTUlfQ1RM KGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4gwqAJCWVyaW5nLT5mYXVsdF9yZWcgPSBJOTE1X1JFQUQo UklOR19GQVVMVF9SRUcoZW5naW5lKSk7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDgpCj4gKwkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOCkKPiDCoAkJCWdlbjhf cmVjb3JkX3NlbWFwaG9yZV9zdGF0ZShkZXZfcHJpdiwgZXJyb3IsIGVuZ2luZSwKPiDCoAkJCQkJ CcKgwqDCoMKgZXJpbmcpOwo+IMKgCQllbHNlCj4gwqAJCQlnZW42X3JlY29yZF9zZW1hcGhvcmVf c3RhdGUoZGV2X3ByaXYsIGVuZ2luZSwgZXJpbmcpOwo+IMKgCX0KPiDCoAo+IC0JaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu ID49IDQpIHsKPiDCoAkJZXJpbmctPmZhZGRyID0gSTkxNV9SRUFEKFJJTkdfRE1BX0ZBREQoZW5n aW5lLT5tbWlvX2Jhc2UpKTsKPiDCoAkJZXJpbmctPmlwZWlyID0gSTkxNV9SRUFEKFJJTkdfSVBF SVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiDCoAkJZXJpbmctPmlwZWhyID0gSTkxNV9SRUFEKFJJ TkdfSVBFSFIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiDCoAkJZXJpbmctPmluc3Rkb25lID0gSTkx NV9SRUFEKFJJTkdfSU5TVERPTkUoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiDCoAkJZXJpbmctPmlu c3RwcyA9IEk5MTVfUkVBRChSSU5HX0lOU1RQUyhlbmdpbmUtPm1taW9fYmFzZSkpOwo+IMKgCQll cmluZy0+YmJhZGRyID0gSTkxNV9SRUFEKFJJTkdfQkJBRERSKGVuZ2luZS0+bW1pb19iYXNlKSk7 Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKPiArCQlpZiAoSU5URUxfSU5G TyhkZXZfcHJpdiktPmdlbiA+PSA4KSB7Cj4gwqAJCQllcmluZy0+ZmFkZHIgfD0gKHU2NCkgSTkx NV9SRUFEKFJJTkdfRE1BX0ZBRERfVURXKGVuZ2luZS0+bW1pb19iYXNlKSkgPDwgMzI7Cj4gwqAJ CQllcmluZy0+YmJhZGRyIHw9ICh1NjQpIEk5MTVfUkVBRChSSU5HX0JCQUREUl9VRFcoZW5naW5l LT5tbWlvX2Jhc2UpKSA8PCAzMjsKPiDCoAkJfQo+IEBAIC05ODAsNyArOTgwLDcgQEAgc3RhdGlj IHZvaWQgaTkxNV9yZWNvcmRfcmluZ19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IMKg CQllbHNlIGlmIChJU19HRU43KGRldikpCj4gwqAJCQllcmluZy0+dm1faW5mby5wcF9kaXJfYmFz ZSA9Cj4gwqAJCQkJSTkxNV9SRUFEKFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSk7Cj4gLQkJZWxz ZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkKPiArCQllbHNlIGlmIChJTlRFTF9JTkZP KGRldl9wcml2KS0+Z2VuID49IDgpCj4gwqAJCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4g wqAJCQkJZXJpbmctPnZtX2luZm8ucGRwW2ldID0KPiDCoAkJCQkJSTkxNV9SRUFEKEdFTjhfUklO R19QRFBfVURXKGVuZ2luZSwgaSkpOwo+IEBAIC0xMjUzLDcgKzEyNTMsNyBAQCBzdGF0aWMgdm9p ZCBpOTE1X2NhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiDCoAlpZiAoSVNfR0VONyhkZXYpKQo+IMKgCQllcnJvci0+ZXJyX2ludCA9IEk5MTVfUkVB RChHRU43X0VSUl9JTlQpOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkg ewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOCkgewo+IMKgCQllcnJvci0+ ZmF1bHRfZGF0YTAgPSBJOTE1X1JFQUQoR0VOOF9GQVVMVF9UTEJfREFUQTApOwo+IMKgCQllcnJv ci0+ZmF1bHRfZGF0YTEgPSBJOTE1X1JFQUQoR0VOOF9GQVVMVF9UTEJfREFUQTEpOwo+IMKgCX0K PiBAQCAtMTI2NSwxMCArMTI2NSwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVnX3N0 YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAl9Cj4gwqAKPiDCoAkv KiAyOiBSZWdpc3RlcnMgd2hpY2ggYmVsb25nIHRvIG11bHRpcGxlIGdlbmVyYXRpb25zICovCj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykKPiArCWlmIChJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuID49IDcpCj4gwqAJCWVycm9yLT5mb3JjZXdha2UgPSBJOTE1X1JFQURfRlcoRk9S Q0VXQUtFX01UKTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiAr CWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYpIHsKPiDCoAkJZXJyb3ItPmRlcnJt ciA9IEk5MTVfUkVBRChERVJSTVIpOwo+IMKgCQllcnJvci0+ZXJyb3IgPSBJOTE1X1JFQUQoRVJS T1JfR0VONik7Cj4gwqAJCWVycm9yLT5kb25lX3JlZyA9IEk5MTVfUkVBRChET05FX1JFRyk7Cj4g QEAgLTEyODQsNyArMTI4NCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9yZWdfc3RhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCWlmIChIQVNfSFdfQ09OVEVY VFMoZGV2KSkKPiDCoAkJZXJyb3ItPmNjaWQgPSBJOTE1X1JFQUQoQ0NJRCk7Cj4gwqAKPiAtCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA+PSA4KSB7Cj4gwqAJCWVycm9yLT5pZXIgPSBJOTE1X1JFQUQoR0VOOF9ERV9NSVND X0lFUik7Cj4gwqAJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCj4gwqAJCQllcnJvci0+Z3RpZXJb aV0gPSBJOTE1X1JFQUQoR0VOOF9HVF9JRVIoaSkpOwo+IEBAIC0xMzE1LDcgKzEzMTUsNyBAQCBz dGF0aWMgdm9pZCBpOTE1X2Vycm9yX2NhcHR1cmVfbXNnKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gwqAKPiDCoAlsZW4gPSBzY25wcmludGYoZXJyb3ItPmVycm9yX21zZywgc2l6ZW9mKGVycm9y LT5lcnJvcl9tc2cpLAo+IMKgCQkJIkdQVSBIQU5HOiBlY29kZSAlZDolZDoweCUwOHgiLAo+IC0J CQlJTlRFTF9JTkZPKGRldiktPmdlbiwgcmluZ19pZCwgZWNvZGUpOwo+ICsJCQlJTlRFTF9JTkZP KGRldl9wcml2KS0+Z2VuLCByaW5nX2lkLCBlY29kZSk7Cj4gwqAKPiDCoAlpZiAocmluZ19pZCAh PSAtMSAmJiBlcnJvci0+cmluZ1tyaW5nX2lkXS5waWQgIT0gLTEpCj4gwqAJCWxlbiArPSBzY25w cmludGYoZXJyb3ItPmVycm9yX21zZyArIGxlbiwKPiBAQCAtMTQ1OCw3ICsxNDU4LDcgQEAgdm9p ZCBpOTE1X2dldF9leHRyYV9pbnN0ZG9uZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJf dCAqaW5zdGRvbmUpCj4gwqAJZWxzZSBpZiAoSVNfR0VONChkZXYpIHx8IElTX0dFTjUoZGV2KSB8 fCBJU19HRU42KGRldikpIHsKPiDCoAkJaW5zdGRvbmVbMF0gPSBJOTE1X1JFQUQoUklOR19JTlNU RE9ORShSRU5ERVJfUklOR19CQVNFKSk7Cj4gwqAJCWluc3Rkb25lWzFdID0gSTkxNV9SRUFEKEdF TjRfSU5TVERPTkUxKTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykg ewo+ICsJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDcpIHsKPiDCoAkJ aW5zdGRvbmVbMF0gPSBJOTE1X1JFQUQoUklOR19JTlNURE9ORShSRU5ERVJfUklOR19CQVNFKSk7 Cj4gwqAJCWluc3Rkb25lWzFdID0gSTkxNV9SRUFEKEdFTjdfU0NfSU5TVERPTkUpOwo+IMKgCQlp bnN0ZG9uZVsyXSA9IEk5MTVfUkVBRChHRU43X1NBTVBMRVJfSU5TVERPTkUpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYwo+IGluZGV4IGMzNmFhNjQuLjM5OTRjODlhIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jCj4gQEAgLTYxNyw3ICs2MTcsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2VuYWJs ZV9hc2xlX3BpcGVzdGF0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJc3Bpbl9sb2NrX2ly cSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPiDCoAo+IMKgCWk5MTVfZW5hYmxlX3BpcGVzdGF0KGRl dl9wcml2LCBQSVBFX0IsIFBJUEVfTEVHQUNZX0JMQ19FVkVOVF9TVEFUVVMpOwo+IC0JaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDQpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdl biA+PSA0KQo+IMKgCQlpOTE1X2VuYWJsZV9waXBlc3RhdChkZXZfcHJpdiwgUElQRV9BLAo+IMKg CQkJCcKgwqDCoMKgwqBQSVBFX0xFR0FDWV9CTENfRVZFTlRfU1RBVFVTKTsKPiDCoAo+IEBAIC04 MzUsNyArODM1LDcgQEAgc3RhdGljIGludCBpOTE1X2dldF9jcnRjX3NjYW5vdXRwb3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUsCj4gwqAJaWYgKHN0aW1lKQo+IMKg CQkqc3RpbWUgPSBrdGltZV9nZXQoKTsKPiDCoAo+IC0JaWYgKElTX0dFTjIoZGV2KSB8fCBJU19H NFgoZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7Cj4gKwlpZiAoSVNfR0VOMihk ZXYpIHx8IElTX0c0WChkZXYpIHx8IElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNSkgewo+ IMKgCQkvKiBObyBvYnZpb3VzIHBpeGVsY291bnQgcmVnaXN0ZXIuIE9ubHkgcXVlcnkgdmVydGlj YWwKPiDCoAkJwqAqIHNjYW5vdXQgcG9zaXRpb24gZnJvbSBEaXNwbGF5IHNjYW4gbGluZSByZWdp c3Rlci4KPiDCoAkJwqAqLwo+IEBAIC04OTcsNyArODk3LDcgQEAgc3RhdGljIGludCBpOTE1X2dl dF9jcnRjX3NjYW5vdXRwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBp cGUsCj4gwqAJZWxzZQo+IMKgCQlwb3NpdGlvbiArPSB2dG90YWwgLSB2YmxfZW5kOwo+IMKgCj4g LQlpZiAoSVNfR0VOMihkZXYpIHx8IElTX0c0WChkZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDUpIHsKPiArCWlmIChJU19HRU4yKGRldikgfHwgSVNfRzRYKGRldikgfHwgSU5URUxfSU5G TyhkZXZfcHJpdiktPmdlbiA+PSA1KSB7Cj4gwqAJCSp2cG9zID0gcG9zaXRpb247Cj4gwqAJCSpo cG9zID0gMDsKPiDCoAl9IGVsc2Ugewo+IEBAIC0xNTkxLDEyICsxNTkxLDEyIEBAIHN0YXRpYyB2 b2lkIGk5eHhfcGlwZV9jcmNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51 bSBwaXBlIHBpcGUpCj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiDCoAl1aW50MzJfdCByZXMxLCByZXMyOwo+IMKgCj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gMykKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu ID49IDMpCj4gwqAJCXJlczEgPSBJOTE1X1JFQUQoUElQRV9DUkNfUkVTX1JFUzFfSTkxNShwaXBl KSk7Cj4gwqAJZWxzZQo+IMKgCQlyZXMxID0gMDsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRldikpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdikt PmdlbiA+PSA1IHx8IElTX0c0WChkZXYpKQo+IMKgCQlyZXMyID0gSTkxNV9SRUFEKFBJUEVfQ1JD X1JFU19SRVMyX0c0WChwaXBlKSk7Cj4gwqAJZWxzZQo+IMKgCQlyZXMyID0gMDsKPiBAQCAtMjIx NSw3ICsyMjE1LDcgQEAgc3RhdGljIGlycXJldHVybl90IGlyb25sYWtlX2lycV9oYW5kbGVyKGlu dCBpcnEsIHZvaWQgKmFyZykKPiDCoAlpZiAoZ3RfaWlyKSB7Cj4gwqAJCUk5MTVfV1JJVEUoR1RJ SVIsIGd0X2lpcik7Cj4gwqAJCXJldCA9IElSUV9IQU5ETEVEOwo+IC0JCWlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA2KQo+ICsJCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYp Cj4gwqAJCQlzbmJfZ3RfaXJxX2hhbmRsZXIoZGV2LCBkZXZfcHJpdiwgZ3RfaWlyKTsKPiDCoAkJ ZWxzZQo+IMKgCQkJaWxrX2d0X2lycV9oYW5kbGVyKGRldiwgZGV2X3ByaXYsIGd0X2lpcik7Cj4g QEAgLTIyMjUsMTMgKzIyMjUsMTMgQEAgc3RhdGljIGlycXJldHVybl90IGlyb25sYWtlX2lycV9o YW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiDCoAlpZiAoZGVfaWlyKSB7Cj4gwqAJCUk5MTVf V1JJVEUoREVJSVIsIGRlX2lpcik7Cj4gwqAJCXJldCA9IElSUV9IQU5ETEVEOwo+IC0JCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KQo+ICsJCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+ Z2VuID49IDcpCj4gwqAJCQlpdmJfZGlzcGxheV9pcnFfaGFuZGxlcihkZXYsIGRlX2lpcik7Cj4g wqAJCWVsc2UKPiDCoAkJCWlsa19kaXNwbGF5X2lycV9oYW5kbGVyKGRldiwgZGVfaWlyKTsKPiDC oAl9Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KSB7Cj4gKwlpZiAoSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA2KSB7Cj4gwqAJCXUzMiBwbV9paXIgPSBJOTE1X1JF QUQoR0VONl9QTUlJUik7Cj4gwqAJCWlmIChwbV9paXIpIHsKPiDCoAkJCUk5MTVfV1JJVEUoR0VO Nl9QTUlJUiwgcG1faWlyKTsKPiBAQCAtMjYxNCw3ICsyNjE0LDcgQEAgc3RhdGljIHZvaWQgaTkx NV9yZXBvcnRfYW5kX2NsZWFyX2VpcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCQlwcl9l cnIoIsKgwqBJTlNUUE06IDB4JTA4eFxuIiwgSTkxNV9SRUFEKElOU1RQTSkpOwo+IMKgCQlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnN0ZG9uZSk7IGkrKykKPiDCoAkJCXByX2VycigiwqDC oElOU1RET05FXyVkOiAweCUwOHhcbiIsIGksIGluc3Rkb25lW2ldKTsKPiAtCQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPCA0KSB7Cj4gKwkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4g PCA0KSB7Cj4gwqAJCQl1MzIgaXBlaXIgPSBJOTE1X1JFQUQoSVBFSVIpOwo+IMKgCj4gwqAJCQlw cl9lcnIoIsKgwqBJUEVJUjogMHglMDh4XG4iLCBJOTE1X1JFQUQoSVBFSVIpKTsKPiBAQCAtMjcw NCw3ICsyNzA0LDcgQEAgc3RhdGljIGludCBpOTE1X2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gwqAJdW5zaWduZWQgbG9uZyBpcnFmbGFn czsKPiDCoAo+IMKgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZs YWdzKTsKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KQo+ICsJaWYgKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPj0gNCkKPiDCoAkJaTkxNV9lbmFibGVfcGlwZXN0YXQoZGV2X3By aXYsIHBpcGUsCj4gwqAJCQkJwqDCoMKgwqDCoFBJUEVfU1RBUlRfVkJMQU5LX0lOVEVSUlVQVF9T VEFUVVMpOwo+IMKgCWVsc2UKPiBAQCAtMjcxOSw3ICsyNzE5LDcgQEAgc3RhdGljIGludCBpcm9u bGFrZV9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBw aXBlKQo+IMKgewo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gwqAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAtCXVpbnQzMl90IGJp dCA9IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSA/IERFX1BJUEVfVkJMQU5LX0lWQihwaXBl KSA6Cj4gKwl1aW50MzJfdCBiaXQgPSAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA3KSA/ IERFX1BJUEVfVkJMQU5LX0lWQihwaXBlKSA6Cj4gwqAJCQkJCQnCoMKgwqDCoMKgREVfUElQRV9W QkxBTksocGlwZSk7Cj4gwqAKPiDCoAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9s b2NrLCBpcnFmbGFncyk7Cj4gQEAgLTI3NzMsNyArMjc3Myw3IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBw aXBlKQo+IMKgewo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gwqAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAtCXVpbnQzMl90IGJp dCA9IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSA/IERFX1BJUEVfVkJMQU5LX0lWQihwaXBl KSA6Cj4gKwl1aW50MzJfdCBiaXQgPSAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA3KSA/ IERFX1BJUEVfVkJMQU5LX0lWQihwaXBlKSA6Cj4gwqAJCQkJCQnCoMKgwqDCoMKgREVfUElQRV9W QkxBTksocGlwZSk7Cj4gwqAKPiDCoAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9s b2NrLCBpcnFmbGFncyk7Cj4gQEAgLTMwMzYsNyArMzAzNiw3IEBAIHJpbmdfc3R1Y2soc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1NjQgYWN0aGQpCj4gwqAJCXJldHVybiBIQU5HQ0hF Q0tfS0lDSzsKPiDCoAl9Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2ICYm IHRtcCAmIFJJTkdfV0FJVF9TRU1BUEhPUkUpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2 KS0+Z2VuID49IDYgJiYgdG1wICYgUklOR19XQUlUX1NFTUFQSE9SRSkgewo+IMKgCQlzd2l0Y2gg KHNlbWFwaG9yZV9wYXNzZWQoZW5naW5lKSkgewo+IMKgCQlkZWZhdWx0Ogo+IMKgCQkJcmV0dXJu IEhBTkdDSEVDS19IVU5HOwo+IEBAIC0zMjU3LDcgKzMyNTcsNyBAQCBzdGF0aWMgdm9pZCBnZW41 X2d0X2lycV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAKPiDCoAlHRU41X0lS UV9SRVNFVChHVCk7Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikKPiArCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYpCj4gwqAJCUdFTjVfSVJRX1JFU0VUKEdFTjZf UE0pOwo+IMKgfQo+IMKgCj4gQEAgLTM0NTcsMTIgKzM0NTcsMTIgQEAgc3RhdGljIHZvaWQgaWxr X2hwZF9pcnFfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCXUzMiBob3RwbHVn X2lycXMsIGhvdHBsdWcsIGVuYWJsZWRfaXJxczsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDgpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDgpIHsK PiDCoAkJaG90cGx1Z19pcnFzID0gR0VOOF9QT1JUX0RQX0FfSE9UUExVRzsKPiDCoAkJZW5hYmxl ZF9pcnFzID0gaW50ZWxfaHBkX2VuYWJsZWRfaXJxcyhkZXYsIGhwZF9iZHcpOwo+IMKgCj4gwqAJ CWJkd191cGRhdGVfcG9ydF9pcnEoZGV2X3ByaXYsIGhvdHBsdWdfaXJxcywgZW5hYmxlZF9pcnFz KTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykgewo+ICsJfSBlbHNl IGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDcpIHsKPiDCoAkJaG90cGx1Z19pcnFz ID0gREVfRFBfQV9IT1RQTFVHX0lWQjsKPiDCoAkJZW5hYmxlZF9pcnFzID0gaW50ZWxfaHBkX2Vu YWJsZWRfaXJxcyhkZXYsIGhwZF9pdmIpOwo+IMKgCj4gQEAgLTM1NjQsNyArMzU2NCw3IEBAIHN0 YXRpYyB2b2lkIGdlbjVfZ3RfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gwqAKPiDCoAlHRU41X0lSUV9JTklUKEdULCBkZXZfcHJpdi0+Z3RfaXJxX21hc2ssIGd0X2ly cXMpOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJaWYgKElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikgewo+IMKgCQkvKgo+IMKgCQnCoCogUlBTIGlu dGVycnVwdHMgd2lsbCBnZXQgZW5hYmxlZC9kaXNhYmxlZCBvbiBkZW1hbmQgd2hlbiBSUFMKPiDC oAkJwqAqIGl0c2VsZiBpcyBlbmFibGVkL2Rpc2FibGVkLgo+IEBAIC0zNTgyLDcgKzM1ODIsNyBA QCBzdGF0aWMgaW50IGlyb25sYWtlX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gwqAJdTMyIGRpc3BsYXlfbWFzaywgZXh0cmFfbWFzazsKPiDCoAo+IC0JaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDcpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+ Z2VuID49IDcpIHsKPiDCoAkJZGlzcGxheV9tYXNrID0gKERFX01BU1RFUl9JUlFfQ09OVFJPTCB8 IERFX0dTRV9JVkIgfAo+IMKgCQkJCURFX1BDSF9FVkVOVF9JVkIgfCBERV9QTEFORUNfRkxJUF9E T05FX0lWQiB8Cj4gwqAJCQkJREVfUExBTkVCX0ZMSVBfRE9ORV9JVkIgfAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfc3VzcGVuZC5jCj4gaW5kZXggMzRlMDYxYS4uMzRjOWVkNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4gQEAgLTM0LDEzICszNCwxMyBAQCBzdGF0aWMgdm9p ZCBpOTE1X3NhdmVfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAKPiDCoAkv KiBEaXNwbGF5IGFyYml0cmF0aW9uIGNvbnRyb2wgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA8PSA0KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPD0gNCkKPiDCoAkJ ZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZURTUEFSQiA9IEk5MTVfUkVBRChEU1BBUkIpOwo+IMKgCj4g wqAJLyogTFZEUyBzdGF0ZSAqLwo+IMKgCWlmIChIQVNfUENIX0lCWChkZXYpIHx8IEhBU19QQ0hf Q1BUKGRldikpCj4gwqAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVMVkRTID0gSTkxNV9SRUFEKFBD SF9MVkRTKTsKPiAtCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQgJiYgSVNfTU9C SUxFKGRldikgJiYgIUlTX0k4MzAoZGV2KSkKPiArCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPD0gNCAmJiBJU19NT0JJTEUoZGV2KSAmJiAhSVNfSTgzMChkZXYpKQo+IMKgCQlk ZXZfcHJpdi0+cmVnZmlsZS5zYXZlTFZEUyA9IEk5MTVfUkVBRChMVkRTKTsKPiDCoAo+IMKgCS8q IFBhbmVsIHBvd2VyIHNlcXVlbmNlciAqLwo+IEBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB2b2lk IGk5MTVfc2F2ZV9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCWRldl9wcml2 LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUENIX1BQX09OX0RFTEFZUyk7 Cj4gwqAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkxNV9SRUFEKFBD SF9QUF9PRkZfREVMQVlTKTsKPiDCoAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1Ig PSBJOTE1X1JFQUQoUENIX1BQX0RJVklTT1IpOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA8PSA0KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4g PD0gNCkgewo+IMKgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfQ09OVFJPTCA9IEk5MTVfUkVB RChQUF9DT05UUk9MKTsKPiDCoAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyA9 IEk5MTVfUkVBRChQUF9PTl9ERUxBWVMpOwo+IMKgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBf T0ZGX0RFTEFZUyA9IEk5MTVfUkVBRChQUF9PRkZfREVMQVlTKTsKPiBAQCAtNTcsNyArNTcsNyBA QCBzdGF0aWMgdm9pZCBpOTE1X3NhdmVfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ IMKgCX0KPiDCoAo+IMKgCS8qIHNhdmUgRkJDIGludGVydmFsICovCj4gLQlpZiAoSEFTX0ZCQyhk ZXYpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0WChkZXYpKQo+ICsJaWYg KEhBU19GQkMoZGV2KSAmJiBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0 WChkZXYpKQo+IMKgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlRkJDX0NPTlRST0wgPSBJOTE1X1JF QUQoRkJDX0NPTlRST0wpOwo+IMKgfQo+IMKgCj4gQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIHZv aWQgaTkxNV9yZXN0b3JlX2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAl1MzIg bWFzayA9IDB4ZmZmZmZmZmY7Cj4gwqAKPiDCoAkvKiBEaXNwbGF5IGFyYml0cmF0aW9uICovCj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuIDw9IDQpCj4gwqAJCUk5MTVfV1JJVEUoRFNQQVJCLCBkZXZfcHJpdi0+cmVnZmls ZS5zYXZlRFNQQVJCKTsKPiDCoAo+IMKgCW1hc2sgPSB+TFZEU19QT1JUX0VOOwo+IEBAIC03NSw3 ICs3NSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzdG9yZV9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gwqAJLyogTFZEUyBzdGF0ZSAqLwo+IMKgCWlmIChIQVNfUENIX0lCWChkZXYp IHx8IEhBU19QQ0hfQ1BUKGRldikpCj4gwqAJCUk5MTVfV1JJVEUoUENIX0xWRFMsIGRldl9wcml2 LT5yZWdmaWxlLnNhdmVMVkRTICYgbWFzayk7Cj4gLQllbHNlIGlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA8PSA0ICYmIElTX01PQklMRShkZXYpICYmICFJU19JODMwKGRldikpCj4gKwllbHNlIGlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDQgJiYgSVNfTU9CSUxFKGRldikgJiYgIUlT X0k4MzAoZGV2KSkKPiDCoAkJSTkxNV9XUklURShMVkRTLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZl TFZEUyAmIG1hc2spOwo+IMKgCj4gwqAJLyogUGFuZWwgcG93ZXIgc2VxdWVuY2VyICovCj4gQEAg LTg0LDcgKzg0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXN0b3JlX2Rpc3BsYXkoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiDCoAkJSTkxNV9XUklURShQQ0hfUFBfT0ZGX0RFTEFZUywgZGV2X3By aXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+IMKgCQlJOTE1X1dSSVRFKFBDSF9QUF9E SVZJU09SLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfRElWSVNPUik7Cj4gwqAJCUk5MTVfV1JJ VEUoUENIX1BQX0NPTlRST0wsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9DT05UUk9MKTsKPiAt CX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCkgewo+ICsJfSBlbHNlIGlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDQpIHsKPiDCoAkJSTkxNV9XUklURShQUF9PTl9E RUxBWVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMpOwo+IMKgCQlJOTE1X1dS SVRFKFBQX09GRl9ERUxBWVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTKTsK PiDCoAkJSTkxNV9XUklURShQUF9ESVZJU09SLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfRElW SVNPUik7Cj4gQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXN0b3JlX2Rpc3Bs YXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAlpbnRlbF9mYmNfZ2xvYmFsX2Rpc2FibGUo ZGV2X3ByaXYpOwo+IMKgCj4gwqAJLyogcmVzdG9yZSBGQkMgaW50ZXJ2YWwgKi8KPiAtCWlmIChI QVNfRkJDKGRldikgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCAmJiAhSVNfRzRYKGRldikp Cj4gKwlpZiAoSEFTX0ZCQyhkZXYpICYmIElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPD0gNCAm JiAhSVNfRzRYKGRldikpCj4gwqAJCUk5MTVfV1JJVEUoRkJDX0NPTlRST0wsIGRldl9wcml2LT5y ZWdmaWxlLnNhdmVGQkNfQ09OVFJPTCk7Cj4gwqAKPiDCoAlpOTE1X3JlZGlzYWJsZV92Z2EoZGV2 KTsKPiBAQCAtMTE1LDcgKzExNSw3IEBAIGludCBpOTE1X3NhdmVfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiDCoAkJCQnCoMKgwqDCoMKgJmRldl9wcml2LT5yZWdmaWxlLnNhdmVHQ0RH TUJVUyk7Cj4gwqAKPiDCoAkvKiBDYWNoZSBtb2RlIHN0YXRlICovCj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA3KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA3KQo+ IMKgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlQ0FDSEVfTU9ERV8wID0gSTkxNV9SRUFEKENBQ0hF X01PREVfMCk7Cj4gwqAKPiDCoAkvKiBNZW1vcnkgQXJiaXRyYXRpb24gc3RhdGUgKi8KPiBAQCAt MTYxLDcgKzE2MSw3IEBAIGludCBpOTE1X3Jlc3RvcmVfc3RhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiDCoAlpOTE1X3Jlc3RvcmVfZGlzcGxheShkZXYpOwo+IMKgCj4gwqAJLyogQ2FjaGUg bW9kZSBzdGF0ZSAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNykKPiArCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwgNykKPiDCoAkJSTkxNV9XUklURShDQUNIRV9NT0RF XzAsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVDQUNIRV9NT0RFXzAgfAo+IMKgCQkJwqDCoMKgMHhm ZmZmMDAwMCk7Cj4gwqAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPiBpbmRleCAxYjNm OTc0Li44ZTM0MDIwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nv bG9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gQEAgLTE3 OSw3ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfY3NjX21hdHJpeChzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gwqAJSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZf TUUocGlwZSksIDApOwo+IMKgCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX0xPKHBpcGUpLCAw KTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gNikgewo+ICsJaWYgKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPiA2KSB7Cj4gwqAJCXVpbnQxNl90IHBvc3RvZmYgPSAwOwo+ IMKgCj4gwqAJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4g QEAgLTM0Niw3ICszNDYsNyBAQCBzdGF0aWMgdm9pZCBicm9hZHdlbGxfbG9hZF9sdXRzKHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq aW50ZWxfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKHN0YXRlKTsKPiDCoAllbnVtIHBpcGUg cGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gLQl1aW50MzJfdCBpLCBsdXRfc2l6 ZSA9IElOVEVMX0lORk8oZGV2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZTsKPiArCXVpbnQzMl90 IGksIGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3Np emU7Cj4gwqAKPiDCoAlpZiAoY3J0Y19zdGF0ZV9pc19sZWdhY3koc3RhdGUpKSB7Cj4gwqAJCWhh c3dlbGxfbG9hZF9sdXRzKHN0YXRlKTsKPiBAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyB2b2lk IGNoZXJyeXZpZXdfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCj4gwqAK PiDCoAlpZiAoc3RhdGUtPmRlZ2FtbWFfbHV0KSB7Cj4gwqAJCWx1dCA9IChzdHJ1Y3QgZHJtX2Nv bG9yX2x1dCAqKSBzdGF0ZS0+ZGVnYW1tYV9sdXQtPmRhdGE7Cj4gLQkJbHV0X3NpemUgPSBJTlRF TF9JTkZPKGRldiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemU7Cj4gKwkJbHV0X3NpemUgPSBJTlRF TF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZTsKPiDCoAkJZm9yIChpID0g MDsgaSA8IGx1dF9zaXplOyBpKyspIHsKPiDCoAkJCS8qIFdyaXRlIExVVCBpbiBVMC4xNCBmb3Jt YXQuICovCj4gwqAJCQl3b3JkMCA9Cj4gQEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGF0aWMgdm9pZCBj aGVycnl2aWV3X2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+IMKgCj4g wqAJaWYgKHN0YXRlLT5nYW1tYV9sdXQpIHsKPiDCoAkJbHV0ID0gKHN0cnVjdCBkcm1fY29sb3Jf bHV0ICopIHN0YXRlLT5nYW1tYV9sdXQtPmRhdGE7Cj4gLQkJbHV0X3NpemUgPSBJTlRFTF9JTkZP KGRldiktPmNvbG9yLmdhbW1hX2x1dF9zaXplOwo+ICsJCWx1dF9zaXplID0gSU5URUxfSU5GTyhk ZXZfcHJpdiktPmNvbG9yLmdhbW1hX2x1dF9zaXplOwo+IMKgCQlmb3IgKGkgPSAwOyBpIDwgbHV0 X3NpemU7IGkrKykgewo+IMKgCQkJLyogV3JpdGUgTFVUIGluIFUwLjEwIGZvcm1hdC4gKi8KPiDC oAkJCXdvcmQwID0KPiBAQCAtNTQ1LDkgKzU0NSw5IEBAIHZvaWQgaW50ZWxfY29sb3JfaW5pdChz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gwqAJfQo+IMKgCj4gwqAJLyogRW5hYmxlIGNvbG9yIG1h bmFnZW1lbnQgc3VwcG9ydCB3aGVuIHdlIGhhdmUgZGVnYW1tYSAmIGdhbW1hIExVVHMuICovCj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5jb2xvci5kZWdhbW1hX2x1dF9zaXplICE9IDAgJiYKPiAt CcKgwqDCoMKgSU5URUxfSU5GTyhkZXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZSAhPSAwKQo+ICsJ aWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5kZWdhbW1hX2x1dF9zaXplICE9IDAgJiYK PiArCcKgwqDCoMKgSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmdhbW1hX2x1dF9zaXplICE9 IDApCj4gwqAJCWRybV9oZWxwZXJfY3J0Y19lbmFibGVfY29sb3JfbWdtdChjcnRjLAo+IC0JCQkJ CUlOVEVMX0lORk8oZGV2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZSwKPiAtCQkJCQlJTlRFTF9J TkZPKGRldiktPmNvbG9yLmdhbW1hX2x1dF9zaXplKTsKPiArCQkJCQlJTlRFTF9JTkZPKGRldl9w cml2KS0+Y29sb3IuZGVnYW1tYV9sdXRfc2l6ZSwKPiArCQkJCQlJTlRFTF9JTkZPKGRldl9wcml2 KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemUpOwo+IMKgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5j Cj4gaW5kZXggYTJhMzFmZC4uYmRjMTVhOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jcnQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5j Cj4gQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRfc2V0X2RwbXMoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCBtb2RlKQo+IMKgCWNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1 c3RlZF9tb2RlOwo+IMKgCXUzMiBhZHBhOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNSkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUpCj4gwqAJCWFk cGEgPSBBRFBBX0hPVFBMVUdfQklUUzsKPiDCoAllbHNlCj4gwqAJCWFkcGEgPSAwOwo+IEBAIC02 NDcsNyArNjQ3LDcgQEAgaW50ZWxfY3J0X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLCBib29sIGZvcmNlKQo+IMKgCWlmIChpbnRlbF9nZXRfbG9hZF9kZXRlY3RfcGlwZShj b25uZWN0b3IsIE5VTEwsICZ0bXAsICZjdHgpKSB7Cj4gwqAJCWlmIChpbnRlbF9jcnRfZGV0ZWN0 X2RkYyhjb25uZWN0b3IpKQo+IMKgCQkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0 ZWQ7Cj4gLQkJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+ICsJCWVsc2UgaWYg KElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA0KQo+IMKgCQkJc3RhdHVzID0gaW50ZWxfY3J0 X2xvYWRfZGV0ZWN0KGNydCwKPiDCoAkJCQl0b19pbnRlbF9jcnRjKGNvbm5lY3Rvci0+c3RhdGUt PmNydGMpLT5waXBlKTsKPiDCoAkJZWxzZSBpZiAoaTkxNS5sb2FkX2RldGVjdF90ZXN0KQo+IEBA IC03MTMsNyArNzEzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0X3Jlc2V0KHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0ICpjcnQgPSBpbnRl bF9hdHRhY2hlZF9jcnQoY29ubmVjdG9yKTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDUpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUpIHsKPiDC oAkJdTMyIGFkcGE7Cj4gwqAKPiDCoAkJYWRwYSA9IEk5MTVfUkVBRChjcnQtPmFkcGFfcmVnKTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGluZGV4IDkyMWVkZjEuLmE2MzMxNTUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0xNjU3LDcgKzE2NTcsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kZGlfcG9zdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9l bmNvZGVyKQo+IMKgCWlmIChJU19TS1lMQUtFKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkKPiDC oAkJSTkxNV9XUklURShEUExMX0NUUkwyLCAoSTkxNV9SRUFEKERQTExfQ1RSTDIpIHwKPiDCoAkJ CQkJRFBMTF9DVFJMMl9ERElfQ0xLX09GRihwb3J0KSkpOwo+IC0JZWxzZSBpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA5KQo+ICsJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8 IDkpCj4gwqAJCUk5MTVfV1JJVEUoUE9SVF9DTEtfU0VMKHBvcnQpLCBQT1JUX0NMS19TRUxfTk9O RSk7Cj4gwqB9Cj4gwqAKPiBAQCAtMTY4NSw3ICsxNjg1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZW5hYmxlX2RkaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiDCoAl9IGVs c2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+IMKgCQlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+IMKgCj4gLQkJaWYgKHBvcnQg PT0gUE9SVF9BICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkKPiArCQlpZiAocG9ydCA9PSBQ T1JUX0EgJiYgSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDkpCj4gwqAJCQlpbnRlbF9kcF9z dG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+IMKgCj4gwqAJCWludGVsX2VkcF9iYWNrbGlnaHRf b24oaW50ZWxfZHApOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBm ZWI3MDI4Li45NDIwNjM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ IEBAIC0xMTE2LDcgKzExMTYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF93YWl0X2Zvcl9waXBlX29m ZihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiDCoAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5z Y29kZXIgPSBjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwo+IMKgCWVudW0gcGlwZSBwaXBl ID0gY3J0Yy0+cGlwZTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsK PiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpIHsKPiDCoAkJaTkxNV9yZWdf dCByZWcgPSBQSVBFQ09ORihjcHVfdHJhbnNjb2Rlcik7Cj4gwqAKPiDCoAkJLyogV2FpdCBmb3Ig dGhlIFBpcGUgU3RhdGUgdG8gZ28gb2ZmICovCj4gQEAgLTEzMzQsMTEgKzEzMzQsMTAgQEAgc3Rh dGljIHZvaWQgYXNzZXJ0X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiDCoHN0YXRpYyB2b2lkIGFzc2VydF9wbGFuZXNfZGlzYWJsZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+IMKgCQkJCcKgwqDCoGVudW0gcGlwZSBwaXBlKQo+IMKgewo+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gwqAJaW50IGk7Cj4gwqAK PiDCoAkvKiBQcmltYXJ5IHBsYW5lcyBhcmUgZml4ZWQgdG8gcGlwZXMgb24gZ2VuNCsgKi8KPiAt CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZf cHJpdiktPmdlbiA+PSA0KSB7Cj4gwqAJCXUzMiB2YWwgPSBJOTE1X1JFQUQoRFNQQ05UUihwaXBl KSk7Cj4gwqAJCUk5MTVfU1RBVEVfV0FSTih2YWwgJiBESVNQTEFZX1BMQU5FX0VOQUJMRSwKPiDC oAkJwqDCoMKgwqDCoCJwbGFuZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIGRpc2Fi bGVkIGJ1dCBub3RcbiIsCj4gQEAgLTEzNjMsNyArMTM2Miw3IEBAIHN0YXRpYyB2b2lkIGFzc2Vy dF9zcHJpdGVzX2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDC oAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiDCoAlpbnQgc3ByaXRl Owo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICsJaWYgKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkgewo+IMKgCQlmb3JfZWFjaF9zcHJpdGUoZGV2X3By aXYsIHBpcGUsIHNwcml0ZSkgewo+IMKgCQkJdTMyIHZhbCA9IEk5MTVfUkVBRChQTEFORV9DVEwo cGlwZSwgc3ByaXRlKSk7Cj4gwqAJCQlJOTE1X1NUQVRFX1dBUk4odmFsICYgUExBTkVfQ1RMX0VO QUJMRSwKPiBAQCAtMTM3NywxMiArMTM3NiwxMiBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfc3ByaXRl c19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCQnCoMKg wqDCoMKgInNwcml0ZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBvbiBwaXBl ICVjIGJ1dCBpcyBzdGlsbCBhY3RpdmVcbiIsCj4gwqAJCQnCoMKgwqDCoMKgc3ByaXRlX25hbWUo cGlwZSwgc3ByaXRlKSwgcGlwZV9uYW1lKHBpcGUpKTsKPiDCoAkJfQo+IC0JfSBlbHNlIGlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2 X3ByaXYpLT5nZW4gPj0gNykgewo+IMKgCQl1MzIgdmFsID0gSTkxNV9SRUFEKFNQUkNUTChwaXBl KSk7Cj4gwqAJCUk5MTVfU1RBVEVfV0FSTih2YWwgJiBTUFJJVEVfRU5BQkxFLAo+IMKgCQnCoMKg wqDCoMKgInNwcml0ZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBvbiBwaXBl ICVjIGJ1dCBpcyBzdGlsbCBhY3RpdmVcbiIsCj4gwqAJCcKgwqDCoMKgwqBwbGFuZV9uYW1lKHBp cGUpLCBwaXBlX25hbWUocGlwZSkpOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+PSA1KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNSkg ewo+IMKgCQl1MzIgdmFsID0gSTkxNV9SRUFEKERWU0NOVFIocGlwZSkpOwo+IMKgCQlJOTE1X1NU QVRFX1dBUk4odmFsICYgRFZTX0VOQUJMRSwKPiDCoAkJwqDCoMKgwqDCoCJzcHJpdGUgJWMgYXNz ZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBvZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0 aXZlXG4iLAo+IEBAIC0xNjY0LDcgKzE2NjMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9w bGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gwqAJUE9TVElOR19SRUFEKHJlZyk7Cj4gwqAJ dWRlbGF5KDE1MCk7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4g KwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA0KSB7Cj4gwqAJCUk5MTVfV1JJVEUo RFBMTF9NRChjcnRjLT5waXBlKSwKPiDCoAkJCcKgwqDCoGNydGMtPmNvbmZpZy0+ZHBsbF9od19z dGF0ZS5kcGxsX21kKTsKPiDCoAl9IGVsc2Ugewo+IEBAIC0yNjM5LDcgKzI2MzgsNyBAQCBzdGF0 aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1h cnksCj4gwqAKPiDCoAlkc3BjbnRyIHw9IERJU1BMQVlfUExBTkVfRU5BQkxFOwo+IMKgCj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA8IDQpIHsKPiDCoAkJaWYgKGludGVsX2NydGMtPnBpcGUgPT0gUElQRV9CKQo+IMKg CQkJZHNwY250ciB8PSBESVNQUExBTkVfU0VMX1BJUEVfQjsKPiDCoAo+IEBAIC0yNjg0LDcgKzI2 ODMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnByaW1hcnksCj4gwqAJCUJVRygpOwo+IMKgCX0KPiDCoAo+IC0JaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDQgJiYKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49 IDQgJiYKPiDCoAnCoMKgwqDCoG9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9ORSkK PiDCoAkJZHNwY250ciB8PSBESVNQUExBTkVfVElMRUQ7Cj4gwqAKPiBAQCAtMjY5Myw3ICsyNjky LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwcmltYXJ5LAo+IMKgCj4gwqAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1sw XSArIHggKiBjcHA7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4g KwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA0KSB7Cj4gwqAJCWludGVsX2NydGMt PmRzcGFkZHJfb2Zmc2V0ID0KPiDCoAkJCWludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoJngsICZ5 LCBmYiwgMCwKPiDCoAkJCQkJCcKgwqBmYi0+cGl0Y2hlc1swXSwgcm90YXRpb24pOwo+IEBAIC0y NzIxLDcgKzI3MjAsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCj4gwqAJSTkxNV9XUklURShyZWcsIGRzcGNudHIpOwo+ IMKgCj4gwqAJSTkxNV9XUklURShEU1BTVFJJREUocGxhbmUpLCBmYi0+cGl0Y2hlc1swXSk7Cj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2 X3ByaXYpLT5nZW4gPj0gNCkgewo+IMKgCQlJOTE1X1dSSVRFKERTUFNVUkYocGxhbmUpLAo+IMKg CQkJwqDCoMKgaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikgKyBpbnRlbF9jcnRjLT5kc3Bh ZGRyX29mZnNldCk7Cj4gwqAJCUk5MTVfV1JJVEUoRFNQVElMRU9GRihwbGFuZSksICh5IDw8IDE2 KSB8IHgpOwo+IEBAIC0zMTYwLDcgKzMxNTksNyBAQCB2b2lkIGludGVsX2ZpbmlzaF9yZXNldChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCQlyZXR1cm47Cj4gwqAKPiDCoAkvKiByZXNldCBk b2Vzbid0IHRvdWNoIHRoZSBkaXNwbGF5ICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gNSB8fCBJU19HNFgoZGV2KSkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4g Pj0gNSB8fCBJU19HNFgoZGV2KSkgewo+IMKgCQkvKgo+IMKgCQnCoCogRmxpcHMgaW4gdGhlIHJp bmdzIGhhdmUgYmVlbiBudWtlZCBieSB0aGUgcmVzZXQsCj4gwqAJCcKgKiBzbyB1cGRhdGUgdGhl IGJhc2UgYWRkcmVzcyBvZiBhbGwgcHJpbWFyeQo+IEBAIC0zMjQyLDcgKzMyNDEsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF91cGRhdGVfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gwqAJCcKgwqDCoChwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCAtIDEpKTsKPiDCoAo+IMKgCS8q IG9uIHNreWxha2UgdGhpcyBpcyBkb25lIGJ5IGRldGFjaGluZyBzY2FsZXJzICovCj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYp LT5nZW4gPj0gOSkgewo+IMKgCQlza2xfZGV0YWNoX3NjYWxlcnMoY3J0Yyk7Cj4gwqAKPiDCoAkJ aWYgKHBpcGVfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKQo+IEBAIC00ODcwLDcgKzQ4NjksNyBA QCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiDCoAlpZiAoIWludGVsX2NydGMtPmNvbmZpZy0+aGFzX2RzaV9lbmNvZGVyKQo+IMKgCQlpbnRl bF9kZGlfZW5hYmxlX3BpcGVfY2xvY2soaW50ZWxfY3J0Yyk7Cj4gwqAKPiAtCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0g OSkKPiDCoAkJc2t5bGFrZV9wZml0X2VuYWJsZShpbnRlbF9jcnRjKTsKPiDCoAllbHNlCj4gwqAJ CWlyb25sYWtlX3BmaXRfZW5hYmxlKGludGVsX2NydGMpOwo+IEBAIC01MDM1LDcgKzUwMzQsNyBA QCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gwqAJaWYgKCFpbnRlbF9jcnRjLT5jb25maWctPmhhc19kc2lfZW5jb2RlcikKPiDCoAkJaW50 ZWxfZGRpX2Rpc2FibGVfdHJhbnNjb2Rlcl9mdW5jKGRldl9wcml2LCBjcHVfdHJhbnNjb2Rlcik7 Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICsJaWYgKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkKPiDCoAkJc2t5bGFrZV9zY2FsZXJfZGlzYWJsZShpbnRl bF9jcnRjKTsKPiDCoAllbHNlCj4gwqAJCWlyb25sYWtlX3BmaXRfZGlzYWJsZShpbnRlbF9jcnRj LCBmYWxzZSk7Cj4gQEAgLTY1NDMsNyArNjU0Miw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19j b21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiDCoAljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1 c3RlZF9tb2RlOwo+IMKgCj4gwqAJLyogRklYTUUgc2hvdWxkIGNoZWNrIHBpeGVsIGNsb2NrIGxp bWl0cyBvbiBhbGwgcGxhdGZvcm1zICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0 KSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDQpIHsKPiDCoAkJaW50IGNs b2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOSAvIDEwOwo+IMKgCj4gwqAJ CS8qCj4gQEAgLTY1NzcsNyArNjU3Niw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19jb21wdXRl X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiDCoAkvKiBDYW50aWdhKyBjYW5ub3Qg aGFuZGxlIG1vZGVzIHdpdGggYSBoc3luYyBmcm9udCBwb3JjaCBvZiAwLgo+IMKgCcKgKiBXYVBy dW5lTW9kZVdpdGhJbmNvcnJlY3RIc3luY09mZnNldDpjdGcsZWxrLGlsayxzbmIsaXZiLHZsdixo c3cuCj4gwqAJwqAqLwo+IC0JaWYgKChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDQgfHwgSVNfRzRY KGRldikpICYmCj4gKwlpZiAoKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPiA0IHx8IElTX0c0 WChkZXYpKSAmJgo+IMKgCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID09IGFkanVz dGVkX21vZGUtPmNydGNfaGRpc3BsYXkpCj4gwqAJCXJldHVybiAtRUlOVkFMOwo+IMKgCj4gQEAg LTcxMTksNyArNzExOCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9t X24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gwqAJaW50IHBpcGUgPSBjcnRjLT5waXBlOwo+ IMKgCWVudW0gdHJhbnNjb2RlciB0cmFuc2NvZGVyID0gY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNj b2RlcjsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpIHsKPiArCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUpIHsKPiDCoAkJSTkxNV9XUklURShQSVBFX0RB VEFfTTEodHJhbnNjb2RlciksIFRVX1NJWkUobV9uLT50dSkgfCBtX24tPmdtY2hfbSk7Cj4gwqAJ CUk5MTVfV1JJVEUoUElQRV9EQVRBX04xKHRyYW5zY29kZXIpLCBtX24tPmdtY2hfbik7Cj4gwqAJ CUk5MTVfV1JJVEUoUElQRV9MSU5LX00xKHRyYW5zY29kZXIpLCBtX24tPmxpbmtfbSk7Cj4gQEAg LTcxMjgsNyArNzEyNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9t X24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gwqAJCcKgKiBmb3IgZ2VuIDwgOCkgYW5kIGlm IERSUlMgaXMgc3VwcG9ydGVkICh0byBtYWtlIHN1cmUgdGhlCj4gwqAJCcKgKiByZWdpc3RlcnMg YXJlIG5vdCB1bm5lY2Vzc2FyaWx5IGFjY2Vzc2VkKS4KPiDCoAkJwqAqLwo+IC0JCWlmIChtMl9u MiAmJiAoSVNfQ0hFUlJZVklFVyhkZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOCkgJiYK PiArCQlpZiAobTJfbjIgJiYgKElTX0NIRVJSWVZJRVcoZGV2KSB8fCBJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuIDwgOCkgJiYKPiDCoAkJCWNydGMtPmNvbmZpZy0+aGFzX2RycnMpIHsKPiDCoAkJ CUk5MTVfV1JJVEUoUElQRV9EQVRBX00yKHRyYW5zY29kZXIpLAo+IMKgCQkJCQlUVV9TSVpFKG0y X24yLT50dSkgfCBtMl9uMi0+Z21jaF9tKTsKPiBAQCAtNzUwMSw3ICs3NTAwLDcgQEAgc3RhdGlj IHZvaWQgaTl4eF9jb21wdXRlX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gwqAJCWRw bGwgfD0gRFBMTEJfTFZEU19QMl9DTE9DS19ESVZfMTQ7Cj4gwqAJCWJyZWFrOwo+IMKgCX0KPiAt CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPj0gNCkKPiDCoAkJZHBsbCB8PSAoNiA8PCBQTExfTE9BRF9QVUxTRV9QSEFTRV9T SElGVCk7Cj4gwqAKPiDCoAlpZiAoY3J0Y19zdGF0ZS0+c2R2b190dl9jbG9jaykKPiBAQCAtNzUx NSw3ICs3NTE0LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jb21wdXRlX2RwbGwoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gwqAJZHBsbCB8PSBEUExMX1ZDT19FTkFCTEU7Cj4gwqAJY3J0Y19zdGF0 ZS0+ZHBsbF9od19zdGF0ZS5kcGxsID0gZHBsbDsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDQpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpIHsK PiDCoAkJdTMyIGRwbGxfbWQgPSAoY3J0Y19zdGF0ZS0+cGl4ZWxfbXVsdGlwbGllciAtIDEpCj4g wqAJCQk8PCBEUExMX01EX1VESV9NVUxUSVBMSUVSX1NISUZUOwo+IMKgCQljcnRjX3N0YXRlLT5k cGxsX2h3X3N0YXRlLmRwbGxfbWQgPSBkcGxsX21kOwo+IEBAIC03NTg4LDcgKzc1ODcsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjKQo+IMKgCQkJdnN5bmNzaGlmdCArPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbDsK PiDCoAl9Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDMpCj4gKwlpZiAoSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+IDMpCj4gwqAJCUk5MTVfV1JJVEUoVlNZTkNTSElGVChj cHVfdHJhbnNjb2RlciksIHZzeW5jc2hpZnQpOwo+IMKgCj4gwqAJSTkxNV9XUklURShIVE9UQUwo Y3B1X3RyYW5zY29kZXIpLAo+IEBAIC03NzU3LDcgKzc3NTYsNyBAQCBzdGF0aWMgdm9pZCBpOXh4 X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiDCoAl9Cj4gwqAK PiDCoAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBE Uk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkgewo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8 IDQgfHwKPiArCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDQgfHwKPiDCoAkJwqDC oMKgwqBpbnRlbF9waXBlX2hhc190eXBlKGludGVsX2NydGMsIElOVEVMX09VVFBVVF9TRFZPKSkK PiDCoAkJCXBpcGVjb25mIHw9IFBJUEVDT05GX0lOVEVSTEFDRV9XX0ZJRUxEX0lORElDQVRJT047 Cj4gwqAJCWVsc2UKPiBAQCAtNzk3NSw3ICs3OTc0LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9nZXRf cGZpdF9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gwqAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAl1aW50MzJfdCB0bXA7 Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSAzICYmIChJU19JODMwKGRldikg fHwgIUlTX01PQklMRShkZXYpKSkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9 IDMgJiYgKElTX0k4MzAoZGV2KSB8fCAhSVNfTU9CSUxFKGRldikpKQo+IMKgCQlyZXR1cm47Cj4g wqAKPiDCoAl0bXAgPSBJOTE1X1JFQUQoUEZJVF9DT05UUk9MKTsKPiBAQCAtNzk4Myw3ICs3OTgy LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9nZXRfcGZpdF9jb25maWcoc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gwqAJCXJldHVybjsKPiDCoAo+IMKgCS8qIENoZWNrIHdoZXRoZXIgdGhlIHBmaXQg aXMgYXR0YWNoZWQgdG8gb3VyIHBpcGUuICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA0KSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDQpIHsKPiDCoAkJaWYg KGNydGMtPnBpcGUgIT0gUElQRV9CKQo+IMKgCQkJcmV0dXJuOwo+IMKgCX0gZWxzZSB7Cj4gQEAg LTc5OTMsNyArNzk5Miw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZ2V0X3BmaXRfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+IMKgCj4gwqAJcGlwZV9jb25maWctPmdtY2hfcGZpdC5jb250 cm9sID0gdG1wOwo+IMKgCXBpcGVfY29uZmlnLT5nbWNoX3BmaXQucGdtX3JhdGlvcyA9IEk5MTVf UkVBRChQRklUX1BHTV9SQVRJT1MpOwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSkK PiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwgNSkKPiDCoAkJcGlwZV9jb25maWct PmdtY2hfcGZpdC5sdmRzX2JvcmRlcl9iaXRzID0KPiDCoAkJCUk5MTVfUkVBRChMVkRTKSAmIExW RFNfQk9SREVSX0VOQUJMRTsKPiDCoH0KPiBAQCAtODA1MCw3ICs4MDQ5LDcgQEAgaTl4eF9nZXRf aW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gwqAKPiDCoAlm YiA9ICZpbnRlbF9mYi0+YmFzZTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDQpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpIHsKPiDCoAkJaWYg KHZhbCAmIERJU1BQTEFORV9USUxFRCkgewo+IMKgCQkJcGxhbmVfY29uZmlnLT50aWxpbmcgPSBJ OTE1X1RJTElOR19YOwo+IMKgCQkJZmItPm1vZGlmaWVyWzBdID0gSTkxNV9GT1JNQVRfTU9EX1hf VElMRUQ7Cj4gQEAgLTgwNjIsNyArODA2MSw3IEBAIGk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29u ZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IMKgCWZiLT5waXhlbF9mb3JtYXQgPSBmb3Vy Y2M7Cj4gwqAJZmItPmJpdHNfcGVyX3BpeGVsID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZm91cmNj LCAwKSAqIDg7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gKwlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA0KSB7Cj4gwqAJCWlmIChwbGFuZV9jb25m aWctPnRpbGluZykKPiDCoAkJCW9mZnNldCA9IEk5MTVfUkVBRChEU1BUSUxFT0ZGKHBsYW5lKSk7 Cj4gwqAJCWVsc2UKPiBAQCAtODE2Niw3ICs4MTY1LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRf cGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gwqAJwqDCoMKgwqAodG1wICYg UElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUKSkKPiDCoAkJcGlwZV9jb25maWctPmxpbWl0ZWRf Y29sb3JfcmFuZ2UgPSB0cnVlOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0 KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA0KQo+IMKgCQlwaXBlX2NvbmZp Zy0+ZG91YmxlX3dpZGUgPSB0bXAgJiBQSVBFQ09ORl9ET1VCTEVfV0lERTsKPiDCoAo+IMKgCWlu dGVsX2dldF9waXBlX3RpbWluZ3MoY3J0YywgcGlwZV9jb25maWcpOwo+IEBAIC04MTc0LDcgKzgx NzMsNyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiDCoAo+IMKgCWk5eHhfZ2V0X3BmaXRfY29uZmlnKGNydGMsIHBpcGVfY29uZmln KTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiArCWlmIChJTlRF TF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpIHsKPiDCoAkJLyogTm8gd2F5IHRvIHJlYWQgaXQg b3V0IG9uIHBpcGVzIEIgYW5kIEMgKi8KPiDCoAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSAmJiBj cnRjLT5waXBlICE9IFBJUEVfQSkKPiDCoAkJCXRtcCA9IGRldl9wcml2LT5jaHZfZHBsbF9tZFtj cnRjLT5waXBlXTsKPiBAQCAtODk1NCw3ICs4OTUzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3B1 X3RyYW5zY29kZXJfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiDCoAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCWVudW0g cGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDUpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUpIHsKPiDCoAkJ bV9uLT5saW5rX20gPSBJOTE1X1JFQUQoUElQRV9MSU5LX00xKHRyYW5zY29kZXIpKTsKPiDCoAkJ bV9uLT5saW5rX24gPSBJOTE1X1JFQUQoUElQRV9MSU5LX04xKHRyYW5zY29kZXIpKTsKPiDCoAkJ bV9uLT5nbWNoX20gPSBJOTE1X1JFQUQoUElQRV9EQVRBX00xKHRyYW5zY29kZXIpKQo+IEBAIC04 OTY2LDcgKzg5NjUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9nZXRfbV9u KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IMKgCQnCoCogZ2VuIDwgOCkgYW5kIGlmIERSUlMg aXMgc3VwcG9ydGVkICh0byBtYWtlIHN1cmUgdGhlCj4gwqAJCcKgKiByZWdpc3RlcnMgYXJlIG5v dCB1bm5lY2Vzc2FyaWx5IHJlYWQpLgo+IMKgCQnCoCovCj4gLQkJaWYgKG0yX24yICYmIElOVEVM X0lORk8oZGV2KS0+Z2VuIDwgOCAmJgo+ICsJCWlmIChtMl9uMiAmJiBJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuIDwgOCAmJgo+IMKgCQkJY3J0Yy0+Y29uZmlnLT5oYXNfZHJycykgewo+IMKgCQkJ bTJfbjItPmxpbmtfbSA9IEk5MTVfUkVBRChQSVBFX0xJTktfTTIodHJhbnNjb2RlcikpOwo+IMKg CQkJbTJfbjItPmxpbmtfbiA9CUk5MTVfUkVBRChQSVBFX0xJTktfTjIodHJhbnNjb2RlcikpOwo+ IEBAIC05MTY4LDcgKzkxNjcsNyBAQCBpcm9ubGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWco c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gwqAKPiDCoAlmYiA9ICZpbnRlbF9mYi0+YmFzZTsK PiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiArCWlmIChJTlRFTF9J TkZPKGRldl9wcml2KS0+Z2VuID49IDQpIHsKPiDCoAkJaWYgKHZhbCAmIERJU1BQTEFORV9USUxF RCkgewo+IMKgCQkJcGxhbmVfY29uZmlnLT50aWxpbmcgPSBJOTE1X1RJTElOR19YOwo+IMKgCQkJ ZmItPm1vZGlmaWVyWzBdID0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ7Cj4gQEAgLTk5MzQsNyAr OTkzMyw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+IMKgCcKgKiBEREkgRS4gU28ganVzdCBjaGVjayB3aGV0aGVyIHRo aXMgcGlwZSBpcyB3aXJlZCB0byBEREkgRSBhbmQgd2hldGhlcgo+IMKgCcKgKiB0aGUgUENIIHRy YW5zY29kZXIgaXMgb24uCj4gwqAJwqAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwg OSAmJgo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA5ICYmCj4gwqAJwqDCoMKg wqAocG9ydCA9PSBQT1JUX0UpICYmIEk5MTVfUkVBRChMUFRfVFJBTlNDT05GKSAmIFRSQU5TX0VO QUJMRSkgewo+IMKgCQlwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyID0gdHJ1ZTsKPiDCoAo+ IEBAIC05OTg1LDExICs5OTg0LDExIEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IMKgCXBpcGVfY29uZmlnLT5nYW1tYV9tb2Rl ID0KPiDCoAkJSTkxNV9SRUFEKEdBTU1BX01PREUoY3J0Yy0+cGlwZSkpICYgR0FNTUFfTU9ERV9N T0RFX01BU0s7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KSB7Cj4gwqAJCXNrbF9pbml0X3NjYWxl cnMoZGV2LCBjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gwqAJfQo+IMKgCj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gOSkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0g OSkgewo+IMKgCQlwaXBlX2NvbmZpZy0+c2NhbGVyX3N0YXRlLnNjYWxlcl9pZCA9IC0xOwo+IMKg CQlwaXBlX2NvbmZpZy0+c2NhbGVyX3N0YXRlLnNjYWxlcl91c2VycyAmPSB+KDEgPDwgU0tMX0NS VENfSU5ERVgpOwo+IMKgCX0KPiBAQCAtOTk5Nyw3ICs5OTk2LDcgQEAgc3RhdGljIGJvb2wgaGFz d2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gwqAJcG93ZXJf ZG9tYWluID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMtPnBpcGUpOwo+IMKg CWlmIChpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9k b21haW4pKSB7Cj4gwqAJCXBvd2VyX2RvbWFpbl9tYXNrIHw9IEJJVChwb3dlcl9kb21haW4pOwo+ IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICsJCWlmIChJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuID49IDkpCj4gwqAJCQlza3lsYWtlX2dldF9wZml0X2NvbmZpZyhjcnRjLCBw aXBlX2NvbmZpZyk7Cj4gwqAJCWVsc2UKPiDCoAkJCWlyb25sYWtlX2dldF9wZml0X2NvbmZpZyhj cnRjLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTEwNzc5LDcgKzEwNzc4LDcgQEAgdm9pZCBpbnRlbF9t YXJrX2J1c3koc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAo+IMKgCWludGVsX3J1bnRpbWVf cG1fZ2V0KGRldl9wcml2KTsKPiDCoAlpOTE1X3VwZGF0ZV9nZnhfdmFsKGRldl9wcml2KTsKPiAt CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPj0gNikKPiDCoAkJZ2VuNl9ycHNfYnVzeShkZXZfcHJpdik7Cj4gwqAJZGV2X3By aXYtPm1tLmJ1c3kgPSB0cnVlOwo+IMKgfQo+IEBAIC0xMDc5Myw3ICsxMDc5Miw3IEBAIHZvaWQg aW50ZWxfbWFya19pZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAKPiDCoAlkZXZfcHJp di0+bW0uYnVzeSA9IGZhbHNlOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g NikKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYpCj4gwqAJCWdlbjZfcnBz X2lkbGUoZGV2LT5kZXZfcHJpdmF0ZSk7Cj4gwqAKPiDCoAlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7Cj4gQEAgLTEwOTE1LDcgKzEwOTE0LDcgQEAgc3RhdGljIGJvb2wgcGFnZV9mbGlw X2ZpbmlzaGVkKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+IMKgCcKgKiByZWFsbHkgbmVlZGVk IHRoZXJlLiBCdXQgc2luY2UgY3RnIGhhcyB0aGUgcmVnaXN0ZXJzLAo+IMKgCcKgKiBpbmNsdWRl IGl0IGluIHRoZSBjaGVjayBhbnl3YXkuCj4gwqAJwqAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuIDwgNSAmJiAhSVNfRzRYKGRldikpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdikt PmdlbiA8IDUgJiYgIUlTX0c0WChkZXYpKQo+IMKgCQlyZXR1cm4gdHJ1ZTsKPiDCoAo+IMKgCS8q Cj4gQEAgLTExNDM2LDcgKzExNDM1LDcgQEAgc3RhdGljIGJvb2wgX19pbnRlbF9wYWdlZmxpcF9z dGFsbF9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IMKgCj4gwqAJLyogUG90ZW50aWFs IHN0YWxsIC0gaWYgd2Ugc2VlIHRoYXQgdGhlIGZsaXAgaGFzIGhhcHBlbmVkLAo+IMKgCcKgKiBh c3N1bWUgYSBtaXNzZWQgaW50ZXJydXB0LiAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDQpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA0KQo+IMKgCQlhZGRy ID0gSTkxNV9ISV9ESVNQQkFTRShJOTE1X1JFQUQoRFNQU1VSRihpbnRlbF9jcnRjLT5wbGFuZSkp KTsKPiDCoAllbHNlCj4gwqAJCWFkZHIgPSBJOTE1X1JFQUQoRFNQQUREUihpbnRlbF9jcnRjLT5w bGFuZSkpOwo+IEBAIC0xMTUwOCw3ICsxMTUwNyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19w YWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IMKgCcKgKiBUSUxFT0ZGL0xJTk9GRiBy ZWdpc3RlcnMgY2FuJ3QgYmUgY2hhbmdlZCB2aWEgTUkgZGlzcGxheSBmbGlwcy4KPiDCoAnCoCog Tm90ZSB0aGF0IHBpdGNoIGNoYW5nZXMgY291bGQgYWxzbyBhZmZlY3QgdGhlc2UgcmVnaXN0ZXIu Cj4gwqAJwqAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gMyAmJgo+ICsJaWYgKElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPiAzICYmCj4gwqAJwqDCoMKgwqAoZmItPm9mZnNldHNb MF0gIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPm9mZnNldHNbMF0gfHwKPiDCoAnCoMKgwqDCoMKgZmIt PnBpdGNoZXNbMF0gIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPnBpdGNoZXNbMF0pKQo+IMKgCQlyZXR1 cm4gLUVJTlZBTDsKPiBAQCAtMTE1NzAsNyArMTE1NjksNyBAQCBzdGF0aWMgaW50IGludGVsX2Ny dGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiDCoAlhdG9taWNfaW5jKCZpbnRl bF9jcnRjLT51bnBpbl93b3JrX2NvdW50KTsKPiDCoAlpbnRlbF9jcnRjLT5yZXNldF9jb3VudGVy ID0gYXRvbWljX3JlYWQoJmRldl9wcml2LT5ncHVfZXJyb3IucmVzZXRfY291bnRlcik7Cj4gwqAK PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1IHx8IElTX0c0WChkZXYpKQo+ICsJaWYg KElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNSB8fCBJU19HNFgoZGV2KSkKPiDCoAkJd29y ay0+ZmxpcF9jb3VudCA9IEk5MTVfUkVBRChQSVBFX0ZMSVBDT1VOVF9HNFgocGlwZSkpICsgMTsK PiDCoAo+IMKgCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7 Cj4gQEAgLTExNTgwLDcgKzExNTc5LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxp cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gwqAJCQllbmdpbmUgPSBOVUxMOwo+IMKgCX0gZWxz ZSBpZiAoSVNfSVZZQlJJREdFKGRldikgfHwgSVNfSEFTV0VMTChkZXYpKSB7Cj4gwqAJCWVuZ2lu ZSA9ICZkZXZfcHJpdi0+ZW5naW5lW0JDU107Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDcpIHsKPiArCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+ PSA3KSB7Cj4gwqAJCWVuZ2luZSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShvYmotPmxh c3Rfd3JpdGVfcmVxKTsKPiDCoAkJaWYgKGVuZ2luZSA9PSBOVUxMIHx8IGVuZ2luZS0+aWQgIT0g UkNTKQo+IMKgCQkJZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbQkNTXTsKPiBAQCAtMTE3NzQs NyArMTE3NzMsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gwqAJYm9vbCB0dXJuX29mZiwgdHVybl9vbiwg dmlzaWJsZSwgd2FzX3Zpc2libGU7Cj4gwqAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBw bGFuZV9zdGF0ZS0+ZmI7Cj4gwqAKPiAtCWlmIChjcnRjX3N0YXRlICYmIElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDkgJiYKPiArCWlmIChjcnRjX3N0YXRlICYmIElOVEVMX0lORk8oZGV2X3ByaXYp LT5nZW4gPj0gOSAmJgo+IMKgCcKgwqDCoMKgcGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVf Q1VSU09SKSB7Cj4gwqAJCXJldCA9IHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lKAo+IMKgCQkJdG9f aW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKSwKPiBAQCAtMTE4MzMsNyArMTE4MzIsNyBAQCBp bnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gwqAKPiDCoAkvKiBQcmUtZ2VuOSBwbGF0Zm9ybXMgbmVlZCB0d28tc3Rl cCB3YXRlcm1hcmsgdXBkYXRlcyAqLwo+IMKgCWlmICgocGlwZV9jb25maWctPnVwZGF0ZV93bV9w cmUgfHwgcGlwZV9jb25maWctPnVwZGF0ZV93bV9wb3N0KSAmJgo+IC0JwqDCoMKgwqBJTlRFTF9J TkZPKGRldiktPmdlbiA8IDkgJiYgZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJr cykKPiArCcKgwqDCoMKgSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDkgJiYgZGV2X3ByaXYt PmRpc3BsYXkub3B0aW1pemVfd2F0ZXJtYXJrcykKPiDCoAkJdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjX3N0YXRlKS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSA9IHRydWU7Cj4gwqAKPiDCoAlpZiAo dmlzaWJsZSB8fCB3YXNfdmlzaWJsZSkKPiBAQCAtMTE5NjYsNyArMTE5NjUsNyBAQCBzdGF0aWMg aW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiDCoAkJ fQo+IMKgCX0KPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKPiArCWlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpIHsKPiDCoAkJaWYgKG1vZGVfY2hhbmdl ZCkKPiDCoAkJCXJldCA9IHNrbF91cGRhdGVfc2NhbGVyX2NydGMocGlwZV9jb25maWcpOwo+IMKg Cj4gQEAgLTEyNzYzLDcgKzEyNzYyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfd21fc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsK PiDCoAlpbnQgcGxhbmU7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpCj4g KwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDkpCj4gwqAJCXJldHVybjsKPiDCoAo+ IMKgCXNrbF9kZGJfZ2V0X2h3X3N0YXRlKGRldl9wcml2LCAmaHdfZGRiKTsKPiBAQCAtMTQyMzgs NyArMTQyMzcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IHBpcGUpCj4gwqAJY3J0Y19zdGF0ZS0+YmFzZS5jcnRjID0gJmludGVsX2Ny dGMtPmJhc2U7Cj4gwqAKPiDCoAkvKiBpbml0aWFsaXplIHNoYXJlZCBzY2FsZXJzICovCj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPj0gOSkgewo+IMKgCQlpZiAocGlwZSA9PSBQSVBFX0MpCj4gwqAJCQlpbnRlbF9j cnRjLT5udW1fc2NhbGVycyA9IDE7Cj4gwqAJCWVsc2UKPiBAQCAtMTQyNjYsNyArMTQyNjUsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50 IHBpcGUpCj4gwqAJwqAqLwo+IMKgCWludGVsX2NydGMtPnBpcGUgPSBwaXBlOwo+IMKgCWludGVs X2NydGMtPnBsYW5lID0gcGlwZTsKPiAtCWlmIChIQVNfRkJDKGRldikgJiYgSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA0KSB7Cj4gKwlpZiAoSEFTX0ZCQyhkZXYpICYmIElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPCA0KSB7Cj4gwqAJCURSTV9ERUJVR19LTVMoInN3YXBwaW5nIHBpcGVzICYgcGxh bmVzIGZvciBGQkNcbiIpOwo+IMKgCQlpbnRlbF9jcnRjLT5wbGFuZSA9ICFwaXBlOwo+IMKgCX0K PiBAQCAtMTQzNjgsNyArMTQzNjcsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRfcHJlc2VudChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgewo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA5KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkKPiDC oAkJcmV0dXJuIGZhbHNlOwo+IMKgCj4gwqAJaWYgKElTX0hTV19VTFQoZGV2KSB8fCBJU19CRFdf VUxUKGRldikpCj4gQEAgLTE0NjczLDcgKzE0NjcyLDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFt ZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gwqAJc3dpdGNoIChtb2RlX2Nt ZC0+bW9kaWZpZXJbMF0pIHsKPiDCoAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+IMKg CWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+IC0JCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA8IDkpIHsKPiArCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDkpIHsKPiDC oAkJCURSTV9ERUJVRygiVW5zdXBwb3J0ZWQgdGlsaW5nIDB4JWxseCFcbiIsCj4gwqAJCQkJwqDC oG1vZGVfY21kLT5tb2RpZmllclswXSk7Cj4gwqAJCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTQ3 MjEsNyArMTQ3MjAsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiDCoAljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Cj4gwqAJCWJy ZWFrOwo+IMKgCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMTU1NToKPiAtCQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPiAzKSB7Cj4gKwkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPiAzKSB7 Cj4gwqAJCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gwqAJ CQkJwqDCoGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCkpOwo+IMKg CQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTE0NzI5LDcgKzE0NzI4LDcgQEAgc3RhdGljIGludCBp bnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gwqAJCWJyZWFr Owo+IMKgCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKPiDCoAkJaWYgKCFJU19WQUxMRVlWSUVX KGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJgo+IC0JCcKgwqDCoMKgSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA5KSB7Cj4gKwkJwqDCoMKgwqBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwg OSkgewo+IMKgCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ IMKgCQkJCcKgwqBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsK PiDCoAkJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0xNDczOCw3ICsxNDczNyw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IMKgCWNh c2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKPiDCoAljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6 Cj4gwqAJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgo+IC0JCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA8IDQpIHsKPiArCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDQpIHsK PiDCoAkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPiDCoAkJ CQnCoMKgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KSk7Cj4gwqAJ CQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTQ3NTUsNyArMTQ3NTQsNyBAQCBzdGF0aWMgaW50IGlu dGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiDCoAljYXNlIERS TV9GT1JNQVRfVVlWWToKPiDCoAljYXNlIERSTV9GT1JNQVRfWVZZVToKPiDCoAljYXNlIERSTV9G T1JNQVRfVllVWToKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KSB7Cj4gKwkJaWYg KElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA1KSB7Cj4gwqAJCQlEUk1fREVCVUcoInVuc3Vw cG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gwqAJCQkJwqDCoGRybV9nZXRfZm9ybWF0X25h bWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCkpOwo+IMKgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAg LTE1MzIwLDcgKzE1MzE5LDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiDCoAo+IMKgCWludGVsX2luaXRfcG0oZGV2KTsKPiDCoAo+IC0JaWYgKElO VEVMX0lORk8oZGV2KS0+bnVtX3BpcGVzID09IDApCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPm51bV9waXBlcyA9PSAwKQo+IMKgCQlyZXR1cm47Cj4gwqAKPiDCoAkvKgo+IEBAIC0xNTM2 Niw4ICsxNTM2NSw4IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gwqAJZGV2LT5tb2RlX2NvbmZpZy5mYl9iYXNlID0gZ2d0dC0+bWFwcGFibGVfYmFz ZTsKPiDCoAo+IMKgCURSTV9ERUJVR19LTVMoIiVkIGRpc3BsYXkgcGlwZSVzIGF2YWlsYWJsZS5c biIsCj4gLQkJwqDCoMKgwqDCoMKgSU5URUxfSU5GTyhkZXYpLT5udW1fcGlwZXMsCj4gLQkJwqDC oMKgwqDCoMKgSU5URUxfSU5GTyhkZXYpLT5udW1fcGlwZXMgPiAxID8gInMiIDogIiIpOwo+ICsJ CcKgwqDCoMKgwqDCoElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcGlwZXMsCj4gKwkJwqDCoMKg wqDCoMKgSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBlcyA+IDEgPyAicyIgOiAiIik7Cj4g wqAKPiDCoAlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7Cj4gwqAJCWludGVsX2NydGNf aW5pdChkZXYsIHBpcGUpOwo+IEBAIC0xNTQ1NSw3ICsxNTQ1NCw3IEBAIGludGVsX2NoZWNrX3Bs YW5lX21hcHBpbmcoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gwqAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAl1MzIgdmFsOwo+IMKg Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5udW1fcGlwZXMgPT0gMSkKPiArCWlmIChJTlRFTF9J TkZPKGRldl9wcml2KS0+bnVtX3BpcGVzID09IDEpCj4gwqAJCXJldHVybiB0cnVlOwo+IMKgCj4g wqAJdmFsID0gSTkxNV9SRUFEKERTUENOVFIoIWNydGMtPnBsYW5lKSk7Cj4gQEAgLTE1NTIyLDcg KzE1NTIxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKPiDCoAkvKiBXZSBuZWVkIHRvIHNhbml0aXplIHRoZSBwbGFuZSAtPiBwaXBl IG1hcHBpbmcgZmlyc3QgYmVjYXVzZSB0aGlzIHdpbGwKPiDCoAnCoCogZGlzYWJsZSB0aGUgY3J0 YyAoYW5kIGhlbmNlIGNoYW5nZSB0aGUgc3RhdGUpIGlmIGl0IGlzIHdyb25nLiBOb3RlCj4gwqAJ wqAqIHRoYXQgZ2VuNCsgaGFzIGEgZml4ZWQgcGxhbmUgLT4gcGlwZSBtYXBwaW5nLsKgwqAqLwo+ IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCAmJiAhaW50ZWxfY2hlY2tfcGxhbmVfbWFw cGluZyhjcnRjKSkgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA0ICYmICFp bnRlbF9jaGVja19wbGFuZV9tYXBwaW5nKGNydGMpKSB7Cj4gwqAJCWJvb2wgcGxhbmU7Cj4gwqAK PiDCoAkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdIHdyb25nIHBsYW5lIGNvbm5lY3Rpb24gZGV0 ZWN0ZWQhXG4iLAo+IEBAIC0xNjA1MSw3ICsxNjA1MCw3IEBAIHZvaWQgaW50ZWxfY29ubmVjdG9y X2F0dGFjaF9lbmNvZGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiDCoGlu dCBpbnRlbF9tb2Rlc2V0X3ZnYV9zZXRfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9v bCBzdGF0ZSkKPiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+IC0JdW5zaWduZWQgcmVnID0gSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gNiA/IFNOQl9HTUNIX0NUUkwgOiBJTlRFTF9HTUNIX0NUUkw7Cj4gKwl1bnNpZ25lZCByZWcg PSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYgPyBTTkJfR01DSF9DVFJMIDogSU5URUxf R01DSF9DVFJMOwo+IMKgCXUxNiBnbWNoX2N0cmw7Cj4gwqAKPiDCoAlpZiAocGNpX3JlYWRfY29u ZmlnX3dvcmQoZGV2X3ByaXYtPmJyaWRnZV9kZXYsIHJlZywgJmdtY2hfY3RybCkpIHsKPiBAQCAt MTYxMzIsNyArMTYxMzEsNyBAQCBpbnRlbF9kaXNwbGF5X2NhcHR1cmVfZXJyb3Jfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAl9Owo+IMKgCWludCBpOwo+IMKgCj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5udW1fcGlwZXMgPT0gMCkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2 KS0+bnVtX3BpcGVzID09IDApCj4gwqAJCXJldHVybiBOVUxMOwo+IMKgCj4gwqAJZXJyb3IgPSBr emFsbG9jKHNpemVvZigqZXJyb3IpLCBHRlBfQVRPTUlDKTsKPiBAQCAtMTYxNTUsMTMgKzE2MTU0 LDEzIEBAIGludGVsX2Rpc3BsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+IMKgCj4gwqAJCWVycm9yLT5wbGFuZVtpXS5jb250cm9sID0gSTkxNV9SRUFEKERT UENOVFIoaSkpOwo+IMKgCQllcnJvci0+cGxhbmVbaV0uc3RyaWRlID0gSTkxNV9SRUFEKERTUFNU UklERShpKSk7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDMpIHsKPiArCQlpZiAo SU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8PSAzKSB7Cj4gwqAJCQllcnJvci0+cGxhbmVbaV0u c2l6ZSA9IEk5MTVfUkVBRChEU1BTSVpFKGkpKTsKPiDCoAkJCWVycm9yLT5wbGFuZVtpXS5wb3Mg PSBJOTE1X1JFQUQoRFNQUE9TKGkpKTsKPiDCoAkJfQo+IC0JCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA8PSA3ICYmICFJU19IQVNXRUxMKGRldikpCj4gKwkJaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPD0gNyAmJiAhSVNfSEFTV0VMTChkZXYpKQo+IMKgCQkJZXJyb3ItPnBsYW5lW2ld LmFkZHIgPSBJOTE1X1JFQUQoRFNQQUREUihpKSk7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDQpIHsKPiArCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA0KSB7Cj4g wqAJCQllcnJvci0+cGxhbmVbaV0uc3VyZmFjZSA9IEk5MTVfUkVBRChEU1BTVVJGKGkpKTsKPiDC oAkJCWVycm9yLT5wbGFuZVtpXS50aWxlX29mZnNldCA9IEk5MTVfUkVBRChEU1BUSUxFT0ZGKGkp KTsKPiDCoAkJfQo+IEBAIC0xNjE3Myw3ICsxNjE3Miw3IEBAIGludGVsX2Rpc3BsYXlfY2FwdHVy ZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCX0KPiDCoAo+IMKgCS8q IE5vdGU6IHRoaXMgZG9lcyBub3QgaW5jbHVkZSBEU0kgdHJhbnNjb2RlcnMuICovCj4gLQllcnJv ci0+bnVtX3RyYW5zY29kZXJzID0gSU5URUxfSU5GTyhkZXYpLT5udW1fcGlwZXM7Cj4gKwllcnJv ci0+bnVtX3RyYW5zY29kZXJzID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBlczsKPiDC oAlpZiAoSEFTX0RESShkZXZfcHJpdikpCj4gwqAJCWVycm9yLT5udW1fdHJhbnNjb2RlcnMrKzsg LyogQWNjb3VudCBmb3IgZURQLiAqLwo+IMKgCj4gQEAgLTE2MjEzLDcgKzE2MjEyLDcgQEAgaW50 ZWxfZGlzcGxheV9wcmludF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVf YnVmICptLAo+IMKgCWlmICghZXJyb3IpCj4gwqAJCXJldHVybjsKPiDCoAo+IC0JZXJyX3ByaW50 ZihtLCAiTnVtIFBpcGVzOiAlZFxuIiwgSU5URUxfSU5GTyhkZXYpLT5udW1fcGlwZXMpOwo+ICsJ ZXJyX3ByaW50ZihtLCAiTnVtIFBpcGVzOiAlZFxuIiwgSU5URUxfSU5GTyhkZXZfcHJpdiktPm51 bV9waXBlcyk7Cj4gwqAJaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkK PiDCoAkJZXJyX3ByaW50ZihtLCAiUFdSX1dFTExfQ1RMMjogJTA4eFxuIiwKPiDCoAkJCcKgwqDC oGVycm9yLT5wb3dlcl93ZWxsX2RyaXZlcik7Cj4gQEAgLTE2MjI3LDEzICsxNjIyNiwxMyBAQCBp bnRlbF9kaXNwbGF5X3ByaW50X2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0 ZV9idWYgKm0sCj4gwqAJCWVycl9wcmludGYobSwgIlBsYW5lIFslZF06XG4iLCBpKTsKPiDCoAkJ ZXJyX3ByaW50ZihtLCAiwqDCoENOVFI6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5jb250cm9s KTsKPiDCoAkJZXJyX3ByaW50ZihtLCAiwqDCoFNUUklERTogJTA4eFxuIiwgZXJyb3ItPnBsYW5l W2ldLnN0cmlkZSk7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDMpIHsKPiArCQlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8PSAzKSB7Cj4gwqAJCQllcnJfcHJpbnRmKG0s ICLCoMKgU0laRTogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLnNpemUpOwo+IMKgCQkJZXJyX3By aW50ZihtLCAiwqDCoFBPUzogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLnBvcyk7Cj4gwqAJCX0K PiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNyAmJiAhSVNfSEFTV0VMTChkZXYpKQo+ ICsJCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDcgJiYgIUlTX0hBU1dFTEwoZGV2 KSkKPiDCoAkJCWVycl9wcmludGYobSwgIsKgwqBBRERSOiAlMDh4XG4iLCBlcnJvci0+cGxhbmVb aV0uYWRkcik7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiArCQlpZiAo SU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA0KSB7Cj4gwqAJCQllcnJfcHJpbnRmKG0sICLC oMKgU1VSRjogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLnN1cmZhY2UpOwo+IMKgCQkJZXJyX3By aW50ZihtLCAiwqDCoFRJTEVPRkY6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS50aWxlX29mZnNl dCk7Cj4gwqAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCBkYTBjM2QyLi5lMmM1 NjViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTE0NzEsNyArMTQ3MSw3IEBA IGludGVsX2RwX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ IMKgCQlpbnRlbF9maXhlZF9wYW5lbF9tb2RlKGludGVsX2Nvbm5lY3Rvci0+cGFuZWwuZml4ZWRf bW9kZSwKPiDCoAkJCQnCoMKgwqDCoMKgwqDCoGFkanVzdGVkX21vZGUpOwo+IMKgCj4gLQkJaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKPiArCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA+PSA5KSB7Cj4gwqAJCQlpbnQgcmV0Owo+IMKgCQkJcmV0ID0gc2tsX3VwZGF0ZV9z Y2FsZXJfY3J0YyhwaXBlX2NvbmZpZyk7Cj4gwqAJCQlpZiAocmV0KQo+IEBAIC0zMTU3LDcgKzMx NTcsNyBAQCBpbnRlbF9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ IMKgCj4gwqAJaWYgKElTX0JST1hUT04oZGV2KSkKPiDCoAkJcmV0dXJuIERQX1RSQUlOX1ZPTFRB R0VfU1dJTkdfTEVWRUxfMzsKPiAtCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkp IHsKPiArCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkgewo+IMKgCQlp ZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZyAmJiBwb3J0ID09IFBPUlRfQSkKPiDCoAkJ CXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7Cj4gwqAJCXJldHVybiBEUF9U UkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzI7Cj4gQEAgLTM4MjAsNyArMzgyMCw3IEBAIGludGVs X2RwX2dldF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gwqAJCQlEUk1fREVCVUdf S01TKCJEZXRlY3RlZCBFRFAgUFNSIFBhbmVsLlxuIik7Cj4gwqAJCX0KPiDCoAo+IC0JCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA5ICYmCj4gKwkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYp LT5nZW4gPj0gOSAmJgo+IMKgCQkJKGludGVsX2RwLT5wc3JfZHBjZFswXSAmIERQX1BTUjJfSVNf U1VQUE9SVEVEKSkgewo+IMKgCQkJdWludDhfdCBmcmFtZV9zeW5jX2NhcDsKPiDCoAo+IEBAIC01 MDg1LDcgKzUwODUsNyBAQCBib29sIGludGVsX2RwX2lzX2VkcChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBlbnVtIHBvcnQgcG9ydCkKPiDCoAnCoCogZURQIG5vdCBzdXBwb3J0ZWQgb24gZzR4LiBz byBiYWlsIG91dCBlYXJseSBqdXN0Cj4gwqAJwqAqIGZvciBhIGJpdCBleHRyYSBzYWZldHkgaW4g Y2FzZSB0aGUgVkJUIGlzIGJvbmtlcnMuCj4gwqAJwqAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuIDwgNSkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwgNSkKPiDCoAkJ cmV0dXJuIGZhbHNlOwo+IMKgCj4gwqAJaWYgKHBvcnQgPT0gUE9SVF9BKQo+IEBAIC01Mzk5LDcg KzUzOTksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgcmVmcmVzaF9yYXRlKQo+IMKgCQlyZXR1cm47Cj4gwqAJfQo+IMKg Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCAmJiAhSVNfQ0hFUlJZVklFVyhkZXYp KSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4ICYmICFJU19DSEVSUllW SUVXKGRldikpIHsKPiDCoAkJc3dpdGNoIChpbmRleCkgewo+IMKgCQljYXNlIERSUlNfSElHSF9S UjoKPiDCoAkJCWludGVsX2RwX3NldF9tX24oaW50ZWxfY3J0YywgTTFfTjEpOwo+IEBAIC01NDEx LDcgKzU0MTEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBpbnQgcmVmcmVzaF9yYXRlKQo+IMKgCQlkZWZhdWx0Ogo+IMKgCQkJ RFJNX0VSUk9SKCJVbnN1cHBvcnRlZCByZWZyZXNocmF0ZSB0eXBlXG4iKTsKPiDCoAkJfQo+IC0J fSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDYpIHsKPiArCX0gZWxzZSBpZiAoSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+IDYpIHsKPiDCoAkJaTkxNV9yZWdfdCByZWcgPSBQSVBF Q09ORihpbnRlbF9jcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyKTsKPiDCoAkJdTMyIHZhbDsK PiDCoAo+IEBAIC01Njg4LDcgKzU2ODgsNyBAQCBpbnRlbF9kcF9kcnJzX2luaXQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yLAo+IMKgCUlOSVRfREVMQVlFRF9XT1JLKCZk ZXZfcHJpdi0+ZHJycy53b3JrLCBpbnRlbF9lZHBfZHJyc19kb3duY2xvY2tfd29yayk7Cj4gwqAJ bXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmRycnMubXV0ZXgpOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPD0gNikgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPD0g Nikgewo+IMKgCQlEUk1fREVCVUdfS01TKCJEUlJTIHN1cHBvcnRlZCBmb3IgR2VuNyBhbmQgYWJv dmVcbiIpOwo+IMKgCQlyZXR1cm4gTlVMTDsKPiDCoAl9Cj4gQEAgLTU4NDAsNyArNTg0MCw3IEBA IGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0LAo+IMKgCWludGVsX2RwLT5wcHNfcGlwZSA9IElOVkFMSURfUElQRTsKPiDCoAo+ IMKgCS8qIGludGVsX2RwIHZmdW5jcyAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDkpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQo+IMKgCQlpbnRlbF9k cC0+Z2V0X2F1eF9jbG9ja19kaXZpZGVyID0gc2tsX2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPiDC oAllbHNlIGlmIChJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCj4gwqAJCWlu dGVsX2RwLT5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIgPSBoc3dfZ2V0X2F1eF9jbG9ja19kaXZpZGVy Owo+IEBAIC01ODQ5LDcgKzU4NDksNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiDCoAllbHNlCj4gwqAJCWludGVs X2RwLT5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIgPSBnNHhfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOwo+ IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiArCWlmIChJTlRFTF9JTkZP KGRldl9wcml2KS0+Z2VuID49IDkpCj4gwqAJCWludGVsX2RwLT5nZXRfYXV4X3NlbmRfY3RsID0g c2tsX2dldF9hdXhfc2VuZF9jdGw7Cj4gwqAJZWxzZQo+IMKgCQlpbnRlbF9kcC0+Z2V0X2F1eF9z ZW5kX2N0bCA9IGc0eF9nZXRfYXV4X3NlbmRfY3RsOwo+IEBAIC02MDI2LDcgKzYwMjYsNyBAQCBp bnRlbF9kcF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gwqAJfSBlbHNlIHsKPiDCoAkJ aW50ZWxfZW5jb2Rlci0+cHJlX2VuYWJsZSA9IGc0eF9wcmVfZW5hYmxlX2RwOwo+IMKgCQlpbnRl bF9lbmNvZGVyLT5lbmFibGUgPSBnNHhfZW5hYmxlX2RwOwo+IC0JCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA1KQo+ICsJCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUpCj4g wqAJCQlpbnRlbF9lbmNvZGVyLT5wb3N0X2Rpc2FibGUgPSBpbGtfcG9zdF9kaXNhYmxlX2RwOwo+ IMKgCX0KPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxs X21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+IGluZGV4IDE5 ZWZkZDMuLmM3ZTk3MGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHBsbF9tZ3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMK PiBAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiDCoAl1bnNpZ25lZCBjcnRjX21hc2sgPSAxIDw8IGRybV9j cnRjX2luZGV4KCZjcnRjLT5iYXNlKTsKPiDCoAo+IMKgCS8qIFBDSCBvbmx5IGF2YWlsYWJsZSBv biBJTEsrICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KQo+ICsJaWYgKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPCA1KQo+IMKgCQlyZXR1cm47Cj4gwqAKPiDCoAlpZiAocGxs ID09IE5VTEwpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gaW5kZXggNzlhYzIwMi4u ZDRjY2YzNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+IEBAIC02OTgsNyAr Njk4LDcgQEAgaW50IGludGVsX2ZiZGV2X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDC oAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ IMKgCWludCByZXQ7Cj4gwqAKPiAtCWlmIChXQVJOX09OKElOVEVMX0lORk8oZGV2KS0+bnVtX3Bp cGVzID09IDApKQo+ICsJaWYgKFdBUk5fT04oSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBl cyA9PSAwKSkKPiDCoAkJcmV0dXJuIC1FTk9ERVY7Cj4gwqAKPiDCoAlpZmJkZXYgPSBremFsbG9j KHNpemVvZihzdHJ1Y3QgaW50ZWxfZmJkZXYpLCBHRlBfS0VSTkVMKTsKPiBAQCAtNzExLDcgKzcx MSw3IEBAIGludCBpbnRlbF9mYmRldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJ CWlmYmRldi0+cHJlZmVycmVkX2JwcCA9IDMyOwo+IMKgCj4gwqAJcmV0ID0gZHJtX2ZiX2hlbHBl cl9pbml0KGRldiwgJmlmYmRldi0+aGVscGVyLAo+IC0JCQkJwqBJTlRFTF9JTkZPKGRldiktPm51 bV9waXBlcywgNCk7Cj4gKwkJCQnCoElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcGlwZXMsIDQp Owo+IMKgCWlmIChyZXQpIHsKPiDCoAkJa2ZyZWUoaWZiZGV2KTsKPiDCoAkJcmV0dXJuIHJldDsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IGExZGI2YTAuLjY3Yjg4ZGUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0yMTQyLDcgKzIxNDIsNyBAQCBzdGF0aWMg aW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKg CWxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhkZXYsIGVuZ2luZSk7Cj4gwqAKPiDCoAkvKiBP dmVycmlkZSBzb21lIGZvciByZW5kZXIgcmluZy4gKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA5KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkKPiDCoAkJ ZW5naW5lLT5pbml0X2h3ID0gZ2VuOV9pbml0X3JlbmRlcl9yaW5nOwo+IMKgCWVsc2UKPiDCoAkJ ZW5naW5lLT5pbml0X2h3ID0gZ2VuOF9pbml0X3JlbmRlcl9yaW5nOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9sdmRzLmMKPiBpbmRleCA2NmU4MzJiLi42YTU0MTZhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2x2ZHMuYwo+IEBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbHZk c19nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IMKgCXBpcGVfY29u ZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7Cj4gwqAKPiDCoAkvKiBnZW4y LzMgc3RvcmUgZGl0aGVyIHN0YXRlIGluIHBmaXQgY29udHJvbCwgbmVlZHMgdG8gbWF0Y2ggKi8K PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuIDwgNCkgewo+IMKgCQl0bXAgPSBJOTE1X1JFQUQoUEZJVF9DT05UUk9MKTsK PiDCoAo+IMKgCQlwaXBlX2NvbmZpZy0+Z21jaF9wZml0LmNvbnRyb2wgfD0gdG1wICYgUEFORUxf OFRPNl9ESVRIRVJfRU5BQkxFOwo+IEBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcHJlX2VuYWJsZV9sdmRzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+IMKgCS8q IFNldCB0aGUgZGl0aGVyaW5nIGZsYWcgb24gTFZEUyBhcyBuZWVkZWQsIG5vdGUgdGhhdCB0aGVy ZSBpcyBubwo+IMKgCcKgKiBzcGVjaWFsIGx2ZHMgZGl0aGVyIGNvbnRyb2wgYml0IG9uIHBjaC1z cGxpdCBwbGF0Zm9ybXMsIGRpdGhlcmluZyBpcwo+IMKgCcKgKiBvbmx5IGNvbnRyb2xsZWQgdGhy b3VnaCB0aGUgUElQRUNPTkYgcmVnLiAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID09 IDQpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID09IDQpIHsKPiDCoAkJLyog QnNwZWMgd29yZGluZyBzdWdnZXN0cyB0aGF0IExWRFMgcG9ydCBkaXRoZXJpbmcgb25seSBleGlz dHMKPiDCoAkJwqAqIGZvciAxOGJwcCBwYW5lbHMuICovCj4gwqAJCWlmIChjcnRjLT5jb25maWct PmRpdGhlciAmJiBjcnRjLT5jb25maWctPnBpcGVfYnBwID09IDE4KQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCA2Njk0ZTkyLi5hOGM1MjY5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+IEBAIC05MDUsNyArOTA1LDcgQEAgc3RhdGljIHZv aWQgdXBkYXRlX3BmaXRfdnNjYWxlX3JhdGlvKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5 KQo+IMKgCS8qIFhYWDogVGhpcyBpcyBub3QgdGhlIHNhbWUgbG9naWMgYXMgaW4gdGhlIHhvcmcg ZHJpdmVyLCBidXQgbW9yZSBpbgo+IMKgCcKgKiBsaW5lIHdpdGggdGhlIGludGVsIGRvY3VtZW50 YXRpb24gZm9yIHRoZSBpOTY1Cj4gwqAJwqAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDQpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpIHsKPiDCoAkJ Lyogb24gaTk2NSB1c2UgdGhlIFBHTSByZWcgdG8gcmVhZCBvdXQgdGhlIGF1dG9zY2FsZXIgdmFs dWVzICovCj4gwqAJCXJhdGlvID0gSTkxNV9SRUFEKFBGSVRfUEdNX1JBVElPUykgPj4gUEZJVF9W RVJUX1NDQUxFX1NISUZUXzk2NTsKPiDCoAl9IGVsc2Ugewo+IEBAIC0xMDY5LDcgKzEwNjksNyBA QCBzdGF0aWMgaW50IGludGVsX3BhbmVsX2ZpdHRlcl9waXBlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gwqAJdTMywqDCoHBmaXRfY29udHJvbDsKPiDCoAo+IMKgCS8qIGk4MzAgZG9lc24ndCBo YXZlIGEgcGFuZWwgZml0dGVyICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gMyAm JiAoSVNfSTgzMChkZXYpIHx8ICFJU19NT0JJTEUoZGV2KSkpCj4gKwlpZiAoSU5URUxfSU5GTyhk ZXZfcHJpdiktPmdlbiA8PSAzICYmIChJU19JODMwKGRldikgfHwgIUlTX01PQklMRShkZXYpKSkK PiDCoAkJcmV0dXJuIC0xOwo+IMKgCj4gwqAJcGZpdF9jb250cm9sID0gSTkxNV9SRUFEKFBGSVRf Q09OVFJPTCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggNDNiMjRhMS4uZThlNzc4 ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0yMTI2LDE0ICsyMTI2LDE0IEBA IHN0YXRpYyB2b2lkIGludGVsX3JlYWRfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB1aW50MTZfdCB3bVs4XSkKPiDCoAkJd21bMl0gPSAoc3NrcGQgPj4gMTIpICYgMHhGRjsKPiDC oAkJd21bM10gPSAoc3NrcGQgPj4gMjApICYgMHgxRkY7Cj4gwqAJCXdtWzRdID0gKHNza3BkID4+ IDMyKSAmIDB4MUZGOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KSB7 Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikgewo+IMKgCQl1 aW50MzJfdCBzc2twZCA9IEk5MTVfUkVBRChNQ0hfU1NLUEQpOwo+IMKgCj4gwqAJCXdtWzBdID0g KHNza3BkID4+IFNTS1BEX1dNMF9TSElGVCkgJiBTU0tQRF9XTV9NQVNLOwo+IMKgCQl3bVsxXSA9 IChzc2twZCA+PiBTU0tQRF9XTTFfU0hJRlQpICYgU1NLUERfV01fTUFTSzsKPiDCoAkJd21bMl0g PSAoc3NrcGQgPj4gU1NLUERfV00yX1NISUZUKSAmIFNTS1BEX1dNX01BU0s7Cj4gwqAJCXdtWzNd ID0gKHNza3BkID4+IFNTS1BEX1dNM19TSElGVCkgJiBTU0tQRF9XTV9NQVNLOwo+IC0JfSBlbHNl IGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPj0gNSkgewo+IMKgCQl1aW50MzJfdCBtbHRyID0gSTkxNV9SRUFE KE1MVFJfSUxLKTsKPiDCoAo+IMKgCQkvKiBJTEsgcHJpbWFyeSBMUDAgbGF0ZW5jeSBpcyA3MDAg bnMgKi8KPiBAQCAtMjMzOCw3ICsyMzM4LDcgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBl X3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gwqAJdXNhYmxlX2xldmVsID0g bWF4X2xldmVsOwo+IMKgCj4gwqAJLyogSUxLL1NOQjogTFAyKyB3YXRlcm1hcmtzIG9ubHkgdy9v IHNwcml0ZXMgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA2ICYmIHBpcGVfd20t PnNwcml0ZXNfZW5hYmxlZCkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDYg JiYgcGlwZV93bS0+c3ByaXRlc19lbmFibGVkKQo+IMKgCQl1c2FibGVfbGV2ZWwgPSAxOwo+IMKg Cj4gwqAJLyogSUxLL1NOQi9JVkI6IExQMSsgd2F0ZXJtYXJrcyBvbmx5IHcvbyBzY2FsaW5nICov Cj4gQEAgLTI0ODEsMTIgKzI0ODEsMTIgQEAgc3RhdGljIHZvaWQgaWxrX3dtX21lcmdlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gwqAJaW50IGxhc3RfZW5hYmxlZF9sZXZlbCA9IG1heF9sZXZl bDsKPiDCoAo+IMKgCS8qIElMSy9TTkIvSVZCOiBMUDErIHdhdGVybWFya3Mgb25seSB3LyBzaW5n bGUgcGlwZSAqLwo+IC0JaWYgKChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA2IHx8IElTX0lWWUJS SURHRShkZXYpKSAmJgo+ICsJaWYgKChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDYgfHwg SVNfSVZZQlJJREdFKGRldikpICYmCj4gwqAJwqDCoMKgwqBjb25maWctPm51bV9waXBlc19hY3Rp dmUgPiAxKQo+IMKgCQlyZXR1cm47Cj4gwqAKPiDCoAkvKiBJTEs6IEZCQyBXTSBtdXN0IGJlIGRp c2FibGVkIGFsd2F5cyAqLwo+IC0JbWVyZ2VkLT5mYmNfd21fZW5hYmxlZCA9IElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDY7Cj4gKwltZXJnZWQtPmZiY193bV9lbmFibGVkID0gSU5URUxfSU5GTyhk ZXZfcHJpdiktPmdlbiA+PSA2Owo+IMKgCj4gwqAJLyogbWVyZ2UgZWFjaCBXTTErIGxldmVsICov Cj4gwqAJZm9yIChsZXZlbCA9IDE7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IEBA IC0yNzkyLDcgKzI3OTIsNyBAQCBzdGF0aWMgdm9pZCBpbGtfd3JpdGVfd21fdmFsdWVzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAnCoMKgwqDCoHByZXZpb3VzLT53bV9s cF9zcHJbMF0gIT0gcmVzdWx0cy0+d21fbHBfc3ByWzBdKQo+IMKgCQlJOTE1X1dSSVRFKFdNMVNf TFBfSUxLLCByZXN1bHRzLT53bV9scF9zcHJbMF0pOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gNykgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNykg ewo+IMKgCQlpZiAoZGlydHkgJiBXTV9ESVJUWV9MUCgyKSAmJiBwcmV2aW91cy0+d21fbHBfc3By WzFdICE9IHJlc3VsdHMtPndtX2xwX3NwclsxXSkKPiDCoAkJCUk5MTVfV1JJVEUoV00yU19MUF9J VkIsIHJlc3VsdHMtPndtX2xwX3NwclsxXSk7Cj4gwqAJCWlmIChkaXJ0eSAmIFdNX0RJUlRZX0xQ KDMpICYmIHByZXZpb3VzLT53bV9scF9zcHJbMl0gIT0gcmVzdWx0cy0+d21fbHBfc3ByWzJdKQo+ IEBAIC0zNzMzLDcgKzM3MzMsNyBAQCBzdGF0aWMgdm9pZCBpbGtfcHJvZ3JhbV93YXRlcm1hcmtz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAlpbGtfd21fbWVyZ2UoZGV2 LCAmY29uZmlnLCAmbWF4LCAmbHBfd21fMV8yKTsKPiDCoAo+IMKgCS8qIDUvNiBzcGxpdCBvbmx5 IGluIHNpbmdsZSBwaXBlIGNvbmZpZyBvbiBJVkIrICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNyAmJgo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNyAmJgo+ IMKgCcKgwqDCoMKgY29uZmlnLm51bV9waXBlc19hY3RpdmUgPT0gMSAmJiBjb25maWcuc3ByaXRl c19lbmFibGVkKSB7Cj4gwqAJCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMSwgJmNvbmZp ZywgSU5URUxfRERCX1BBUlRfNV82LCAmbWF4KTsKPiDCoAkJaWxrX3dtX21lcmdlKGRldiwgJmNv bmZpZywgJm1heCwgJmxwX3dtXzVfNik7Cj4gQEAgLTQxMDIsNyArNDEwMiw3IEBAIHZvaWQgaWxr X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCWh3LT53bV9scFsy XSA9IEk5MTVfUkVBRChXTTNfTFBfSUxLKTsKPiDCoAo+IMKgCWh3LT53bV9scF9zcHJbMF0gPSBJ OTE1X1JFQUQoV00xU19MUF9JTEspOwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcp IHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDcpIHsKPiDCoAkJaHctPndt X2xwX3NwclsxXSA9IEk5MTVfUkVBRChXTTJTX0xQX0lWQik7Cj4gwqAJCWh3LT53bV9scF9zcHJb Ml0gPSBJOTE1X1JFQUQoV00zU19MUF9JVkIpOwo+IMKgCX0KPiBAQCAtNTE0MCw3ICs1MTQwLDcg QEAgc3RhdGljIHZvaWQgX19nZW42X3VwZGF0ZV9yaW5nX2ZyZXEoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiDCoAkJCcKgKiBObyBmbG9vciByZXF1aXJlZCBmb3IgcmluZyBmcmVxdWVuY3kgb24g U0tMLgo+IMKgCQkJwqAqLwo+IMKgCQkJcmluZ19mcmVxID0gZ3B1X2ZyZXE7Cj4gLQkJfSBlbHNl IGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4gKwkJfSBlbHNlIGlmIChJTlRFTF9J TkZPKGRldl9wcml2KS0+Z2VuID49IDgpIHsKPiDCoAkJCS8qIG1heCgyICogR1QsIEREUikuIE5C OiBHVCBpcyA1ME1IeiB1bml0cyAqLwo+IMKgCQkJcmluZ19mcmVxID0gbWF4KG1pbl9yaW5nX2Zy ZXEsIGdwdV9mcmVxKTsKPiDCoAkJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldikpIHsKPiBAQCAt NTE4NCwxMiArNTE4NCwxMSBAQCB2b2lkIGdlbjZfdXBkYXRlX3JpbmdfZnJlcShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+IMKgCj4gwqBzdGF0aWMgaW50IGNoZXJyeXZpZXdfcnBzX21heF9mcmVx KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+IMKgCXUzMiB2YWwsIHJwMDsKPiDCoAo+IMKg CXZhbCA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LCBGQl9HRlhfRk1BWF9BVF9WTUFYX0ZVU0Up Owo+IMKgCj4gLQlzd2l0Y2ggKElOVEVMX0lORk8oZGV2KS0+ZXVfdG90YWwpIHsKPiArCXN3aXRj aCAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmV1X3RvdGFsKSB7Cj4gwqAJY2FzZSA4Ogo+IMKgCQkv KiAoMiAqIDQpIGNvbmZpZyAqLwo+IMKgCQlycDAgPSAodmFsID4+IEZCX0dGWF9GTUFYX0FUX1ZN QVhfMlNTNEVVX0ZVU0VfU0hJRlQpOwo+IEBAIC01NzkxLDEwICs1NzkwLDkgQEAgc3RhdGljIHVu c2lnbmVkIGxvbmcgX19pOTE1X2NoaXBzZXRfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiDCoAo+IMKgdW5zaWduZWQgbG9uZyBpOTE1X2NoaXBzZXRfdmFsKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBkZXZfcHJpdi0+ZGV2Owo+IMKgCXVuc2lnbmVkIGxvbmcgdmFsOwo+IMKgCj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gIT0gNSkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+ Z2VuICE9IDUpCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gwqAJc3Bpbl9sb2NrX2lycSgmbWNoZGV2 X2xvY2spOwo+IEBAIC01ODM0LDExICs1ODMyLDEwIEBAIHN0YXRpYyBpbnQgX3B4dmlkX3RvX3Zk KHU4IHB4dmlkKQo+IMKgCj4gwqBzdGF0aWMgdTMyIHB2aWRfdG9fZXh0dmlkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggcHh2aWQpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiDCoAljb25zdCBpbnQgdmQgPSBfcHh2aWRfdG9f dmQocHh2aWQpOwo+IMKgCWNvbnN0IGludCB2bSA9IHZkIC0gMTEyNTsKPiDCoAo+IC0JaWYgKElO VEVMX0lORk8oZGV2KS0+aXNfbW9iaWxlKQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5p c19tb2JpbGUpCj4gwqAJCXJldHVybiB2bSA+IDAgPyB2bSA6IDA7Cj4gwqAKPiDCoAlyZXR1cm4g dmQ7Cj4gQEAgLTU4NzksOSArNTg3Niw3IEBAIHN0YXRpYyB2b2lkIF9faTkxNV91cGRhdGVfZ2Z4 X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAKPiDCoHZvaWQgaTkx NV91cGRhdGVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7 Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiAtCj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gIT0gNSkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+ Z2VuICE9IDUpCj4gwqAJCXJldHVybjsKPiDCoAo+IMKgCXNwaW5fbG9ja19pcnEoJm1jaGRldl9s b2NrKTsKPiBAQCAtNTkzMCwxMCArNTkyNSw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faTkx NV9nZnhfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAo+IMKgdW5z aWduZWQgbG9uZyBpOTE1X2dmeF92YWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+IMKgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gwqAJ dW5zaWduZWQgbG9uZyB2YWw7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiAhPSA1 KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gIT0gNSkKPiDCoAkJcmV0dXJuIDA7 Cj4gwqAKPiDCoAlzcGluX2xvY2tfaXJxKCZtY2hkZXZfbG9jayk7Cj4gQEAgLTYyNDYsNyArNjI0 MCw3IEBAIHZvaWQgaW50ZWxfc3VzcGVuZF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ICsJ aWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA2KQo+IMKgCQlyZXR1cm47Cj4gwqAKPiDC oAlnZW42X3N1c3BlbmRfcnBzKGRldik7Cj4gQEAgLTYyNjEsMTEgKzYyNTUsMTEgQEAgdm9pZCBp bnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCj4g wqAJaWYgKElTX0lST05MQUtFX00oZGV2KSkgewo+IMKgCQlpcm9ubGFrZV9kaXNhYmxlX2RycHMo ZGV2KTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJfSBl bHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYpIHsKPiDCoAkJaW50ZWxfc3Vz cGVuZF9ndF9wb3dlcnNhdmUoZGV2KTsKPiDCoAo+IMKgCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cnBzLmh3X2xvY2spOwo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICsJCWlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCj4gwqAJCQlnZW45X2Rpc2FibGVfcnBz KGRldik7Cj4gwqAJCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKPiDCoAkJCWNoZXJyeXZp ZXdfZGlzYWJsZV9ycHMoZGV2KTsKPiBAQCAtNjI5NCw3ICs2Mjg4LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfZ2VuNl9wb3dlcnNhdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gwqAJ CWNoZXJyeXZpZXdfZW5hYmxlX3JwcyhkZXYpOwo+IMKgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpKSB7Cj4gwqAJCXZhbGxleXZpZXdfZW5hYmxlX3JwcyhkZXYpOwo+IC0JfSBlbHNlIGlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lORk8o ZGV2X3ByaXYpLT5nZW4gPj0gOSkgewo+IMKgCQlnZW45X2VuYWJsZV9yYzYoZGV2KTsKPiDCoAkJ Z2VuOV9lbmFibGVfcnBzKGRldik7Cj4gwqAJCWlmIChJU19TS1lMQUtFKGRldikgfHwgSVNfS0FC WUxBS0UoZGV2KSkKPiBAQCAtNjMzNSw3ICs2MzI5LDcgQEAgdm9pZCBpbnRlbF9lbmFibGVfZ3Rf cG93ZXJzYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCW11dGV4X2xvY2soJmRldi0+ c3RydWN0X211dGV4KTsKPiDCoAkJaW50ZWxfaW5pdF9lbW9uKGRldik7Cj4gwqAJCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA2KSB7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0g Nikgewo+IMKgCQkvKgo+IMKgCQnCoCogUENVIGNvbW11bmljYXRpb24gaXMgc2xvdyBhbmQgdGhp cyBkb2Vzbid0IG5lZWQgdG8gYmUKPiDCoAkJwqAqIGRvbmUgYXQgYW55IHNwZWNpZmljIHRpbWUs IHNvIGRvIHRoaXMgb3V0IG9mIG91ciBmYXN0IHBhdGgKPiBAQCAtNjM1OCw3ICs2MzUyLDcgQEAg dm9pZCBpbnRlbF9yZXNldF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDC oHsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ICsJaWYgKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPCA2KQo+IMKgCQlyZXR1cm47Cj4gwqAKPiDCoAlnZW42X3N1 c3BlbmRfcnBzKGRldik7Cj4gQEAgLTcxOTksNyArNzE5Myw3IEBAIHZvaWQgaW50ZWxfaW5pdF9w bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCQlpOTE1X2lyb25sYWtlX2dldF9tZW1fZnJl cShkZXYpOwo+IMKgCj4gwqAJLyogRm9yIEZJRk8gd2F0ZXJtYXJrIHVwZGF0ZXMgKi8KPiAtCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA+PSA5KSB7Cj4gwqAJCXNrbF9zZXR1cF93bV9sYXRlbmN5KGRldik7Cj4gwqAJCWRl dl9wcml2LT5kaXNwbGF5LnVwZGF0ZV93bSA9IHNrbF91cGRhdGVfd207Cj4gwqAJfSBlbHNlIGlm IChIQVNfUENIX1NQTElUKGRldikpIHsKPiBAQCAtNzI0OSw3ICs3MjQzLDcgQEAgdm9pZCBpbnRl bF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCWRldl9wcml2LT5kaXNwbGF5 LnVwZGF0ZV93bSA9IGk5eHhfdXBkYXRlX3dtOwo+IMKgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRf Zmlmb19zaXplID0gaTl4eF9nZXRfZmlmb19zaXplOwo+IMKgCX0gZWxzZSBpZiAoSVNfR0VOMihk ZXYpKSB7Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+bnVtX3BpcGVzID09IDEpIHsKPiArCQlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBlcyA9PSAxKSB7Cj4gwqAJCQlkZXZfcHJp di0+ZGlzcGxheS51cGRhdGVfd20gPSBpODQ1X3VwZGF0ZV93bTsKPiDCoAkJCWRldl9wcml2LT5k aXNwbGF5LmdldF9maWZvX3NpemUgPSBpODQ1X2dldF9maWZvX3NpemU7Cj4gwqAJCX0gZWxzZSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBpbmRleCBjM2FiYWU0Li4zMjA1YjAzIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBAQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyB2 b2lkIGhzd19wc3JfZW5hYmxlX3Npbmsoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiDCoAkJ STkxNV9XUklURShwc3JfYXV4X2RhdGFfcmVnKGRldl9wcml2LCBwb3J0LCBpID4+IDIpLAo+IMKg CQkJwqDCoMKgaW50ZWxfZHBfcGFja19hdXgoJmF1eF9tc2dbaV0sIHNpemVvZihhdXhfbXNnKSAt IGkpKTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKPiArCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpIHsKPiDCoAkJdWludDMyX3QgdmFsOwo+IMKg Cj4gwqAJCXZhbCA9IEk5MTVfUkVBRChhdXhfY3RsX3JlZyk7Cj4gQEAgLTQzMyw3ICs0MzMsNyBA QCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiDCoAkJ LyogRW5hYmxlIFBTUiBvbiB0aGUgcGFuZWwgKi8KPiDCoAkJaHN3X3Bzcl9lbmFibGVfc2luayhp bnRlbF9kcCk7Cj4gwqAKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiArCQlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQo+IMKgCQkJaW50ZWxfcHNyX2FjdGl2 YXRlKGludGVsX2RwKTsKPiDCoAl9IGVsc2Ugewo+IMKgCQl2bHZfcHNyX3NldHVwX3ZzYyhpbnRl bF9kcCk7Cj4gQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiDCoAnCoCrCoMKgwqDCoMKgLSBPbiBIU1cvQkRXIHdlIGdl dCBhIHJlY292ZXJhYmxlIGZyb3plbiBzY3JlZW4gdW50aWwgbmV4dAo+IMKgCcKgKsKgwqDCoMKg wqDCoMKgZXhpdC1hY3RpdmF0ZSBzZXF1ZW5jZS4KPiDCoAnCoCovCj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA5KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA5KQo+ IMKgCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5wc3Iud29yaywKPiDCoAkJCQnC oMKgwqDCoMKgwqBtc2Vjc190b19qaWZmaWVzKGludGVsX2RwLT5wYW5lbF9wb3dlcl9jeWNsZV9k ZWxheSAqIDUpKTsKPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK PiBpbmRleCAyZTg2NGI3Li4zNmZlZGVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYwo+IEBAIC01MDksNyArNTA5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmlu Z19zZXR1cF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gwqAJ wqAqIGFyaXNlczogZG8gd2Ugc3RpbGwgbmVlZCB0aGlzIGFuZCBpZiBzbyBob3cgc2hvdWxkIHdl IGdvIGFib3V0Cj4gwqAJwqAqIGludmFsaWRhdGluZyB0aGUgVExCPwo+IMKgCcKgKi8KPiAtCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2ICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOCkg ewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNiAmJiBJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuIDwgOCkgewo+IMKgCQlpOTE1X3JlZ190IHJlZyA9IFJJTkdfSU5TVFBNKGVu Z2luZS0+bW1pb19iYXNlKTsKPiDCoAo+IMKgCQkvKiByaW5nIHNob3VsZCBiZSBpZGxlIGJlZm9y ZSBpc3N1aW5nIGEgc3luYyBmbHVzaCovCj4gQEAgLTEyMTUsNyArMTIxNSw3IEBAIHN0YXRpYyBp bnQgaW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gwqAJ CXJldHVybiByZXQ7Cj4gwqAKPiDCoAkvKiBXYVRpbWVkU2luZ2xlVmVydGV4RGlzcGF0Y2g6Y2ws YncsY3RnLGVsayxpbGssc25iICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCAm JiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDcpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdikt PmdlbiA+PSA0ICYmIElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA3KQo+IMKgCQlJOTE1X1dS SVRFKE1JX01PREUsIF9NQVNLRURfQklUX0VOQUJMRShWU19USU1FUl9ESVNQQVRDSCkpOwo+IMKg Cj4gwqAJLyogV2UgbmVlZCB0byBkaXNhYmxlIHRoZSBBc3luY0ZsaXAgcGVyZm9ybWFuY2Ugb3B0 aW1pc2F0aW9ucyBpbiBvcmRlcgo+IEBAIC0xMjI0LDEyICsxMjI0LDEyIEBAIHN0YXRpYyBpbnQg aW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gwqAJwqAq Cj4gwqAJwqAqIFdhRGlzYWJsZUFzeW5jRmxpcFBlcmZNb2RlOnNuYixpdmIsaHN3LHZsdgo+IMKg CcKgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2ICYmIElOVEVMX0lORk8oZGV2 KS0+Z2VuIDwgOCkKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYgJiYgSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDgpCj4gwqAJCUk5MTVfV1JJVEUoTUlfTU9ERSwgX01B U0tFRF9CSVRfRU5BQkxFKEFTWU5DX0ZMSVBfUEVSRl9ESVNBQkxFKSk7Cj4gwqAKPiDCoAkvKiBS ZXF1aXJlZCBmb3IgdGhlIGhhcmR3YXJlIHRvIHByb2dyYW0gc2NhbmxpbmUgdmFsdWVzIGZvciB3 YWl0aW5nICovCj4gwqAJLyogV2FFbmFibGVGbHVzaFRsYkludmFsaWRhdGlvbk1vZGU6c25iICov Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gNikKPiArCWlmIChJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuID09IDYpCj4gwqAJCUk5MTVfV1JJVEUoR0ZYX01PREUsCj4gwqAJCQnCoMKg wqBfTUFTS0VEX0JJVF9FTkFCTEUoR0ZYX1RMQl9JTlZBTElEQVRFX0VYUExJQ0lUKSk7Cj4gwqAK PiBAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgc3RhdGljIGludCBpbml0X3JlbmRlcl9yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiDCoAkJCcKgwqDCoF9NQVNLRURfQklUX0RJU0FC TEUoQ00wX1NUQ19FVklDVF9ESVNBQkxFX0xSQV9TTkIpKTsKPiDCoAl9Cj4gwqAKPiAtCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA2ICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOCkKPiAr CWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYgJiYgSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA8IDgpCj4gwqAJCUk5MTVfV1JJVEUoSU5TVFBNLCBfTUFTS0VEX0JJVF9FTkFCTEUo SU5TVFBNX0ZPUkNFX09SREVSSU5HKSk7Cj4gwqAKPiDCoAlpZiAoSEFTX0wzX0RQRihkZXYpKQo+ IEBAIC0xMjgzLDcgKzEyODMsNyBAQCBzdGF0aWMgaW50IGdlbjhfcmNzX3NpZ25hbChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gwqAJZW51bSBpbnRlbF9lbmdp bmVfaWQgaWQ7Cj4gwqAJaW50IHJldCwgbnVtX3JpbmdzOwo+IMKgCj4gLQludW1fcmluZ3MgPSBo d2VpZ2h0MzIoSU5URUxfSU5GTyhkZXYpLT5yaW5nX21hc2spOwo+ICsJbnVtX3JpbmdzID0gaHdl aWdodDMyKElOVEVMX0lORk8oZGV2X3ByaXYpLT5yaW5nX21hc2spOwo+IMKgCW51bV9kd29yZHMg Kz0gKG51bV9yaW5ncy0xKSAqIE1CT1hfVVBEQVRFX0RXT1JEUzsKPiDCoCN1bmRlZiBNQk9YX1VQ REFURV9EV09SRFMKPiDCoAo+IEBAIC0xMzI1LDcgKzEzMjUsNyBAQCBzdGF0aWMgaW50IGdlbjhf eGNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4g wqAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gwqAJaW50IHJldCwgbnVtX3JpbmdzOwo+IMKg Cj4gLQludW1fcmluZ3MgPSBod2VpZ2h0MzIoSU5URUxfSU5GTyhkZXYpLT5yaW5nX21hc2spOwo+ ICsJbnVtX3JpbmdzID0gaHdlaWdodDMyKElOVEVMX0lORk8oZGV2X3ByaXYpLT5yaW5nX21hc2sp Owo+IMKgCW51bV9kd29yZHMgKz0gKG51bV9yaW5ncy0xKSAqIE1CT1hfVVBEQVRFX0RXT1JEUzsK PiDCoCN1bmRlZiBNQk9YX1VQREFURV9EV09SRFMKPiDCoAo+IEBAIC0xMzY1LDcgKzEzNjUsNyBA QCBzdGF0aWMgaW50IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2ln bmFsbGVyX3JlcSwKPiDCoAlpbnQgcmV0LCBudW1fcmluZ3M7Cj4gwqAKPiDCoCNkZWZpbmUgTUJP WF9VUERBVEVfRFdPUkRTIDMKPiAtCW51bV9yaW5ncyA9IGh3ZWlnaHQzMihJTlRFTF9JTkZPKGRl diktPnJpbmdfbWFzayk7Cj4gKwludW1fcmluZ3MgPSBod2VpZ2h0MzIoSU5URUxfSU5GTyhkZXZf cHJpdiktPnJpbmdfbWFzayk7Cj4gwqAJbnVtX2R3b3JkcyArPSByb3VuZF91cCgobnVtX3Jpbmdz LTEpICogTUJPWF9VUERBVEVfRFdPUkRTLCAyKTsKPiDCoCN1bmRlZiBNQk9YX1VQREFURV9EV09S RFMKPiDCoAo+IEBAIC0yNTUzLDcgKzI1NTMsNyBAQCB2b2lkIGludGVsX3JpbmdfaW5pdF9zZXFu byhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBzZXFubykKPiDCoAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID09IDYgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gNykgewo+ICsJaWYgKElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPT0gNiB8fCBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu ID09IDcpIHsKPiDCoAkJSTkxNV9XUklURShSSU5HX1NZTkNfMChlbmdpbmUtPm1taW9fYmFzZSks IDApOwo+IMKgCQlJOTE1X1dSSVRFKFJJTkdfU1lOQ18xKGVuZ2luZS0+bW1pb19iYXNlKSwgMCk7 Cj4gwqAJCWlmIChIQVNfVkVCT1goZGV2KSkKPiBAQCAtMjc3Niw3ICsyNzc2LDcgQEAgaW50IGlu dGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJ ZW5naW5lLT5leGVjX2lkID0gSTkxNV9FWEVDX1JFTkRFUjsKPiDCoAllbmdpbmUtPm1taW9fYmFz ZSA9IFJFTkRFUl9SSU5HX0JBU0U7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA4KSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4KSB7Cj4gwqAJCWlm IChpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldikpIHsKPiDCoAkJCW9iaiA9IGk5MTVfZ2Vt X2FsbG9jX29iamVjdChkZXYsIDQwOTYpOwo+IMKgCQkJaWYgKG9iaiA9PSBOVUxMKSB7Cj4gQEAg LTI4MDgsMTEgKzI4MDgsMTEgQEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCQllbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwgPSBn ZW44X3Jjc19zaWduYWw7Cj4gwqAJCQlHRU44X1JJTkdfU0VNQVBIT1JFX0lOSVQoZW5naW5lKTsK PiDCoAkJfQo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KSB7Cj4gKwl9 IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikgewo+IMKgCQllbmdpbmUt PmluaXRfY29udGV4dCA9IGludGVsX3Jjc19jdHhfaW5pdDsKPiDCoAkJZW5naW5lLT5hZGRfcmVx dWVzdCA9IGdlbjZfYWRkX3JlcXVlc3Q7Cj4gwqAJCWVuZ2luZS0+Zmx1c2ggPSBnZW43X3JlbmRl cl9yaW5nX2ZsdXNoOwo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA2KQo+ICsJCWlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID09IDYpCj4gwqAJCQllbmdpbmUtPmZsdXNoID0g Z2VuNl9yZW5kZXJfcmluZ19mbHVzaDsKPiDCoAkJZW5naW5lLT5pcnFfZ2V0ID0gZ2VuNl9yaW5n X2dldF9pcnE7Cj4gwqAJCWVuZ2luZS0+aXJxX3B1dCA9IGdlbjZfcmluZ19wdXRfaXJxOwo+IEBA IC0yODUxLDcgKzI4NTEsNyBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAkJCQkJR1RfUkVOREVSX1BJUEVDVExfTk9USUZZX0lO VEVSUlVQVDsKPiDCoAl9IGVsc2Ugewo+IMKgCQllbmdpbmUtPmFkZF9yZXF1ZXN0ID0gaTl4eF9h ZGRfcmVxdWVzdDsKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+ICsJCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwgNCkKPiDCoAkJCWVuZ2luZS0+Zmx1c2ggPSBnZW4y X3JlbmRlcl9yaW5nX2ZsdXNoOwo+IMKgCQllbHNlCj4gwqAJCQllbmdpbmUtPmZsdXNoID0gZ2Vu NF9yZW5kZXJfcmluZ19mbHVzaDsKPiBAQCAtMjg3Miw5ICsyODcyLDkgQEAgaW50IGludGVsX2lu aXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCWVuZ2lu ZS0+ZGlzcGF0Y2hfZXhlY2J1ZmZlciA9IGhzd19yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXI7Cj4g wqAJZWxzZSBpZiAoSVNfR0VOOChkZXYpKQo+IMKgCQllbmdpbmUtPmRpc3BhdGNoX2V4ZWNidWZm ZXIgPSBnZW44X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAtCWVsc2UgaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDYpCj4gKwllbHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu ID49IDYpCj4gwqAJCWVuZ2luZS0+ZGlzcGF0Y2hfZXhlY2J1ZmZlciA9IGdlbjZfcmluZ19kaXNw YXRjaF9leGVjYnVmZmVyOwo+IC0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkK PiArCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNCkKPiDCoAkJZW5naW5l LT5kaXNwYXRjaF9leGVjYnVmZmVyID0gaTk2NV9kaXNwYXRjaF9leGVjYnVmZmVyOwo+IMKgCWVs c2UgaWYgKElTX0k4MzAoZGV2KSB8fCBJU184NDVHKGRldikpCj4gwqAJCWVuZ2luZS0+ZGlzcGF0 Y2hfZXhlY2J1ZmZlciA9IGk4MzBfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiBAQCAtMjkwNiw3ICsy OTA2LDcgQEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gwqAJaWYgKHJldCkKPiDCoAkJcmV0dXJuIHJldDsKPiDCoAo+IC0JaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDUpIHsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+ Z2VuID49IDUpIHsKPiDCoAkJcmV0ID0gaW50ZWxfaW5pdF9waXBlX2NvbnRyb2woZW5naW5lKTsK PiDCoAkJaWYgKHJldCkKPiDCoAkJCXJldHVybiByZXQ7Cj4gQEAgLTI5MjUsNyArMjkyNSw3IEBA IGludCBpbnRlbF9pbml0X2JzZF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ IMKgCWVuZ2luZS0+ZXhlY19pZCA9IEk5MTVfRVhFQ19CU0Q7Cj4gwqAKPiDCoAllbmdpbmUtPndy aXRlX3RhaWwgPSByaW5nX3dyaXRlX3RhaWw7Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gNikgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikgewo+IMKgCQll bmdpbmUtPm1taW9fYmFzZSA9IEdFTjZfQlNEX1JJTkdfQkFTRTsKPiDCoAkJLyogZ2VuNiBic2Qg bmVlZHMgYSBzcGVjaWFsIHdhIGZvciB0YWlsIHVwZGF0ZXMgKi8KPiDCoAkJaWYgKElTX0dFTjYo ZGV2KSkKPiBAQCAtMjkzNCw3ICsyOTM0LDcgQEAgaW50IGludGVsX2luaXRfYnNkX3JpbmdfYnVm ZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCWVuZ2luZS0+YWRkX3JlcXVlc3QgPSBn ZW42X2FkZF9yZXF1ZXN0Owo+IMKgCQllbmdpbmUtPmdldF9zZXFubyA9IGdlbjZfcmluZ19nZXRf c2Vxbm87Cj4gwqAJCWVuZ2luZS0+c2V0X3NlcW5vID0gcmluZ19zZXRfc2Vxbm87Cj4gLQkJaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKPiArCQlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA+PSA4KSB7Cj4gwqAJCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9Cj4gwqAJCQkJ R1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfVkNTMV9JUlFfU0hJRlQ7Cj4gwqAJCQll bmdpbmUtPmlycV9nZXQgPSBnZW44X3JpbmdfZ2V0X2lycTsKPiBAQCAtMzAzOCw3ICszMDM4LDcg QEAgaW50IGludGVsX2luaXRfYmx0X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gwqAJZW5naW5lLT5hZGRfcmVxdWVzdCA9IGdlbjZfYWRkX3JlcXVlc3Q7Cj4gwqAJZW5naW5l LT5nZXRfc2Vxbm8gPSBnZW42X3JpbmdfZ2V0X3NlcW5vOwo+IMKgCWVuZ2luZS0+c2V0X3NlcW5v ID0gcmluZ19zZXRfc2Vxbm87Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+ ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOCkgewo+IMKgCQllbmdpbmUtPmly cV9lbmFibGVfbWFzayA9Cj4gwqAJCQlHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9C Q1NfSVJRX1NISUZUOwo+IMKgCQllbmdpbmUtPmlycV9nZXQgPSBnZW44X3JpbmdfZ2V0X2lycTsK PiBAQCAtMzA5Nyw3ICszMDk3LDcgQEAgaW50IGludGVsX2luaXRfdmVib3hfcmluZ19idWZmZXIo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAllbmdpbmUtPmdldF9zZXFubyA9IGdlbjZfcmlu Z19nZXRfc2Vxbm87Cj4gwqAJZW5naW5lLT5zZXRfc2Vxbm8gPSByaW5nX3NldF9zZXFubzsKPiDC oAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKPiArCWlmIChJTlRFTF9JTkZP KGRldl9wcml2KS0+Z2VuID49IDgpIHsKPiDCoAkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPQo+ IMKgCQkJR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfVkVDU19JUlFfU0hJRlQ7Cj4g wqAJCWVuZ2luZS0+aXJxX2dldCA9IGdlbjhfcmluZ19nZXRfaXJxOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zZHZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zZHZvLmMKPiBpbmRleCAyMTI4ZmFlLi5mMTJmODc5IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nkdm8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Nkdm8uYwo+IEBAIC0xMjcxLDEzICsxMjcxLDEzIEBAIHN0YXRpYyB2b2lkIGludGVs X3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiDC oAkJcmV0dXJuOwo+IMKgCj4gwqAJLyogU2V0IHRoZSBTRFZPIGNvbnRyb2wgcmVncy4gKi8KPiAt CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZf cHJpdiktPmdlbiA+PSA0KSB7Cj4gwqAJCS8qIFRoZSByZWFsIG1vZGUgcG9sYXJpdHkgaXMgc2V0 IGJ5IHRoZSBTRFZPIGNvbW1hbmRzLCB1c2luZwo+IMKgCQnCoCogc3RydWN0IGludGVsX3Nkdm9f ZHRkLiAqLwo+IMKgCQlzZHZveCA9IFNEVk9fVlNZTkNfQUNUSVZFX0hJR0ggfCBTRFZPX0hTWU5D X0FDVElWRV9ISUdIOwo+IMKgCQlpZiAoIUhBU19QQ0hfU1BMSVQoZGV2KSAmJiBjcnRjLT5jb25m aWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gwqAJCQlzZHZveCB8PSBIRE1JX0NPTE9SX1JBTkdF XzE2XzIzNTsKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KQo+ICsJCWlmIChJTlRF TF9JTkZPKGRldl9wcml2KS0+Z2VuIDwgNSkKPiDCoAkJCXNkdm94IHw9IFNEVk9fQk9SREVSX0VO QUJMRTsKPiDCoAl9IGVsc2Ugewo+IMKgCQlzZHZveCA9IEk5MTVfUkVBRChpbnRlbF9zZHZvLT5z ZHZvX3JlZyk7Cj4gQEAgLTEyOTYsNyArMTI5Niw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nkdm9f cHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiDCoAlpZiAo aW50ZWxfc2R2by0+aGFzX2hkbWlfYXVkaW8pCj4gwqAJCXNkdm94IHw9IFNEVk9fQVVESU9fRU5B QkxFOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICsJaWYgKElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNCkgewo+IMKgCQkvKiBkb25lIGluIGNydGNfbW9k ZV9zZXQgYXMgdGhlIGRwbGxfbWQgcmVnIG11c3QgYmUgd3JpdHRlbiBlYXJseSAqLwo+IMKgCX0g ZWxzZSBpZiAoSVNfSTk0NUcoZGV2KSB8fCBJU19JOTQ1R00oZGV2KSB8fCBJU19HMzMoZGV2KSkg ewo+IMKgCQkvKiBkb25lIGluIGNydGNfbW9kZV9zZXQgYXMgaXQgbGl2ZXMgaW5zaWRlIHRoZSBk cGxsIHJlZ2lzdGVyICovCj4gQEAgLTEzMDYsNyArMTMwNiw3IEBAIHN0YXRpYyB2b2lkIGludGVs X3Nkdm9fcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiDC oAl9Cj4gwqAKPiDCoAlpZiAoaW5wdXRfZHRkLnBhcnQyLnNkdm9fZmxhZ3MgJiBTRFZPX05FRURf VE9fU1RBTEwgJiYKPiAtCcKgwqDCoMKgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KQo+ICsJwqDC oMKgwqBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwgNSkKPiDCoAkJc2R2b3ggfD0gU0RWT19T VEFMTF9TRUxFQ1Q7Cj4gwqAJaW50ZWxfc2R2b193cml0ZV9zZHZveChpbnRlbF9zZHZvLCBzZHZv eCk7Cj4gwqB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4gaW5kZXggMjIzMTI5ZC4uZWFkMTNh YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYwo+IEBAIC0xMDk5LDcgKzEwOTksNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF90dl9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQo+IMKgCj4gwqAJc2V0X2NvbG9yX2NvbnZlcnNpb24oZGV2X3ByaXYsIGNvbG9yX2NvbnZl cnNpb24pOwo+IMKgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKPiArCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpCj4gwqAJCUk5MTVfV1JJVEUoVFZfQ0xSX0tO T0JTLCAweDAwNDA0MDAwKTsKPiDCoAllbHNlCj4gwqAJCUk5MTVfV1JJVEUoVFZfQ0xSX0tOT0JT LCAweDAwNjA2MDAwKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IGluZGV4IGFj MmFjMDcuLjBjY2VmYTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IEBA IC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2VsbGNfZGV0ZWN0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAo+IMKgCWlmICgoSVNfSEFTV0VMTChkZXYpIHx8 IElTX0JST0FEV0VMTChkZXYpIHx8Cj4gLQnCoMKgwqDCoMKgSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gOSkgJiYKPiArCcKgwqDCoMKgwqBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpICYm Cj4gwqAJwqDCoMKgwqAoX19yYXdfaTkxNV9yZWFkMzIoZGV2X3ByaXYsIEhTV19FRFJBTV9QUkVT RU5UKSAmIEVEUkFNX0VOQUJMRUQpKSB7Cj4gwqAJCS8qIFRoZSBkb2NzIGRvIG5vdCBleHBsYWlu IGV4YWN0bHkgaG93IHRoZSBjYWxjdWxhdGlvbiBjYW4gYmUKPiDCoAkJwqAqIG1hZGUuIEl0IGlz IHNvbWV3aGF0IGd1ZXNzYWJsZSwgYnV0IGZvciBub3csIGl0J3MgYWx3YXlzCj4gQEAgLTEyNTks NyArMTI1OSw3IEBAIHZvaWQgaW50ZWxfdW5jb3JlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiDCoAo+IMKgCWRldl9wcml2LT51bmNvcmUudW5jbGFpbWVkX21taW9fY2hlY2sgPSAxOwo+ IMKgCj4gLQlzd2l0Y2ggKElOVEVMX0lORk8oZGV2KS0+Z2VuKSB7Cj4gKwlzd2l0Y2ggKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4pIHsKPiDCoAlkZWZhdWx0Ogo+IMKgCWNhc2UgOToKPiDCoAkJ QVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKGdlbjkpOwo+IEBAIC0xMzQzLDcgKzEzNDMsNyBAQCBp bnQgaTkxNV9yZWdfcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IMKgCj4gwqAJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUod2hpdGVsaXN0KTsgaSsrLCBlbnRyeSsrKSB7Cj4g wqAJCWlmIChpOTE1X21taW9fcmVnX29mZnNldChlbnRyeS0+b2Zmc2V0X2xkdykgPT0gKHJlZy0+ b2Zmc2V0ICYgLWVudHJ5LT5zaXplKSAmJgo+IC0JCcKgwqDCoMKgKDEgPDwgSU5URUxfSU5GTyhk ZXYpLT5nZW4gJiBlbnRyeS0+Z2VuX2JpdG1hc2spKQo+ICsJCcKgwqDCoMKgKDEgPDwgSU5URUxf SU5GTyhkZXZfcHJpdiktPmdlbiAmIGVudHJ5LT5nZW5fYml0bWFzaykpCj4gwqAJCQlicmVhazsK PiDCoAl9Cj4gwqAKLS0gCkpvb25hcyBMYWh0aW5lbgpPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENl bnRlcgpJbnRlbCBDb3Jwb3JhdGlvbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK