From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2] drm/i915: Store a i915 backpointer from engine, and use it Date: Thu, 5 May 2016 13:54:29 +0100 Message-ID: <572B4285.5080100@linux.intel.com> References: <572B2B5C.5050102@linux.intel.com> <1462448243-11480-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id B05726E3E6 for ; Thu, 5 May 2016 12:54:33 +0000 (UTC) In-Reply-To: <1462448243-11480-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAwNS8wNS8xNiAxMjozNywgQ2hyaXMgV2lsc29uIHdyb3RlOgo+ICAgICB0ZXh0CSAgIGRh dGEJICAgIGJzcwkgICAgZGVjCSAgICBoZXgJZmlsZW5hbWUKPiA2MzA5MzUxCTM1Nzg3MTQJIDY5 NjMyMAkxMDU4NDM4NQkgYTE4MTQxCXZtbGludXgKPiA2MzA4MzkxCTM1Nzg3MTQJIDY5NjMyMAkx MDU4MzQyNQkgYTE3ZDgxCXZtbGludXgKPgo+IEFsbW9zdCAxS2lCIG9mIGNvZGUgcmVkdWN0aW9u Lgo+Cj4gdjI6IE1vcmUgcy9JTlRFTF9JTkZPKCktPmdlbi9JTlRFTF9HRU4oKS8gYW5kIElTX0dF TngoKSBjb252ZXJzaW9ucwo+Cj4gICAgIHRleHQJICAgZGF0YQkgICAgYnNzCSAgICBkZWMJICAg IGhleAlmaWxlbmFtZQo+IDYzMDQ1NzkJMzU3ODc3OAkgNjk2MzIwCTEwNTc5Njc3CSBhMTZlZGQJ dm1saW51eAo+IDYzMDM0MjcJMzU3ODc3OAkgNjk2MzIwCTEwNTc4NTI1CSBhMTZhNWQJdm1saW51 eAo+Cj4gTm93IG92ZXIgMUtpQiEKCkknbGwgYXNzdW1lIHlvdSBkaWRuJ3QgcGxhbnQgYW55IGJh Y2tkb29ycyBpbiB2MiBzbyByLWIgc3RpbGwgYXBwbGllcy4gOikKClJlZ2FyZHMsCgpUdnJ0a28K Cj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4K PiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jICAgICAgIHwg IDEyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICB8 ICAgOCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyAgICAgICAgICAgICAg fCAgIDkgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAg IHwgIDEwICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAg ICB8ICAzNSArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAg ICAgIHwgIDQ3ICsrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YyAgICAgIHwgIDQ4ICsrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0 LmMgICAgICAgIHwgICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMgICB8ICAgNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgICAgICAgICAgfCAgMzIgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZW5kZXJfc3RhdGUuYyB8ICAxMyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f c2hyaW5rZXIuYyAgICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1 X2Vycm9yLmMgICAgICAgIHwgIDc5ICsrKy0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMgICAgICAgICAgICAgIHwgIDgwICsrKystLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdHJhY2UuaCAgICAgICAgICAgIHwgIDM2ICsrLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgICAgfCAgNDkgKystLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgICAgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2ZiYy5jICAgICAgICAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICB8IDEzOSArKysrKystLS0tLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oICAgICAgICAgICAgIHwgICAzICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMgICAgICAgICAgICB8ICAgMiArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jICAgICAgICAgfCAgIDMgKy0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgICAgIHwgICA1ICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICB8IDMyOCAr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaCAgICAgIHwgICA4ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91bmNvcmUuYyAgICAgICAgICB8ICAxNCArLQo+ICAgMjYgZmlsZXMgY2hhbmdlZCwgNDYxIGlu c2VydGlvbnMoKyksIDUxOSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Y21kX3BhcnNlci5jCj4gaW5kZXggNjlhMWJhOGViZGZiLi4zNTIyNGVhMzAyMDEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwo+IEBAIC03NTAsMTIgKzc1MCwxMiBA QCBpbnQgaTkxNV9jbWRfcGFyc2VyX2luaXRfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICAJaW50IGNtZF90YWJsZV9jb3VudDsKPiAgIAlpbnQgcmV0Owo+Cj4gLQlpZiAo IUlTX0dFTjcoZW5naW5lLT5kZXYpKQo+ICsJaWYgKCFJU19HRU43KGVuZ2luZS0+aTkxNSkpCj4g ICAJCXJldHVybiAwOwo+Cj4gICAJc3dpdGNoIChlbmdpbmUtPmlkKSB7Cj4gICAJY2FzZSBSQ1M6 Cj4gLQkJaWYgKElTX0hBU1dFTEwoZW5naW5lLT5kZXYpKSB7Cj4gKwkJaWYgKElTX0hBU1dFTEwo ZW5naW5lLT5pOTE1KSkgewo+ICAgCQkJY21kX3RhYmxlcyA9IGhzd19yZW5kZXJfcmluZ19jbWRz Owo+ICAgCQkJY21kX3RhYmxlX2NvdW50ID0KPiAgIAkJCQlBUlJBWV9TSVpFKGhzd19yZW5kZXJf cmluZ19jbWRzKTsKPiBAQCAtNzY0LDcgKzc2NCw3IEBAIGludCBpOTE1X2NtZF9wYXJzZXJfaW5p dF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCWNtZF90YWJsZV9j b3VudCA9IEFSUkFZX1NJWkUoZ2VuN19yZW5kZXJfY21kcyk7Cj4gICAJCX0KPgo+IC0JCWlmIChJ U19IQVNXRUxMKGVuZ2luZS0+ZGV2KSkgewo+ICsJCWlmIChJU19IQVNXRUxMKGVuZ2luZS0+aTkx NSkpIHsKPiAgIAkJCWVuZ2luZS0+cmVnX3RhYmxlcyA9IGhzd19yZW5kZXJfcmVnX3RhYmxlczsK PiAgIAkJCWVuZ2luZS0+cmVnX3RhYmxlX2NvdW50ID0gQVJSQVlfU0laRShoc3dfcmVuZGVyX3Jl Z190YWJsZXMpOwo+ICAgCQl9IGVsc2Ugewo+IEBAIC03ODAsNyArNzgwLDcgQEAgaW50IGk5MTVf Y21kX3BhcnNlcl9pbml0X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg CQllbmdpbmUtPmdldF9jbWRfbGVuZ3RoX21hc2sgPSBnZW43X2JzZF9nZXRfY21kX2xlbmd0aF9t YXNrOwo+ICAgCQlicmVhazsKPiAgIAljYXNlIEJDUzoKPiAtCQlpZiAoSVNfSEFTV0VMTChlbmdp bmUtPmRldikpIHsKPiArCQlpZiAoSVNfSEFTV0VMTChlbmdpbmUtPmk5MTUpKSB7Cj4gICAJCQlj bWRfdGFibGVzID0gaHN3X2JsdF9yaW5nX2NtZHM7Cj4gICAJCQljbWRfdGFibGVfY291bnQgPSBB UlJBWV9TSVpFKGhzd19ibHRfcmluZ19jbWRzKTsKPiAgIAkJfSBlbHNlIHsKPiBAQCAtNzg4LDcg Kzc4OCw3IEBAIGludCBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAkJCWNtZF90YWJsZV9jb3VudCA9IEFSUkFZX1NJWkUoZ2VuN19i bHRfY21kcyk7Cj4gICAJCX0KPgo+IC0JCWlmIChJU19IQVNXRUxMKGVuZ2luZS0+ZGV2KSkgewo+ ICsJCWlmIChJU19IQVNXRUxMKGVuZ2luZS0+aTkxNSkpIHsKPiAgIAkJCWVuZ2luZS0+cmVnX3Rh YmxlcyA9IGhzd19ibHRfcmVnX3RhYmxlczsKPiAgIAkJCWVuZ2luZS0+cmVnX3RhYmxlX2NvdW50 ID0gQVJSQVlfU0laRShoc3dfYmx0X3JlZ190YWJsZXMpOwo+ICAgCQl9IGVsc2Ugewo+IEBAIC0x MDM1LDcgKzEwMzUsNyBAQCBib29sIGk5MTVfbmVlZHNfY21kX3BhcnNlcihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gICAJaWYgKCFlbmdpbmUtPm5lZWRzX2NtZF9wYXJzZXIpCj4g ICAJCXJldHVybiBmYWxzZTsKPgo+IC0JaWYgKCFVU0VTX1BQR1RUKGVuZ2luZS0+ZGV2KSkKPiAr CWlmICghVVNFU19QUEdUVChlbmdpbmUtPmk5MTUpKQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4KPiAg IAlyZXR1cm4gKGk5MTUuZW5hYmxlX2NtZF9wYXJzZXIgPT0gMSk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA2YWQwMDhjMTk2YjUuLjY2OTg5NTdlZGUzZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTEzODMsNyArMTM4Myw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVu dXNlZCkKPiAgIAkJc2Vxbm9baWRdID0gZW5naW5lLT5nZXRfc2Vxbm8oZW5naW5lKTsKPiAgIAl9 Cj4KPiAtCWk5MTVfZ2V0X2V4dHJhX2luc3Rkb25lKGRldiwgaW5zdGRvbmUpOwo+ICsJaTkxNV9n ZXRfZXh0cmFfaW5zdGRvbmUoZGV2X3ByaXYsIGluc3Rkb25lKTsKPgo+ICAgCWludGVsX3J1bnRp bWVfcG1fcHV0KGRldl9wcml2KTsKPgo+IEBAIC0zMTY1LDcgKzMxNjUsNyBAQCBzdGF0aWMgaW50 IGk5MTVfc2VtYXBob3JlX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkK PiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAlpbnQgaiwgcmV0Owo+Cj4gLQlpZiAo IWk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2KSkgewo+ICsJaWYgKCFpOTE1X3NlbWFwaG9y ZV9pc19lbmFibGVkKGRldl9wcml2KSkgewo+ICAgCQlzZXFfcHV0cyhtLCAiU2VtYXBob3JlcyBh cmUgZGlzYWJsZWRcbiIpOwo+ICAgCQlyZXR1cm4gMDsKPiAgIAl9Cj4gQEAgLTQ3NjYsNyArNDc2 Niw3IEBAIGk5MTVfd2VkZ2VkX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+Cj4gICAJaW50ZWxf cnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+Cj4gLQlpOTE1X2hhbmRsZV9lcnJvcihkZXYsIHZh bCwKPiArCWk5MTVfaGFuZGxlX2Vycm9yKGRldl9wcml2LCB2YWwsCj4gICAJCQkgICJNYW51YWxs eSBzZXR0aW5nIHdlZGdlZCB0byAlbGx1IiwgdmFsKTsKPgo+ICAgCWludGVsX3J1bnRpbWVfcG1f cHV0KGRldl9wcml2KTsKPiBAQCAtNDkxNiw3ICs0OTE2LDcgQEAgaTkxNV9kcm9wX2NhY2hlc19z ZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAgIAl9Cj4KPiAgIAlpZiAodmFsICYgKERST1BfUkVU SVJFIHwgRFJPUF9BQ1RJVkUpKQo+IC0JCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXYpOwo+ ICsJCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Cj4KPiAgIAlpZiAodmFsICYg RFJPUF9CT1VORCkKPiAgIAkJaTkxNV9nZW1fc2hyaW5rKGRldl9wcml2LCBMT05HX01BWCwgSTkx NV9TSFJJTktfQk9VTkQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IGluZGV4IGFkN2FiZTUx NzcwMC4uNDZhYzFkYTY0YTA5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZG1hLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gQEAgLTE4 Niw3ICsxODYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0cGFyYW0oc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJdmFsdWUgPSAxOwo+ICAgCQlicmVhazsKPiAgIAljYXNl IEk5MTVfUEFSQU1fSEFTX1NFTUFQSE9SRVM6Cj4gLQkJdmFsdWUgPSBpOTE1X3NlbWFwaG9yZV9p c19lbmFibGVkKGRldik7Cj4gKwkJdmFsdWUgPSBpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRl dl9wcml2KTsKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSBJOTE1X1BBUkFNX0hBU19QUklNRV9WTUFQ X0ZMVVNIOgo+ICAgCQl2YWx1ZSA9IDE7Cj4gQEAgLTk3MCw3ICs5NzAsOCBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgIAkJCSBpbmZvLT5oYXNfZXVfcGcgPyAieSIgOiAibiIpOwo+Cj4gICAJaTkxNS5lbmFibGVf ZXhlY2xpc3RzID0KPiAtCQlpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xpc3RzKGRldiwgaTkx NS5lbmFibGVfZXhlY2xpc3RzKTsKPiArCQlpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xpc3Rz KGRldl9wcml2LAo+ICsJCQkJCSAgICAgICAJaTkxNS5lbmFibGVfZXhlY2xpc3RzKTsKPgo+ICAg CS8qCj4gICAJICogaTkxNS5lbmFibGVfcHBndHQgaXMgcmVhZC1vbmx5LCBzbyBkbyBhbiBlYXJs eSBwYXNzIHRvIHZhbGlkYXRlIHRoZQo+IEBAIC05NzksNyArOTgwLDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g ICAJICogdGhhbiBldmVyeSB0aW1lIHdlIGNoZWNrIGludGVsX2VuYWJsZV9wcGd0dCgpLgo+ICAg CSAqLwo+ICAgCWk5MTUuZW5hYmxlX3BwZ3R0ID0KPiAtCQlpbnRlbF9zYW5pdGl6ZV9lbmFibGVf cHBndHQoZGV2LCBpOTE1LmVuYWJsZV9wcGd0dCk7Cj4gKwkJaW50ZWxfc2FuaXRpemVfZW5hYmxl X3BwZ3R0KGRldl9wcml2LCBpOTE1LmVuYWJsZV9wcGd0dCk7Cj4gICAJRFJNX0RFQlVHX0RSSVZF UigicHBndHQgbW9kZTogJWlcbiIsIGk5MTUuZW5hYmxlX3BwZ3R0KTsKPiAgIH0KPgo+IEBAIC0x MzQ1LDcgKzEzNDYsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJICogTm90aWZ5IGEgdmFsaWQgc3VyZmFj ZSBhZnRlciBtb2Rlc2V0dGluZywKPiAgIAkgKiB3aGVuIHJ1bm5pbmcgaW5zaWRlIGEgVk0uCj4g ICAJICovCj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2KSkKPiArCWlmIChpbnRlbF92Z3B1 X2FjdGl2ZShkZXZfcHJpdikpCj4gICAJCUk5MTVfV1JJVEUodmd0aWZfcmVnKGRpc3BsYXlfcmVh ZHkpLCBWR1RfRFJWX0RJU1BMQVlfUkVBRFkpOwo+Cj4gICAJaTkxNV9zZXR1cF9zeXNmcyhkZXYp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDlmZDIyMWM5NzI3NS4uZmZiYzYxZTlm ZjYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTUzMCw5ICs1MzAsOSBAQCB2 b2lkIGludGVsX2RldGVjdF9wY2goc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlwY2lfZGV2 X3B1dChwY2gpOwo+ICAgfQo+Cj4gLWJvb2wgaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtib29sIGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuIDwgNikKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikKPiAgIAkJcmV0 dXJuIGZhbHNlOwo+Cj4gICAJaWYgKGk5MTUuc2VtYXBob3JlcyA+PSAwKQo+IEBAIC01NDQsNyAr NTQ0LDcgQEAgYm9vbCBpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4KPiAgICNpZmRlZiBDT05GSUdfSU5URUxfSU9NTVUKPiAgIAkvKiBFbmFibGUgc2Vt YXBob3JlcyBvbiBTTkIgd2hlbiBJTyByZW1hcHBpbmcgaXMgb2ZmICovCj4gLQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPT0gNiAmJiBpbnRlbF9pb21tdV9nZnhfbWFwcGVkKQo+ICsJaWYgKElT X0dFTjYoZGV2X3ByaXYpICYmIGludGVsX2lvbW11X2dmeF9tYXBwZWQpCj4gICAJCXJldHVybiBm YWxzZTsKPiAgICNlbmRpZgo+Cj4gQEAgLTkxNCw5ICs5MTQsOSBAQCBpbnQgaTkxNV9yZXN1bWVf c3dpdGNoZXJvbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgICogICAtIHJlLWluaXQgaW50 ZXJydXB0IHN0YXRlCj4gICAgKiAgIC0gcmUtaW5pdCBkaXNwbGF5Cj4gICAgKi8KPiAtaW50IGk5 MTVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAraW50IGk5MTVfcmVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ICAgCXN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3Ig PSAmZGV2X3ByaXYtPmdwdV9lcnJvcjsKPiAgIAl1bnNpZ25lZCByZXNldF9jb3VudGVyOwo+ICAg CWludCByZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZDU0OTZhYmExY2Q1Li5j MjZmZGYwMjExMDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjc1NCw3ICsy NzU0LDggQEAgZXh0ZXJuIGludCBpOTE1X21heF9pb2N0bDsKPiAgIGV4dGVybiBpbnQgaTkxNV9z dXNwZW5kX3N3aXRjaGVyb28oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0 YXRlKTsKPiAgIGV4dGVybiBpbnQgaTkxNV9yZXN1bWVfc3dpdGNoZXJvbyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKPgo+IC1pbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX3BwZ3R0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfcHBndHQpOwo+ICtpbnQgaW50ZWxfc2FuaXRpemVf ZW5hYmxlX3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJICAg ICAgIAlpbnQgZW5hYmxlX3BwZ3R0KTsKPgo+ICAgLyogaTkxNV9kbWEuYyAqLwo+ICAgdm9pZCBf X3ByaW50ZigzLCA0KQo+IEBAIC0yNzc4LDcgKzI3NzksNyBAQCBleHRlcm4gbG9uZyBpOTE1X2Nv bXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwKPiAgICNlbmRp Zgo+ICAgZXh0ZXJuIGludCBpbnRlbF9ncHVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dTMyIGVuZ2luZV9tYXNrKTsKPiAgIGV4dGVybiBib29sIGludGVsX2hhc19ncHVfcmVzZXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gLWV4dGVybiBpbnQgaTkxNV9yZXNldChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKPiArZXh0ZXJuIGludCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gICBleHRlcm4gaW50IGludGVsX2d1Y19yZXNldChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgZXh0ZXJuIHZvaWQgaW50ZWxfZW5naW5l X2luaXRfaGFuZ2NoZWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gICBleHRl cm4gdW5zaWduZWQgbG9uZyBpOTE1X2NoaXBzZXRfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gQEAgLTI3OTUsOSArMjc5NiwxMCBAQCB2b2lkIGludGVsX2hwZF9jYW5j ZWxfd29yayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgYm9vbCBpbnRl bF9ocGRfcGluX3RvX3BvcnQoZW51bSBocGRfcGluIHBpbiwgZW51bSBwb3J0ICpwb3J0KTsKPgo+ ICAgLyogaTkxNV9pcnEuYyAqLwo+IC12b2lkIGk5MTVfcXVldWVfaGFuZ2NoZWNrKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGk5MTVfcXVldWVfaGFuZ2NoZWNrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICBfX3ByaW50ZigzLCA0KQo+IC12b2lkIGk5MTVf aGFuZGxlX2Vycm9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBlbmdpbmVfbWFzaywKPiAr dm9pZCBpOTE1X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gKwkJICAgICAgIHUzMiBlbmdpbmVfbWFzaywKPiAgIAkJICAgICAgIGNvbnN0IGNoYXIgKmZt dCwgLi4uKTsKPgo+ICAgZXh0ZXJuIHZvaWQgaW50ZWxfaXJxX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKPiBAQCAtMjgyNyw5ICsyODI5LDkgQEAgdm9pZCBpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3B1dF9fbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgIHU2NCBpbnRlbF91bmNvcmVfZWRyYW1fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+Cj4gICB2b2lkIGFzc2VydF9mb3JjZXdha2VzX2luYWN0aXZlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBp bnRlbF92Z3B1X2FjdGl2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgaW5saW5l IGJvb2wgaW50ZWxfdmdwdV9hY3RpdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgewo+IC0JcmV0dXJuIHRvX2k5MTUoZGV2KS0+dmdwdS5hY3RpdmU7Cj4gKwlyZXR1cm4g ZGV2X3ByaXYtPnZncHUuYWN0aXZlOwo+ICAgfQo+Cj4gICB2b2lkCj4gQEAgLTMwOTcsMTMgKzMw OTksMTMgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJCSByZXEtPnNlcW5vKTsKPiAg IH0KPgo+IC1pbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2dldF9zZXFubyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1MzIgKnNlcW5vKTsKPiAraW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9nZXRf c2Vxbm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgKnNlcW5vKTsKPiAg IGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHUzMiBzZXFubyk7Cj4KPiAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gICBp OTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSk7Cj4KPiAtYm9vbCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Cj4gK2Jvb2wgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gICB2b2lkIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5n KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4KPiAgIHN0YXRpYyBpbmxpbmUgdTMy IGk5MTVfcmVzZXRfY291bnRlcihzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+IEBAIC0z MzUwLDkgKzMzNTIsOSBAQCBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2V2aWN0X2Zvcl92bWEo c3RydWN0IGk5MTVfdm1hICp0YXJnZXQpOwo+ICAgaW50IGk5MTVfZ2VtX2V2aWN0X3ZtKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCBib29sIGRvX2lkbGUpOwo+Cj4gICAvKiBiZWxvbmdz IGluIGk5MTVfZ2VtX2d0dC5oICovCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9jaGlw c2V0X2ZsdXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBp OTE1X2dlbV9jaGlwc2V0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIHsKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDYpCj4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDYpCj4gICAJCWludGVsX2d0dF9jaGlwc2V0X2ZsdXNoKCk7Cj4gICB9Cj4K PiBAQCAtMzQzMSwxNCArMzQzMywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9lcnJvcl9z dGF0ZV9idWZfcmVsZWFzZSgKPiAgIHsKPiAgIAlrZnJlZShlYi0+YnVmKTsKPiAgIH0KPiAtdm9p ZCBpOTE1X2NhcHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGVu Z2luZV9tYXNrLAo+ICt2b2lkIGk5MTVfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICAgIHUzMiBlbmdpbmVfbWFzaywKPiAgIAkJ CSAgICAgIGNvbnN0IGNoYXIgKmVycm9yX21zZyk7Cj4gICB2b2lkIGk5MTVfZXJyb3Jfc3RhdGVf Z2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQkgIHN0cnVjdCBpOTE1X2Vycm9yX3N0 YXRlX2ZpbGVfcHJpdiAqZXJyb3JfcHJpdik7Cj4gICB2b2lkIGk5MTVfZXJyb3Jfc3RhdGVfcHV0 KHN0cnVjdCBpOTE1X2Vycm9yX3N0YXRlX2ZpbGVfcHJpdiAqZXJyb3JfcHJpdik7Cj4gICB2b2lk IGk5MTVfZGVzdHJveV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPgo+IC12 b2lkIGk5MTVfZ2V0X2V4dHJhX2luc3Rkb25lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQz Ml90ICppbnN0ZG9uZSk7Cj4gK3ZvaWQgaTkxNV9nZXRfZXh0cmFfaW5zdGRvbmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1aW50MzJfdCAqaW5zdGRvbmUpOwo+ICAgY29uc3Qg Y2hhciAqaTkxNV9jYWNoZV9sZXZlbF9zdHIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs IGludCB0eXBlKTsKPgo+ICAgLyogaTkxNV9jbWRfcGFyc2VyLmMgKi8KPiBAQCAtMzU0NiwxOCAr MzU0OSwyMCBAQCBleHRlcm4gdm9pZCBpbnRlbF9zZXRfbWVtb3J5X2N4c3Ioc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgZXh0ZXJuIHZvaWQgaW50ZWxfZGV0ZWN0X3BjaChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgIGV4dGVybiBpbnQgaW50ZWxfZW5hYmxlX3JjNihj b25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPgo+IC1leHRlcm4gYm9vbCBpOTE1X3NlbWFw aG9yZV9pc19lbmFibGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICtleHRlcm4gYm9vbCBp OTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gICBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAo+ICAgCQkJc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAgIGludCBpOTE1X2dl dF9yZXNldF9zdGF0c19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ ICAgCQkJICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7Cj4KPiAgIC8qIG92ZXJsYXkgKi8K PiAtZXh0ZXJuIHN0cnVjdCBpbnRlbF9vdmVybGF5X2Vycm9yX3N0YXRlICppbnRlbF9vdmVybGF5 X2NhcHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK2V4dGVybiBz dHJ1Y3QgaW50ZWxfb3ZlcmxheV9lcnJvcl9zdGF0ZSAqCj4gK2ludGVsX292ZXJsYXlfY2FwdHVy ZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgZXh0 ZXJuIHZvaWQgaW50ZWxfb3ZlcmxheV9wcmludF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf ZXJyb3Jfc3RhdGVfYnVmICplLAo+ICAgCQkJCQkgICAgc3RydWN0IGludGVsX292ZXJsYXlfZXJy b3Jfc3RhdGUgKmVycm9yKTsKPgo+IC1leHRlcm4gc3RydWN0IGludGVsX2Rpc3BsYXlfZXJyb3Jf c3RhdGUgKmludGVsX2Rpc3BsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPiArZXh0ZXJuIHN0cnVjdCBpbnRlbF9kaXNwbGF5X2Vycm9yX3N0YXRlICoKPiAr aW50ZWxfZGlzcGxheV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gICBleHRlcm4gdm9pZCBpbnRlbF9kaXNwbGF5X3ByaW50X2Vycm9yX3N0 YXRlKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmUsCj4gICAJCQkJCSAgICBzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJCQkgICAgc3RydWN0IGludGVsX2Rpc3BsYXlfZXJy b3Jfc3RhdGUgKmVycm9yKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBhODhlNmM5 ZTk1MTYuLmM5OWQxYjJjNjVkNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0x NzcsNyArMTc3LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19waHlzKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJCXZhZGRyICs9IFBBR0VfU0laRTsKPiAgIAl9Cj4K PiAtCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2gob2JqLT5iYXNlLmRldik7Cj4gKwlpOTE1X2dlbV9j aGlwc2V0X2ZsdXNoKHRvX2k5MTUob2JqLT5iYXNlLmRldikpOwo+Cj4gICAJc3QgPSBrbWFsbG9j KHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKPiAgIAlpZiAoc3QgPT0gTlVMTCkKPiBAQCAtMzQ3 LDcgKzM0Nyw3IEBAIGk5MTVfZ2VtX3BoeXNfcHdyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCj4gICAJfQo+Cj4gICAJZHJtX2NsZmx1c2hfdmlydF9yYW5nZSh2YWRkciwgYXJn cy0+c2l6ZSk7Cj4gLQlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKGRldik7Cj4gKwlpOTE1X2dlbV9j aGlwc2V0X2ZsdXNoKHRvX2k5MTUoZGV2KSk7Cj4KPiAgIG91dDoKPiAgIAlpbnRlbF9mYl9vYmpf Zmx1c2gob2JqLCBmYWxzZSwgT1JJR0lOX0NQVSk7Cj4gQEAgLTEwMDYsNyArMTAwNiw3IEBAIG91 dDoKPiAgIAl9Cj4KPiAgIAlpZiAobmVlZHNfY2xmbHVzaF9hZnRlcikKPiAtCQlpOTE1X2dlbV9j aGlwc2V0X2ZsdXNoKGRldik7Cj4gKwkJaTkxNV9nZW1fY2hpcHNldF9mbHVzaCh0b19pOTE1KGRl dikpOwo+ICAgCWVsc2UKPiAgIAkJb2JqLT5jYWNoZV9kaXJ0eSA9IHRydWU7Cj4KPiBAQCAtMTIz MCw4ICsxMjMwLDcgQEAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCj4gICAJCQlzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKQo+ICAg ewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGk5MTVfZ2VtX3JlcXVlc3Rf Z2V0X2VuZ2luZShyZXEpOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2 Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcS0+aTkxNTsKPiAg IAljb25zdCBib29sIGlycV90ZXN0X2luX3Byb2dyZXNzID0KPiAgIAkJQUNDRVNTX09OQ0UoZGV2 X3ByaXYtPmdwdV9lcnJvci50ZXN0X2lycV9yaW5ncykgJiBpbnRlbF9lbmdpbmVfZmxhZyhlbmdp bmUpOwo+ICAgCWludCBzdGF0ZSA9IGludGVycnVwdGlibGUgPyBUQVNLX0lOVEVSUlVQVElCTEUg OiBUQVNLX1VOSU5URVJSVVBUSUJMRTsKPiBAQCAtMTQyOSw3ICsxNDI4LDcgQEAgX19pOTE1X2dl bV9yZXF1ZXN0X3JldGlyZV9fdXB0byhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkK PiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRtcDsKPgo+IC0JbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZW5naW5lLT5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZl bmdpbmUtPmk5MTUtPmRldi0+c3RydWN0X211dGV4KTsKPgo+ICAgCWlmIChsaXN0X2VtcHR5KCZy ZXEtPmxpc3QpKQo+ICAgCQlyZXR1cm47Cj4gQEAgLTI1MDIsOSArMjUwMSw4IEBAIGk5MTVfZ2Vt X29iamVjdF9yZXRpcmVfX3JlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgaW50 IHJpbmcpCj4gICB9Cj4KPiAgIHN0YXRpYyBpbnQKPiAtaTkxNV9nZW1faW5pdF9zZXFubyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vxbm8pCj4gK2k5MTVfZ2VtX2luaXRfc2Vxbm8oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgc2Vxbm8pCj4gICB7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAlpbnQgcmV0Owo+Cj4gQEAgLTI1MTQs NyArMjUxMiw3IEBAIGk5MTVfZ2VtX2luaXRfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dTMyIHNlcW5vKQo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAgIAl9Cj4gLQlp OTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2KTsKPiArCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0 cyhkZXZfcHJpdik7Cj4KPiAgIAkvKiBGaW5hbGx5IHJlc2V0IGh3IHN0YXRlICovCj4gICAJZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpCj4gQEAgLTI1MzQsNyArMjUzMiw3IEBAIGlu dCBpOTE1X2dlbV9zZXRfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKQo+ ICAgCS8qIEhXUyBwYWdlIG5lZWRzIHRvIGJlIHNldCBsZXNzIHRoYW4gd2hhdCB3ZQo+ICAgCSAq IHdpbGwgaW5qZWN0IHRvIHJpbmcKPiAgIAkgKi8KPiAtCXJldCA9IGk5MTVfZ2VtX2luaXRfc2Vx bm8oZGV2LCBzZXFubyAtIDEpOwo+ICsJcmV0ID0gaTkxNV9nZW1faW5pdF9zZXFubyhkZXZfcHJp diwgc2Vxbm8gLSAxKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+Cj4gQEAgLTI1 NTAsMTMgKzI1NDgsMTEgQEAgaW50IGk5MTVfZ2VtX3NldF9zZXFubyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1MzIgc2Vxbm8pCj4gICB9Cj4KPiAgIGludAo+IC1pOTE1X2dlbV9nZXRfc2Vxbm8o c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyICpzZXFubykKPiAraTkxNV9nZW1fZ2V0X3NlcW5v KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyICpzZXFubykKPiAgIHsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g LQo+ICAgCS8qIHJlc2VydmUgMCBmb3Igbm9uLXNlcW5vICovCj4gICAJaWYgKGRldl9wcml2LT5u ZXh0X3NlcW5vID09IDApIHsKPiAtCQlpbnQgcmV0ID0gaTkxNV9nZW1faW5pdF9zZXFubyhkZXYs IDApOwo+ICsJCWludCByZXQgPSBpOTE1X2dlbV9pbml0X3NlcW5vKGRldl9wcml2LCAwKTsKPiAg IAkJaWYgKHJldCkKPiAgIAkJCXJldHVybiByZXQ7Cj4KPiBAQCAtMjY1NCw3ICsyNjUwLDcgQEAg dm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0LAo+ICAgCS8qIE5vdCBhbGxvd2VkIHRvIGZhaWwhICovCj4gICAJV0FSTihyZXQsICJlbWl0 fGFkZF9yZXF1ZXN0IGZhaWxlZDogJWQhXG4iLCByZXQpOwo+Cj4gLQlpOTE1X3F1ZXVlX2hhbmdj aGVjayhlbmdpbmUtPmRldik7Cj4gKwlpOTE1X3F1ZXVlX2hhbmdjaGVjayhlbmdpbmUtPmk5MTUp Owo+Cj4gICAJcXVldWVfZGVsYXllZF93b3JrKGRldl9wcml2LT53cSwKPiAgIAkJCSAgICZkZXZf cHJpdi0+bW0ucmV0aXJlX3dvcmssCj4gQEAgLTI3MjgsNyArMjcyNCw3IEBAIF9faTkxNV9nZW1f cmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCQkgc3Ry dWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAgIAkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKipyZXFfb3V0KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShlbmdpbmUtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgcmVzZXRfY291bnRlciA9IGk5MTVf cmVzZXRfY291bnRlcigmZGV2X3ByaXYtPmdwdV9lcnJvcik7Cj4gICAJc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gICAJaW50IHJldDsKPiBAQCAtMjc1MCw3ICsyNzQ2LDcgQEAg X19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK PiAgIAlpZiAocmVxID09IE5VTEwpCj4gICAJCXJldHVybiAtRU5PTUVNOwo+Cj4gLQlyZXQgPSBp OTE1X2dlbV9nZXRfc2Vxbm8oZW5naW5lLT5kZXYsICZyZXEtPnNlcW5vKTsKPiArCXJldCA9IGk5 MTVfZ2VtX2dldF9zZXFubyhlbmdpbmUtPmk5MTUsICZyZXEtPnNlcW5vKTsKPiAgIAlpZiAocmV0 KQo+ICAgCQlnb3RvIGVycjsKPgo+IEBAIC0yODA3LDcgKzI4MDMsNyBAQCBpOTE1X2dlbV9yZXF1 ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAlpbnQgZXJyOwo+ Cj4gICAJaWYgKGN0eCA9PSBOVUxMKQo+IC0JCWN0eCA9IHRvX2k5MTUoZW5naW5lLT5kZXYpLT5r ZXJuZWxfY29udGV4dDsKPiArCQljdHggPSBlbmdpbmUtPmk5MTUtPmtlcm5lbF9jb250ZXh0Owo+ ICAgCWVyciA9IF9faTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCwgJnJlcSk7Cj4g ICAJcmV0dXJuIGVyciA/IEVSUl9QVFIoZXJyKSA6IHJlcTsKPiAgIH0KPiBAQCAtMjk4Miw5ICsy OTc4LDggQEAgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgfQo+Cj4gICBib29sCj4gLWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0 cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7Cj4gICAJYm9vbCBpZGxlID0gdHJ1ZTsKPgo+IEBAIC0zMDE3LDcg KzMwMTIsNyBAQCBpOTE1X2dlbV9yZXRpcmVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKPiAgIAkvKiBDb21lIGJhY2sgbGF0ZXIgaWYgdGhlIGRldmljZSBpcyBidXN5Li4u ICovCj4gICAJaWRsZSA9IGZhbHNlOwo+ICAgCWlmIChtdXRleF90cnlsb2NrKCZkZXYtPnN0cnVj dF9tdXRleCkpIHsKPiAtCQlpZGxlID0gaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldik7Cj4g KwkJaWRsZSA9IGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Cj4gICAJCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCX0KPiAgIAlpZiAoIWlkbGUpCj4gQEAg LTMxODYsNyArMzE4MSw3IEBAIF9faTkxNV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQoZnJv bV9yZXEsIHRydWUpKQo+ICAgCQlyZXR1cm4gMDsKPgo+IC0JaWYgKCFpOTE1X3NlbWFwaG9yZV9p c19lbmFibGVkKG9iai0+YmFzZS5kZXYpKSB7Cj4gKwlpZiAoIWk5MTVfc2VtYXBob3JlX2lzX2Vu YWJsZWQodG9faTkxNShvYmotPmJhc2UuZGV2KSkpIHsKPiAgIAkJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+ICAgCQlyZXQgPSBfX2k5MTVf d2FpdF9yZXF1ZXN0KGZyb21fcmVxLAo+ICAgCQkJCQkgIGk5MTUtPm1tLmludGVycnVwdGlibGUs Cj4gQEAgLTM3MTksNyArMzcxNCw3IEBAIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9jcHVfd3JpdGVf ZG9tYWluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJCXJldHVybjsKPgo+ ICAgCWlmIChpOTE1X2dlbV9jbGZsdXNoX29iamVjdChvYmosIG9iai0+cGluX2Rpc3BsYXkpKQo+ IC0JCWk5MTVfZ2VtX2NoaXBzZXRfZmx1c2gob2JqLT5iYXNlLmRldik7Cj4gKwkJaTkxNV9nZW1f Y2hpcHNldF9mbHVzaCh0b19pOTE1KG9iai0+YmFzZS5kZXYpKTsKPgo+ICAgCW9sZF93cml0ZV9k b21haW4gPSBvYmotPmJhc2Uud3JpdGVfZG9tYWluOwo+ICAgCW9iai0+YmFzZS53cml0ZV9kb21h aW4gPSAwOwo+IEBAIC0zOTE3LDcgKzM5MTIsNyBAQCBvdXQ6Cj4gICAJICAgIG9iai0+YmFzZS53 cml0ZV9kb21haW4gIT0gSTkxNV9HRU1fRE9NQUlOX0NQVSAmJgo+ICAgCSAgICBjcHVfd3JpdGVf bmVlZHNfY2xmbHVzaChvYmopKSB7Cj4gICAJCWlmIChpOTE1X2dlbV9jbGZsdXNoX29iamVjdChv YmosIHRydWUpKQo+IC0JCQlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKG9iai0+YmFzZS5kZXYpOwo+ ICsJCQlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKHRvX2k5MTUob2JqLT5iYXNlLmRldikpOwo+ICAg CX0KPgo+ICAgCXJldHVybiAwOwo+IEBAIC00Njk1LDcgKzQ2OTAsNyBAQCBpOTE1X2dlbV9zdXNw ZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBlcnI7 Cj4KPiAtCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXYpOwo+ICsJaTkxNV9nZW1fcmV0aXJl X3JlcXVlc3RzKGRldl9wcml2KTsKPgo+ICAgCWk5MTVfZ2VtX3N0b3BfZW5naW5lcyhkZXYpOwo+ ICAgCWk5MTVfZ2VtX2NvbnRleHRfbG9zdChkZXZfcHJpdik7Cj4gQEAgLTQ5ODYsNyArNDk4MSw3 IEBAIGk5MTVfZ2VtX2xvYWRfaW5pdF9mZW5jZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAgCWVsc2UKPiAgIAkJZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzID0gODsKPgo+ IC0JaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikpCj4gKwlpZiAoaW50ZWxfdmdwdV9hY3RpdmUo ZGV2X3ByaXYpKQo+ICAgCQlkZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3MgPQo+ICAgCQkJCUk5MTVf UkVBRCh2Z3RpZl9yZWcoYXZhaWxfcnMuZmVuY2VfbnVtKSk7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggYjFiNzA0YzJjMDAxLi4wZmZmZWJjYzBhY2Ug MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTk5LDI4 ICs5OSwyNyBAQAo+ICAgI2RlZmluZSBHRU42X0NPTlRFWFRfQUxJR04gKDY0PDwxMCkKPiAgICNk ZWZpbmUgR0VON19DT05URVhUX0FMSUdOIDQwOTYKPgo+IC1zdGF0aWMgc2l6ZV90IGdldF9jb250 ZXh0X2FsaWdubWVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgc2l6ZV90IGdl dF9jb250ZXh0X2FsaWdubWVudChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g ICB7Cj4gLQlpZiAoSVNfR0VONihkZXYpKQo+ICsJaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICAg CQlyZXR1cm4gR0VONl9DT05URVhUX0FMSUdOOwo+Cj4gICAJcmV0dXJuIEdFTjdfQ09OVEVYVF9B TElHTjsKPiAgIH0KPgo+IC1zdGF0aWMgaW50IGdldF9jb250ZXh0X3NpemUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiArc3RhdGljIGludCBnZXRfY29udGV4dF9zaXplKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJaW50IHJldDsKPiAgIAl1MzIgcmVnOwo+ Cj4gLQlzd2l0Y2ggKElOVEVMX0lORk8oZGV2KS0+Z2VuKSB7Cj4gKwlzd2l0Y2ggKElOVEVMX0dF TihkZXZfcHJpdikpIHsKPiAgIAljYXNlIDY6Cj4gICAJCXJlZyA9IEk5MTVfUkVBRChDWFRfU0la RSk7Cj4gICAJCXJldCA9IEdFTjZfQ1hUX1RPVEFMX1NJWkUocmVnKSAqIDY0Owo+ICAgCQlicmVh azsKPiAgIAljYXNlIDc6Cj4gICAJCXJlZyA9IEk5MTVfUkVBRChHRU43X0NYVF9TSVpFKTsKPiAt CQlpZiAoSVNfSEFTV0VMTChkZXYpKQo+ICsJCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkKPiAg IAkJCXJldCA9IEhTV19DWFRfVE9UQUxfU0laRTsKPiAgIAkJZWxzZQo+ICAgCQkJcmV0ID0gR0VO N19DWFRfVE9UQUxfU0laRShyZWcpICogNjQ7Cj4gQEAgLTIyNCw3ICsyMjMsNyBAQCBzdGF0aWMg aW50IGFzc2lnbl9od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2ln bmVkICpvdXQpCj4gICAJCSAqIEZsdXNoIGFueSBwZW5kaW5nIHJldGlyZXMgdG8gaG9wZWZ1bGx5 IHJlbGVhc2Ugc29tZQo+ICAgCQkgKiBzdGFsZSBjb250ZXh0cyBhbmQgdHJ5IGFnYWluLgo+ICAg CQkgKi8KPiAtCQlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYtPmRldik7Cj4gKwkJ aTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKGRldl9wcml2KTsKPiAgIAkJcmV0ID0gaWRhX3NpbXBs ZV9nZXQoJmRldl9wcml2LT5jb250ZXh0X2h3X2lkYSwKPiAgIAkJCQkgICAgIDAsIE1BWF9DT05U RVhUX0hXX0lELCBHRlBfS0VSTkVMKTsKPiAgIAkJaWYgKHJldCA8IDApCj4gQEAgLTMyMCw3ICsz MTksNyBAQCBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAgCQkgKiBjb250ZXh0Lgo+ICAgCQkgKi8KPiAgIAkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRf cGluKGN0eC0+bGVnYWN5X2h3X2N0eC5yY3Nfc3RhdGUsCj4gLQkJCQkJICAgIGdldF9jb250ZXh0 X2FsaWdubWVudChkZXYpLCAwKTsKPiArCQkJCQkgICAgZ2V0X2NvbnRleHRfYWxpZ25tZW50KHRv X2k5MTUoZGV2KSksIDApOwo+ICAgCQlpZiAocmV0KSB7Cj4gICAJCQlEUk1fREVCVUdfRFJJVkVS KCJDb3VsZG4ndCBwaW4gJWRcbiIsIHJldCk7Cj4gICAJCQlnb3RvIGVycl9kZXN0cm95Owo+IEBA IC0zODksNyArMzg4LDggQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAgCWlmIChXQVJOX09OKGRldl9wcml2LT5rZXJuZWxfY29udGV4dCkpCj4g ICAJCXJldHVybiAwOwo+Cj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2KSAmJiBIQVNfTE9H SUNBTF9SSU5HX0NPTlRFWFRTKGRldikpIHsKPiArCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZf cHJpdikgJiYKPiArCSAgICBIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRldl9wcml2KSkgewo+ ICAgCQlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAgCQkJRFJNX0lORk8oIk9ubHkg RVhFQ0xJU1QgbW9kZSBpcyBzdXBwb3J0ZWQgaW4gdmdwdS5cbiIpOwo+ICAgCQkJcmV0dXJuIC1F SU5WQUw7Cj4gQEAgLTQwNCw4ICs0MDQsOSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCS8qIE5COiBpbnRlbnRpb25hbGx5IGxlZnQgYmxh bmsuIFdlIHdpbGwgYWxsb2NhdGUgb3VyIG93bgo+ICAgCQkgKiBiYWNraW5nIG9iamVjdHMgYXMg d2UgbmVlZCB0aGVtLCB0aGFuayB5b3UgdmVyeSBtdWNoICovCj4gICAJCWRldl9wcml2LT5od19j b250ZXh0X3NpemUgPSAwOwo+IC0JfSBlbHNlIGlmIChIQVNfSFdfQ09OVEVYVFMoZGV2KSkgewo+ IC0JCWRldl9wcml2LT5od19jb250ZXh0X3NpemUgPSByb3VuZF91cChnZXRfY29udGV4dF9zaXpl KGRldiksIDQwOTYpOwo+ICsJfSBlbHNlIGlmIChIQVNfSFdfQ09OVEVYVFMoZGV2X3ByaXYpKSB7 Cj4gKwkJZGV2X3ByaXYtPmh3X2NvbnRleHRfc2l6ZSA9Cj4gKwkJCXJvdW5kX3VwKGdldF9jb250 ZXh0X3NpemUoZGV2X3ByaXYpLCA0MDk2KTsKPiAgIAkJaWYgKGRldl9wcml2LT5od19jb250ZXh0 X3NpemUgPiAoMTw8MjApKSB7Cj4gICAJCQlEUk1fREVCVUdfRFJJVkVSKCJEaXNhYmxpbmcgSFcg Q29udGV4dHM7IGludmFsaWQgc2l6ZSAlZFxuIiwKPiAgIAkJCQkJIGRldl9wcml2LT5od19jb250 ZXh0X3NpemUpOwo+IEBAIC01MDksMTIgKzUxMCwxMyBAQCBpOTE1X2dlbV9jb250ZXh0X2dldChz dHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYsIHUzMiBpZCkKPiAgIHN0YXRp YyBpbmxpbmUgaW50Cj4gICBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gcmVxLT5pOTE1Owo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9IHJlcS0+ZW5naW5lOwo+ICAgCXUzMiBmbGFncyA9IGh3X2ZsYWdzIHwgTUlfTU1fU1BBQ0Vf R1RUOwo+ICAgCWNvbnN0IGludCBudW1fcmluZ3MgPQo+ICAgCQkvKiBVc2UgYW4gZXh0ZW5kZWQg dy9hIG9uIGl2YisgaWYgc2lnbmFsbGluZyBmcm9tIG90aGVyIHJpbmdzICovCj4gLQkJaTkxNV9z ZW1hcGhvcmVfaXNfZW5hYmxlZChlbmdpbmUtPmRldikgPwo+IC0JCWh3ZWlnaHQzMihJTlRFTF9J TkZPKGVuZ2luZS0+ZGV2KS0+cmluZ19tYXNrKSAtIDEgOgo+ICsJCWk5MTVfc2VtYXBob3JlX2lz X2VuYWJsZWQoZGV2X3ByaXYpID8KPiArCQlod2VpZ2h0MzIoSU5URUxfSU5GTyhkZXZfcHJpdikt PnJpbmdfbWFzaykgLSAxIDoKPiAgIAkJMDsKPiAgIAlpbnQgbGVuLCByZXQ7Cj4KPiBAQCAtNTIz LDIxICs1MjUsMjEgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsIHUzMiBod19mbGFncykKPiAgIAkgKiBleHBsaWNpdGx5LCBzbyB3ZSByZWx5IG9uIHRo ZSB2YWx1ZSBhdCByaW5nIGluaXQsIHN0b3JlZCBpbgo+ICAgCSAqIGl0bGJfYmVmb3JlX2N0eF9z d2l0Y2guCj4gICAJICovCj4gLQlpZiAoSVNfR0VONihlbmdpbmUtPmRldikpIHsKPiArCWlmIChJ U19HRU42KGRldl9wcml2KSkgewo+ICAgCQlyZXQgPSBlbmdpbmUtPmZsdXNoKHJlcSwgSTkxNV9H RU1fR1BVX0RPTUFJTlMsIDApOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJuIHJldDsKPiAg IAl9Cj4KPiAgIAkvKiBUaGVzZSBmbGFncyBhcmUgZm9yIHJlc291cmNlIHN0cmVhbWVyIG9uIEhT VysgKi8KPiAtCWlmIChJU19IQVNXRUxMKGVuZ2luZS0+ZGV2KSB8fCBJTlRFTF9JTkZPKGVuZ2lu ZS0+ZGV2KS0+Z2VuID49IDgpCj4gKwlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSU5URUxf R0VOKGRldl9wcml2KSA+PSA4KQo+ICAgCQlmbGFncyB8PSAoSFNXX01JX1JTX1NBVkVfU1RBVEVf RU4gfCBIU1dfTUlfUlNfUkVTVE9SRV9TVEFURV9FTik7Cj4gLQllbHNlIGlmIChJTlRFTF9JTkZP KGVuZ2luZS0+ZGV2KS0+Z2VuIDwgOCkKPiArCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg PCA4KQo+ICAgCQlmbGFncyB8PSAoTUlfU0FWRV9FWFRfU1RBVEVfRU4gfCBNSV9SRVNUT1JFX0VY VF9TVEFURV9FTik7Cj4KPgo+ICAgCWxlbiA9IDQ7Cj4gLQlpZiAoSU5URUxfSU5GTyhlbmdpbmUt PmRldiktPmdlbiA+PSA3KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykKPiAgIAkJ bGVuICs9IDIgKyAobnVtX3JpbmdzID8gNCpudW1fcmluZ3MgKyA2IDogMCk7Cj4KPiAgIAlyZXQg PSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgbGVuKTsKPiBAQCAtNTQ1LDE0ICs1NDcsMTQgQEAgbWlf c2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFn cykKPiAgIAkJcmV0dXJuIHJldDsKPgo+ICAgCS8qIFdhUHJvZ3JhbU1pQXJiT25PZmZBcm91bmRN aVNldENvbnRleHQ6aXZiLHZsdixoc3csYmR3LGNodiAqLwo+IC0JaWYgKElOVEVMX0lORk8oZW5n aW5lLT5kZXYpLT5nZW4gPj0gNykgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykg ewo+ICAgCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0RJ U0FCTEUpOwo+ICAgCQlpZiAobnVtX3JpbmdzKSB7Cj4gICAJCQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpzaWduYWxsZXI7Cj4KPiAgIAkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsCj4gICAJCQkJ CU1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9yaW5ncykpOwo+IC0JCQlmb3JfZWFjaF9lbmdpbmUo c2lnbmFsbGVyLCB0b19pOTE1KGVuZ2luZS0+ZGV2KSkgewo+ICsJCQlmb3JfZWFjaF9lbmdpbmUo c2lnbmFsbGVyLCBkZXZfcHJpdikgewo+ICAgCQkJCWlmIChzaWduYWxsZXIgPT0gZW5naW5lKQo+ ICAgCQkJCQljb250aW51ZTsKPgo+IEBAIC01NzUsMTQgKzU3NywxNCBAQCBtaV9zZXRfY29udGV4 dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQo+ICAgCSAq Lwo+ICAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwo+Cj4gLQlpZiAoSU5URUxf SU5GTyhlbmdpbmUtPmRldiktPmdlbiA+PSA3KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA3KSB7Cj4gICAJCWlmIChudW1fcmluZ3MpIHsKPiAgIAkJCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnNpZ25hbGxlcjsKPiAgIAkJCWk5MTVfcmVnX3QgbGFzdF9yZWcgPSB7fTsgLyoga2Vl cCBnY2MgcXVpZXQgKi8KPgo+ICAgCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKPiAgIAkJCQkJ TUlfTE9BRF9SRUdJU1RFUl9JTU0obnVtX3JpbmdzKSk7Cj4gLQkJCWZvcl9lYWNoX2VuZ2luZShz aWduYWxsZXIsIHRvX2k5MTUoZW5naW5lLT5kZXYpKSB7Cj4gKwkJCWZvcl9lYWNoX2VuZ2luZShz aWduYWxsZXIsIGRldl9wcml2KSB7Cj4gICAJCQkJaWYgKHNpZ25hbGxlciA9PSBlbmdpbmUpCj4g ICAJCQkJCWNvbnRpbnVlOwo+Cj4gQEAgLTY3Myw3ICs2NzUsNyBAQCBuZWVkc19wZF9sb2FkX3By ZShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gICAJaWYgKGVuZ2luZS0+aWQgIT0gUkNT KQo+ICAgCQlyZXR1cm4gdHJ1ZTsKPgo+IC0JaWYgKElOVEVMX0lORk8oZW5naW5lLT5kZXYpLT5n ZW4gPCA4KQo+ICsJaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgOCkKPiAgIAkJcmV0dXJu IHRydWU7Cj4KPiAgIAlyZXR1cm4gZmFsc2U7Cj4gQEAgLTcxMCw3ICs3MTIsNyBAQCBzdGF0aWMg aW50IGRvX3Jjc19zd2l0Y2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4KPiAg IAkvKiBUcnlpbmcgdG8gcGluIGZpcnN0IG1ha2VzIGVycm9yIGhhbmRsaW5nIGVhc2llci4gKi8K PiAgIAlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4odG8tPmxlZ2FjeV9od19jdHgucmNzX3N0 YXRlLAo+IC0JCQkJICAgIGdldF9jb250ZXh0X2FsaWdubWVudChlbmdpbmUtPmRldiksCj4gKwkJ CQkgICAgZ2V0X2NvbnRleHRfYWxpZ25tZW50KGVuZ2luZS0+aTkxNSksCj4gICAJCQkJICAgIDAp Owo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ldmljdC5jCj4gaW5kZXggZWExZjhkMWJkMjI4Li5iMTQ0YzNmNWM2NTAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPiBAQCAtMTU0LDcgKzE1NCw3IEBAIG5v bmU6Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+Cj4gLQkJaTkxNV9nZW1fcmV0 aXJlX3JlcXVlc3RzKGRldik7Cj4gKwkJaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHRvX2k5MTUo ZGV2KSk7Cj4gICAJCWdvdG8gc2VhcmNoX2FnYWluOwo+ICAgCX0KPgo+IEBAIC0yNjUsNyArMjY1 LDcgQEAgaW50IGk5MTVfZ2VtX2V2aWN0X3ZtKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt LCBib29sIGRvX2lkbGUpCj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+Cj4gLQkJ aTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHZtLT5kZXYpOwo+ICsJCWk5MTVfZ2VtX3JldGlyZV9y ZXF1ZXN0cyh0b19pOTE1KHZtLT5kZXYpKTsKPgo+ICAgCQlXQVJOX09OKCFsaXN0X2VtcHR5KCZ2 bS0+YWN0aXZlX2xpc3QpKTsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYwo+IGluZGV4IGUwZWU1ZDFhYzM3Mi4uYTU0YTI0M2NjYWFjIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC03MjQsNyAr NzI0LDcgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZXNlcnZlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKPiAgIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKPiAgIAlzdHJ1 Y3QgbGlzdF9oZWFkIG9yZGVyZWRfdm1hczsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIHBpbm5lZF92 bWFzOwo+IC0JYm9vbCBoYXNfZmVuY2VkX2dwdV9hY2Nlc3MgPSBJTlRFTF9JTkZPKGVuZ2luZS0+ ZGV2KS0+Z2VuIDwgNDsKPiArCWJvb2wgaGFzX2ZlbmNlZF9ncHVfYWNjZXNzID0gSU5URUxfR0VO KGVuZ2luZS0+aTkxNSkgPCA0Owo+ICAgCWludCByZXRyeTsKPgo+ICAgCWk5MTVfZ2VtX3JldGly ZV9yZXF1ZXN0c19yaW5nKGVuZ2luZSk7Cj4gQEAgLTk2NSw3ICs5NjUsNyBAQCBpOTE1X2dlbV9l eGVjYnVmZmVyX21vdmVfdG9fZ3B1KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAgCX0KPgo+ICAgCWlmIChmbHVzaF9jaGlwc2V0KQo+IC0JCWk5MTVfZ2VtX2NoaXBzZXRfZmx1 c2gocmVxLT5lbmdpbmUtPmRldik7Cj4gKwkJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChyZXEtPmVu Z2luZS0+aTkxNSk7Cj4KPiAgIAlpZiAoZmx1c2hfZG9tYWlucyAmIEk5MTVfR0VNX0RPTUFJTl9H VFQpCj4gICAJCXdtYigpOwo+IEBAIC0xMTE5LDcgKzExMTksNyBAQCBpOTE1X2dlbV9leGVjYnVm ZmVyX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBsaXN0X2hlYWQgKnZtYXMsCj4gICAJCWlmIChlbnRy eS0+ZmxhZ3MgJiBFWEVDX09CSkVDVF9ORUVEU19GRU5DRSkgewo+ICAgCQkJaTkxNV9nZW1fcmVx dWVzdF9hc3NpZ24oJm9iai0+bGFzdF9mZW5jZWRfcmVxLCByZXEpOwo+ICAgCQkJaWYgKGVudHJ5 LT5mbGFncyAmIF9fRVhFQ19PQkpFQ1RfSEFTX0ZFTkNFKSB7Cj4gLQkJCQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuZ2luZS0+ZGV2KTsKPiArCQkJCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAkJCQlsaXN0 X21vdmVfdGFpbCgmZGV2X3ByaXYtPmZlbmNlX3JlZ3Nbb2JqLT5mZW5jZV9yZWddLmxydV9saXN0 LAo+ICAgCQkJCQkgICAgICAgJmRldl9wcml2LT5tbS5mZW5jZV9saXN0KTsKPiAgIAkJCX0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IDM2NGNmODIzNjAyMS4uM2M0NzRk NTk0ZjQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMTEwLDE3 ICsxMTAsMTkgQEAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3IGk5MTVfZ2d0dF92aWV3X3Jv dGF0ZWQgPSB7Cj4gICAJLnR5cGUgPSBJOTE1X0dHVFRfVklFV19ST1RBVEVELAo+ICAgfTsKPgo+ IC1pbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX3BwZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBlbmFibGVfcHBndHQpCj4gK2ludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfcHBndHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgICAgICAgCWludCBlbmFibGVf cHBndHQpCj4gICB7Cj4gICAJYm9vbCBoYXNfYWxpYXNpbmdfcHBndHQ7Cj4gICAJYm9vbCBoYXNf ZnVsbF9wcGd0dDsKPiAgIAlib29sIGhhc19mdWxsXzQ4Yml0X3BwZ3R0Owo+Cj4gLQloYXNfYWxp YXNpbmdfcHBndHQgPSBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2Owo+IC0JaGFzX2Z1bGxfcHBn dHQgPSBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3Owo+IC0JaGFzX2Z1bGxfNDhiaXRfcHBndHQg PSBJU19CUk9BRFdFTEwoZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5Owo+ICsJaGFz X2FsaWFzaW5nX3BwZ3R0ID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA2Owo+ICsJaGFzX2Z1bGxf cHBndHQgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDc7Cj4gKwloYXNfZnVsbF80OGJpdF9wcGd0 dCA9Cj4gKwkgICAgICAgCUlTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9w cml2KSA+PSA5Owo+Cj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2KSkKPiArCWlmIChpbnRl bF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpCj4gICAJCWhhc19mdWxsX3BwZ3R0ID0gZmFsc2U7IC8q IGVtdWxhdGlvbiBpcyB0b28gaGFyZCAqLwo+Cj4gICAJaWYgKCFoYXNfYWxpYXNpbmdfcHBndHQp Cj4gQEAgLTEzMCw3ICsxMzIsNyBAQCBpbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX3BwZ3R0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfcHBndHQpCj4gICAJICogV2UgZG9uJ3Qg YWxsb3cgZGlzYWJsaW5nIFBQR1RUIGZvciBnZW45KyBhcyBpdCdzIGEgcmVxdWlyZW1lbnQgZm9y Cj4gICAJICogZXhlY2xpc3RzLCB0aGUgc29sZSBtZWNoYW5pc20gYXZhaWxhYmxlIHRvIHN1Ym1p dCB3b3JrLgo+ICAgCSAqLwo+IC0JaWYgKGVuYWJsZV9wcGd0dCA9PSAwICYmIElOVEVMX0lORk8o ZGV2KS0+Z2VuIDwgOSkKPiArCWlmIChlbmFibGVfcHBndHQgPT0gMCAmJiBJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgOSkKPiAgIAkJcmV0dXJuIDA7Cj4KPiAgIAlpZiAoZW5hYmxlX3BwZ3R0ID09IDEp Cj4gQEAgLTE0NCwxOSArMTQ2LDE5IEBAIGludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfcHBndHQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGVuYWJsZV9wcGd0dCkKPgo+ICAgI2lmZGVmIENP TkZJR19JTlRFTF9JT01NVQo+ICAgCS8qIERpc2FibGUgcHBndHQgb24gU05CIGlmIFZULWQgaXMg b24uICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gNiAmJiBpbnRlbF9pb21tdV9n ZnhfbWFwcGVkKSB7Cj4gKwlpZiAoSVNfR0VONihkZXZfcHJpdikgJiYgaW50ZWxfaW9tbXVfZ2Z4 X21hcHBlZCkgewo+ICAgCQlEUk1fSU5GTygiRGlzYWJsaW5nIFBQR1RUIGJlY2F1c2UgVlQtZCBp cyBvblxuIik7Cj4gICAJCXJldHVybiAwOwo+ICAgCX0KPiAgICNlbmRpZgo+Cj4gICAJLyogRWFy bHkgVkxWIGRvZXNuJ3QgaGF2ZSB0aGlzICovCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYm IGRldi0+cGRldi0+cmV2aXNpb24gPCAweGIpIHsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9w cml2KSAmJiBkZXZfcHJpdi0+ZGV2LT5wZGV2LT5yZXZpc2lvbiA8IDB4Yikgewo+ICAgCQlEUk1f REVCVUdfRFJJVkVSKCJkaXNhYmxpbmcgUFBHVFQgb24gcHJlLUIzIHN0ZXAgVkxWXG4iKTsKPiAg IAkJcmV0dXJuIDA7Cj4gICAJfQo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCAm JiBpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4 ICYmIGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiAgIAkJcmV0dXJuIGhhc19mdWxsXzQ4Yml0X3Bw Z3R0ID8gMyA6IDI7Cj4gICAJZWxzZQo+ICAgCQlyZXR1cm4gaGFzX2FsaWFzaW5nX3BwZ3R0ID8g MSA6IDA7Cj4gQEAgLTk5NCw3ICs5OTYsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFu dXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICB7Cj4gICAJc3RydWN0IGk5MTVf aHdfcHBndHQgKnBwZ3R0ID0gaTkxNV92bV90b19wcGd0dCh2bSk7Cj4KPiAtCWlmIChpbnRlbF92 Z3B1X2FjdGl2ZSh2bS0+ZGV2KSkKPiArCWlmIChpbnRlbF92Z3B1X2FjdGl2ZSh0b19pOTE1KHZt LT5kZXYpKSkKPiAgIAkJZ2VuOF9wcGd0dF9ub3RpZnlfdmd0KHBwZ3R0LCBmYWxzZSk7Cj4KPiAg IAlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+YmFzZS5kZXYpKQo+IEBAIC0xNTQ1 LDE0ICsxNTQ3LDE0IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCkKPiAgIAkJCQkJCQkgICAgICAwLCAwLAo+ICAgCQkJCQkJCSAgICAgIEdF TjhfUE1MNEVfU0hJRlQpOwo+Cj4gLQkJaWYgKGludGVsX3ZncHVfYWN0aXZlKHBwZ3R0LT5iYXNl LmRldikpIHsKPiArCQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUodG9faTkxNShwcGd0dC0+YmFzZS5k ZXYpKSkgewo+ICAgCQkJcmV0ID0gZ2VuOF9wcmVhbGxvY2F0ZV90b3BfbGV2ZWxfcGRwcyhwcGd0 dCk7Cj4gICAJCQlpZiAocmV0KQo+ICAgCQkJCWdvdG8gZnJlZV9zY3JhdGNoOwo+ICAgCQl9Cj4g ICAJfQo+Cj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUocHBndHQtPmJhc2UuZGV2KSkKPiArCWlm IChpbnRlbF92Z3B1X2FjdGl2ZSh0b19pOTE1KHBwZ3R0LT5iYXNlLmRldikpKQo+ICAgCQlnZW44 X3BwZ3R0X25vdGlmeV92Z3QocHBndHQsIHRydWUpOwo+Cj4gICAJcmV0dXJuIDA7Cj4gQEAgLTIw ODAsNyArMjA4Miw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCkKPiAgIAl9IGVsc2UKPiAgIAkJQlVHKCk7Cj4KPiAtCWlmIChpbnRlbF92 Z3B1X2FjdGl2ZShkZXYpKQo+ICsJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSkKPiAg IAkJcHBndHQtPnN3aXRjaF9tbSA9IHZncHVfbW1fc3dpdGNoOwo+Cj4gICAJcmV0ID0gZ2VuNl9w cGd0dF9hbGxvYyhwcGd0dCk7Cj4gQEAgLTI3MjksNyArMjczMSw3IEBAIHN0YXRpYyBpbnQgaTkx NV9nZW1fc2V0dXBfZ2xvYmFsX2d0dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCWk5MTVf YWRkcmVzc19zcGFjZV9pbml0KCZnZ3R0LT5iYXNlLCBkZXZfcHJpdik7Cj4gICAJZ2d0dC0+YmFz ZS50b3RhbCArPSBQQUdFX1NJWkU7Cj4KPiAtCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXYpKSB7 Cj4gKwlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpKSB7Cj4gICAJCXJldCA9IGludGVs X3ZndF9iYWxsb29uKGRldik7Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+IEBA IC0yODMzLDcgKzI4MzUsNyBAQCB2b2lkIGk5MTVfZ2d0dF9jbGVhbnVwX2h3KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gICAJaTkxNV9nZW1fY2xlYW51cF9zdG9sZW4oZGV2KTsKPgo+ICAgCWlm IChkcm1fbW1faW5pdGlhbGl6ZWQoJmdndHQtPmJhc2UubW0pKSB7Cj4gLQkJaWYgKGludGVsX3Zn cHVfYWN0aXZlKGRldikpCj4gKwkJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSkKPiAg IAkJCWludGVsX3ZndF9kZWJhbGxvb24oKTsKPgo+ICAgCQlkcm1fbW1fdGFrZWRvd24oJmdndHQt PmJhc2UubW0pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZW5kZXJfc3RhdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0 ZS5jCj4gaW5kZXggNDIzY2Y1MTQ0YmNiLi43YzkzMzI3YjcwZmUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+IEBAIC0yOSw3ICsyOSw3IEBA Cj4gICAjaW5jbHVkZSAiaW50ZWxfcmVuZGVyc3RhdGUuaCIKPgo+ICAgc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlbF9yZW5kZXJzdGF0ZV9yb2RhdGEgKgo+IC1yZW5kZXJfc3RhdGVfZ2V0X3JvZGF0 YShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25zdCBpbnQgZ2VuKQo+ICtyZW5kZXJfc3RhdGVf Z2V0X3JvZGF0YShjb25zdCBpbnQgZ2VuKQo+ICAgewo+ICAgCXN3aXRjaCAoZ2VuKSB7Cj4gICAJ Y2FzZSA2Ogo+IEBAIC00NSwxOSArNDUsMjAgQEAgcmVuZGVyX3N0YXRlX2dldF9yb2RhdGEoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgY29uc3QgaW50IGdlbikKPiAgIAlyZXR1cm4gTlVMTDsKPiAg IH0KPgo+IC1zdGF0aWMgaW50IHJlbmRlcl9zdGF0ZV9pbml0KHN0cnVjdCByZW5kZXJfc3RhdGUg KnNvLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgaW50IHJlbmRlcl9zdGF0ZV9p bml0KHN0cnVjdCByZW5kZXJfc3RhdGUgKnNvLAo+ICsJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAgIAlpbnQgcmV0Owo+Cj4gLQlzby0+Z2VuID0gSU5U RUxfSU5GTyhkZXYpLT5nZW47Cj4gLQlzby0+cm9kYXRhID0gcmVuZGVyX3N0YXRlX2dldF9yb2Rh dGEoZGV2LCBzby0+Z2VuKTsKPiArCXNvLT5nZW4gPSBJTlRFTF9HRU4oZGV2X3ByaXYpOwo+ICsJ c28tPnJvZGF0YSA9IHJlbmRlcl9zdGF0ZV9nZXRfcm9kYXRhKHNvLT5nZW4pOwo+ICAgCWlmIChz by0+cm9kYXRhID09IE5VTEwpCj4gICAJCXJldHVybiAwOwo+Cj4gICAJaWYgKHNvLT5yb2RhdGEt PmJhdGNoX2l0ZW1zICogNCA+IDQwOTYpCj4gICAJCXJldHVybiAtRUlOVkFMOwo+Cj4gLQlzby0+ b2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShkZXYsIDQwOTYpOwo+ICsJc28tPm9iaiA9IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGUoZGV2X3ByaXYtPmRldiwgNDA5Nik7Cj4gICAJaWYgKElTX0VS Uihzby0+b2JqKSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIoc28tPm9iaik7Cj4KPiBAQCAtMTc3LDcg KzE3OCw3IEBAIGludCBpOTE1X2dlbV9yZW5kZXJfc3RhdGVfcHJlcGFyZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCj4gICAJaWYgKFdBUk5fT04oZW5naW5lLT5pZCAhPSBSQ1MpKQo+ ICAgCQlyZXR1cm4gLUVOT0VOVDsKPgo+IC0JcmV0ID0gcmVuZGVyX3N0YXRlX2luaXQoc28sIGVu Z2luZS0+ZGV2KTsKPiArCXJldCA9IHJlbmRlcl9zdGF0ZV9pbml0KHNvLCBlbmdpbmUtPmk5MTUp Owo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3Nocmlua2VyLmMKPiBpbmRleCA3OTAwNGYzNTYxNzQuLjUzOGMzMDQ5OTg0OCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+IEBAIC0xMzEs NyArMTMxLDcgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgIAl1bnNpZ25lZCBsb25nIGNvdW50ID0gMDsKPgo+ICAgCXRyYWNlX2k5MTVfZ2Vt X3NocmluayhkZXZfcHJpdiwgdGFyZ2V0LCBmbGFncyk7Cj4gLQlpOTE1X2dlbV9yZXRpcmVfcmVx dWVzdHMoZGV2X3ByaXYtPmRldik7Cj4gKwlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3By aXYpOwo+Cj4gICAJLyoKPiAgIAkgKiBVbmJpbmRpbmcgb2Ygb2JqZWN0cyB3aWxsIHJlcXVpcmUg SFcgYWNjZXNzOyBMZXQgdXMgbm90IHdha2UgdGhlCj4gQEAgLTIwOSw3ICsyMDksNyBAQCBpOTE1 X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCWlmIChm bGFncyAmIEk5MTVfU0hSSU5LX0JPVU5EKQo+ICAgCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZf cHJpdik7Cj4KPiAtCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdi0+ZGV2KTsKPiAr CWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Cj4KPiAgIAlyZXR1cm4gY291bnQ7 Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggODk3MjVj OWVmYzI1Li4wZjYwMDJjYjg2ZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vy cm9yLmMKPiBAQCAtODI0LDE5ICs4MjQsMTggQEAgc3RhdGljIHVpbnQzMl90IGk5MTVfZXJyb3Jf Z2VuZXJhdGVfY29kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJcmV0 dXJuIGVycm9yX2NvZGU7Cj4gICB9Cj4KPiAtc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3JkX2Zl bmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICtzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZWNv cmRfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCQkgICBz dHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVycm9yKQo+ICAgewo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlpbnQgaTsKPgo+ IC0JaWYgKElTX0dFTjMoZGV2KSB8fCBJU19HRU4yKGRldikpIHsKPiArCWlmIChJU19HRU4zKGRl dl9wcml2KSB8fCBJU19HRU4yKGRldl9wcml2KSkgewo+ICAgCQlmb3IgKGkgPSAwOyBpIDwgZGV2 X3ByaXYtPm51bV9mZW5jZV9yZWdzOyBpKyspCj4gICAJCQllcnJvci0+ZmVuY2VbaV0gPSBJOTE1 X1JFQUQoRkVOQ0VfUkVHKGkpKTsKPiAtCX0gZWxzZSBpZiAoSVNfR0VONShkZXYpIHx8IElTX0dF TjQoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU41KGRldl9wcml2KSB8fCBJU19HRU40KGRl dl9wcml2KSkgewo+ICAgCQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdz OyBpKyspCj4gICAJCQllcnJvci0+ZmVuY2VbaV0gPSBJOTE1X1JFQUQ2NChGRU5DRV9SRUdfOTY1 X0xPKGkpKTsKPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJ fSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiAgIAkJZm9yIChpID0gMDsg aSA8IGRldl9wcml2LT5udW1fZmVuY2VfcmVnczsgaSsrKQo+ICAgCQkJZXJyb3ItPmZlbmNlW2ld ID0gSTkxNV9SRUFENjQoRkVOQ0VfUkVHX0dFTjZfTE8oaSkpOwo+ICAgCX0KPiBAQCAtODUxLDcg Kzg1MCw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfcmVjb3JkX3NlbWFwaG9yZV9zdGF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq dG87Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4KPiAtCWlmICghaTkxNV9zZW1hcGhv cmVfaXNfZW5hYmxlZChkZXZfcHJpdi0+ZGV2KSkKPiArCWlmICghaTkxNV9zZW1hcGhvcmVfaXNf ZW5hYmxlZChkZXZfcHJpdikpCj4gICAJCXJldHVybjsKPgo+ICAgCWlmICghZXJyb3ItPnNlbWFw aG9yZV9vYmopCj4gQEAgLTg5MywzMSArODkyLDI5IEBAIHN0YXRpYyB2b2lkIGdlbjZfcmVjb3Jk X3NlbWFwaG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJ fQo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lkIGk5MTVfcmVjb3JkX3Jpbmdfc3RhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiArc3RhdGljIHZvaWQgaTkxNV9yZWNvcmRfcmluZ19zdGF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJICAgc3RydWN0IGRybV9pOTE1 X2Vycm9yX3N0YXRlICplcnJvciwKPiAgIAkJCQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4gICAJCQkJICAgc3RydWN0IGRybV9pOTE1X2Vycm9yX3JpbmcgKmVyaW5nKQo+ICAg ewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNikgewo+ICAgCQllcmluZy0+cmNfcHNtaSA9IEk5MTVfUkVBRChS SU5HX1BTTUlfQ1RMKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4gICAJCWVyaW5nLT5mYXVsdF9yZWcg PSBJOTE1X1JFQUQoUklOR19GQVVMVF9SRUcoZW5naW5lKSk7Cj4gLQkJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDgpCj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiAgIAkJ CWdlbjhfcmVjb3JkX3NlbWFwaG9yZV9zdGF0ZShkZXZfcHJpdiwgZXJyb3IsIGVuZ2luZSwKPiAg IAkJCQkJCSAgICBlcmluZyk7Cj4gICAJCWVsc2UKPiAgIAkJCWdlbjZfcmVjb3JkX3NlbWFwaG9y ZV9zdGF0ZShkZXZfcHJpdiwgZW5naW5lLCBlcmluZyk7Cj4gICAJfQo+Cj4gLQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkg ewo+ICAgCQllcmluZy0+ZmFkZHIgPSBJOTE1X1JFQUQoUklOR19ETUFfRkFERChlbmdpbmUtPm1t aW9fYmFzZSkpOwo+ICAgCQllcmluZy0+aXBlaXIgPSBJOTE1X1JFQUQoUklOR19JUEVJUihlbmdp bmUtPm1taW9fYmFzZSkpOwo+ICAgCQllcmluZy0+aXBlaHIgPSBJOTE1X1JFQUQoUklOR19JUEVI UihlbmdpbmUtPm1taW9fYmFzZSkpOwo+ICAgCQllcmluZy0+aW5zdGRvbmUgPSBJOTE1X1JFQUQo UklOR19JTlNURE9ORShlbmdpbmUtPm1taW9fYmFzZSkpOwo+ICAgCQllcmluZy0+aW5zdHBzID0g STkxNV9SRUFEKFJJTkdfSU5TVFBTKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4gICAJCWVyaW5nLT5i YmFkZHIgPSBJOTE1X1JFQUQoUklOR19CQkFERFIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAtCQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDgpIHsKPiAgIAkJCWVyaW5nLT5mYWRkciB8PSAodTY0KSBJOTE1X1JFQUQoUklOR19E TUFfRkFERF9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpKSA8PCAzMjsKPiAgIAkJCWVyaW5nLT5iYmFk ZHIgfD0gKHU2NCkgSTkxNV9SRUFEKFJJTkdfQkJBRERSX1VEVyhlbmdpbmUtPm1taW9fYmFzZSkp IDw8IDMyOwo+ICAgCQl9Cj4gQEAgLTkzOSwxMCArOTM2LDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVf cmVjb3JkX3Jpbmdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAllcmluZy0+dGFp bCA9IEk5MTVfUkVBRF9UQUlMKGVuZ2luZSk7Cj4gICAJZXJpbmctPmN0bCA9IEk5MTVfUkVBRF9D VEwoZW5naW5lKTsKPgo+IC0JaWYgKEk5MTVfTkVFRF9HRlhfSFdTKGRldikpIHsKPiArCWlmIChJ OTE1X05FRURfR0ZYX0hXUyhkZXZfcHJpdikpIHsKPiAgIAkJaTkxNV9yZWdfdCBtbWlvOwo+Cj4g LQkJaWYgKElTX0dFTjcoZGV2KSkgewo+ICsJCWlmIChJU19HRU43KGRldl9wcml2KSkgewo+ICAg CQkJc3dpdGNoIChlbmdpbmUtPmlkKSB7Cj4gICAJCQlkZWZhdWx0Ogo+ICAgCQkJY2FzZSBSQ1M6 Cj4gQEAgLTk1OCw3ICs5NTUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3JlY29yZF9yaW5nX3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQkJbW1pbyA9IFZFQk9YX0hXU19QR0FfR0VO NzsKPiAgIAkJCQlicmVhazsKPiAgIAkJCX0KPiAtCQl9IGVsc2UgaWYgKElTX0dFTjYoZW5naW5l LT5kZXYpKSB7Cj4gKwkJfSBlbHNlIGlmIChJU19HRU42KGVuZ2luZS0+aTkxNSkpIHsKPiAgIAkJ CW1taW8gPSBSSU5HX0hXU19QR0FfR0VONihlbmdpbmUtPm1taW9fYmFzZSk7Cj4gICAJCX0gZWxz ZSB7Cj4gICAJCQkvKiBYWFg6IGdlbjggcmV0dXJucyB0byBzYW5pdHkgKi8KPiBAQCAtOTcxLDE4 ICs5NjgsMTggQEAgc3RhdGljIHZvaWQgaTkxNV9yZWNvcmRfcmluZ19zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAgCWVyaW5nLT5oYW5nY2hlY2tfc2NvcmUgPSBlbmdpbmUtPmhhbmdj aGVjay5zY29yZTsKPiAgIAllcmluZy0+aGFuZ2NoZWNrX2FjdGlvbiA9IGVuZ2luZS0+aGFuZ2No ZWNrLmFjdGlvbjsKPgo+IC0JaWYgKFVTRVNfUFBHVFQoZGV2KSkgewo+ICsJaWYgKFVTRVNfUFBH VFQoZGV2X3ByaXYpKSB7Cj4gICAJCWludCBpOwo+Cj4gICAJCWVyaW5nLT52bV9pbmZvLmdmeF9t b2RlID0gSTkxNV9SRUFEKFJJTkdfTU9ERV9HRU43KGVuZ2luZSkpOwo+Cj4gLQkJaWYgKElTX0dF TjYoZGV2KSkKPiArCQlpZiAoSVNfR0VONihkZXZfcHJpdikpCj4gICAJCQllcmluZy0+dm1faW5m by5wcF9kaXJfYmFzZSA9Cj4gICAJCQkJSTkxNV9SRUFEKFJJTkdfUFBfRElSX0JBU0VfUkVBRChl bmdpbmUpKTsKPiAtCQllbHNlIGlmIChJU19HRU43KGRldikpCj4gKwkJZWxzZSBpZiAoSVNfR0VO NyhkZXZfcHJpdikpCj4gICAJCQllcmluZy0+dm1faW5mby5wcF9kaXJfYmFzZSA9Cj4gICAJCQkJ STkxNV9SRUFEKFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSk7Cj4gLQkJZWxzZSBpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gOCkKPiArCQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDgpCj4gICAJCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gICAJCQkJZXJpbmctPnZtX2lu Zm8ucGRwW2ldID0KPiAgIAkJCQkJSTkxNV9SRUFEKEdFTjhfUklOR19QRFBfVURXKGVuZ2luZSwg aSkpOwo+IEBAIC05OTgsNyArOTk1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVjb3JkX2Fj dGl2ZV9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCQkJICAg c3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvciwKPiAgIAkJCQkJICAgc3RydWN0IGRy bV9pOTE1X2Vycm9yX3JpbmcgKmVyaW5nKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmo7Cj4KPiAgIAkvKiBDdXJyZW50bHkgcmVuZGVyIHJpbmcgaXMgdGhl IG9ubHkgSFcgY29udGV4dCB1c2VyICovCj4gQEAgLTEwMTYsMTAgKzEwMTMsOSBAQCBzdGF0aWMg dm9pZCBpOTE1X2dlbV9yZWNvcmRfYWN0aXZlX2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAo+ICAgCX0KPiAgIH0KPgo+IC1zdGF0aWMgdm9pZCBpOTE1X2dlbV9yZWNvcmRf cmluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVj b3JkX3JpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCQkgIHN0 cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSAqZXJyb3IpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gICAJc3RydWN0IGk5MTVfZ2d0 dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3Q7Cj4gICAJaW50IGksIGNvdW50Owo+IEBAIC0xMDMwLDEyICsxMDI2LDEyIEBA IHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+Cj4gICAJCWVycm9yLT5yaW5nW2ldLnBpZCA9IC0xOwo+Cj4gLQkJaWYgKGVuZ2luZS0+ZGV2 ID09IE5VTEwpCj4gKwkJaWYgKCFpbnRlbF9lbmdpbmVfaW5pdGlhbGl6ZWQoZW5naW5lKSkKPiAg IAkJCWNvbnRpbnVlOwo+Cj4gICAJCWVycm9yLT5yaW5nW2ldLnZhbGlkID0gdHJ1ZTsKPgo+IC0J CWk5MTVfcmVjb3JkX3Jpbmdfc3RhdGUoZGV2LCBlcnJvciwgZW5naW5lLCAmZXJyb3ItPnJpbmdb aV0pOwo+ICsJCWk5MTVfcmVjb3JkX3Jpbmdfc3RhdGUoZGV2X3ByaXYsIGVycm9yLCBlbmdpbmUs ICZlcnJvci0+cmluZ1tpXSk7Cj4KPiAgIAkJcmVxdWVzdCA9IGk5MTVfZ2VtX2ZpbmRfYWN0aXZl X3JlcXVlc3QoZW5naW5lKTsKPiAgIAkJaWYgKHJlcXVlc3QpIHsKPiBAQCAtMTMwMSwxNSArMTI5 NywxNCBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAllcnJvci0+ZWlyID0gSTkxNV9SRUFEKEVJUik7Cj4g ICAJZXJyb3ItPnBndGJsX2VyID0gSTkxNV9SRUFEKFBHVEJMX0VSKTsKPgo+IC0JaTkxNV9nZXRf ZXh0cmFfaW5zdGRvbmUoZGV2LCBlcnJvci0+ZXh0cmFfaW5zdGRvbmUpOwo+ICsJaTkxNV9nZXRf ZXh0cmFfaW5zdGRvbmUoZGV2X3ByaXYsIGVycm9yLT5leHRyYV9pbnN0ZG9uZSk7Cj4gICB9Cj4K PiAtc3RhdGljIHZvaWQgaTkxNV9lcnJvcl9jYXB0dXJlX21zZyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ICtzdGF0aWMgdm9pZCBpOTE1X2Vycm9yX2NhcHR1cmVfbXNnKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3Rh dGUgKmVycm9yLAo+ICAgCQkJCSAgIHUzMiBlbmdpbmVfbWFzaywKPiAgIAkJCQkgICBjb25zdCBj aGFyICplcnJvcl9tc2cpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXUzMiBlY29kZTsKPiAgIAlpbnQgcmluZ19pZCA9 IC0xLCBsZW47Cj4KPiBAQCAtMTMxNyw3ICsxMzEyLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9lcnJv cl9jYXB0dXJlX21zZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Cj4gICAJbGVuID0gc2NucHJp bnRmKGVycm9yLT5lcnJvcl9tc2csIHNpemVvZihlcnJvci0+ZXJyb3JfbXNnKSwKPiAgIAkJCSJH UFUgSEFORzogZWNvZGUgJWQ6JWQ6MHglMDh4IiwKPiAtCQkJSU5URUxfSU5GTyhkZXYpLT5nZW4s IHJpbmdfaWQsIGVjb2RlKTsKPiArCQkJSU5URUxfR0VOKGRldl9wcml2KSwgcmluZ19pZCwgZWNv ZGUpOwo+Cj4gICAJaWYgKHJpbmdfaWQgIT0gLTEgJiYgZXJyb3ItPnJpbmdbcmluZ19pZF0ucGlk ICE9IC0xKQo+ICAgCQlsZW4gKz0gc2NucHJpbnRmKGVycm9yLT5lcnJvcl9tc2cgKyBsZW4sCj4g QEAgLTEzNTIsMTEgKzEzNDcsMTEgQEAgc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJlX2dlbl9zdGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAgKiBvdXQgYSBzdHJ1Y3R1 cmUgd2hpY2ggYmVjb21lcyBhdmFpbGFibGUgaW4gZGVidWdmcyBmb3IgdXNlciBsZXZlbCB0b29s cwo+ICAgICogdG8gcGljayB1cC4KPiAgICAqLwo+IC12b2lkIGk5MTVfY2FwdHVyZV9lcnJvcl9z dGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZW5naW5lX21hc2ssCj4gK3ZvaWQgaTkx NV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiArCQkJICAgICAgdTMyIGVuZ2luZV9tYXNrLAo+ICAgCQkJICAgICAgY29uc3QgY2hhciAqZXJy b3JfbXNnKQo+ICAgewo+ICAgCXN0YXRpYyBib29sIHdhcm5lZDsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGRybV9p OTE1X2Vycm9yX3N0YXRlICplcnJvcjsKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4gQEAg LTEzNzIsMTUgKzEzNjcsMTUgQEAgdm9pZCBpOTE1X2NhcHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdTMyIGVuZ2luZV9tYXNrLAo+ICAgCWk5MTVfY2FwdHVyZV9nZW5f c3RhdGUoZGV2X3ByaXYsIGVycm9yKTsKPiAgIAlpOTE1X2NhcHR1cmVfcmVnX3N0YXRlKGRldl9w cml2LCBlcnJvcik7Cj4gICAJaTkxNV9nZW1fY2FwdHVyZV9idWZmZXJzKGRldl9wcml2LCBlcnJv cik7Cj4gLQlpOTE1X2dlbV9yZWNvcmRfZmVuY2VzKGRldiwgZXJyb3IpOwo+IC0JaTkxNV9nZW1f cmVjb3JkX3JpbmdzKGRldiwgZXJyb3IpOwo+ICsJaTkxNV9nZW1fcmVjb3JkX2ZlbmNlcyhkZXZf cHJpdiwgZXJyb3IpOwo+ICsJaTkxNV9nZW1fcmVjb3JkX3JpbmdzKGRldl9wcml2LCBlcnJvcik7 Cj4KPiAgIAlkb19nZXR0aW1lb2ZkYXkoJmVycm9yLT50aW1lKTsKPgo+IC0JZXJyb3ItPm92ZXJs YXkgPSBpbnRlbF9vdmVybGF5X2NhcHR1cmVfZXJyb3Jfc3RhdGUoZGV2KTsKPiAtCWVycm9yLT5k aXNwbGF5ID0gaW50ZWxfZGlzcGxheV9jYXB0dXJlX2Vycm9yX3N0YXRlKGRldik7Cj4gKwllcnJv ci0+b3ZlcmxheSA9IGludGVsX292ZXJsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShkZXZfcHJpdik7 Cj4gKwllcnJvci0+ZGlzcGxheSA9IGludGVsX2Rpc3BsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShk ZXZfcHJpdik7Cj4KPiAtCWk5MTVfZXJyb3JfY2FwdHVyZV9tc2coZGV2LCBlcnJvciwgZW5naW5l X21hc2ssIGVycm9yX21zZyk7Cj4gKwlpOTE1X2Vycm9yX2NhcHR1cmVfbXNnKGRldl9wcml2LCBl cnJvciwgZW5naW5lX21hc2ssIGVycm9yX21zZyk7Cj4gICAJRFJNX0lORk8oIiVzXG4iLCBlcnJv ci0+ZXJyb3JfbXNnKTsKPgo+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+Z3B1X2Vy cm9yLmxvY2ssIGZsYWdzKTsKPiBAQCAtMTQwMCw3ICsxMzk1LDcgQEAgdm9pZCBpOTE1X2NhcHR1 cmVfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGVuZ2luZV9tYXNrLAo+ ICAgCQlEUk1fSU5GTygiUGxlYXNlIGZpbGUgYSBfbmV3XyBidWcgcmVwb3J0IG9uIGJ1Z3MuZnJl ZWRlc2t0b3Aub3JnIGFnYWluc3QgRFJJIC0+IERSTS9JbnRlbFxuIik7Cj4gICAJCURSTV9JTkZP KCJkcm0vaTkxNSBkZXZlbG9wZXJzIGNhbiB0aGVuIHJlYXNzaWduIHRvIHRoZSByaWdodCBjb21w b25lbnQgaWYgaXQncyBub3QgYSBrZXJuZWwgaXNzdWUuXG4iKTsKPiAgIAkJRFJNX0lORk8oIlRo ZSBncHUgY3Jhc2ggZHVtcCBpcyByZXF1aXJlZCB0byBhbmFseXplIGdwdSBoYW5ncywgc28gcGxl YXNlIGFsd2F5cyBhdHRhY2ggaXQuXG4iKTsKPiAtCQlEUk1fSU5GTygiR1BVIGNyYXNoIGR1bXAg c2F2ZWQgdG8gL3N5cy9jbGFzcy9kcm0vY2FyZCVkL2Vycm9yXG4iLCBkZXYtPnByaW1hcnktPmlu ZGV4KTsKPiArCQlEUk1fSU5GTygiR1BVIGNyYXNoIGR1bXAgc2F2ZWQgdG8gL3N5cy9jbGFzcy9k cm0vY2FyZCVkL2Vycm9yXG4iLCBkZXZfcHJpdi0+ZGV2LT5wcmltYXJ5LT5pbmRleCk7Cj4gICAJ CXdhcm5lZCA9IHRydWU7Cj4gICAJfQo+ICAgfQo+IEBAIC0xNDUwLDE3ICsxNDQ1LDE3IEBAIGNv bnN0IGNoYXIgKmk5MTVfY2FjaGVfbGV2ZWxfc3RyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCBpbnQgdHlwZSkKPiAgIH0KPgo+ICAgLyogTkI6IHBsZWFzZSBub3RpY2UgdGhlIG1lbXNl dCAqLwo+IC12b2lkIGk5MTVfZ2V0X2V4dHJhX2luc3Rkb25lKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVpbnQzMl90ICppbnN0ZG9uZSkKPiArdm9pZCBpOTE1X2dldF9leHRyYV9pbnN0ZG9uZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICAgdWludDMyX3QgKmlu c3Rkb25lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAgIAltZW1zZXQoaW5zdGRvbmUsIDAsIHNpemVvZigqaW5zdGRvbmUp ICogSTkxNV9OVU1fSU5TVERPTkVfUkVHKTsKPgo+IC0JaWYgKElTX0dFTjIoZGV2KSB8fCBJU19H RU4zKGRldikpCj4gKwlpZiAoSVNfR0VOMihkZXZfcHJpdikgfHwgSVNfR0VOMyhkZXZfcHJpdikp Cj4gICAJCWluc3Rkb25lWzBdID0gSTkxNV9SRUFEKEdFTjJfSU5TVERPTkUpOwo+IC0JZWxzZSBp ZiAoSVNfR0VONChkZXYpIHx8IElTX0dFTjUoZGV2KSB8fCBJU19HRU42KGRldikpIHsKPiArCWVs c2UgaWYgKElTX0dFTjQoZGV2X3ByaXYpIHx8IElTX0dFTjUoZGV2X3ByaXYpIHx8IElTX0dFTjYo ZGV2X3ByaXYpKSB7Cj4gICAJCWluc3Rkb25lWzBdID0gSTkxNV9SRUFEKFJJTkdfSU5TVERPTkUo UkVOREVSX1JJTkdfQkFTRSkpOwo+ICAgCQlpbnN0ZG9uZVsxXSA9IEk5MTVfUkVBRChHRU40X0lO U1RET05FMSk7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcpIHsKPiAr CX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7Cj4gICAJCWluc3Rkb25lWzBd ID0gSTkxNV9SRUFEKFJJTkdfSU5TVERPTkUoUkVOREVSX1JJTkdfQkFTRSkpOwo+ICAgCQlpbnN0 ZG9uZVsxXSA9IEk5MTVfUkVBRChHRU43X1NDX0lOU1RET05FKTsKPiAgIAkJaW5zdGRvbmVbMl0g PSBJOTE1X1JFQUQoR0VON19TQU1QTEVSX0lOU1RET05FKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMKPiBpbmRleCAyZjZmZDMzYzA3YmEuLjg4NjRlZTE5MTU0ZiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYwo+IEBAIC0yNTU1LDE1ICsyNTU1LDE1IEBAIHN0YXRpYyB2b2lkIGk5MTVfZXJy b3Jfd2FrZV91cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAgKiBGaXJl IGFuIGVycm9yIHVldmVudCBzbyB1c2Vyc3BhY2UgY2FuIHNlZSB0aGF0IGEgaGFuZyBvciBlcnJv cgo+ICAgICogd2FzIGRldGVjdGVkLgo+ICAgICovCj4gLXN0YXRpYyB2b2lkIGk5MTVfcmVzZXRf YW5kX3dha2V1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgdm9pZCBpOTE1X3Jl c2V0X2FuZF93YWtldXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJ c3RydWN0IGtvYmplY3QgKmtvYmogPSAmZGV2X3ByaXYtPmRldi0+cHJpbWFyeS0+a2Rldi0+a29i ajsKPiAgIAljaGFyICplcnJvcl9ldmVudFtdID0geyBJOTE1X0VSUk9SX1VFVkVOVCAiPTEiLCBO VUxMIH07Cj4gICAJY2hhciAqcmVzZXRfZXZlbnRbXSA9IHsgSTkxNV9SRVNFVF9VRVZFTlQgIj0x IiwgTlVMTCB9Owo+ICAgCWNoYXIgKnJlc2V0X2RvbmVfZXZlbnRbXSA9IHsgSTkxNV9FUlJPUl9V RVZFTlQgIj0wIiwgTlVMTCB9Owo+ICAgCWludCByZXQ7Cj4KPiAtCWtvYmplY3RfdWV2ZW50X2Vu digmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCBLT0JKX0NIQU5HRSwgZXJyb3JfZXZlbnQpOwo+ ICsJa29iamVjdF91ZXZlbnRfZW52KGtvYmosIEtPQkpfQ0hBTkdFLCBlcnJvcl9ldmVudCk7Cj4K PiAgIAkvKgo+ICAgCSAqIE5vdGUgdGhhdCB0aGVyZSdzIG9ubHkgb25lIHdvcmsgaXRlbSB3aGlj aCBkb2VzIGdwdSByZXNldHMsIHNvIHdlCj4gQEAgLTI1NzcsOCArMjU3Nyw3IEBAIHN0YXRpYyB2 b2lkIGk5MTVfcmVzZXRfYW5kX3dha2V1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCSAq Lwo+ICAgCWlmIChpOTE1X3Jlc2V0X2luX3Byb2dyZXNzKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSkg ewo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJyZXNldHRpbmcgY2hpcFxuIik7Cj4gLQkJa29iamVj dF91ZXZlbnRfZW52KCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIEtPQkpfQ0hBTkdFLAo+IC0J CQkJICAgcmVzZXRfZXZlbnQpOwo+ICsJCWtvYmplY3RfdWV2ZW50X2Vudihrb2JqLCBLT0JKX0NI QU5HRSwgcmVzZXRfZXZlbnQpOwo+Cj4gICAJCS8qCj4gICAJCSAqIEluIG1vc3QgY2FzZXMgaXQn cyBndWFyYW50ZWVkIHRoYXQgd2UgZ2V0IGhlcmUgd2l0aCBhbiBSUE0KPiBAQCAtMjU4OSw3ICsy NTg4LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXNldF9hbmRfd2FrZXVwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gICAJCSAqLwo+ICAgCQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7 Cj4KPiAtCQlpbnRlbF9wcmVwYXJlX3Jlc2V0KGRldik7Cj4gKwkJaW50ZWxfcHJlcGFyZV9yZXNl dChkZXZfcHJpdik7Cj4KPiAgIAkJLyoKPiAgIAkJICogQWxsIHN0YXRlIHJlc2V0IF9tdXN0XyBi ZSBjb21wbGV0ZWQgYmVmb3JlIHdlIHVwZGF0ZSB0aGUKPiBAQCAtMjU5NywxNCArMjU5NiwxNCBA QCBzdGF0aWMgdm9pZCBpOTE1X3Jlc2V0X2FuZF93YWtldXAoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgIAkJICogcGVuZGluZyBzdGF0ZSBhbmQgbm90IHByb3Blcmx5IGRyb3AgbG9ja3MsIHJl c3VsdGluZyBpbgo+ICAgCQkgKiBkZWFkbG9ja3Mgd2l0aCB0aGUgcmVzZXQgd29yay4KPiAgIAkJ ICovCj4gLQkJcmV0ID0gaTkxNV9yZXNldChkZXYpOwo+ICsJCXJldCA9IGk5MTVfcmVzZXQoZGV2 X3ByaXYpOwo+Cj4gLQkJaW50ZWxfZmluaXNoX3Jlc2V0KGRldik7Cj4gKwkJaW50ZWxfZmluaXNo X3Jlc2V0KGRldl9wcml2KTsKPgo+ICAgCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7 Cj4KPiAgIAkJaWYgKHJldCA9PSAwKQo+IC0JCQlrb2JqZWN0X3VldmVudF9lbnYoJmRldi0+cHJp bWFyeS0+a2Rldi0+a29iaiwKPiArCQkJa29iamVjdF91ZXZlbnRfZW52KGtvYmosCj4gICAJCQkJ CSAgIEtPQkpfQ0hBTkdFLCByZXNldF9kb25lX2V2ZW50KTsKPgo+ICAgCQkvKgo+IEBAIC0yNjE1 LDkgKzI2MTQsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jlc2V0X2FuZF93YWtldXAoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgIAl9Cj4gICB9Cj4KPiAtc3RhdGljIHZvaWQgaTkxNV9yZXBvcnRf YW5kX2NsZWFyX2VpcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgdm9pZCBpOTE1 X3JlcG9ydF9hbmRfY2xlYXJfZWlyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gICAJdWludDMyX3QgaW5zdGRvbmVbSTkxNV9OVU1fSU5TVERPTkVfUkVHXTsKPiAg IAl1MzIgZWlyID0gSTkxNV9SRUFEKEVJUik7Cj4gICAJaW50IHBpcGUsIGk7Cj4gQEAgLTI2Mjcs OSArMjYyNSw5IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVwb3J0X2FuZF9jbGVhcl9laXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPgo+ICAgCXByX2VycigicmVuZGVyIGVycm9yIGRldGVjdGVkLCBF SVI6IDB4JTA4eFxuIiwgZWlyKTsKPgo+IC0JaTkxNV9nZXRfZXh0cmFfaW5zdGRvbmUoZGV2LCBp bnN0ZG9uZSk7Cj4gKwlpOTE1X2dldF9leHRyYV9pbnN0ZG9uZShkZXZfcHJpdiwgaW5zdGRvbmUp Owo+Cj4gLQlpZiAoSVNfRzRYKGRldikpIHsKPiArCWlmIChJU19HNFgoZGV2X3ByaXYpKSB7Cj4g ICAJCWlmIChlaXIgJiAoR000NV9FUlJPUl9NRU1fUFJJViB8IEdNNDVfRVJST1JfQ1BfUFJJVikp IHsKPiAgIAkJCXUzMiBpcGVpciA9IEk5MTVfUkVBRChJUEVJUl9JOTY1KTsKPgo+IEBAIC0yNjUx LDcgKzI2NDksNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3JlcG9ydF9hbmRfY2xlYXJfZWlyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCX0KPiAgIAl9Cj4KPiAtCWlmICghSVNfR0VOMihkZXYp KSB7Cj4gKwlpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gICAJCWlmIChlaXIgJiBJOTE1X0VS Uk9SX1BBR0VfVEFCTEUpIHsKPiAgIAkJCXUzMiBwZ3RibF9lcnIgPSBJOTE1X1JFQUQoUEdUQkxf RVIpOwo+ICAgCQkJcHJfZXJyKCJwYWdlIHRhYmxlIGVycm9yXG4iKTsKPiBAQCAtMjY3Myw3ICsy NjcxLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXBvcnRfYW5kX2NsZWFyX2VpcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAgCQlwcl9lcnIoIiAgSU5TVFBNOiAweCUwOHhcbiIsIEk5MTVfUkVB RChJTlNUUE0pKTsKPiAgIAkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5zdGRvbmUpOyBp KyspCj4gICAJCQlwcl9lcnIoIiAgSU5TVERPTkVfJWQ6IDB4JTA4eFxuIiwgaSwgaW5zdGRvbmVb aV0pOwo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKPiArCQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDQpIHsKPiAgIAkJCXUzMiBpcGVpciA9IEk5MTVfUkVBRChJUEVJUik7 Cj4KPiAgIAkJCXByX2VycigiICBJUEVJUjogMHglMDh4XG4iLCBJOTE1X1JFQUQoSVBFSVIpKTsK PiBAQCAtMjcxNywxMCArMjcxNSwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X3JlcG9ydF9hbmRfY2xl YXJfZWlyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAgKiBzbyB1c2Vyc3BhY2Uga25vd3Mg c29tZXRoaW5nIGJhZCBoYXBwZW5lZCAoc2hvdWxkIHRyaWdnZXIgY29sbGVjdGlvbgo+ICAgICog b2YgYSByaW5nIGR1bXAgZXRjLikuCj4gICAgKi8KPiAtdm9pZCBpOTE1X2hhbmRsZV9lcnJvcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZW5naW5lX21hc2ssCj4gK3ZvaWQgaTkxNV9oYW5k bGVfZXJyb3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCSAgICAgICB1 MzIgZW5naW5lX21hc2ssCj4gICAJCSAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLikKPiAgIHsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gICAJdmFfbGlzdCBhcmdzOwo+ICAgCWNoYXIgZXJyb3JfbXNnWzgwXTsKPgo+IEBAIC0yNzI4 LDggKzI3MjYsOCBAQCB2b2lkIGk5MTVfaGFuZGxlX2Vycm9yKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHUzMiBlbmdpbmVfbWFzaywKPiAgIAl2c2NucHJpbnRmKGVycm9yX21zZywgc2l6ZW9mKGVy cm9yX21zZyksIGZtdCwgYXJncyk7Cj4gICAJdmFfZW5kKGFyZ3MpOwo+Cj4gLQlpOTE1X2NhcHR1 cmVfZXJyb3Jfc3RhdGUoZGV2LCBlbmdpbmVfbWFzaywgZXJyb3JfbXNnKTsKPiAtCWk5MTVfcmVw b3J0X2FuZF9jbGVhcl9laXIoZGV2KTsKPiArCWk5MTVfY2FwdHVyZV9lcnJvcl9zdGF0ZShkZXZf cHJpdiwgZW5naW5lX21hc2ssIGVycm9yX21zZyk7Cj4gKwlpOTE1X3JlcG9ydF9hbmRfY2xlYXJf ZWlyKGRldl9wcml2KTsKPgo+ICAgCWlmIChlbmdpbmVfbWFzaykgewo+ICAgCQlhdG9taWNfb3Io STkxNV9SRVNFVF9JTl9QUk9HUkVTU19GTEFHLAo+IEBAIC0yNzUxLDcgKzI3NDksNyBAQCB2b2lk IGk5MTVfaGFuZGxlX2Vycm9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBlbmdpbmVfbWFz aywKPiAgIAkJaTkxNV9lcnJvcl93YWtlX3VwKGRldl9wcml2LCBmYWxzZSk7Cj4gICAJfQo+Cj4g LQlpOTE1X3Jlc2V0X2FuZF93YWtldXAoZGV2KTsKPiArCWk5MTVfcmVzZXRfYW5kX3dha2V1cChk ZXZfcHJpdik7Cj4gICB9Cj4KPiAgIC8qIENhbGxlZCBmcm9tIGRybSBnZW5lcmljIGNvZGUsIHBh c3NlZCAnY3J0Yycgd2hpY2gKPiBAQCAtMjg2OSw5ICsyODY3LDkgQEAgcmluZ19pZGxlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKQo+ICAgfQo+Cj4gICBzdGF0aWMg Ym9vbAo+IC1pcGVocl9pc19zZW1hcGhvcmVfd2FpdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 MzIgaXBlaHIpCj4gK2lwZWhyX2lzX3NlbWFwaG9yZV93YWl0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIGlwZWhyKQo+ICAgewo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDgpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiAgIAkJcmV0 dXJuIChpcGVociA+PiAyMykgPT0gMHgxYzsKPiAgIAl9IGVsc2Ugewo+ICAgCQlpcGVociAmPSB+ TUlfU0VNQVBIT1JFX1NZTkNfTUFTSzsKPiBAQCAtMjg4NCwxMCArMjg4MiwxMCBAQCBzdGF0aWMg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4gICBzZW1hcGhvcmVfd2FpdF90b19zaWduYWxsZXJf cmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBpcGVociwKPiAgIAkJCQkg dTY0IG9mZnNldCkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpzaWdu YWxsZXI7Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDgpIHsKPiArCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiAgIAkJZm9yX2VhY2hfZW5naW5lKHNpZ25h bGxlciwgZGV2X3ByaXYpIHsKPiAgIAkJCWlmIChlbmdpbmUgPT0gc2lnbmFsbGVyKQo+ICAgCQkJ CWNvbnRpbnVlOwo+IEBAIC0yOTE2LDcgKzI5MTQsNyBAQCBzZW1hcGhvcmVfd2FpdF90b19zaWdu YWxsZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBpcGVociwKPiAg IHN0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKPiAgIHNlbWFwaG9yZV93YWl0c19mb3Io c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgKnNlcW5vKQo+ICAgewo+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRl Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ ICAgCXUzMiBjbWQsIGlwZWhyLCBoZWFkOwo+ICAgCXU2NCBvZmZzZXQgPSAwOwo+ICAgCWludCBp LCBiYWNrd2FyZHM7Cj4gQEAgLTI5NDIsNyArMjk0MCw3IEBAIHNlbWFwaG9yZV93YWl0c19mb3Io c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgKnNlcW5vKQo+ICAgCQlyZXR1cm4g TlVMTDsKPgo+ICAgCWlwZWhyID0gSTkxNV9SRUFEKFJJTkdfSVBFSFIoZW5naW5lLT5tbWlvX2Jh c2UpKTsKPiAtCWlmICghaXBlaHJfaXNfc2VtYXBob3JlX3dhaXQoZW5naW5lLT5kZXYsIGlwZWhy KSkKPiArCWlmICghaXBlaHJfaXNfc2VtYXBob3JlX3dhaXQoZW5naW5lLT5pOTE1LCBpcGVocikp Cj4gICAJCXJldHVybiBOVUxMOwo+Cj4gICAJLyoKPiBAQCAtMjk1NCw3ICsyOTUyLDcgQEAgc2Vt YXBob3JlX3dhaXRzX2ZvcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiAqc2Vx bm8pCj4gICAJICogcmluZ2J1ZmZlciBpdHNlbGYuCj4gICAJICovCj4gICAJaGVhZCA9IEk5MTVf UkVBRF9IRUFEKGVuZ2luZSkgJiBIRUFEX0FERFI7Cj4gLQliYWNrd2FyZHMgPSAoSU5URUxfSU5G TyhlbmdpbmUtPmRldiktPmdlbiA+PSA4KSA/IDUgOiA0Owo+ICsJYmFja3dhcmRzID0gKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOCkgPyA1IDogNDsKPgo+ICAgCWZvciAoaSA9IGJhY2t3YXJkczsg aTsgLS1pKSB7Cj4gICAJCS8qCj4gQEAgLTI5NzYsNyArMjk3NCw3IEBAIHNlbWFwaG9yZV93YWl0 c19mb3Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgKnNlcW5vKQo+ICAgCQly ZXR1cm4gTlVMTDsKPgo+ICAgCSpzZXFubyA9IGlvcmVhZDMyKGVuZ2luZS0+YnVmZmVyLT52aXJ0 dWFsX3N0YXJ0ICsgaGVhZCArIDQpICsgMTsKPiAtCWlmIChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2 KS0+Z2VuID49IDgpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiAgIAkJ b2Zmc2V0ID0gaW9yZWFkMzIoZW5naW5lLT5idWZmZXItPnZpcnR1YWxfc3RhcnQgKyBoZWFkICsg MTIpOwo+ICAgCQlvZmZzZXQgPDw9IDMyOwo+ICAgCQlvZmZzZXQgPSBpb3JlYWQzMihlbmdpbmUt PmJ1ZmZlci0+dmlydHVhbF9zdGFydCArIGhlYWQgKyA4KTsKPiBAQCAtMjk4Niw3ICsyOTg0LDcg QEAgc2VtYXBob3JlX3dhaXRzX2ZvcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUz MiAqc2Vxbm8pCj4KPiAgIHN0YXRpYyBpbnQgc2VtYXBob3JlX3Bhc3NlZChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqc2lnbmFsbGVyOwo+ICAgCXUzMiBzZXFubzsKPgo+IEBAIC0zMDI4LDcgKzMwMjYsNyBAQCBz dGF0aWMgYm9vbCBzdWJ1bml0c19zdHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICAJaWYgKGVuZ2luZS0+aWQgIT0gUkNTKQo+ICAgCQlyZXR1cm4gdHJ1ZTsKPgo+IC0JaTkx NV9nZXRfZXh0cmFfaW5zdGRvbmUoZW5naW5lLT5kZXYsIGluc3Rkb25lKTsKPiArCWk5MTVfZ2V0 X2V4dHJhX2luc3Rkb25lKGVuZ2luZS0+aTkxNSwgaW5zdGRvbmUpOwo+Cj4gICAJLyogVGhlcmUg bWlnaHQgYmUgdW5zdGFibGUgc3VidW5pdCBzdGF0ZXMgZXZlbiB3aGVuCj4gICAJICogYWN0dWFs IGhlYWQgaXMgbm90IG1vdmluZy4gRmlsdGVyIG91dCB0aGUgdW5zdGFibGUgb25lcyBieQo+IEBA IC0zMDY5LDggKzMwNjcsNyBAQCBoZWFkX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwgdTY0IGFjdGhkKQo+ICAgc3RhdGljIGVudW0gaW50ZWxfcmluZ19oYW5nY2hlY2tfYWN0 aW9uCj4gICByaW5nX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTY0IGFj dGhkKQo+ICAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAll bnVtIGludGVsX3JpbmdfaGFuZ2NoZWNrX2FjdGlvbiBoYTsKPiAgIAl1MzIgdG1wOwo+Cj4gQEAg LTMwNzgsNyArMzA3NSw3IEBAIHJpbmdfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCB1NjQgYWN0aGQpCj4gICAJaWYgKGhhICE9IEhBTkdDSEVDS19IVU5HKQo+ICAgCQlyZXR1 cm4gaGE7Cj4KPiAtCWlmIChJU19HRU4yKGRldikpCj4gKwlpZiAoSVNfR0VOMihkZXZfcHJpdikp Cj4gICAJCXJldHVybiBIQU5HQ0hFQ0tfSFVORzsKPgo+ICAgCS8qIElzIHRoZSBjaGlwIGhhbmdp bmcgb24gYSBXQUlUX0ZPUl9FVkVOVD8KPiBAQCAtMzA4OCwxOSArMzA4NSwxOSBAQCByaW5nX3N0 dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTY0IGFjdGhkKQo+ICAgCSAqLwo+ ICAgCXRtcCA9IEk5MTVfUkVBRF9DVEwoZW5naW5lKTsKPiAgIAlpZiAodG1wICYgUklOR19XQUlU KSB7Cj4gLQkJaTkxNV9oYW5kbGVfZXJyb3IoZGV2LCAwLAo+ICsJCWk5MTVfaGFuZGxlX2Vycm9y KGRldl9wcml2LCAwLAo+ICAgCQkJCSAgIktpY2tpbmcgc3R1Y2sgd2FpdCBvbiAlcyIsCj4gICAJ CQkJICBlbmdpbmUtPm5hbWUpOwo+ICAgCQlJOTE1X1dSSVRFX0NUTChlbmdpbmUsIHRtcCk7Cj4g ICAJCXJldHVybiBIQU5HQ0hFQ0tfS0lDSzsKPiAgIAl9Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA2ICYmIHRtcCAmIFJJTkdfV0FJVF9TRU1BUEhPUkUpIHsKPiArCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDYgJiYgdG1wICYgUklOR19XQUlUX1NFTUFQSE9SRSkgewo+ICAg CQlzd2l0Y2ggKHNlbWFwaG9yZV9wYXNzZWQoZW5naW5lKSkgewo+ICAgCQlkZWZhdWx0Ogo+ICAg CQkJcmV0dXJuIEhBTkdDSEVDS19IVU5HOwo+ICAgCQljYXNlIDE6Cj4gLQkJCWk5MTVfaGFuZGxl X2Vycm9yKGRldiwgMCwKPiArCQkJaTkxNV9oYW5kbGVfZXJyb3IoZGV2X3ByaXYsIDAsCj4gICAJ CQkJCSAgIktpY2tpbmcgc3R1Y2sgc2VtYXBob3JlIG9uICVzIiwKPiAgIAkJCQkJICBlbmdpbmUt Pm5hbWUpOwo+ICAgCQkJSTkxNV9XUklURV9DVEwoZW5naW5lLCB0bXApOwo+IEBAIC0zMTE1LDcg KzMxMTIsNyBAQCByaW5nX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTY0 IGFjdGhkKQo+Cj4gICBzdGF0aWMgdW5zaWduZWQga2lja193YWl0ZXJzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdG9faTkxNShlbmdpbmUtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IGVuZ2luZS0+aTkxNTsKPiAgIAl1bnNpZ25lZCB1c2VyX2ludGVycnVwdHMgPSBSRUFEX09O Q0UoZW5naW5lLT51c2VyX2ludGVycnVwdHMpOwo+Cj4gICAJaWYgKGVuZ2luZS0+aGFuZ2NoZWNr LnVzZXJfaW50ZXJydXB0cyA9PSB1c2VyX2ludGVycnVwdHMgJiYKPiBAQCAtMzE0NCw3ICszMTQx LDYgQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAgIAkJ Y29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLAo+ICAgCQkJICAgICBncHVfZXJy b3IuaGFuZ2NoZWNrX3dvcmsud29yayk7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2 X3ByaXYtPmRldjsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAJZW51 bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gICAJaW50IGJ1c3lfY291bnQgPSAwLCByaW5nc19odW5n ID0gMDsKPiBAQCAtMzI3MiwyMiArMzI2OCwyMiBAQCBzdGF0aWMgdm9pZCBpOTE1X2hhbmdjaGVj a19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgIAl9Cj4KPiAgIAlpZiAocmlu Z3NfaHVuZykgewo+IC0JCWk5MTVfaGFuZGxlX2Vycm9yKGRldiwgcmluZ3NfaHVuZywgIkVuZ2lu ZShzKSBodW5nIik7Cj4gKwkJaTkxNV9oYW5kbGVfZXJyb3IoZGV2X3ByaXYsIHJpbmdzX2h1bmcs ICJFbmdpbmUocykgaHVuZyIpOwo+ICAgCQlnb3RvIG91dDsKPiAgIAl9Cj4KPiAgIAlpZiAoYnVz eV9jb3VudCkKPiAgIAkJLyogUmVzZXQgdGltZXIgY2FzZSBjaGlwIGhhbmdzIHdpdGhvdXQgYW5v dGhlciByZXF1ZXN0Cj4gICAJCSAqIGJlaW5nIGFkZGVkICovCj4gLQkJaTkxNV9xdWV1ZV9oYW5n Y2hlY2soZGV2KTsKPiArCQlpOTE1X3F1ZXVlX2hhbmdjaGVjayhkZXZfcHJpdik7Cj4KPiAgIG91 dDoKPiAgIAlFTkFCTEVfUlBNX1dBS0VSRUZfQVNTRVJUUyhkZXZfcHJpdik7Cj4gICB9Cj4KPiAt dm9pZCBpOTE1X3F1ZXVlX2hhbmdjaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt2b2lk IGk5MTVfcXVldWVfaGFuZ2NoZWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIHsKPiAtCXN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZSA9ICZ0b19pOTE1KGRldiktPmdwdV9l cnJvcjsKPiArCXN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZSA9ICZkZXZfcHJpdi0+Z3B1X2Vycm9y Owo+Cj4gICAJaWYgKCFpOTE1LmVuYWJsZV9oYW5nY2hlY2spCj4gICAJCXJldHVybjsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gaW5kZXggZGMwZGVmMjEwMDk3Li4yMGIyZTQwMzk3OTIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gQEAgLTQ2Miw3ICs0NjIsNyBAQCBU UkFDRV9FVkVOVChpOTE1X2dlbV9yaW5nX3N5bmNfdG8sCj4gICAJCQkgICAgICksCj4KPiAgIAkg ICAgVFBfZmFzdF9hc3NpZ24oCj4gLQkJCSAgIF9fZW50cnktPmRldiA9IGZyb20tPmRldi0+cHJp bWFyeS0+aW5kZXg7Cj4gKwkJCSAgIF9fZW50cnktPmRldiA9IGZyb20tPmk5MTUtPmRldi0+cHJp bWFyeS0+aW5kZXg7Cj4gICAJCQkgICBfX2VudHJ5LT5zeW5jX2Zyb20gPSBmcm9tLT5pZDsKPiAg IAkJCSAgIF9fZW50cnktPnN5bmNfdG8gPSB0b19yZXEtPmVuZ2luZS0+aWQ7Cj4gICAJCQkgICBf X2VudHJ5LT5zZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSk7Cj4gQEAgLTQ4 NiwxMyArNDg2LDExIEBAIFRSQUNFX0VWRU5UKGk5MTVfZ2VtX3JpbmdfZGlzcGF0Y2gsCj4gICAJ CQkgICAgICksCj4KPiAgIAkgICAgVFBfZmFzdF9hc3NpZ24oCj4gLQkJCSAgIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9Cj4gLQkJCQkJCWk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2lu ZShyZXEpOwo+IC0JCQkgICBfX2VudHJ5LT5kZXYgPSBlbmdpbmUtPmRldi0+cHJpbWFyeS0+aW5k ZXg7Cj4gLQkJCSAgIF9fZW50cnktPnJpbmcgPSBlbmdpbmUtPmlkOwo+IC0JCQkgICBfX2VudHJ5 LT5zZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSk7Cj4gKwkJCSAgIF9fZW50 cnktPmRldiA9IHJlcS0+aTkxNS0+ZGV2LT5wcmltYXJ5LT5pbmRleDsKPiArCQkJICAgX19lbnRy eS0+cmluZyA9IHJlcS0+ZW5naW5lLT5pZDsKPiArCQkJICAgX19lbnRyeS0+c2Vxbm8gPSByZXEt PnNlcW5vOwo+ICAgCQkJICAgX19lbnRyeS0+ZmxhZ3MgPSBmbGFnczsKPiAtCQkJICAgaTkxNV90 cmFjZV9pcnFfZ2V0KGVuZ2luZSwgcmVxKTsKPiArCQkJICAgaTkxNV90cmFjZV9pcnFfZ2V0KHJl cS0+ZW5naW5lLCByZXEpOwo+ICAgCQkJICAgKSwKPgo+ICAgCSAgICBUUF9wcmludGsoImRldj0l dSwgcmluZz0ldSwgc2Vxbm89JXUsIGZsYWdzPSV4IiwKPiBAQCAtNTExLDcgKzUwOSw3IEBAIFRS QUNFX0VWRU5UKGk5MTVfZ2VtX3JpbmdfZmx1c2gsCj4gICAJCQkgICAgICksCj4KPiAgIAkgICAg VFBfZmFzdF9hc3NpZ24oCj4gLQkJCSAgIF9fZW50cnktPmRldiA9IHJlcS0+ZW5naW5lLT5kZXYt PnByaW1hcnktPmluZGV4Owo+ICsJCQkgICBfX2VudHJ5LT5kZXYgPSByZXEtPmk5MTUtPmRldi0+ cHJpbWFyeS0+aW5kZXg7Cj4gICAJCQkgICBfX2VudHJ5LT5yaW5nID0gcmVxLT5lbmdpbmUtPmlk Owo+ICAgCQkJICAgX19lbnRyeS0+aW52YWxpZGF0ZSA9IGludmFsaWRhdGU7Cj4gICAJCQkgICBf X2VudHJ5LT5mbHVzaCA9IGZsdXNoOwo+IEBAIC01MzMsMTEgKzUzMSw5IEBAIERFQ0xBUkVfRVZF TlRfQ0xBU1MoaTkxNV9nZW1fcmVxdWVzdCwKPiAgIAkJCSAgICAgKSwKPgo+ICAgCSAgICBUUF9m YXN0X2Fzc2lnbigKPiAtCQkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0KPiAt CQkJCQkJaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5naW5lKHJlcSk7Cj4gLQkJCSAgIF9fZW50cnkt PmRldiA9IGVuZ2luZS0+ZGV2LT5wcmltYXJ5LT5pbmRleDsKPiAtCQkJICAgX19lbnRyeS0+cmlu ZyA9IGVuZ2luZS0+aWQ7Cj4gLQkJCSAgIF9fZW50cnktPnNlcW5vID0gaTkxNV9nZW1fcmVxdWVz dF9nZXRfc2Vxbm8ocmVxKTsKPiArCQkJICAgX19lbnRyeS0+ZGV2ID0gcmVxLT5pOTE1LT5kZXYt PnByaW1hcnktPmluZGV4Owo+ICsJCQkgICBfX2VudHJ5LT5yaW5nID0gcmVxLT5lbmdpbmUtPmlk Owo+ICsJCQkgICBfX2VudHJ5LT5zZXFubyA9IHJlcS0+c2Vxbm87Cj4gICAJCQkgICApLAo+Cj4g ICAJICAgIFRQX3ByaW50aygiZGV2PSV1LCByaW5nPSV1LCBzZXFubz0ldSIsCj4gQEAgLTU2MCw3 ICs1NTYsNyBAQCBUUkFDRV9FVkVOVChpOTE1X2dlbV9yZXF1ZXN0X25vdGlmeSwKPiAgIAkJCSAg ICAgKSwKPgo+ICAgCSAgICBUUF9mYXN0X2Fzc2lnbigKPiAtCQkJICAgX19lbnRyeS0+ZGV2ID0g ZW5naW5lLT5kZXYtPnByaW1hcnktPmluZGV4Owo+ICsJCQkgICBfX2VudHJ5LT5kZXYgPSBlbmdp bmUtPmk5MTUtPmRldi0+cHJpbWFyeS0+aW5kZXg7Cj4gICAJCQkgICBfX2VudHJ5LT5yaW5nID0g ZW5naW5lLT5pZDsKPiAgIAkJCSAgIF9fZW50cnktPnNlcW5vID0gZW5naW5lLT5nZXRfc2Vxbm8o ZW5naW5lKTsKPiAgIAkJCSAgICksCj4gQEAgLTU5NywxMyArNTkzLDExIEBAIFRSQUNFX0VWRU5U KGk5MTVfZ2VtX3JlcXVlc3Rfd2FpdF9iZWdpbiwKPiAgIAkgICAgICogbGVzcyBkZXNpcmFibGUu Cj4gICAJICAgICAqLwo+ICAgCSAgICBUUF9mYXN0X2Fzc2lnbigKPiAtCQkJICAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0KPiAtCQkJCQkJaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5n aW5lKHJlcSk7Cj4gLQkJCSAgIF9fZW50cnktPmRldiA9IGVuZ2luZS0+ZGV2LT5wcmltYXJ5LT5p bmRleDsKPiAtCQkJICAgX19lbnRyeS0+cmluZyA9IGVuZ2luZS0+aWQ7Cj4gLQkJCSAgIF9fZW50 cnktPnNlcW5vID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKTsKPiArCQkJICAgX19l bnRyeS0+ZGV2ID0gcmVxLT5pOTE1LT5kZXYtPnByaW1hcnktPmluZGV4Owo+ICsJCQkgICBfX2Vu dHJ5LT5yaW5nID0gcmVxLT5lbmdpbmUtPmlkOwo+ICsJCQkgICBfX2VudHJ5LT5zZXFubyA9IHJl cS0+c2Vxbm87Cj4gICAJCQkgICBfX2VudHJ5LT5ibG9ja2luZyA9Cj4gLQkJCQkgICAgIG11dGV4 X2lzX2xvY2tlZCgmZW5naW5lLT5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwkJCQkgICAgIG11dGV4 X2lzX2xvY2tlZCgmcmVxLT5pOTE1LT5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJCQkgICApLAo+ Cj4gICAJICAgIFRQX3ByaW50aygiZGV2PSV1LCByaW5nPSV1LCBzZXFubz0ldSwgYmxvY2tpbmc9 JXMiLAo+IEBAIC03OTIsNyArNzg2LDcgQEAgVFJBQ0VfRVZFTlQoc3dpdGNoX21tLAo+ICAgCQkJ X19lbnRyeS0+cmluZyA9IGVuZ2luZS0+aWQ7Cj4gICAJCQlfX2VudHJ5LT50byA9IHRvOwo+ICAg CQkJX19lbnRyeS0+dm0gPSB0by0+cHBndHQ/ICZ0by0+cHBndHQtPmJhc2UgOiBOVUxMOwo+IC0J CQlfX2VudHJ5LT5kZXYgPSBlbmdpbmUtPmRldi0+cHJpbWFyeS0+aW5kZXg7Cj4gKwkJCV9fZW50 cnktPmRldiA9IGVuZ2luZS0+aTkxNS0+ZGV2LT5wcmltYXJ5LT5pbmRleDsKPiAgIAkpLAo+Cj4g ICAJVFBfcHJpbnRrKCJkZXY9JXUsIHJpbmc9JXUsIGN0eD0lcCwgY3R4X3ZtPSVwIiwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNDVjMjE4ZGI4NmJlLi42ZTJlMmI5 OGQzMjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTMxNDQs NDEgKzMxNDQsMzkgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX3ByaW1hcnlfcGxhbmVzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJfQo+ICAgfQo+Cj4gLXZvaWQgaW50ZWxfcHJlcGFy ZV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt2b2lkIGludGVsX3ByZXBhcmVfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAgCS8qIG5vIHJl c2V0IHN1cHBvcnQgZm9yIGdlbjIgKi8KPiAtCWlmIChJU19HRU4yKGRldikpCj4gKwlpZiAoSVNf R0VOMihkZXZfcHJpdikpCj4gICAJCXJldHVybjsKPgo+ICAgCS8qIHJlc2V0IGRvZXNuJ3QgdG91 Y2ggdGhlIGRpc3BsYXkgKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1IHx8IElT X0c0WChkZXYpKQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSB8fCBJU19HNFgoZGV2 X3ByaXYpKQo+ICAgCQlyZXR1cm47Cj4KPiAtCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7Cj4g Kwlkcm1fbW9kZXNldF9sb2NrX2FsbChkZXZfcHJpdi0+ZGV2KTsKPiAgIAkvKgo+ICAgCSAqIERp c2FibGluZyB0aGUgY3J0Y3MgZ3JhY2VmdWxseSBzZWVtcyBuaWNlci4gQWxzbyB0aGUKPiAgIAkg KiBnMzMgZG9jcyBzYXkgd2Ugc2hvdWxkIGF0IGxlYXN0IGRpc2FibGUgYWxsIHRoZSBwbGFuZXMu Cj4gICAJICovCj4gLQlpbnRlbF9kaXNwbGF5X3N1c3BlbmQoZGV2KTsKPiArCWludGVsX2Rpc3Bs YXlfc3VzcGVuZChkZXZfcHJpdi0+ZGV2KTsKPiAgIH0KPgo+IC12b2lkIGludGVsX2ZpbmlzaF9y ZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt2b2lkIGludGVsX2ZpbmlzaF9yZXNldChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQo+ICAgCS8qCj4gICAJICog RmxpcHMgaW4gdGhlIHJpbmdzIHdpbGwgYmUgbnVrZWQgYnkgdGhlIHJlc2V0LAo+ICAgCSAqIHNv IGNvbXBsZXRlIGFsbCBwZW5kaW5nIGZsaXBzIHNvIHRoYXQgdXNlciBzcGFjZQo+ICAgCSAqIHdp bGwgZ2V0IGl0cyBldmVudHMgYW5kIG5vdCBnZXQgc3R1Y2suCj4gICAJICovCj4gLQlpbnRlbF9j b21wbGV0ZV9wYWdlX2ZsaXBzKGRldik7Cj4gKwlpbnRlbF9jb21wbGV0ZV9wYWdlX2ZsaXBzKGRl dl9wcml2LT5kZXYpOwo+Cj4gICAJLyogbm8gcmVzZXQgc3VwcG9ydCBmb3IgZ2VuMiAqLwo+IC0J aWYgKElTX0dFTjIoZGV2KSkKPiArCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiAgIAkJcmV0dXJu Owo+Cj4gICAJLyogcmVzZXQgZG9lc24ndCB0b3VjaCB0aGUgZGlzcGxheSAqLwo+IC0JaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRldikpIHsKPiArCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDUgfHwgSVNfRzRYKGRldl9wcml2KSkgewo+ICAgCQkvKgo+ICAgCQkg KiBGbGlwcyBpbiB0aGUgcmluZ3MgaGF2ZSBiZWVuIG51a2VkIGJ5IHRoZSByZXNldCwKPiAgIAkJ ICogc28gdXBkYXRlIHRoZSBiYXNlIGFkZHJlc3Mgb2YgYWxsIHByaW1hcnkKPiBAQCAtMzE4OCw3 ICszMTg2LDcgQEAgdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgIAkJICogRklYTUU6IEF0b21pYyB3aWxsIG1ha2UgdGhpcyBvYnNvbGV0ZSBzaW5jZSB3 ZSB3b24ndCBzY2hlZHVsZQo+ICAgCQkgKiBDUy1iYXNlZCBmbGlwcyAod2hpY2ggbWlnaHQgZ2V0 IGxvc3QgaW4gZ3B1IHJlc2V0cykgYW55IG1vcmUuCj4gICAJCSAqLwo+IC0JCWludGVsX3VwZGF0 ZV9wcmltYXJ5X3BsYW5lcyhkZXYpOwo+ICsJCWludGVsX3VwZGF0ZV9wcmltYXJ5X3BsYW5lcyhk ZXZfcHJpdi0+ZGV2KTsKPiAgIAkJcmV0dXJuOwo+ICAgCX0KPgo+IEBAIC0zMTk5LDE4ICszMTk3 LDE4IEBAIHZvaWQgaW50ZWxfZmluaXNoX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g ICAJaW50ZWxfcnVudGltZV9wbV9kaXNhYmxlX2ludGVycnVwdHMoZGV2X3ByaXYpOwo+ICAgCWlu dGVsX3J1bnRpbWVfcG1fZW5hYmxlX2ludGVycnVwdHMoZGV2X3ByaXYpOwo+Cj4gLQlpbnRlbF9t b2Rlc2V0X2luaXRfaHcoZGV2KTsKPiArCWludGVsX21vZGVzZXRfaW5pdF9odyhkZXZfcHJpdi0+ ZGV2KTsKPgo+ICAgCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gICAJaWYg KGRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXApCj4gLQkJZGV2X3ByaXYtPmRpc3BsYXku aHBkX2lycV9zZXR1cChkZXYpOwo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAo ZGV2X3ByaXYtPmRldik7Cj4gICAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2sp Owo+Cj4gLQlpbnRlbF9kaXNwbGF5X3Jlc3VtZShkZXYpOwo+ICsJaW50ZWxfZGlzcGxheV9yZXN1 bWUoZGV2X3ByaXYtPmRldik7Cj4KPiAgIAlpbnRlbF9ocGRfaW5pdChkZXZfcHJpdik7Cj4KPiAt CWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKPiArCWRybV9tb2Rlc2V0X3VubG9ja19hbGwo ZGV2X3ByaXYtPmRldik7Cj4gICB9Cj4KPiAgIHN0YXRpYyBib29sIGludGVsX2NydGNfaGFzX3Bl bmRpbmdfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gQEAgLTExMjU2LDcgKzExMjU0LDcg QEAgc3RhdGljIGJvb2wgdXNlX21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCj4gICAJaWYgKGVuZ2luZSA9PSBOVUxMKQo+ICAgCQlyZXR1cm4gdHJ1ZTsKPgo+IC0JaWYg KElOVEVMX0lORk8oZW5naW5lLT5kZXYpLT5nZW4gPCA1KQo+ICsJaWYgKElOVEVMX0dFTihlbmdp bmUtPmk5MTUpIDwgNSkKPiAgIAkJcmV0dXJuIGZhbHNlOwo+Cj4gICAJaWYgKGk5MTUudXNlX21t aW9fZmxpcCA8IDApCj4gQEAgLTE2MTg1LDkgKzE2MTgzLDggQEAgc3RydWN0IGludGVsX2Rpc3Bs YXlfZXJyb3Jfc3RhdGUgewo+ICAgfTsKPgo+ICAgc3RydWN0IGludGVsX2Rpc3BsYXlfZXJyb3Jf c3RhdGUgKgo+IC1pbnRlbF9kaXNwbGF5X2NhcHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAraW50ZWxfZGlzcGxheV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGludGVsX2Rpc3Bs YXlfZXJyb3Jfc3RhdGUgKmVycm9yOwo+ICAgCWludCB0cmFuc2NvZGVyc1tdID0gewo+ICAgCQlU UkFOU0NPREVSX0EsCj4gQEAgLTE2MTk3LDE0ICsxNjE5NCwxNCBAQCBpbnRlbF9kaXNwbGF5X2Nh cHR1cmVfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAl9Owo+ICAgCWlu dCBpOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5udW1fcGlwZXMgPT0gMCkKPiArCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVzID09IDApCj4gICAJCXJldHVybiBOVUxMOwo+ Cj4gICAJZXJyb3IgPSBremFsbG9jKHNpemVvZigqZXJyb3IpLCBHRlBfQVRPTUlDKTsKPiAgIAlp ZiAoZXJyb3IgPT0gTlVMTCkKPiAgIAkJcmV0dXJuIE5VTEw7Cj4KPiAtCWlmIChJU19IQVNXRUxM KGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCj4gKwlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikg fHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiAgIAkJZXJyb3ItPnBvd2VyX3dlbGxfZHJpdmVy ID0gSTkxNV9SRUFEKEhTV19QV1JfV0VMTF9EUklWRVIpOwo+Cj4gICAJZm9yX2VhY2hfcGlwZShk ZXZfcHJpdiwgaSkgewo+IEBAIC0xNjIyMCwyNSArMTYyMTcsMjUgQEAgaW50ZWxfZGlzcGxheV9j YXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4KPiAgIAkJZXJyb3It PnBsYW5lW2ldLmNvbnRyb2wgPSBJOTE1X1JFQUQoRFNQQ05UUihpKSk7Cj4gICAJCWVycm9yLT5w bGFuZVtpXS5zdHJpZGUgPSBJOTE1X1JFQUQoRFNQU1RSSURFKGkpKTsKPiAtCQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPD0gMykgewo+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDMp IHsKPiAgIAkJCWVycm9yLT5wbGFuZVtpXS5zaXplID0gSTkxNV9SRUFEKERTUFNJWkUoaSkpOwo+ ICAgCQkJZXJyb3ItPnBsYW5lW2ldLnBvcyA9IEk5MTVfUkVBRChEU1BQT1MoaSkpOwo+ICAgCQl9 Cj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDcgJiYgIUlTX0hBU1dFTEwoZGV2KSkK PiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA3ICYmICFJU19IQVNXRUxMKGRldl9wcml2 KSkKPiAgIAkJCWVycm9yLT5wbGFuZVtpXS5hZGRyID0gSTkxNV9SRUFEKERTUEFERFIoaSkpOwo+ IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7Cj4gKwkJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNCkgewo+ICAgCQkJZXJyb3ItPnBsYW5lW2ldLnN1cmZhY2UgPSBJOTE1X1JF QUQoRFNQU1VSRihpKSk7Cj4gICAJCQllcnJvci0+cGxhbmVbaV0udGlsZV9vZmZzZXQgPSBJOTE1 X1JFQUQoRFNQVElMRU9GRihpKSk7Cj4gICAJCX0KPgo+ICAgCQllcnJvci0+cGlwZVtpXS5zb3Vy Y2UgPSBJOTE1X1JFQUQoUElQRVNSQyhpKSk7Cj4KPiAtCQlpZiAoSEFTX0dNQ0hfRElTUExBWShk ZXYpKQo+ICsJCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2KSkKPiAgIAkJCWVycm9yLT5w aXBlW2ldLnN0YXQgPSBJOTE1X1JFQUQoUElQRVNUQVQoaSkpOwo+ICAgCX0KPgo+ICAgCS8qIE5v dGU6IHRoaXMgZG9lcyBub3QgaW5jbHVkZSBEU0kgdHJhbnNjb2RlcnMuICovCj4gLQllcnJvci0+ bnVtX3RyYW5zY29kZXJzID0gSU5URUxfSU5GTyhkZXYpLT5udW1fcGlwZXM7Cj4gKwllcnJvci0+ bnVtX3RyYW5zY29kZXJzID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBlczsKPiAgIAlp ZiAoSEFTX0RESShkZXZfcHJpdikpCj4gICAJCWVycm9yLT5udW1fdHJhbnNjb2RlcnMrKzsgLyog QWNjb3VudCBmb3IgZURQLiAqLwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA1 MTA1ODUyMjc0MWEuLjY2ZGU2MTY2OTg4NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gQEAgLTEyMjYsOCArMTIyNiw4IEBAIHUzMiBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KGlu dCAqeCwgaW50ICp5LAo+ICAgCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIsIGludCBwbGFuZSwKPiAgIAkJCSAgICAgIHVuc2lnbmVkIGludCBwaXRjaCwKPiAgIAkJCSAg ICAgIHVuc2lnbmVkIGludCByb3RhdGlvbik7Cj4gLXZvaWQgaW50ZWxfcHJlcGFyZV9yZXNldChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAtdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Cj4gK3ZvaWQgaW50ZWxfcHJlcGFyZV9yZXNldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIGludGVsX2ZpbmlzaF9yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgdm9pZCBoc3dfZW5hYmxlX3BjOChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgdm9pZCBoc3dfZGlzYWJsZV9w Yzgoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgIHZvaWQgYnJveHRvbl9p bml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZmJjLmMKPiBpbmRleCBkNWE3Y2ZlYzU4OWIuLjRhNTI3ZDNjZjAyNiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gQEAgLTgyNyw3ICs4MjcsNyBAQCBzdGF0aWMgYm9v bCBpbnRlbF9mYmNfY2FuX2Nob29zZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgIAlib29s IGVuYWJsZV9ieV9kZWZhdWx0ID0gSVNfSEFTV0VMTChkZXZfcHJpdikgfHwKPiAgIAkJCQkgSVNf QlJPQURXRUxMKGRldl9wcml2KTsKPgo+IC0JaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2 LT5kZXYpKSB7Cj4gKwlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpKSB7Cj4gICAJCWZi Yy0+bm9fZmJjX3JlYXNvbiA9ICJWR1BVIGlzIGFjdGl2ZSI7Cj4gICAJCXJldHVybiBmYWxzZTsK PiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA4MTA2MzE2Y2U1NmYuLjYy YmVhMjAyODNkZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTI0NiwyMSAr MjQ2LDIyIEBAIHN0YXRpYyBpbnQgaW50ZWxfbHJfY29udGV4dF9waW4oc3RydWN0IGludGVsX2Nv bnRleHQgKmN0eCwKPiAgICAqCj4gICAgKiBSZXR1cm46IDEgaWYgRXhlY2xpc3RzIGlzIHN1cHBv cnRlZCBhbmQgaGFzIHRvIGJlIGVuYWJsZWQuCj4gICAgKi8KPiAtaW50IGludGVsX3Nhbml0aXpl X2VuYWJsZV9leGVjbGlzdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGVuYWJsZV9leGVj bGlzdHMpCj4gK2ludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xpc3RzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGVuYWJsZV9leGVjbGlzdHMpCj4gICB7Cj4gICAJ LyogT24gcGxhdGZvcm1zIHdpdGggZXhlY2xpc3QgYXZhaWxhYmxlLCB2R1BVIHdpbGwgb25seQo+ ICAgCSAqIHN1cHBvcnQgZXhlY2xpc3QgbW9kZSwgbm8gcmluZyBidWZmZXIgbW9kZS4KPiAgIAkg Ki8KPiAtCWlmIChIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRldikgJiYgaW50ZWxfdmdwdV9h Y3RpdmUoZGV2KSkKPiArCWlmIChIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRldl9wcml2KSAm JiBpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpCj4gICAJCXJldHVybiAxOwo+Cj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpCj4gICAJCXJldHVybiAxOwo+Cj4gICAJaWYgKGVuYWJsZV9leGVjbGlzdHMgPT0gMCkKPiAg IAkJcmV0dXJuIDA7Cj4KPiAtCWlmIChIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRldikgJiYg VVNFU19QUEdUVChkZXYpICYmCj4gKwlpZiAoSEFTX0xPR0lDQUxfUklOR19DT05URVhUUyhkZXZf cHJpdikgJiYKPiArCSAgICBVU0VTX1BQR1RUKGRldl9wcml2KSAmJgo+ICAgCSAgICBpOTE1LnVz ZV9tbWlvX2ZsaXAgPj0gMCkKPiAgIAkJcmV0dXJuIDE7Cj4KPiBAQCAtMjcwLDE5ICsyNzEsMTkg QEAgaW50IGludGVsX3Nhbml0aXplX2VuYWJsZV9leGVjbGlzdHMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IGVuYWJsZV9leGVjbGlzdHMKPiAgIHN0YXRpYyB2b2lkCj4gICBsb2dpY2FsX3Jp bmdfaW5pdF9wbGF0Zm9ybV9pbnZhcmlhbnRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPgo+IC0JaWYg KElTX0dFTjgoZGV2KSB8fCBJU19HRU45KGRldikpCj4gKwlpZiAoSVNfR0VOOChkZXZfcHJpdikg fHwgSVNfR0VOOShkZXZfcHJpdikpCj4gICAJCWVuZ2luZS0+aWRsZV9saXRlX3Jlc3RvcmVfd2Eg PSB+MDsKPgo+IC0JZW5naW5lLT5kaXNhYmxlX2xpdGVfcmVzdG9yZV93YSA9IChJU19TS0xfUkVW SUQoZGV2LCAwLCBTS0xfUkVWSURfQjApIHx8Cj4gLQkJCQkJSVNfQlhUX1JFVklEKGRldiwgMCwg QlhUX1JFVklEX0ExKSkgJiYKPiArCWVuZ2luZS0+ZGlzYWJsZV9saXRlX3Jlc3RvcmVfd2EgPSAo SVNfU0tMX1JFVklEKGRldl9wcml2LCAwLCBTS0xfUkVWSURfQjApIHx8Cj4gKwkJCQkJSVNfQlhU X1JFVklEKGRldl9wcml2LCAwLCBCWFRfUkVWSURfQTEpKSAmJgo+ICAgCQkJCQkoZW5naW5lLT5p ZCA9PSBWQ1MgfHwgZW5naW5lLT5pZCA9PSBWQ1MyKTsKPgo+ICAgCWVuZ2luZS0+Y3R4X2Rlc2Nf dGVtcGxhdGUgPSBHRU44X0NUWF9WQUxJRDsKPiAtCWVuZ2luZS0+Y3R4X2Rlc2NfdGVtcGxhdGUg fD0gR0VOOF9DVFhfQUREUkVTU0lOR19NT0RFKGRldikgPDwKPiArCWVuZ2luZS0+Y3R4X2Rlc2Nf dGVtcGxhdGUgfD0gR0VOOF9DVFhfQUREUkVTU0lOR19NT0RFKGRldl9wcml2KSA8PAo+ICAgCQkJ CSAgIEdFTjhfQ1RYX0FERFJFU1NJTkdfTU9ERV9TSElGVDsKPiAtCWlmIChJU19HRU44KGRldikp Cj4gKwlpZiAoSVNfR0VOOChkZXZfcHJpdikpCj4gICAJCWVuZ2luZS0+Y3R4X2Rlc2NfdGVtcGxh dGUgfD0gR0VOOF9DVFhfTDNMTENfQ09IRVJFTlQ7Cj4gICAJZW5naW5lLT5jdHhfZGVzY190ZW1w bGF0ZSB8PSBHRU44X0NUWF9QUklWSUxFR0U7Cj4KPiBAQCAtMzQyLDggKzM0Myw3IEBAIHN0YXRp YyB2b2lkIGV4ZWNsaXN0c19lbHNwX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cnEwLAo+ICAgewo+Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcnEwLT5l bmdpbmU7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcnEwLT5pOTE1Owo+ICAgCXVpbnQ2NF90 IGRlc2NbMl07Cj4KPiAgIAlpZiAocnExKSB7Cj4gQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMg dm9pZCBleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIAkgKiBJZiBpcnFzIGFyZSBub3QgYWN0aXZlIGdlbmVyYXRlIGEgd2FybmluZyBh cyBiYXRjaGVzIHRoYXQgZmluaXNoCj4gICAJICogd2l0aG91dCB0aGUgaXJxcyBtYXkgZ2V0IGxv c3QgYW5kIGEgR1BVIEhhbmcgbWF5IG9jY3VyLgo+ICAgCSAqLwo+IC0JV0FSTl9PTighaW50ZWxf aXJxc19lbmFibGVkKGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZSkpOwo+ICsJV0FSTl9PTighaW50 ZWxfaXJxc19lbmFibGVkKGVuZ2luZS0+aTkxNSkpOwo+Cj4gICAJLyogVHJ5IHRvIHJlYWQgaW4g cGFpcnMgKi8KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3Vyc29yLCB0bXAsICZlbmdp bmUtPmV4ZWNsaXN0X3F1ZXVlLAo+IEBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIHUzMgo+ICAg Z2V0X2NvbnRleHRfc3RhdHVzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdW5zaWdu ZWQgaW50IHJlYWRfcG9pbnRlciwKPiAgIAkJICAgdTMyICpjb250ZXh0X2lkKQo+ICAgewo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2 YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1 Owo+ICAgCXUzMiBzdGF0dXM7Cj4KPiAgIAlyZWFkX3BvaW50ZXIgJT0gR0VOOF9DU0JfRU5UUklF UzsKPiBAQCAtNTIzLDcgKzUyMyw3IEBAIGdldF9jb250ZXh0X3N0YXR1cyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsIHVuc2lnbmVkIGludCByZWFkX3BvaW50ZXIsCj4gICBzdGF0aWMg dm9pZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIodW5zaWduZWQgbG9uZyBkYXRhKQo+ICAgewo+ICAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICopZGF0YTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGVuZ2luZS0+aTkxNTsKPiAgIAl1MzIgc3RhdHVzX3BvaW50ZXI7Cj4gICAJdW5zaWduZWQgaW50 IHJlYWRfcG9pbnRlciwgd3JpdGVfcG9pbnRlcjsKPiAgIAl1MzIgY3NiW0dFTjhfQ1NCX0VOVFJJ RVNdWzJdOwo+IEBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBpbnRlbF9leGVjbGlzdHNfY2FuY2Vs X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgKnRtcDsKPiAgIAlMSVNUX0hFQUQoY2FuY2VsX2xpc3Qp Owo+Cj4gLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmVuZ2luZS0+ZGV2LT5zdHJ1Y3RfbXV0 ZXgpKTsKPiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZW5naW5lLT5pOTE1LT5kZXYtPnN0 cnVjdF9tdXRleCkpOwo+Cj4gICAJc3Bpbl9sb2NrX2JoKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2sp Owo+ICAgCWxpc3RfcmVwbGFjZV9pbml0KCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLCAmY2FuY2Vs X2xpc3QpOwo+IEBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBpbnRlbF9leGVjbGlzdHNfY2FuY2Vs X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ICAgdm9pZCBpbnRl bF9sb2dpY2FsX3Jpbmdfc3RvcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7 Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2 X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUt Pmk5MTU7Cj4gICAJaW50IHJldDsKPgo+ICAgCWlmICghaW50ZWxfZW5naW5lX2luaXRpYWxpemVk KGVuZ2luZSkpCj4gQEAgLTk2NCw3ICs5NjQsNyBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRl eHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gICAJbHJjX3JlZ19zdGF0ZSA9IHZh ZGRyICsgTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFOwo+Cj4gICAJcmluZ2J1ZiA9IGN0eC0+ZW5n aW5lW2VuZ2luZS0+aWRdLnJpbmdidWY7Cj4gLQlyZXQgPSBpbnRlbF9waW5fYW5kX21hcF9yaW5n YnVmZmVyX29iaihlbmdpbmUtPmRldiwgcmluZ2J1Zik7Cj4gKwlyZXQgPSBpbnRlbF9waW5fYW5k X21hcF9yaW5nYnVmZmVyX29iaihkZXZfcHJpdiwgcmluZ2J1Zik7Cj4gICAJaWYgKHJldCkKPiAg IAkJZ290byB1bnBpbl9tYXA7Cj4KPiBAQCAtMTAxOSw5ICsxMDE5LDcgQEAgc3RhdGljIGludCBp bnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKPiAgIAlpbnQgcmV0LCBpOwo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmID0gcmVxLT5yaW5nYnVmOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiAtCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJmRldl9wcml2LT53b3JrYXJv dW5kczsKPiArCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJnJlcS0+aTkxNS0+d29ya2Fy b3VuZHM7Cj4KPiAgIAlpZiAody0+Y291bnQgPT0gMCkKPiAgIAkJcmV0dXJuIDA7Cj4gQEAgLTEw OTIsNyArMTA5MCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdlbjhfZW1pdF9mbHVzaF9jb2hlcmVu dGwzX3dhKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkgKiB0aGlzIGJhdGNo IHVwZGF0ZXMgR0VOOF9MM1NRQ1JFRzQgd2l0aCBkZWZhdWx0IHZhbHVlIHdlIG5lZWQgdG8KPiAg IAkgKiBzZXQgdGhpcyBiaXQgaGVyZSB0byByZXRhaW4gdGhlIFdBIGR1cmluZyBmbHVzaC4KPiAg IAkgKi8KPiAtCWlmIChJU19TS0xfUkVWSUQoZW5naW5lLT5kZXYsIDAsIFNLTF9SRVZJRF9FMCkp Cj4gKwlpZiAoSVNfU0tMX1JFVklEKGVuZ2luZS0+aTkxNSwgMCwgU0tMX1JFVklEX0UwKSkKPiAg IAkJbDNzcWM0X2ZsdXNoIHw9IEdFTjhfTFFTQ19ST19QRVJGX0RJUzsKPgo+ICAgCXdhX2N0eF9l bWl0KGJhdGNoLCBpbmRleCwgKE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44IHwKPiBAQCAtMTE4 MSw3ICsxMTc5LDcgQEAgc3RhdGljIGludCBnZW44X2luaXRfaW5kaXJlY3RjdHhfYmIoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwg TUlfQVJCX09OX09GRiB8IE1JX0FSQl9ESVNBQkxFKTsKPgo+ICAgCS8qIFdhRmx1c2hDb2hlcmVu dEwzQ2FjaGVMaW5lc0F0Q29udGV4dFN3aXRjaDpiZHcgKi8KPiAtCWlmIChJU19CUk9BRFdFTEwo ZW5naW5lLT5kZXYpKSB7Cj4gKwlpZiAoSVNfQlJPQURXRUxMKGVuZ2luZS0+aTkxNSkpIHsKPiAg IAkJaW50IHJjID0gZ2VuOF9lbWl0X2ZsdXNoX2NvaGVyZW50bDNfd2EoZW5naW5lLCBiYXRjaCwg aW5kZXgpOwo+ICAgCQlpZiAocmMgPCAwKQo+ICAgCQkJcmV0dXJuIHJjOwo+IEBAIC0xMjUzLDEy ICsxMjUxLDExIEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X2luZGlyZWN0Y3R4X2JiKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCQkgICAgdWludDMyX3QgKm9mZnNldCkKPiAg IHsKPiAgIAlpbnQgcmV0Owo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2 Owo+ICAgCXVpbnQzMl90IGluZGV4ID0gd2FfY3R4X3N0YXJ0KHdhX2N0eCwgKm9mZnNldCwgQ0FD SEVMSU5FX0RXT1JEUyk7Cj4KPiAgIAkvKiBXYURpc2FibGVDdHhSZXN0b3JlQXJiaXRyYXRpb246 c2tsLGJ4dCAqLwo+IC0JaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9EMCkgfHwK PiAtCSAgICBJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKQo+ICsJaWYgKElTX1NL TF9SRVZJRChlbmdpbmUtPmk5MTUsIDAsIFNLTF9SRVZJRF9EMCkgfHwKPiArCSAgICBJU19CWFRf UkVWSUQoZW5naW5lLT5pOTE1LCAwLCBCWFRfUkVWSURfQTEpKQo+ICAgCQl3YV9jdHhfZW1pdChi YXRjaCwgaW5kZXgsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRElTQUJMRSk7Cj4KPiAgIAkvKiBX YUZsdXNoQ29oZXJlbnRMM0NhY2hlTGluZXNBdENvbnRleHRTd2l0Y2g6c2tsLGJ4dCAqLwo+IEBA IC0xMjc5LDEyICsxMjc2LDExIEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3BlcmN0eF9iYihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCQkgICAgICAgdWludDMyX3QgKmNvbnN0 IGJhdGNoLAo+ICAgCQkJICAgICAgIHVpbnQzMl90ICpvZmZzZXQpCj4gICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gICAJdWludDMyX3QgaW5kZXggPSB3YV9j dHhfc3RhcnQod2FfY3R4LCAqb2Zmc2V0LCBDQUNIRUxJTkVfRFdPUkRTKTsKPgo+ICAgCS8qIFdh U2V0RGlzYWJsZVBpeE1hc2tDYW1taW5nQW5kUmh3b0luQ29tbW9uU2xpY2VDaGlja2VuOnNrbCxi eHQgKi8KPiAtCWlmIChJU19TS0xfUkVWSUQoZGV2LCAwLCBTS0xfUkVWSURfQjApIHx8Cj4gLQkg ICAgSVNfQlhUX1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0ExKSkgewo+ICsJaWYgKElTX1NLTF9S RVZJRChlbmdpbmUtPmk5MTUsIDAsIFNLTF9SRVZJRF9CMCkgfHwKPiArCSAgICBJU19CWFRfUkVW SUQoZW5naW5lLT5pOTE1LCAwLCBCWFRfUkVWSURfQTEpKSB7Cj4gICAJCXdhX2N0eF9lbWl0KGJh dGNoLCBpbmRleCwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwo+ICAgCQl3YV9jdHhfZW1pdF9y ZWcoYmF0Y2gsIGluZGV4LCBHRU45X1NMSUNFX0NPTU1PTl9FQ09fQ0hJQ0tFTjApOwo+ICAgCQl3 YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsCj4gQEAgLTEyOTMsNyArMTI4OSw3IEBAIHN0YXRpYyBp bnQgZ2VuOV9pbml0X3BlcmN0eF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4g ICAJfQo+Cj4gICAJLyogV2FDbGVhclRkbFN0YXRlQWNrRGlydHlCaXRzOmJ4dCAqLwo+IC0JaWYg KElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9CMCkpIHsKPiArCWlmIChJU19CWFRfUkVW SUQoZW5naW5lLT5pOTE1LCAwLCBCWFRfUkVWSURfQjApKSB7Cj4gICAJCXdhX2N0eF9lbWl0KGJh dGNoLCBpbmRleCwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oNCkpOwo+Cj4gICAJCXdhX2N0eF9lbWl0 X3JlZyhiYXRjaCwgaW5kZXgsIEdFTjhfU1RBVEVfQUNLKTsKPiBAQCAtMTMxMiw4ICsxMzA4LDgg QEAgc3RhdGljIGludCBnZW45X2luaXRfcGVyY3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSwKPiAgIAl9Cj4KPiAgIAkvKiBXYURpc2FibGVDdHhSZXN0b3JlQXJiaXRyYXRpb246 c2tsLGJ4dCAqLwo+IC0JaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9EMCkgfHwK PiAtCSAgICBJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKQo+ICsJaWYgKElTX1NL TF9SRVZJRChlbmdpbmUtPmk5MTUsIDAsIFNLTF9SRVZJRF9EMCkgfHwKPiArCSAgICBJU19CWFRf UkVWSUQoZW5naW5lLT5pOTE1LCAwLCBCWFRfUkVWSURfQTEpKQo+ICAgCQl3YV9jdHhfZW1pdChi YXRjaCwgaW5kZXgsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFKTsKPgo+ICAgCXdhX2N0 eF9lbWl0KGJhdGNoLCBpbmRleCwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7Cj4gQEAgLTEzMjUsNyAr MTMyMSw3IEBAIHN0YXRpYyBpbnQgbHJjX3NldHVwX3dhX2N0eF9vYmooc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLCB1MzIgc2l6ZSkKPiAgIHsKPiAgIAlpbnQgcmV0Owo+Cj4gLQllbmdp bmUtPndhX2N0eC5vYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlKGVuZ2luZS0+ZGV2LAo+ICsJ ZW5naW5lLT53YV9jdHgub2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShlbmdpbmUtPmk5MTUt PmRldiwKPiAgIAkJCQkJCSAgIFBBR0VfQUxJR04oc2l6ZSkpOwo+ICAgCWlmIChJU19FUlIoZW5n aW5lLT53YV9jdHgub2JqKSkgewo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJhbGxvYyBMUkMgV0Eg Y3R4IGJhY2tpbmcgb2JqIGZhaWxlZC5cbiIpOwo+IEBAIC0xMzY1LDkgKzEzNjEsOSBAQCBzdGF0 aWMgaW50IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICAJV0FSTl9PTihlbmdpbmUtPmlkICE9IFJDUyk7Cj4KPiAgIAkvKiB1cGRhdGUg dGhpcyB3aGVuIFdBIGZvciBoaWdoZXIgR2VuIGFyZSBhZGRlZCAqLwo+IC0JaWYgKElOVEVMX0lO Rk8oZW5naW5lLT5kZXYpLT5nZW4gPiA5KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkgPiA5KSB7Cj4gICAJCURSTV9FUlJPUigiV0EgYmF0Y2ggYnVmZmVyIGlzIG5vdCBpbml0aWFs aXplZCBmb3IgR2VuJWRcbiIsCj4gLQkJCSAgSU5URUxfSU5GTyhlbmdpbmUtPmRldiktPmdlbik7 Cj4gKwkJCSAgSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpOwo+ICAgCQlyZXR1cm4gMDsKPiAgIAl9 Cj4KPiBAQCAtMTM4Nyw3ICsxMzgzLDcgQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3dvcmthcm91 bmRfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWJhdGNoID0ga21hcF9h dG9taWMocGFnZSk7Cj4gICAJb2Zmc2V0ID0gMDsKPgo+IC0JaWYgKElOVEVMX0lORk8oZW5naW5l LT5kZXYpLT5nZW4gPT0gOCkgewo+ICsJaWYgKElTX0dFTjgoZW5naW5lLT5pOTE1KSkgewo+ICAg CQlyZXQgPSBnZW44X2luaXRfaW5kaXJlY3RjdHhfYmIoZW5naW5lLAo+ICAgCQkJCQkgICAgICAg JndhX2N0eC0+aW5kaXJlY3RfY3R4LAo+ICAgCQkJCQkgICAgICAgYmF0Y2gsCj4gQEAgLTE0MDEs NyArMTM5Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF93b3JrYXJvdW5kX2JiKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCQkJICAmb2Zmc2V0KTsKPiAgIAkJaWYgKHJl dCkKPiAgIAkJCWdvdG8gb3V0Owo+IC0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2 KS0+Z2VuID09IDkpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOOShlbmdpbmUtPmk5MTUpKSB7Cj4g ICAJCXJldCA9IGdlbjlfaW5pdF9pbmRpcmVjdGN0eF9iYihlbmdpbmUsCj4gICAJCQkJCSAgICAg ICAmd2FfY3R4LT5pbmRpcmVjdF9jdHgsCj4gICAJCQkJCSAgICAgICBiYXRjaCwKPiBAQCAtMTQy Nyw3ICsxNDIzLDcgQEAgb3V0Ogo+Cj4gICBzdGF0aWMgdm9pZCBscmNfaW5pdF9od3Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+Cj4gICAJSTkxNV9XUklURShS SU5HX0hXU19QR0EoZW5naW5lLT5tbWlvX2Jhc2UpLAo+ICAgCQkgICAodTMyKWVuZ2luZS0+c3Rh dHVzX3BhZ2UuZ2Z4X2FkZHIpOwo+IEBAIC0xNDM2LDggKzE0MzIsNyBAQCBzdGF0aWMgdm9pZCBs cmNfaW5pdF9od3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICBzdGF0aWMg aW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCXVuc2ln bmVkIGludCBuZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcl9odzsKPgo+ICAgCWxyY19pbml0X2h3 cyhlbmdpbmUpOwo+IEBAIC0xNDg0LDggKzE0NzksNyBAQCBzdGF0aWMgaW50IGdlbjhfaW5pdF9j b21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgIHN0YXRpYyBp bnQgZ2VuOF9pbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJaW50IHJl dDsKPgo+ICAgCXJldCA9IGdlbjhfaW5pdF9jb21tb25fcmluZyhlbmdpbmUpOwo+IEBAIC0xNTYy LDcgKzE1NTYsNyBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAlpZiAocmVxLT5jdHgtPnBwZ3R0ICYmCj4gICAJICAg IChpbnRlbF9lbmdpbmVfZmxhZyhyZXEtPmVuZ2luZSkgJiByZXEtPmN0eC0+cHBndHQtPnBkX2Rp cnR5X3JpbmdzKSkgewo+ICAgCQlpZiAoIVVTRVNfRlVMTF80OEJJVF9QUEdUVChyZXEtPmk5MTUp ICYmCj4gLQkJICAgICFpbnRlbF92Z3B1X2FjdGl2ZShyZXEtPmk5MTUtPmRldikpIHsKPiArCQkg ICAgIWludGVsX3ZncHVfYWN0aXZlKHJlcS0+aTkxNSkpIHsKPiAgIAkJCXJldCA9IGludGVsX2xv Z2ljYWxfcmluZ19lbWl0X3BkcHMocmVxKTsKPiAgIAkJCWlmIChyZXQpCj4gICAJCQkJcmV0dXJu IHJldDsKPiBAQCAtMTU5MCw4ICsxNTg0LDcgQEAgc3RhdGljIGludCBnZW44X2VtaXRfYmJfc3Rh cnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4KPiAgIHN0YXRpYyBib29sIGdl bjhfbG9naWNhbF9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAl1bnNpZ25l ZCBsb25nIGZsYWdzOwo+Cj4gICAJaWYgKFdBUk5fT04oIWludGVsX2lycXNfZW5hYmxlZChkZXZf cHJpdikpKQo+IEBAIC0xNjEwLDggKzE2MDMsNyBAQCBzdGF0aWMgYm9vbCBnZW44X2xvZ2ljYWxf cmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ICAgc3RhdGlj IHZvaWQgZ2VuOF9sb2dpY2FsX3JpbmdfcHV0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAg CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYt PmlycV9sb2NrLCBmbGFncyk7Cj4gQEAgLTE2MjgsOCArMTYyMCw3IEBAIHN0YXRpYyBpbnQgZ2Vu OF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAgIHsK PiAgIAlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcXVlc3QtPnJpbmdidWY7 Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmluZ2J1Zi0+ZW5naW5lOwo+ IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcXVlc3QtPmk5MTU7Cj4gICAJdWludDMyX3QgY21k Owo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMTY5Nyw3ICsxNjg4LDcgQEAgc3RhdGljIGludCBnZW44 X2VtaXRfZmx1c2hfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwK PiAgIAkJICogT24gR0VOOTogYmVmb3JlIFZGX0NBQ0hFX0lOVkFMSURBVEUgd2UgbmVlZCB0byBl bWl0IGEgTlVMTAo+ICAgCQkgKiBwaXBlIGNvbnRyb2wuCj4gICAJCSAqLwo+IC0JCWlmIChJU19H RU45KGVuZ2luZS0+ZGV2KSkKPiArCQlpZiAoSVNfR0VOOShyZXF1ZXN0LT5pOTE1KSkKPiAgIAkJ CXZmX2ZsdXNoX3dhID0gdHJ1ZTsKPiAgIAl9Cj4KPiBAQCAtMTg5MCw3ICsxODgxLDcgQEAgdm9p ZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gICAJaWYgKFdBUk5fT04odGVzdF9iaXQoVEFTS0xFVF9TVEFURV9TQ0hFRCwgJmVuZ2lu ZS0+aXJxX3Rhc2tsZXQuc3RhdGUpKSkKPiAgIAkJdGFza2xldF9raWxsKCZlbmdpbmUtPmlycV90 YXNrbGV0KTsKPgo+IC0JZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlk ZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPgo+ICAgCWlmIChlbmdpbmUtPmJ1ZmZlcikgewo+ICAg CQlpbnRlbF9sb2dpY2FsX3Jpbmdfc3RvcChlbmdpbmUpOwo+IEBAIC0xOTE0LDcgKzE5MDUsNyBA QCB2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgIAllbmdpbmUtPmN0eF9kZXNjX3RlbXBsYXRlID0gMDsKPgo+ICAgCWxyY19k ZXN0cm95X3dhX2N0eF9vYmooZW5naW5lKTsKPiAtCWVuZ2luZS0+ZGV2ID0gTlVMTDsKPiArCWVu Z2luZS0+aTkxNSA9IE5VTEw7Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkCj4gQEAgLTE5MjksNyAr MTkyMCw3IEBAIGxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gICAJZW5naW5lLT5lbWl0X2JiX3N0YXJ0ID0gZ2VuOF9lbWl0X2JiX3N0 YXJ0Owo+ICAgCWVuZ2luZS0+Z2V0X3NlcW5vID0gZ2VuOF9nZXRfc2Vxbm87Cj4gICAJZW5naW5l LT5zZXRfc2Vxbm8gPSBnZW44X3NldF9zZXFubzsKPiAtCWlmIChJU19CWFRfUkVWSUQoZW5naW5l LT5kZXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsKPiArCWlmIChJU19CWFRfUkVWSUQoZW5naW5lLT5p OTE1LCAwLCBCWFRfUkVWSURfQTEpKSB7Cj4gICAJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIg PSBieHRfYV9zZXFub19iYXJyaWVyOwo+ICAgCQllbmdpbmUtPnNldF9zZXFubyA9IGJ4dF9hX3Nl dF9zZXFubzsKPiAgIAl9Cj4gQEAgLTIwMjMsNyArMjAxNCw3IEBAIGxvZ2ljYWxfcmluZ19zZXR1 cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIGludGVsX2VuZ2luZV9pZCBpZCkKPiAgIAlJ OTE1X1dSSVRFX0lNUihlbmdpbmUsIH4wKTsKPiAgIAlQT1NUSU5HX1JFQUQoUklOR19JTVIoZW5n aW5lLT5tbWlvX2Jhc2UpKTsKPgo+IC0JZW5naW5lLT5kZXYgPSBkZXY7Cj4gKwllbmdpbmUtPmk5 MTUgPSBkZXZfcHJpdjsKPgo+ICAgCS8qIEludGVudGlvbmFsbHkgbGVmdCBibGFuay4gKi8KPiAg IAllbmdpbmUtPmJ1ZmZlciA9IE5VTEw7Cj4gQEAgLTIwNTYsNyArMjA0Nyw3IEBAIGxvZ2ljYWxf cmluZ19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIGludGVsX2VuZ2luZV9pZCBp ZCkKPiAgIAlsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKGVuZ2luZSwgaW5mby0+aXJxX3NoaWZ0 KTsKPgo+ICAgCWludGVsX2VuZ2luZV9pbml0X2hhbmdjaGVjayhlbmdpbmUpOwo+IC0JaTkxNV9n ZW1fYmF0Y2hfcG9vbF9pbml0KGVuZ2luZS0+ZGV2LCAmZW5naW5lLT5iYXRjaF9wb29sKTsKPiAr CWk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdChkZXYsICZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+Cj4g ICAJcmV0dXJuIGVuZ2luZTsKPiAgIH0KPiBAQCAtMjA2NCw3ICsyMDU1LDcgQEAgbG9naWNhbF9y aW5nX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gaW50ZWxfZW5naW5lX2lkIGlk KQo+ICAgc3RhdGljIGludAo+ICAgbG9naWNhbF9yaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX2NvbnRleHQgKmRjdHggPSB0b19p OTE1KGVuZ2luZS0+ZGV2KS0+a2VybmVsX2NvbnRleHQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqZGN0eCA9IGVuZ2luZS0+aTkxNS0+a2VybmVsX2NvbnRleHQ7Cj4gICAJaW50IHJldDsKPgo+ ICAgCXJldCA9IGk5MTVfY21kX3BhcnNlcl9pbml0X3JpbmcoZW5naW5lKTsKPiBAQCAtMjIyNCw3 ICsyMjE1LDcgQEAgY2xlYW51cF9yZW5kZXJfcmluZzoKPiAgIH0KPgo+ICAgc3RhdGljIHUzMgo+ IC1tYWtlX3JwY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArbWFrZV9ycGNzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAgIAl1MzIgcnBjcyA9IDA7Cj4KPiBA QCAtMjIzMiw3ICsyMjIzLDcgQEAgbWFrZV9ycGNzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g ICAJICogTm8gZXhwbGljaXQgUlBDUyByZXF1ZXN0IGlzIG5lZWRlZCB0byBlbnN1cmUgZnVsbAo+ ICAgCSAqIHNsaWNlL3N1YnNsaWNlL0VVIGVuYWJsZW1lbnQgcHJpb3IgdG8gR2VuOS4KPiAgIAkq Lwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkKPiArCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgOSkKPiAgIAkJcmV0dXJuIDA7Cj4KPiAgIAkvKgo+IEBAIC0yMjQxLDI0ICsyMjMy LDI0IEBAIG1ha2VfcnBjcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCSAqIG11c3QgbWFr ZSBhbiBleHBsaWNpdCByZXF1ZXN0IHRocm91Z2ggUlBDUyBmb3IgZnVsbAo+ICAgCSAqIGVuYWJs ZW1lbnQuCj4gICAJKi8KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmhhc19zbGljZV9wZykgewo+ ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5oYXNfc2xpY2VfcGcpIHsKPiAgIAkJcnBjcyB8 PSBHRU44X1JQQ1NfU19DTlRfRU5BQkxFOwo+IC0JCXJwY3MgfD0gSU5URUxfSU5GTyhkZXYpLT5z bGljZV90b3RhbCA8PAo+ICsJCXJwY3MgfD0gSU5URUxfSU5GTyhkZXZfcHJpdiktPnNsaWNlX3Rv dGFsIDw8Cj4gICAJCQlHRU44X1JQQ1NfU19DTlRfU0hJRlQ7Cj4gICAJCXJwY3MgfD0gR0VOOF9S UENTX0VOQUJMRTsKPiAgIAl9Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmhhc19zdWJzbGlj ZV9wZykgewo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5oYXNfc3Vic2xpY2VfcGcpIHsK PiAgIAkJcnBjcyB8PSBHRU44X1JQQ1NfU1NfQ05UX0VOQUJMRTsKPiAtCQlycGNzIHw9IElOVEVM X0lORk8oZGV2KS0+c3Vic2xpY2VfcGVyX3NsaWNlIDw8Cj4gKwkJcnBjcyB8PSBJTlRFTF9JTkZP KGRldl9wcml2KS0+c3Vic2xpY2VfcGVyX3NsaWNlIDw8Cj4gICAJCQlHRU44X1JQQ1NfU1NfQ05U X1NISUZUOwo+ICAgCQlycGNzIHw9IEdFTjhfUlBDU19FTkFCTEU7Cj4gICAJfQo+Cj4gLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5oYXNfZXVfcGcpIHsKPiAtCQlycGNzIHw9IElOVEVMX0lORk8oZGV2 KS0+ZXVfcGVyX3N1YnNsaWNlIDw8Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmhhc19l dV9wZykgewo+ICsJCXJwY3MgfD0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmV1X3Blcl9zdWJzbGlj ZSA8PAo+ICAgCQkJR0VOOF9SUENTX0VVX01JTl9TSElGVDsKPiAtCQlycGNzIHw9IElOVEVMX0lO Rk8oZGV2KS0+ZXVfcGVyX3N1YnNsaWNlIDw8Cj4gKwkJcnBjcyB8PSBJTlRFTF9JTkZPKGRldl9w cml2KS0+ZXVfcGVyX3N1YnNsaWNlIDw8Cj4gICAJCQlHRU44X1JQQ1NfRVVfTUFYX1NISUZUOwo+ ICAgCQlycGNzIHw9IEdFTjhfUlBDU19FTkFCTEU7Cj4gICAJfQo+IEBAIC0yMjcwLDkgKzIyNjEs OSBAQCBzdGF0aWMgdTMyIGludGVsX2xyX2luZGlyZWN0X2N0eF9vZmZzZXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXUzMiBpbmRpcmVjdF9jdHhfb2Zmc2V0Owo+ Cj4gLQlzd2l0Y2ggKElOVEVMX0lORk8oZW5naW5lLT5kZXYpLT5nZW4pIHsKPiArCXN3aXRjaCAo SU5URUxfR0VOKGVuZ2luZS0+aTkxNSkpIHsKPiAgIAlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdfQ0FT RShJTlRFTF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuKTsKPiArCQlNSVNTSU5HX0NBU0UoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkpOwo+ICAgCQkvKiBmYWxsIHRocm91Z2ggKi8KPiAgIAljYXNlIDk6 Cj4gICAJCWluZGlyZWN0X2N0eF9vZmZzZXQgPQo+IEBAIC0yMjkzLDggKzIyODQsNyBAQCBwb3B1 bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gICAJCSAgICBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCSAgICBzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZikKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUt PmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjdHgtPmk5MTU7 Cj4gICAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gY3R4LT5wcGd0dDsKPiAgIAl2b2lk ICp2YWRkcjsKPiAgIAl1MzIgKnJlZ19zdGF0ZTsKPiBAQCAtMjMzMiw3ICsyMzIyLDcgQEAgcG9w dWxhdGVfbHJfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+ICAgCQkgICAgICAg UklOR19DT05URVhUX0NPTlRST0woZW5naW5lKSwKPiAgIAkJICAgICAgIF9NQVNLRURfQklUX0VO QUJMRShDVFhfQ1RSTF9JTkhJQklUX1NZTl9DVFhfU1dJVENIIHwKPiAgIAkJCQkJICBDVFhfQ1RS TF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCB8Cj4gLQkJCQkJICAoSEFTX1JFU09VUkNFX1NU UkVBTUVSKGRldikgPwo+ICsJCQkJCSAgKEhBU19SRVNPVVJDRV9TVFJFQU1FUihkZXZfcHJpdikg Pwo+ICAgCQkJCQkgICAgQ1RYX0NUUkxfUlNfQ1RYX0VOQUJMRSA6IDApKSk7Cj4gICAJQVNTSUdO X0NUWF9SRUcocmVnX3N0YXRlLCBDVFhfUklOR19IRUFELCBSSU5HX0hFQUQoZW5naW5lLT5tbWlv X2Jhc2UpLAo+ICAgCQkgICAgICAgMCk7Cj4gQEAgLTI0MjEsNyArMjQxMSw3IEBAIHBvcHVsYXRl X2xyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAgIAlpZiAoZW5naW5lLT5p ZCA9PSBSQ1MpIHsKPiAgIAkJcmVnX3N0YXRlW0NUWF9MUklfSEVBREVSXzJdID0gTUlfTE9BRF9S RUdJU1RFUl9JTU0oMSk7Cj4gICAJCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1JfUFdS X0NMS19TVEFURSwgR0VOOF9SX1BXUl9DTEtfU1RBVEUsCj4gLQkJCSAgICAgICBtYWtlX3JwY3Mo ZGV2KSk7Cj4gKwkJCSAgICAgICBtYWtlX3JwY3MoZGV2X3ByaXYpKTsKPiAgIAl9Cj4KPiAgIAlp OTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGN0eF9vYmopOwo+IEBAIC0yNDcyLDExICsyNDYyLDEx IEBAIHVpbnQzMl90IGludGVsX2xyX2NvbnRleHRfc2l6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gICB7Cj4gICAJaW50IHJldCA9IDA7Cj4KPiAtCVdBUk5fT04oSU5URUxfSU5G TyhlbmdpbmUtPmRldiktPmdlbiA8IDgpOwo+ICsJV0FSTl9PTihJTlRFTF9HRU4oZW5naW5lLT5p OTE1KSA8IDgpOwo+Cj4gICAJc3dpdGNoIChlbmdpbmUtPmlkKSB7Cj4gICAJY2FzZSBSQ1M6Cj4g LQkJaWYgKElOVEVMX0lORk8oZW5naW5lLT5kZXYpLT5nZW4gPj0gOSkKPiArCQlpZiAoSU5URUxf R0VOKGVuZ2luZS0+aTkxNSkgPj0gOSkKPiAgIAkJCXJldCA9IEdFTjlfTFJfQ09OVEVYVF9SRU5E RVJfU0laRTsKPiAgIAkJZWxzZQo+ICAgCQkJcmV0ID0gR0VOOF9MUl9DT05URVhUX1JFTkRFUl9T SVpFOwo+IEBAIC0yNTA4LDcgKzI0OTgsNiBAQCB1aW50MzJfdCBpbnRlbF9scl9jb250ZXh0X3Np emUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3RhdGljIGludCBleGVjbGlz dHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+ICAg CQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpjdHhfb2JqOwo+ICAgCXVpbnQzMl90IGNvbnRleHRfc2l6ZTsKPiAgIAlzdHJ1Y3Qg aW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZjsKPiBAQCAtMjUyMiw3ICsyNTExLDcgQEAgc3RhdGlj IGludCBleGVjbGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY3R4LAo+ICAgCS8qIE9uZSBleHRyYSBwYWdlIGFzIHRoZSBzaGFyaW5nIGRhdGEgYmV0d2Vl biBkcml2ZXIgYW5kIEd1QyAqLwo+ICAgCWNvbnRleHRfc2l6ZSArPSBQQUdFX1NJWkUgKiBMUkNf UFBIV1NQX1BOOwo+Cj4gLQljdHhfb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShkZXYsIGNv bnRleHRfc2l6ZSk7Cj4gKwljdHhfb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShjdHgtPmk5 MTUtPmRldiwgY29udGV4dF9zaXplKTsKPiAgIAlpZiAoSVNfRVJSKGN0eF9vYmopKSB7Cj4gICAJ CURSTV9ERUJVR19EUklWRVIoIkFsbG9jIExSQyBiYWNraW5nIG9iaiBmYWlsZWQuXG4iKTsKPiAg IAkJcmV0dXJuIFBUUl9FUlIoY3R4X29iaik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPiBp bmRleCAyMjliOGE5NzQyNjIuLjFhZmJhMDMzMWRjNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5oCj4gQEAgLTExMiw3ICsxMTIsOCBAQCB1aW50NjRfdCBpbnRlbF9scl9jb250ZXh0X2Rl c2NyaXB0b3Ioc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAgIAkJCQkgICAgIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4KPiAgIC8qIEV4ZWNsaXN0cyAqLwo+IC1pbnQgaW50 ZWxfc2FuaXRpemVfZW5hYmxlX2V4ZWNsaXN0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQg ZW5hYmxlX2V4ZWNsaXN0cyk7Cj4gK2ludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xpc3Rz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAgICBpbnQgZW5hYmxl X2V4ZWNsaXN0cyk7Cj4gICBzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtczsKPiAgIGludCBp bnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAq cGFyYW1zLAo+ICAgCQkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmFy Z3MsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+IGluZGV4IDZiYTRiZjdmMmE4OS4uYjc2 NWM3NWYzZmNkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3Mu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+IEBAIC0xODksNyAr MTg5LDcgQEAgc3RhdGljIGk5MTVfcmVnX3QgbW9jc19yZWdpc3RlcihlbnVtIGludGVsX2VuZ2lu ZV9pZCByaW5nLCBpbnQgaW5kZXgpCj4gICAgKi8KPiAgIGludCBpbnRlbF9tb2NzX2luaXRfZW5n aW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5naW5lLT5kZXYpOwo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCXN0cnVjdCBk cm1faTkxNV9tb2NzX3RhYmxlIHRhYmxlOwo+ICAgCXVuc2lnbmVkIGludCBpbmRleDsKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCA4NTcwYzYwYzZmYzAuLjRhMWU3 NzRiYThjYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiBAQCAtMTUw OCw5ICsxNTA4LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfb3ZlcmxheV91bm1hcF9yZWdzX2F0b21p YyhzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPgo+Cj4gICBzdHJ1Y3QgaW50ZWxfb3Zl cmxheV9lcnJvcl9zdGF0ZSAqCj4gLWludGVsX292ZXJsYXlfY2FwdHVyZV9lcnJvcl9zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtpbnRlbF9vdmVybGF5X2NhcHR1cmVfZXJyb3Jfc3Rh dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3Qg aW50ZWxfb3ZlcmxheSAqb3ZlcmxheSA9IGRldl9wcml2LT5vdmVybGF5Owo+ICAgCXN0cnVjdCBp bnRlbF9vdmVybGF5X2Vycm9yX3N0YXRlICplcnJvcjsKPiAgIAlzdHJ1Y3Qgb3ZlcmxheV9yZWdp c3RlcnMgX19pb21lbSAqcmVnczsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCAwMTdj NDMxZjkzNjMuLmJhMDk3ZjJkZDU2MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBA IC02MzQ5LDcgKzYzNDksNyBAQCB2b2lkIGludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+Cj4gICAJLyogUG93ZXJzYXZpbmcgaXMgY29udHJvbGxlZCBi eSB0aGUgaG9zdCB3aGVuIGluc2lkZSBhIFZNICovCj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUo ZGV2KSkKPiArCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpCj4gICAJCXJldHVybjsK Pgo+ICAgCWlmIChJU19JUk9OTEFLRV9NKGRldikpIHsKPiBAQCAtNzQwNSw4ICs3NDA1LDcgQEAg c3RhdGljIHZvaWQgX19pbnRlbF9ycHNfYm9vc3Rfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSBib29zdC0+cmVxOwo+ Cj4gICAJaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIHRydWUpKQo+IC0JCWdl bjZfcnBzX2Jvb3N0KHRvX2k5MTUocmVxLT5lbmdpbmUtPmRldiksIE5VTEwsCj4gLQkJCSAgICAg ICByZXEtPmVtaXR0ZWRfamlmZmllcyk7Cj4gKwkJZ2VuNl9ycHNfYm9vc3QocmVxLT5pOTE1LCBO VUxMLCByZXEtPmVtaXR0ZWRfamlmZmllcyk7Cj4KPiAgIAlpOTE1X2dlbV9yZXF1ZXN0X3VucmVm ZXJlbmNlKHJlcSk7Cj4gICAJa2ZyZWUoYm9vc3QpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmMKPiBpbmRleCA4ZjNlYjMwMzNkYTAuLmUxN2E2ODJkZDYyMSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtNjAsNyArNjAsNyBA QCB2b2lkIGludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmKQo+Cj4gICBib29sIGludGVsX2VuZ2luZV9zdG9wcGVkKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlyZXR1cm4gZGV2X3ByaXYtPmdwdV9lcnJv ci5zdG9wX3JpbmdzICYgaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiAgIH0KPgo+IEBAIC0x MDYsNyArMTA2LDYgQEAgZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwKPiAgIAkJICAgICAgIHUzMglmbHVzaF9kb21haW5zKQo+ICAgewo+ICAg CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+ICAgCXUzMiBjbWQ7Cj4gICAJaW50IHJl dDsKPgo+IEBAIC0xNDUsNyArMTQ0LDcgQEAgZ2VuNF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAkJY21kIHw9IE1JX0VYRV9GTFVTSDsKPgo+ ICAgCWlmIChpbnZhbGlkYXRlX2RvbWFpbnMgJiBJOTE1X0dFTV9ET01BSU5fQ09NTUFORCAmJgo+ IC0JICAgIChJU19HNFgoZGV2KSB8fCBJU19HRU41KGRldikpKQo+ICsJICAgIChJU19HNFgocmVx LT5pOTE1KSB8fCBJU19HRU41KHJlcS0+aTkxNSkpKQo+ICAgCQljbWQgfD0gTUlfSU5WQUxJREFU RV9JU1A7Cj4KPiAgIAlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Cj4gQEAgLTQzMSwx OSArNDMwLDE5IEBAIGdlbjhfcmVuZGVyX3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCj4gICBzdGF0aWMgdm9pZCByaW5nX3dyaXRlX3RhaWwoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkJICAgIHUzMiB2YWx1ZSkKPiAgIHsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAg IAlJOTE1X1dSSVRFX1RBSUwoZW5naW5lLCB2YWx1ZSk7Cj4gICB9Cj4KPiAgIHU2NCBpbnRlbF9y aW5nX2dldF9hY3RpdmVfaGVhZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7 Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2 X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUt Pmk5MTU7Cj4gICAJdTY0IGFjdGhkOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldikt PmdlbiA+PSA4KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiAgIAkJYWN0aGQg PSBJOTE1X1JFQUQ2NF8yeDMyKFJJTkdfQUNUSEQoZW5naW5lLT5tbWlvX2Jhc2UpLAo+ICAgCQkJ CQkgUklOR19BQ1RIRF9VRFcoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAtCWVsc2UgaWYgKElOVEVM X0lORk8oZW5naW5lLT5kZXYpLT5nZW4gPj0gNCkKPiArCWVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNCkKPiAgIAkJYWN0aGQgPSBJOTE1X1JFQUQoUklOR19BQ1RIRChlbmdpbmUtPm1t aW9fYmFzZSkpOwo+ICAgCWVsc2UKPiAgIAkJYWN0aGQgPSBJOTE1X1JFQUQoQUNUSEQpOwo+IEBA IC00NTMsMjUgKzQ1MiwyNCBAQCB1NjQgaW50ZWxfcmluZ19nZXRfYWN0aXZlX2hlYWQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICBzdGF0aWMgdm9pZCByaW5nX3NldHVwX3Bo eXNfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2 YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1 Owo+ICAgCXUzMiBhZGRyOwo+Cj4gICAJYWRkciA9IGRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFo LT5idXNhZGRyOwo+IC0JaWYgKElOVEVMX0lORk8oZW5naW5lLT5kZXYpLT5nZW4gPj0gNCkKPiAr CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCj4gICAJCWFkZHIgfD0gKGRldl9wcml2LT5z dGF0dXNfcGFnZV9kbWFoLT5idXNhZGRyID4+IDI4KSAmIDB4ZjA7Cj4gICAJSTkxNV9XUklURShI V1NfUEdBLCBhZGRyKTsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19zZXR1cF9z dGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJaTkxNV9yZWdfdCBt bWlvOwo+Cj4gICAJLyogVGhlIHJpbmcgc3RhdHVzIHBhZ2UgYWRkcmVzc2VzIGFyZSBubyBsb25n ZXIgbmV4dCB0byB0aGUgcmVzdCBvZgo+ICAgCSAqIHRoZSByaW5nIHJlZ2lzdGVycyBhcyBvZiBn ZW43Lgo+ICAgCSAqLwo+IC0JaWYgKElTX0dFTjcoZGV2KSkgewo+ICsJaWYgKElTX0dFTjcoZGV2 X3ByaXYpKSB7Cj4gICAJCXN3aXRjaCAoZW5naW5lLT5pZCkgewo+ICAgCQljYXNlIFJDUzoKPiAg IAkJCW1taW8gPSBSRU5ERVJfSFdTX1BHQV9HRU43Owo+IEBAIC00OTEsNyArNDg5LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfcmluZ19zZXR1cF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gICAJCQltbWlvID0gVkVCT1hfSFdTX1BHQV9HRU43Owo+ICAgCQkJYnJl YWs7Cj4gICAJCX0KPiAtCX0gZWxzZSBpZiAoSVNfR0VONihlbmdpbmUtPmRldikpIHsKPiArCX0g ZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikpIHsKPiAgIAkJbW1pbyA9IFJJTkdfSFdTX1BHQV9H RU42KGVuZ2luZS0+bW1pb19iYXNlKTsKPiAgIAl9IGVsc2Ugewo+ICAgCQkvKiBYWFg6IGdlbjgg cmV0dXJucyB0byBzYW5pdHkgKi8KPiBAQCAtNTA4LDcgKzUwNiw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Jpbmdfc2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAgCSAqIGFyaXNlczogZG8gd2Ugc3RpbGwgbmVlZCB0aGlzIGFuZCBpZiBzbyBob3cgc2hv dWxkIHdlIGdvIGFib3V0Cj4gICAJICogaW52YWxpZGF0aW5nIHRoZSBUTEI/Cj4gICAJICovCj4g LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNiAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8 IDgpIHsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYgJiYgSU5URUxfR0VOKGRldl9w cml2KSA8IDgpIHsKPiAgIAkJaTkxNV9yZWdfdCByZWcgPSBSSU5HX0lOU1RQTShlbmdpbmUtPm1t aW9fYmFzZSk7Cj4KPiAgIAkJLyogcmluZyBzaG91bGQgYmUgaWRsZSBiZWZvcmUgaXNzdWluZyBh IHN5bmMgZmx1c2gqLwo+IEBAIC01MjYsOSArNTI0LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmlu Z19zZXR1cF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAg IHN0YXRpYyBib29sIHN0b3BfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuZ2lu ZS0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+ aTkxNTsKPgo+IC0JaWYgKCFJU19HRU4yKGVuZ2luZS0+ZGV2KSkgewo+ICsJaWYgKCFJU19HRU4y KGRldl9wcml2KSkgewo+ICAgCQlJOTE1X1dSSVRFX01PREUoZW5naW5lLCBfTUFTS0VEX0JJVF9F TkFCTEUoU1RPUF9SSU5HKSk7Cj4gICAJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEX01PREUoZW5n aW5lKSAmIE1PREVfSURMRSkgIT0gMCwgMTAwMCkpIHsKPiAgIAkJCURSTV9FUlJPUigiJXMgOiB0 aW1lZCBvdXQgdHJ5aW5nIHRvIHN0b3AgcmluZ1xuIiwKPiBAQCAtNTQ2LDcgKzU0NCw3IEBAIHN0 YXRpYyBib29sIHN0b3BfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJ STkxNV9XUklURV9IRUFEKGVuZ2luZSwgMCk7Cj4gICAJZW5naW5lLT53cml0ZV90YWlsKGVuZ2lu ZSwgMCk7Cj4KPiAtCWlmICghSVNfR0VOMihlbmdpbmUtPmRldikpIHsKPiArCWlmICghSVNfR0VO MihkZXZfcHJpdikpIHsKPiAgIAkJKHZvaWQpSTkxNV9SRUFEX0NUTChlbmdpbmUpOwo+ICAgCQlJ OTE1X1dSSVRFX01PREUoZW5naW5lLCBfTUFTS0VEX0JJVF9ESVNBQkxFKFNUT1BfUklORykpOwo+ ICAgCX0KPiBAQCAtNTYxLDggKzU1OSw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfaGFuZ2No ZWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ICAgc3RhdGljIGludCBpbml0 X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmdidWYgPSBlbmdpbmUtPmJ1ZmZlcjsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqID0gcmluZ2J1Zi0+b2JqOwo+ICAgCWludCByZXQgPSAwOwo+IEBAIC01OTIs NyArNTg5LDcgQEAgc3RhdGljIGludCBpbml0X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAkJfQo+ICAgCX0KPgo+IC0JaWYgKEk5MTVfTkVFRF9HRlhfSFdT KGRldikpCj4gKwlpZiAoSTkxNV9ORUVEX0dGWF9IV1MoZGV2X3ByaXYpKQo+ICAgCQlpbnRlbF9y aW5nX3NldHVwX3N0YXR1c19wYWdlKGVuZ2luZSk7Cj4gICAJZWxzZQo+ICAgCQlyaW5nX3NldHVw X3BoeXNfc3RhdHVzX3BhZ2UoZW5naW5lKTsKPiBAQCAtNjQ5LDEyICs2NDYsMTAgQEAgb3V0Ogo+ ICAgdm9pZAo+ICAgaW50ZWxfZmluaV9waXBlX2NvbnRyb2woc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2 Owo+IC0KPiAgIAlpZiAoZW5naW5lLT5zY3JhdGNoLm9iaiA9PSBOVUxMKQo+ICAgCQlyZXR1cm47 Cj4KPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7Cj4gKwlpZiAoSU5URUxfR0VO KGVuZ2luZS0+aTkxNSkgPj0gNSkgewo+ICAgCQlrdW5tYXAoc2dfcGFnZShlbmdpbmUtPnNjcmF0 Y2gub2JqLT5wYWdlcy0+c2dsKSk7Cj4gICAJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGVu Z2luZS0+c2NyYXRjaC5vYmopOwo+ICAgCX0KPiBAQCAtNjcwLDcgKzY2NSw3IEBAIGludGVsX2lu aXRfcGlwZV9jb250cm9sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ICAgCVdB Uk5fT04oZW5naW5lLT5zY3JhdGNoLm9iaik7Cj4KPiAtCWVuZ2luZS0+c2NyYXRjaC5vYmogPSBp OTE1X2dlbV9vYmplY3RfY3JlYXRlKGVuZ2luZS0+ZGV2LCA0MDk2KTsKPiArCWVuZ2luZS0+c2Ny YXRjaC5vYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlKGVuZ2luZS0+aTkxNS0+ZGV2LCA0MDk2 KTsKPiAgIAlpZiAoSVNfRVJSKGVuZ2luZS0+c2NyYXRjaC5vYmopKSB7Cj4gICAJCURSTV9FUlJP UigiRmFpbGVkIHRvIGFsbG9jYXRlIHNlcW5vIHBhZ2VcbiIpOwo+ICAgCQlyZXQgPSBQVFJfRVJS KGVuZ2luZS0+c2NyYXRjaC5vYmopOwo+IEBAIC03MDgsMTEgKzcwMyw5IEBAIGVycjoKPgo+ICAg c3RhdGljIGludCBpbnRlbF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gLQlpbnQgcmV0LCBpOwo+ICAgCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJmRldl9w cml2LT53b3JrYXJvdW5kczsKPiArCXN0cnVjdCBpOTE1X3dvcmthcm91bmRzICp3ID0gJnJlcS0+ aTkxNS0+d29ya2Fyb3VuZHM7Cj4gKwlpbnQgcmV0LCBpOwo+Cj4gICAJaWYgKHctPmNvdW50ID09 IDApCj4gICAJCXJldHVybiAwOwo+IEBAIC04MDEsNyArNzk0LDcgQEAgc3RhdGljIGludCB3YV9h ZGQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgc3RhdGljIGludCB3YV9y aW5nX3doaXRlbGlzdF9yZWcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkJ CSBpOTE1X3JlZ190IHJlZykKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlzdHJ1Y3QgaTkxNV93b3JrYXJvdW5k cyAqd2EgPSAmZGV2X3ByaXYtPndvcmthcm91bmRzOwo+ICAgCWNvbnN0IHVpbnQzMl90IGluZGV4 ID0gd2EtPmh3X3doaXRlbGlzdF9jb3VudFtlbmdpbmUtPmlkXTsKPgo+IEBAIC04MTcsOCArODEw LDcgQEAgc3RhdGljIGludCB3YV9yaW5nX3doaXRlbGlzdF9yZWcoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAo+Cj4gICBzdGF0aWMgaW50IGdlbjhfaW5pdF93b3JrYXJvdW5kcyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZW5naW5lLT5pOTE1Owo+Cj4gICAJV0FfU0VUX0JJVF9NQVNLRUQoSU5TVFBNLCBJTlNUUE1f Rk9SQ0VfT1JERVJJTkcpOwo+Cj4gQEAgLTg2OSw5ICs4NjEsOCBAQCBzdGF0aWMgaW50IGdlbjhf aW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgIHN0 YXRpYyBpbnQgYmR3X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5l LT5pOTE1Owo+ICAgCWludCByZXQ7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5l LT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+Cj4gICAJcmV0ID0gZ2VuOF9pbml0X3dvcmthcm91bmRzKGVuZ2luZSk7Cj4gICAJ aWYgKHJldCkKPiBAQCAtODkxLDE2ICs4ODIsMTUgQEAgc3RhdGljIGludCBiZHdfaW5pdF93b3Jr YXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQkgIC8qIFdhRm9y Y2VDb250ZXh0U2F2ZVJlc3RvcmVOb25Db2hlcmVudDpiZHcgKi8KPiAgIAkJCSAgSERDX0ZPUkNF X0NPTlRFWFRfU0FWRV9SRVNUT1JFX05PTl9DT0hFUkVOVCB8Cj4gICAJCQkgIC8qIFdhRGlzYWJs ZUZlbmNlRGVzdGluYXRpb25Ub1NMTTpiZHcgKHByZS1wcm9kKSAqLwo+IC0JCQkgIChJU19CRFdf R1QzKGRldikgPyBIRENfRkVOQ0VfREVTVF9TTE1fRElTQUJMRSA6IDApKTsKPiArCQkJICAoSVNf QkRXX0dUMyhkZXZfcHJpdikgPyBIRENfRkVOQ0VfREVTVF9TTE1fRElTQUJMRSA6IDApKTsKPgo+ ICAgCXJldHVybiAwOwo+ICAgfQo+Cj4gICBzdGF0aWMgaW50IGNodl9pbml0X3dvcmthcm91bmRz KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAlpbnQgcmV0Owo+IC0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPgo+ICAgCXJldCA9IGdlbjhfaW5p dF93b3JrYXJvdW5kcyhlbmdpbmUpOwo+ICAgCWlmIChyZXQpCj4gQEAgLTkxNyw4ICs5MDcsNyBA QCBzdGF0aWMgaW50IGNodl9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPgo+ICAgc3RhdGljIGludCBnZW45X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVu Z2luZS0+aTkxNTsKPiAgIAl1aW50MzJfdCB0bXA7Cj4gICAJaW50IHJldDsKPgo+IEBAIC05NDEs MTQgKzkzMCwxNCBAQCBzdGF0aWMgaW50IGdlbjlfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQkgIEdFTjlfRElTQUJMRV9PQ0xfT09CX1NVUFBS RVNTX0xPR0lDKTsKPgo+ICAgCS8qIFdhRGlzYWJsZURnTWlycm9yRml4SW5IYWxmU2xpY2VDaGlj a2VuNTpza2wsYnh0ICovCj4gLQlpZiAoSVNfU0tMX1JFVklEKGRldiwgMCwgU0tMX1JFVklEX0Iw KSB8fAo+IC0JICAgIElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpCj4gKwlpZiAo SVNfU0tMX1JFVklEKGRldl9wcml2LCAwLCBTS0xfUkVWSURfQjApIHx8Cj4gKwkgICAgSVNfQlhU X1JFVklEKGRldl9wcml2LCAwLCBCWFRfUkVWSURfQTEpKQo+ICAgCQlXQV9DTFJfQklUX01BU0tF RChHRU45X0hBTEZfU0xJQ0VfQ0hJQ0tFTjUsCj4gICAJCQkJICBHRU45X0RHX01JUlJPUl9GSVhf RU5BQkxFKTsKPgo+ICAgCS8qIFdhU2V0RGlzYWJsZVBpeE1hc2tDYW1taW5nQW5kUmh3b0luQ29t bW9uU2xpY2VDaGlja2VuOnNrbCxieHQgKi8KPiAtCWlmIChJU19TS0xfUkVWSUQoZGV2LCAwLCBT S0xfUkVWSURfQjApIHx8Cj4gLQkgICAgSVNfQlhUX1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0Ex KSkgewo+ICsJaWYgKElTX1NLTF9SRVZJRChkZXZfcHJpdiwgMCwgU0tMX1JFVklEX0IwKSB8fAo+ ICsJICAgIElTX0JYVF9SRVZJRChkZXZfcHJpdiwgMCwgQlhUX1JFVklEX0ExKSkgewo+ICAgCQlX QV9TRVRfQklUX01BU0tFRChHRU43X0NPTU1PTl9TTElDRV9DSElDS0VOMSwKPiAgIAkJCQkgIEdF TjlfUkhXT19PUFRJTUlaQVRJT05fRElTQUJMRSk7Cj4gICAJCS8qCj4gQEAgLTk3NCwyMCArOTYz LDIwIEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAkJCSAgR0VOOV9DQ1NfVExCX1BSRUZFVENIX0VOQUJMRSk7Cj4K PiAgIAkvKiBXYURpc2FibGVNYXNrQmFzZWRDYW1taW5nSW5SQ0M6c2tsLGJ4dCAqLwo+IC0JaWYg KElTX1NLTF9SRVZJRChkZXYsIFNLTF9SRVZJRF9DMCwgU0tMX1JFVklEX0MwKSB8fAo+IC0JICAg IElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpCj4gKwlpZiAoSVNfU0tMX1JFVklE KGRldl9wcml2LCBTS0xfUkVWSURfQzAsIFNLTF9SRVZJRF9DMCkgfHwKPiArCSAgICBJU19CWFRf UkVWSUQoZGV2X3ByaXYsIDAsIEJYVF9SRVZJRF9BMSkpCj4gICAJCVdBX1NFVF9CSVRfTUFTS0VE KFNMSUNFX0VDT19DSElDS0VOMCwKPiAgIAkJCQkgIFBJWEVMX01BU0tfQ0FNTUlOR19ESVNBQkxF KTsKPgo+ICAgCS8qIFdhRm9yY2VDb250ZXh0U2F2ZVJlc3RvcmVOb25Db2hlcmVudDpza2wsYnh0 ICovCj4gICAJdG1wID0gSERDX0ZPUkNFX0NPTlRFWFRfU0FWRV9SRVNUT1JFX05PTl9DT0hFUkVO VDsKPiAtCWlmIChJU19TS0xfUkVWSUQoZGV2LCBTS0xfUkVWSURfRjAsIFJFVklEX0ZPUkVWRVIp IHx8Cj4gLQkgICAgSVNfQlhUX1JFVklEKGRldiwgQlhUX1JFVklEX0IwLCBSRVZJRF9GT1JFVkVS KSkKPiArCWlmIChJU19TS0xfUkVWSUQoZGV2X3ByaXYsIFNLTF9SRVZJRF9GMCwgUkVWSURfRk9S RVZFUikgfHwKPiArCSAgICBJU19CWFRfUkVWSUQoZGV2X3ByaXYsIEJYVF9SRVZJRF9CMCwgUkVW SURfRk9SRVZFUikpCj4gICAJCXRtcCB8PSBIRENfRk9SQ0VfQ1NSX05PTl9DT0hFUkVOVF9PVlJf RElTQUJMRTsKPiAgIAlXQV9TRVRfQklUX01BU0tFRChIRENfQ0hJQ0tFTjAsIHRtcCk7Cj4KPiAg IAkvKiBXYURpc2FibGVTYW1wbGVyUG93ZXJCeXBhc3NGb3JTT1BpbmdQb25nOnNrbCxieHQgKi8K PiAtCWlmIChJU19TS1lMQUtFKGRldikgfHwgSVNfQlhUX1JFVklEKGRldiwgMCwgQlhUX1JFVklE X0IwKSkKPiArCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19CWFRfUkVWSUQoZGV2X3By aXYsIDAsIEJYVF9SRVZJRF9CMCkpCj4gICAJCVdBX1NFVF9CSVRfTUFTS0VEKEhBTEZfU0xJQ0Vf Q0hJQ0tFTjMsCj4gICAJCQkJICBHRU44X1NBTVBMRVJfUE9XRVJfQllQQVNTX0RJUyk7Cj4KPiBA QCAtMTAxMyw4ICsxMDAyLDcgQEAgc3RhdGljIGludCBnZW45X2luaXRfd29ya2Fyb3VuZHMoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICBzdGF0aWMgaW50IHNrbF90dW5lX2l6 X2hhc2hpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAl1OCB2YWxzWzNdID0geyAwLCAwLCAw IH07Cj4gICAJdW5zaWduZWQgaW50IGk7Cj4KPiBAQCAtMTA1NSw5ICsxMDQzLDggQEAgc3RhdGlj IGludCBza2xfdHVuZV9pel9oYXNoaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK Pgo+ICAgc3RhdGljIGludCBza2xfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBlbmdpbmUtPmk5MTU7Cj4gICAJaW50IHJldDsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4KPiAgIAlyZXQgPSBnZW45X2luaXRfd29ya2Fyb3VuZHMoZW5naW5l KTsKPiAgIAlpZiAocmV0KQo+IEBAIC0xMDY4LDEyICsxMDU1LDEyIEBAIHN0YXRpYyBpbnQgc2ts X2luaXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCSAq IHVudGlsIEQwIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGNhc2Ugc28gdGhpcyBpcyBlcXVpdmFsZW50 IHRvCj4gICAJICogIVdhRGlzYWJsZVBlckN0eHRQcmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9s OnNrbAo+ICAgCSAqLwo+IC0JaWYgKElTX1NLTF9SRVZJRChkZXYsIFNLTF9SRVZJRF9FMCwgUkVW SURfRk9SRVZFUikpIHsKPiArCWlmIChJU19TS0xfUkVWSUQoZGV2X3ByaXYsIFNLTF9SRVZJRF9F MCwgUkVWSURfRk9SRVZFUikpIHsKPiAgIAkJSTkxNV9XUklURShHRU43X0ZGX1NMSUNFX0NTX0NI SUNLRU4xLAo+ICAgCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdFTjlfRkZTQ19QRVJDVFhfUFJF RU1QVF9DVFJMKSk7Cj4gICAJfQo+Cj4gLQlpZiAoSVNfU0tMX1JFVklEKGRldiwgMCwgU0tMX1JF VklEX0QwKSkgewo+ICsJaWYgKElTX1NLTF9SRVZJRChkZXZfcHJpdiwgMCwgU0tMX1JFVklEX0Qw KSkgewo+ICAgCQkvKiBXYURpc2FibGVDaGlja2VuQml0VFNHQmFycmllckFja0ZvckZGU2xpY2VD Uzpza2wgKi8KPiAgIAkJSTkxNV9XUklURShGRl9TTElDRV9DU19DSElDS0VOMiwKPiAgIAkJCSAg IF9NQVNLRURfQklUX0VOQUJMRShHRU45X1RTR19CQVJSSUVSX0FDS19ESVNBQkxFKSk7Cj4gQEAg LTEwODIsMjQgKzEwNjksMjQgQEAgc3RhdGljIGludCBza2xfaW5pdF93b3JrYXJvdW5kcyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJLyogR0VOOF9MM1NRQ1JFRzQgaGFzIGEg ZGVwZW5kZW5jeSB3aXRoIFdBIGJhdGNoIHNvIGFueSBuZXcgY2hhbmdlcwo+ICAgCSAqIGludm9s dmluZyB0aGlzIHJlZ2lzdGVyIHNob3VsZCBhbHNvIGJlIGFkZGVkIHRvIFdBIGJhdGNoIGFzIHJl cXVpcmVkLgo+ICAgCSAqLwo+IC0JaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9F MCkpCj4gKwlpZiAoSVNfU0tMX1JFVklEKGRldl9wcml2LCAwLCBTS0xfUkVWSURfRTApKQo+ICAg CQkvKiBXYURpc2FibGVMU1FDUk9QRVJGZm9yT0NMOnNrbCAqLwo+ICAgCQlJOTE1X1dSSVRFKEdF TjhfTDNTUUNSRUc0LCBJOTE1X1JFQUQoR0VOOF9MM1NRQ1JFRzQpIHwKPiAgIAkJCSAgIEdFTjhf TFFTQ19ST19QRVJGX0RJUyk7Cj4KPiAgIAkvKiBXYUVuYWJsZUdhcHNUc3ZDcmVkaXRGaXg6c2ts ICovCj4gLQlpZiAoSVNfU0tMX1JFVklEKGRldiwgU0tMX1JFVklEX0MwLCBSRVZJRF9GT1JFVkVS KSkgewo+ICsJaWYgKElTX1NLTF9SRVZJRChkZXZfcHJpdiwgU0tMX1JFVklEX0MwLCBSRVZJRF9G T1JFVkVSKSkgewo+ICAgCQlJOTE1X1dSSVRFKEdFTjhfR0FSQkNOVEwsIChJOTE1X1JFQUQoR0VO OF9HQVJCQ05UTCkgfAo+ICAgCQkJCQkgICBHRU45X0dBUFNfVFNWX0NSRURJVF9ESVNBQkxFKSk7 Cj4gICAJfQo+Cj4gICAJLyogV2FEaXNhYmxlUG93ZXJDb21waWxlckNsb2NrR2F0aW5nOnNrbCAq Lwo+IC0JaWYgKElTX1NLTF9SRVZJRChkZXYsIFNLTF9SRVZJRF9CMCwgU0tMX1JFVklEX0IwKSkK PiArCWlmIChJU19TS0xfUkVWSUQoZGV2X3ByaXYsIFNLTF9SRVZJRF9CMCwgU0tMX1JFVklEX0Iw KSkKPiAgIAkJV0FfU0VUX0JJVF9NQVNLRUQoSElaX0NISUNLRU4sCj4gICAJCQkJICBCRFdfSEla X1BPV0VSX0NPTVBJTEVSX0NMT0NLX0dBVElOR19ESVNBQkxFKTsKPgo+ICAgCS8qIFRoaXMgaXMg dGllZCB0byBXYUZvcmNlQ29udGV4dFNhdmVSZXN0b3JlTm9uQ29oZXJlbnQgKi8KPiAtCWlmIChJ U19TS0xfUkVWSUQoZGV2LCAwLCBSRVZJRF9GT1JFVkVSKSkgewo+ICsJaWYgKElTX1NLTF9SRVZJ RChkZXZfcHJpdiwgMCwgUkVWSURfRk9SRVZFUikpIHsKPiAgIAkJLyoKPiAgIAkJICpVc2UgRm9y Y2UgTm9uLUNvaGVyZW50IHdoZW5ldmVyIGV4ZWN1dGluZyBhIDNEIGNvbnRleHQuIFRoaXMKPiAg IAkJICogaXMgYSB3b3JrYXJvdW5kIGZvciBhIHBvc3NpYmxlIGhhbmcgaW4gdGhlIHVubGlrZWx5 IGV2ZW50Cj4gQEAgLTExMTUsMTMgKzExMDIsMTMgQEAgc3RhdGljIGludCBza2xfaW5pdF93b3Jr YXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJfQo+Cj4gICAJLyog V2FCYXJyaWVyUGVyZm9ybWFuY2VGaXhEaXNhYmxlOnNrbCAqLwo+IC0JaWYgKElTX1NLTF9SRVZJ RChkZXYsIFNLTF9SRVZJRF9DMCwgU0tMX1JFVklEX0QwKSkKPiArCWlmIChJU19TS0xfUkVWSUQo ZGV2X3ByaXYsIFNLTF9SRVZJRF9DMCwgU0tMX1JFVklEX0QwKSkKPiAgIAkJV0FfU0VUX0JJVF9N QVNLRUQoSERDX0NISUNLRU4wLAo+ICAgCQkJCSAgSERDX0ZFTkNFX0RFU1RfU0xNX0RJU0FCTEUg fAo+ICAgCQkJCSAgSERDX0JBUlJJRVJfUEVSRk9STUFOQ0VfRElTQUJMRSk7Cj4KPiAgIAkvKiBX YURpc2FibGVTYmVDYWNoZURpc3BhdGNoUG9ydFNoYXJpbmc6c2tsICovCj4gLQlpZiAoSVNfU0tM X1JFVklEKGRldiwgMCwgU0tMX1JFVklEX0YwKSkKPiArCWlmIChJU19TS0xfUkVWSUQoZGV2X3By aXYsIDAsIFNLTF9SRVZJRF9GMCkpCj4gICAJCVdBX1NFVF9CSVRfTUFTS0VEKAo+ICAgCQkJR0VO N19IQUxGX1NMSUNFX0NISUNLRU4xLAo+ICAgCQkJR0VON19TQkVfU1NfQ0FDSEVfRElTUEFUQ0hf UE9SVF9TSEFSSU5HX0RJU0FCTEUpOwo+IEBAIC0xMTM2LDkgKzExMjMsOCBAQCBzdGF0aWMgaW50 IHNrbF9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ ICAgc3RhdGljIGludCBieHRfaW5pdF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBl bmdpbmUtPmk5MTU7Cj4gICAJaW50IHJldDsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBl bmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4KPiAgIAlyZXQgPSBnZW45X2luaXRfd29ya2Fyb3VuZHMoZW5naW5lKTsK PiAgIAlpZiAocmV0KQo+IEBAIC0xMTQ2LDExICsxMTMyLDExIEBAIHN0YXRpYyBpbnQgYnh0X2lu aXRfd29ya2Fyb3VuZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICAJLyog V2FTdG9yZU11bHRpcGxlUFRFZW5hYmxlOmJ4dCAqLwo+ICAgCS8qIFRoaXMgaXMgYSByZXF1aXJl bWVudCBhY2NvcmRpbmcgdG8gSGFyZHdhcmUgc3BlY2lmaWNhdGlvbiAqLwo+IC0JaWYgKElTX0JY VF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpCj4gKwlpZiAoSVNfQlhUX1JFVklEKGRldl9w cml2LCAwLCBCWFRfUkVWSURfQTEpKQo+ICAgCQlJOTE1X1dSSVRFKFRJTEVDVEwsIEk5MTVfUkVB RChUSUxFQ1RMKSB8IFRJTEVDVExfVExCUEYpOwo+Cj4gICAJLyogV2FTZXRDbGNrR2F0aW5nRGlz YWJsZU1lZGlhOmJ4dCAqLwo+IC0JaWYgKElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9B MSkpIHsKPiArCWlmIChJU19CWFRfUkVWSUQoZGV2X3ByaXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsK PiAgIAkJSTkxNV9XUklURShHRU43X01JU0NDUENUTCwgKEk5MTVfUkVBRChHRU43X01JU0NDUENU TCkgJgo+ICAgCQkJCQkgICAgfkdFTjhfRE9QX0NMT0NLX0dBVEVfTUVESUFfRU5BQkxFKSk7Cj4g ICAJfQo+IEBAIC0xMTYwLDcgKzExNDYsNyBAQCBzdGF0aWMgaW50IGJ4dF9pbml0X3dvcmthcm91 bmRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCSAgU1RBTExfRE9QX0dB VElOR19ESVNBQkxFKTsKPgo+ICAgCS8qIFdhRGlzYWJsZVNiZUNhY2hlRGlzcGF0Y2hQb3J0U2hh cmluZzpieHQgKi8KPiAtCWlmIChJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQjApKSB7 Cj4gKwlpZiAoSVNfQlhUX1JFVklEKGRldl9wcml2LCAwLCBCWFRfUkVWSURfQjApKSB7Cj4gICAJ CVdBX1NFVF9CSVRfTUFTS0VEKAo+ICAgCQkJR0VON19IQUxGX1NMSUNFX0NISUNLRU4xLAo+ICAg CQkJR0VON19TQkVfU1NfQ0FDSEVfRElTUEFUQ0hfUE9SVF9TSEFSSU5HX0RJU0FCTEUpOwo+IEBA IC0xMTcwLDcgKzExNTYsNyBAQCBzdGF0aWMgaW50IGJ4dF9pbml0X3dvcmthcm91bmRzKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkvKiBXYURpc2FibGVPYmplY3RMZXZlbFBy ZWVtcHRpb25Gb3JJbnN0YW5jZWREcmF3OmJ4dCAqLwo+ICAgCS8qIFdhRGlzYWJsZU9iamVjdExl dmVsUHJlZW10aW9uRm9ySW5zdGFuY2VJZDpieHQgKi8KPiAgIAkvKiBXYURpc2FibGVMU1FDUk9Q RVJGZm9yT0NMOmJ4dCAqLwo+IC0JaWYgKElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9B MSkpIHsKPiArCWlmIChJU19CWFRfUkVWSUQoZGV2X3ByaXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsK PiAgIAkJcmV0ID0gd2FfcmluZ193aGl0ZWxpc3RfcmVnKGVuZ2luZSwgR0VOOV9DU19ERUJVR19N T0RFMSk7Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+IEBAIC0xMTgxLDcgKzEx NjcsNyBAQCBzdGF0aWMgaW50IGJ4dF9pbml0X3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAl9Cj4KPiAgIAkvKiBXYVByb2dyYW1MM1NxY1JlZzFEZWZhdWx0 Rm9yUGVyZjpieHQgKi8KPiAtCWlmIChJU19CWFRfUkVWSUQoZGV2LCBCWFRfUkVWSURfQjAsIFJF VklEX0ZPUkVWRVIpKQo+ICsJaWYgKElTX0JYVF9SRVZJRChkZXZfcHJpdiwgQlhUX1JFVklEX0Iw LCBSRVZJRF9GT1JFVkVSKSkKPiAgIAkJSTkxNV9XUklURShHRU44X0wzU1FDUkVHMSwgTDNfR0VO RVJBTF9QUklPX0NSRURJVFMoNjIpIHwKPiAgIAkJCQkJICAgTDNfSElHSF9QUklPX0NSRURJVFMo MikpOwo+Cj4gQEAgLTExOTAsMjQgKzExNzYsMjMgQEAgc3RhdGljIGludCBieHRfaW5pdF93b3Jr YXJvdW5kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgIGludCBpbml0X3dv cmthcm91bmRzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPgo+ICAgCVdBUk5fT04oZW5naW5l LT5pZCAhPSBSQ1MpOwo+Cj4gICAJZGV2X3ByaXYtPndvcmthcm91bmRzLmNvdW50ID0gMDsKPiAg IAlkZXZfcHJpdi0+d29ya2Fyb3VuZHMuaHdfd2hpdGVsaXN0X2NvdW50W1JDU10gPSAwOwo+Cj4g LQlpZiAoSVNfQlJPQURXRUxMKGRldikpCj4gKwlpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkK PiAgIAkJcmV0dXJuIGJkd19pbml0X3dvcmthcm91bmRzKGVuZ2luZSk7Cj4KPiAtCWlmIChJU19D SEVSUllWSUVXKGRldikpCj4gKwlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gICAJCXJl dHVybiBjaHZfaW5pdF93b3JrYXJvdW5kcyhlbmdpbmUpOwo+Cj4gLQlpZiAoSVNfU0tZTEFLRShk ZXYpKQo+ICsJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKQo+ICAgCQlyZXR1cm4gc2tsX2luaXRf d29ya2Fyb3VuZHMoZW5naW5lKTsKPgo+IC0JaWYgKElTX0JST1hUT04oZGV2KSkKPiArCWlmIChJ U19CUk9YVE9OKGRldl9wcml2KSkKPiAgIAkJcmV0dXJuIGJ4dF9pbml0X3dvcmthcm91bmRzKGVu Z2luZSk7Cj4KPiAgIAlyZXR1cm4gMDsKPiBAQCAtMTIxNSwxNCArMTIwMCwxMyBAQCBpbnQgaW5p dF93b3JrYXJvdW5kc19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ICAg c3RhdGljIGludCBpbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJaW50 IHJldCA9IGluaXRfcmluZ19jb21tb24oZW5naW5lKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1 cm4gcmV0Owo+Cj4gICAJLyogV2FUaW1lZFNpbmdsZVZlcnRleERpc3BhdGNoOmNsLGJ3LGN0Zyxl bGssaWxrLHNuYiAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQgJiYgSU5URUxf SU5GTyhkZXYpLT5nZW4gPCA3KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCAmJiBJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgNykKPiAgIAkJSTkxNV9XUklURShNSV9NT0RFLCBfTUFTS0VE X0JJVF9FTkFCTEUoVlNfVElNRVJfRElTUEFUQ0gpKTsKPgo+ICAgCS8qIFdlIG5lZWQgdG8gZGlz YWJsZSB0aGUgQXN5bmNGbGlwIHBlcmZvcm1hbmNlIG9wdGltaXNhdGlvbnMgaW4gb3JkZXIKPiBA QCAtMTIzMSwyMiArMTIxNSwyMiBAQCBzdGF0aWMgaW50IGluaXRfcmVuZGVyX3Jpbmcoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCSAqCj4gICAJICogV2FEaXNhYmxlQXN5bmNG bGlwUGVyZk1vZGU6c25iLGl2Yixoc3csdmx2Cj4gICAJICovCj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gNiAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDgpCj4gKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA2ICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA4KQo+ICAgCQlJOTE1 X1dSSVRFKE1JX01PREUsIF9NQVNLRURfQklUX0VOQUJMRShBU1lOQ19GTElQX1BFUkZfRElTQUJM RSkpOwo+Cj4gICAJLyogUmVxdWlyZWQgZm9yIHRoZSBoYXJkd2FyZSB0byBwcm9ncmFtIHNjYW5s aW5lIHZhbHVlcyBmb3Igd2FpdGluZyAqLwo+ICAgCS8qIFdhRW5hYmxlRmx1c2hUbGJJbnZhbGlk YXRpb25Nb2RlOnNuYiAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDYpCj4gKwlp ZiAoSVNfR0VONihkZXZfcHJpdikpCj4gICAJCUk5MTVfV1JJVEUoR0ZYX01PREUsCj4gICAJCQkg ICBfTUFTS0VEX0JJVF9FTkFCTEUoR0ZYX1RMQl9JTlZBTElEQVRFX0VYUExJQ0lUKSk7Cj4KPiAg IAkvKiBXYUJDU1ZDU1RsYkludmFsaWRhdGlvbk1vZGU6aXZiLHZsdixoc3cgKi8KPiAtCWlmIChJ U19HRU43KGRldikpCj4gKwlpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gICAJCUk5MTVfV1JJVEUo R0ZYX01PREVfR0VONywKPiAgIAkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShHRlhfVExCX0lOVkFM SURBVEVfRVhQTElDSVQpIHwKPiAgIAkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShHRlhfUkVQTEFZ X01PREUpKTsKPgo+IC0JaWYgKElTX0dFTjYoZGV2KSkgewo+ICsJaWYgKElTX0dFTjYoZGV2X3By aXYpKSB7Cj4gICAJCS8qIEZyb20gdGhlIFNhbmR5YnJpZGdlIFBSTSwgdm9sdW1lIDEgcGFydCAz LCBwYWdlIDI0Ogo+ICAgCQkgKiAiSWYgdGhpcyBiaXQgaXMgc2V0LCBTVEN1bml0IHdpbGwgaGF2 ZSBMUkEgYXMgcmVwbGFjZW1lbnQKPiAgIAkJICogIHBvbGljeS4gWy4uLl0gVGhpcyBiaXQgbXVz dCBiZSByZXNldC4gIExSQSByZXBsYWNlbWVudAo+IEBAIC0xMjU2LDE5ICsxMjQwLDE4IEBAIHN0 YXRpYyBpbnQgaW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICAJCQkgICBfTUFTS0VEX0JJVF9ESVNBQkxFKENNMF9TVENfRVZJQ1RfRElTQUJMRV9MUkFf U05CKSk7Cj4gICAJfQo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNiAmJiBJTlRF TF9JTkZPKGRldiktPmdlbiA8IDgpCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2ICYm IElOVEVMX0dFTihkZXZfcHJpdikgPCA4KQo+ICAgCQlJOTE1X1dSSVRFKElOU1RQTSwgX01BU0tF RF9CSVRfRU5BQkxFKElOU1RQTV9GT1JDRV9PUkRFUklORykpOwo+Cj4gLQlpZiAoSEFTX0wzX0RQ RihkZXYpKQo+IC0JCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwgfkdUX1BBUklUWV9FUlJPUihkZXYp KTsKPiArCWlmIChIQVNfTDNfRFBGKGRldl9wcml2KSkKPiArCQlJOTE1X1dSSVRFX0lNUihlbmdp bmUsIH5HVF9QQVJJVFlfRVJST1IoZGV2X3ByaXYpKTsKPgo+ICAgCXJldHVybiBpbml0X3dvcmth cm91bmRzX3JpbmcoZW5naW5lKTsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQgcmVuZGVyX3Jpbmdf Y2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+Cj4gICAJaWYgKGRldl9wcml2LT5zZW1hcGhv cmVfb2JqKSB7Cj4gICAJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGRldl9wcml2LT5zZW1h cGhvcmVfb2JqKTsKPiBAQCAtMTI4NCwxMyArMTI2NywxMiBAQCBzdGF0aWMgaW50IGdlbjhfcmNz X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gICB7 Cj4gICAjZGVmaW5lIE1CT1hfVVBEQVRFX0RXT1JEUyA4Cj4gICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqc2lnbmFsbGVyID0gc2lnbmFsbGVyX3JlcS0+ZW5naW5lOwo+IC0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHNpZ25hbGxlci0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9yZXEtPmk5MTU7Cj4gICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqd2FpdGVyOwo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAgCWludCByZXQs IG51bV9yaW5nczsKPgo+IC0JbnVtX3JpbmdzID0gaHdlaWdodDMyKElOVEVMX0lORk8oZGV2KS0+ cmluZ19tYXNrKTsKPiArCW51bV9yaW5ncyA9IGh3ZWlnaHQzMihJTlRFTF9JTkZPKGRldl9wcml2 KS0+cmluZ19tYXNrKTsKPiAgIAludW1fZHdvcmRzICs9IChudW1fcmluZ3MtMSkgKiBNQk9YX1VQ REFURV9EV09SRFM7Cj4gICAjdW5kZWYgTUJPWF9VUERBVEVfRFdPUkRTCj4KPiBAQCAtMTMyNiwx MyArMTMwOCwxMiBAQCBzdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gICB7Cj4gICAjZGVmaW5lIE1CT1hfVVBEQVRF X0RXT1JEUyA2Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2lnbmFsbGVyID0gc2lnbmFs bGVyX3JlcS0+ZW5naW5lOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHNpZ25hbGxlci0+ ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHNpZ25hbGxlcl9y ZXEtPmk5MTU7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwo+ICAgCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOwo+ICAgCWludCByZXQsIG51bV9yaW5nczsKPgo+IC0JbnVtX3Jp bmdzID0gaHdlaWdodDMyKElOVEVMX0lORk8oZGV2KS0+cmluZ19tYXNrKTsKPiArCW51bV9yaW5n cyA9IGh3ZWlnaHQzMihJTlRFTF9JTkZPKGRldl9wcml2KS0+cmluZ19tYXNrKTsKPiAgIAludW1f ZHdvcmRzICs9IChudW1fcmluZ3MtMSkgKiBNQk9YX1VQREFURV9EV09SRFM7Cj4gICAjdW5kZWYg TUJPWF9VUERBVEVfRFdPUkRTCj4KPiBAQCAtMTM2NSwxNCArMTM0NiwxMyBAQCBzdGF0aWMgaW50 IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwK PiAgIAkJICAgICAgIHVuc2lnbmVkIGludCBudW1fZHdvcmRzKQo+ICAgewo+ICAgCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnNpZ25hbGxlciA9IHNpZ25hbGxlcl9yZXEtPmVuZ2luZTsKPiAtCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzaWduYWxsZXItPmRldjsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzaWduYWxsZXJfcmVxLT5pOTE1Owo+ICAgCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnVzZWxlc3M7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4g ICAJaW50IHJldCwgbnVtX3JpbmdzOwo+Cj4gICAjZGVmaW5lIE1CT1hfVVBEQVRFX0RXT1JEUyAz Cj4gLQludW1fcmluZ3MgPSBod2VpZ2h0MzIoSU5URUxfSU5GTyhkZXYpLT5yaW5nX21hc2spOwo+ ICsJbnVtX3JpbmdzID0gaHdlaWdodDMyKElOVEVMX0lORk8oZGV2X3ByaXYpLT5yaW5nX21hc2sp Owo+ICAgCW51bV9kd29yZHMgKz0gcm91bmRfdXAoKG51bV9yaW5ncy0xKSAqIE1CT1hfVVBEQVRF X0RXT1JEUywgMik7Cj4gICAjdW5kZWYgTUJPWF9VUERBVEVfRFdPUkRTCj4KPiBAQCAtMTQ2MCwx MCArMTQ0MCw5IEBAIGdlbjhfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxKQo+ICAgCXJldHVybiAwOwo+ICAgfQo+Cj4gLXN0YXRpYyBpbmxpbmUgYm9v bCBpOTE1X2dlbV9oYXNfc2Vxbm9fd3JhcHBlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICtz dGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1faGFzX3NlcW5vX3dyYXBwZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJCQkgICAgICB1MzIgc2Vxbm8pCj4gICB7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ICAgCXJldHVybiBkZXZfcHJpdi0+bGFzdF9zZXFubyA8IHNlcW5vOwo+ICAgfQo+Cj4gQEAgLTE0 ODEsNyArMTQ2MCw3IEBAIGdlbjhfcmluZ19zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqd2FpdGVyX3JlcSwKPiAgIAkgICAgICAgdTMyIHNlcW5vKQo+ICAgewo+ICAgCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKndhaXRlciA9IHdhaXRlcl9yZXEtPmVuZ2luZTsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHdhaXRlci0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHdhaXRlcl9yZXEtPmk5MTU7Cj4g ICAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0Owo+ICAgCWludCByZXQ7Cj4KPiBAQCAtMTUz NSw3ICsxNTE0LDcgQEAgZ2VuNl9yaW5nX3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICp3YWl0ZXJfcmVxLAo+ICAgCQlyZXR1cm4gcmV0Owo+Cj4gICAJLyogSWYgc2Vxbm8gd3JhcCBo YXBwZW5lZCwgb21pdCB0aGUgd2FpdCB3aXRoIG5vLW9wcyAqLwo+IC0JaWYgKGxpa2VseSghaTkx NV9nZW1faGFzX3NlcW5vX3dyYXBwZWQod2FpdGVyLT5kZXYsIHNlcW5vKSkpIHsKPiArCWlmIChs aWtlbHkoIWk5MTVfZ2VtX2hhc19zZXFub193cmFwcGVkKHdhaXRlcl9yZXEtPmk5MTUsIHNlcW5v KSkpIHsKPiAgIAkJaW50ZWxfcmluZ19lbWl0KHdhaXRlciwgZHcxIHwgd2FpdF9tYm94KTsKPiAg IAkJaW50ZWxfcmluZ19lbWl0KHdhaXRlciwgc2Vxbm8pOwo+ICAgCQlpbnRlbF9yaW5nX2VtaXQo d2FpdGVyLCAwKTsKPiBAQCAtMTYxNiw3ICsxNTk1LDcgQEAgcGNfcmVuZGVyX2FkZF9yZXF1ZXN0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgc3RhdGljIHZvaWQKPiAgIGdl bjZfc2Vxbm9fYmFycmllcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3By aXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5 MTU7Cj4KPiAgIAkvKiBXb3JrYXJvdW5kIHRvIGZvcmNlIGNvcnJlY3Qgb3JkZXJpbmcgYmV0d2Vl biBpcnEgYW5kIHNlcW5vIHdyaXRlcyBvbgo+ICAgCSAqIGl2YiAoYW5kIG1heWJlIGFsc28gb24g c25iKSBieSByZWFkaW5nIGZyb20gYSBDUyByZWdpc3RlciAobGlrZQo+IEBAIC0xNjY1LDggKzE2 NDQsNyBAQCBwY19yZW5kZXJfc2V0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwgdTMyIHNlcW5vKQo+ICAgc3RhdGljIGJvb2wKPiAgIGdlbjVfcmluZ19nZXRfaXJxKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAgCWlmIChXQVJO X09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKSkKPiBAQCAtMTY4Myw4ICsxNjYxLDcg QEAgZ2VuNV9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg c3RhdGljIHZvaWQKPiAgIGdlbjVfcmluZ19wdXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4g ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJp di0+aXJxX2xvY2ssIGZsYWdzKTsKPiBAQCAtMTY5Niw4ICsxNjczLDcgQEAgZ2VuNV9yaW5nX3B1 dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3RhdGljIGJvb2wKPiAg IGk5eHhfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9u ZyBmbGFnczsKPgo+ICAgCWlmICghaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSkKPiBAQCAt MTcxNyw4ICsxNjkzLDcgQEAgaTl4eF9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgc3RhdGljIHZvaWQKPiAgIGk5eHhfcmluZ19wdXRfaXJxKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBl bmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAgCXNwaW5fbG9ja19p cnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiBAQCAtMTczMyw4ICsxNzA4LDcg QEAgaTl4eF9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAg c3RhdGljIGJvb2wKPiAgIGk4eHhfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4g ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAgCWlmICghaW50ZWxfaXJxc19lbmFibGVkKGRl dl9wcml2KSkKPiBAQCAtMTc1NCw4ICsxNzI4LDcgQEAgaTh4eF9yaW5nX2dldF9pcnEoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3RhdGljIHZvaWQKPiAgIGk4eHhfcmluZ19w dXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiBAQCAt MTgwOCw4ICsxNzgxLDcgQEAgaTl4eF9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKPiAgIHN0YXRpYyBib29sCj4gICBnZW42X3JpbmdfZ2V0X2lycShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZW5naW5lLT5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZW5naW5lLT5pOTE1Owo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAgIAlpZiAoV0FSTl9P TighaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSkpCj4gQEAgLTE4MTcsMTAgKzE3ODksMTAg QEAgZ2VuNl9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4g ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ICAgCWlm IChlbmdpbmUtPmlycV9yZWZjb3VudCsrID09IDApIHsKPiAtCQlpZiAoSEFTX0wzX0RQRihkZXYp ICYmIGVuZ2luZS0+aWQgPT0gUkNTKQo+ICsJCWlmIChIQVNfTDNfRFBGKGRldl9wcml2KSAmJiBl bmdpbmUtPmlkID09IFJDUykKPiAgIAkJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwKPiAgIAkJCQkg ICAgICAgfihlbmdpbmUtPmlycV9lbmFibGVfbWFzayB8Cj4gLQkJCQkJIEdUX1BBUklUWV9FUlJP UihkZXYpKSk7Cj4gKwkJCQkJIEdUX1BBUklUWV9FUlJPUihkZXZfcHJpdikpKTsKPiAgIAkJZWxz ZQo+ICAgCQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+ZW5naW5lLT5pcnFfZW5hYmxlX21hc2sp Owo+ICAgCQlnZW41X2VuYWJsZV9ndF9pcnEoZGV2X3ByaXYsIGVuZ2luZS0+aXJxX2VuYWJsZV9t YXNrKTsKPiBAQCAtMTgzMywxNCArMTgwNSwxMyBAQCBnZW42X3JpbmdfZ2V0X2lycShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICBzdGF0aWMgdm9pZAo+ICAgZ2VuNl9yaW5nX3B1 dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4g ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ICAgCWlm ICgtLWVuZ2luZS0+aXJxX3JlZmNvdW50ID09IDApIHsKPiAtCQlpZiAoSEFTX0wzX0RQRihkZXYp ICYmIGVuZ2luZS0+aWQgPT0gUkNTKQo+IC0JCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH5HVF9Q QVJJVFlfRVJST1IoZGV2KSk7Cj4gKwkJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYpICYmIGVuZ2lu ZS0+aWQgPT0gUkNTKQo+ICsJCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH5HVF9QQVJJVFlfRVJS T1IoZGV2X3ByaXYpKTsKPiAgIAkJZWxzZQo+ICAgCQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+ MCk7Cj4gICAJCWdlbjVfZGlzYWJsZV9ndF9pcnEoZGV2X3ByaXYsIGVuZ2luZS0+aXJxX2VuYWJs ZV9tYXNrKTsKPiBAQCAtMTg1MSw4ICsxODIyLDcgQEAgZ2VuNl9yaW5nX3B1dF9pcnEoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3RhdGljIGJvb2wKPiAgIGhzd192ZWJveF9n ZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ ICAgCWlmIChXQVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKSkKPiBAQCAtMTg3 MSw4ICsxODQxLDcgQEAgaHN3X3ZlYm94X2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAgc3RhdGljIHZvaWQKPiAgIGhzd192ZWJveF9wdXRfaXJxKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBl bmdpbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdp bmUtPmk5MTU7Cj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAgCXNwaW5fbG9ja19pcnFz YXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiBAQCAtMTg4Niw4ICsxODU1LDcgQEAg aHN3X3ZlYm94X3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgc3Rh dGljIGJvb2wKPiAgIGdlbjhfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmdpbmUtPmRldjsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gICAJ dW5zaWduZWQgbG9uZyBmbGFnczsKPgo+ICAgCWlmIChXQVJOX09OKCFpbnRlbF9pcnFzX2VuYWJs ZWQoZGV2X3ByaXYpKSkKPiBAQCAtMTg5NSw3ICsxODYzLDcgQEAgZ2VuOF9yaW5nX2dldF9pcnEo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICAJc3Bpbl9sb2NrX2lycXNhdmUo JmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ICAgCWlmIChlbmdpbmUtPmlycV9yZWZjb3Vu dCsrID09IDApIHsKPiAtCQlpZiAoSEFTX0wzX0RQRihkZXYpICYmIGVuZ2luZS0+aWQgPT0gUkNT KSB7Cj4gKwkJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKSB7 Cj4gICAJCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsCj4gICAJCQkJICAgICAgIH4oZW5naW5lLT5p cnFfZW5hYmxlX21hc2sgfAo+ICAgCQkJCQkgR1RfUkVOREVSX0wzX1BBUklUWV9FUlJPUl9JTlRF UlJVUFQpKTsKPiBAQCAtMTkxMiwxMyArMTg4MCwxMiBAQCBnZW44X3JpbmdfZ2V0X2lycShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICBzdGF0aWMgdm9pZAo+ICAgZ2VuOF9yaW5n X3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ Cj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ICAg CWlmICgtLWVuZ2luZS0+aXJxX3JlZmNvdW50ID09IDApIHsKPiAtCQlpZiAoSEFTX0wzX0RQRihk ZXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKSB7Cj4gKwkJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYp ICYmIGVuZ2luZS0+aWQgPT0gUkNTKSB7Cj4gICAJCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsCj4g ICAJCQkJICAgICAgIH5HVF9SRU5ERVJfTDNfUEFSSVRZX0VSUk9SX0lOVEVSUlVQVCk7Cj4gICAJ CX0gZWxzZSB7Cj4gQEAgLTIwNDAsMTIgKzIwMDcsMTIgQEAgaTkxNV9kaXNwYXRjaF9leGVjYnVm ZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+Cj4gICBzdGF0aWMgdm9pZCBj bGVhbnVwX3BoeXNfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmdp bmUtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUt Pmk5MTU7Cj4KPiAgIAlpZiAoIWRldl9wcml2LT5zdGF0dXNfcGFnZV9kbWFoKQo+ICAgCQlyZXR1 cm47Cj4KPiAtCWRybV9wY2lfZnJlZShlbmdpbmUtPmRldiwgZGV2X3ByaXYtPnN0YXR1c19wYWdl X2RtYWgpOwo+ICsJZHJtX3BjaV9mcmVlKGRldl9wcml2LT5kZXYsIGRldl9wcml2LT5zdGF0dXNf cGFnZV9kbWFoKTsKPiAgIAllbmdpbmUtPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9IE5VTEw7Cj4g ICB9Cj4KPiBAQCAtMjA3MSw3ICsyMDM4LDcgQEAgc3RhdGljIGludCBpbml0X3N0YXR1c19wYWdl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJdW5zaWduZWQgZmxhZ3M7Cj4g ICAJCWludCByZXQ7Cj4KPiAtCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlKGVuZ2luZS0+ ZGV2LCA0MDk2KTsKPiArCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlKGVuZ2luZS0+aTkx NS0+ZGV2LCA0MDk2KTsKPiAgIAkJaWYgKElTX0VSUihvYmopKSB7Cj4gICAJCQlEUk1fRVJST1Io IkZhaWxlZCB0byBhbGxvY2F0ZSBzdGF0dXMgcGFnZVxuIik7Cj4gICAJCQlyZXR1cm4gUFRSX0VS UihvYmopOwo+IEBAIC0yMDgyLDcgKzIwNDksNyBAQCBzdGF0aWMgaW50IGluaXRfc3RhdHVzX3Bh Z2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQkJZ290byBlcnJfdW5yZWY7 Cj4KPiAgIAkJZmxhZ3MgPSAwOwo+IC0JCWlmICghSEFTX0xMQyhlbmdpbmUtPmRldikpCj4gKwkJ aWYgKCFIQVNfTExDKGVuZ2luZS0+aTkxNSkpCj4gICAJCQkvKiBPbiBnMzMsIHdlIGNhbm5vdCBw bGFjZSBIV1MgYWJvdmUgMjU2TWlCLCBzbwo+ICAgCQkJICogcmVzdHJpY3QgaXRzIHBpbm5pbmcg dG8gdGhlIGxvdyBtYXBwYWJsZSBhcmVuYS4KPiAgIAkJCSAqIFRob3VnaCB0aGlzIHJlc3RyaWN0 aW9uIGlzIG5vdCBkb2N1bWVudGVkIGZvcgo+IEBAIC0yMTE2LDExICsyMDgzLDExIEBAIGVycl91 bnJlZjoKPgo+ICAgc3RhdGljIGludCBpbml0X3BoeXNfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+Cj4gICAJaWYgKCFkZXZfcHJpdi0+c3Rh dHVzX3BhZ2VfZG1haCkgewo+ICAgCQlkZXZfcHJpdi0+c3RhdHVzX3BhZ2VfZG1haCA9Cj4gLQkJ CWRybV9wY2lfYWxsb2MoZW5naW5lLT5kZXYsIFBBR0VfU0laRSwgUEFHRV9TSVpFKTsKPiArCQkJ ZHJtX3BjaV9hbGxvYyhkZXZfcHJpdi0+ZGV2LCBQQUdFX1NJWkUsIFBBR0VfU0laRSk7Cj4gICAJ CWlmICghZGV2X3ByaXYtPnN0YXR1c19wYWdlX2RtYWgpCj4gICAJCQlyZXR1cm4gLUVOT01FTTsK PiAgIAl9Cj4gQEAgLTIxNDYsMTAgKzIxMTMsOSBAQCB2b2lkIGludGVsX3VucGluX3JpbmdidWZm ZXJfb2JqKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQo+ICAgCXJpbmdidWYtPnZt YSA9IE5VTEw7Cj4gICB9Cj4KPiAtaW50IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2Jq KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gK2ludCBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVm ZmVyX29iaihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJICAgICBz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPiAgIHsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqID0gcmluZ2J1Zi0+b2JqOwo+ICAgCS8qIFJpbmcgd3JhcGFyb3VuZCBh dCBvZmZzZXQgMCBzb21ldGltZXMgaGFuZ3MuIE5vIGlkZWEgd2h5LiAqLwo+ICAgCXVuc2lnbmVk IGZsYWdzID0gUElOX09GRlNFVF9CSUFTIHwgNDA5NjsKPiBAQCAtMjI0OCwxMyArMjIxNCwxMyBA QCBpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmdidWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCBpbnQgc2l6ZSkKPiAgIAkgKiBvZiB0aGUgYnVmZmVyLgo+ICAgCSAqLwo+ICAgCXJp bmctPmVmZmVjdGl2ZV9zaXplID0gc2l6ZTsKPiAtCWlmIChJU19JODMwKGVuZ2luZS0+ZGV2KSB8 fCBJU184NDVHKGVuZ2luZS0+ZGV2KSkKPiArCWlmIChJU19JODMwKGVuZ2luZS0+aTkxNSkgfHwg SVNfODQ1RyhlbmdpbmUtPmk5MTUpKQo+ICAgCQlyaW5nLT5lZmZlY3RpdmVfc2l6ZSAtPSAyICog Q0FDSEVMSU5FX0JZVEVTOwo+Cj4gICAJcmluZy0+bGFzdF9yZXRpcmVkX2hlYWQgPSAtMTsKPiAg IAlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nKTsKPgo+IC0JcmV0ID0gaW50ZWxfYWxsb2Nf cmluZ2J1ZmZlcl9vYmooZW5naW5lLT5kZXYsIHJpbmcpOwo+ICsJcmV0ID0gaW50ZWxfYWxsb2Nf cmluZ2J1ZmZlcl9vYmooZW5naW5lLT5pOTE1LT5kZXYsIHJpbmcpOwo+ICAgCWlmIChyZXQpIHsK PiAgIAkJRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIGFsbG9jYXRlIHJpbmdidWZmZXIgJXM6 ICVkXG4iLAo+ICAgCQkJCSBlbmdpbmUtPm5hbWUsIHJldCk7Cj4gQEAgLTIyNzcsMTIgKzIyNDMs MTMgQEAgaW50ZWxfcmluZ2J1ZmZlcl9mcmVlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n KQo+ICAgc3RhdGljIGludCBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gICAJCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gICAJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWY7Cj4gICAJaW50IHJldDsKPgo+ICAgCVdB Uk5fT04oZW5naW5lLT5idWZmZXIpOwo+Cj4gLQllbmdpbmUtPmRldiA9IGRldjsKPiArCWVuZ2lu ZS0+aTkxNSA9IGRldl9wcml2Owo+ICAgCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmFjdGl2ZV9s aXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5yZXF1ZXN0X2xpc3QpOwo+ICAgCUlO SVRfTElTVF9IRUFEKCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKPiBAQCAtMjMwMCw3ICsyMjY3 LDcgQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gICAJfQo+ICAgCWVuZ2luZS0+YnVmZmVyID0gcmluZ2J1ZjsKPgo+IC0JaWYgKEk5 MTVfTkVFRF9HRlhfSFdTKGRldikpIHsKPiArCWlmIChJOTE1X05FRURfR0ZYX0hXUyhkZXZfcHJp dikpIHsKPiAgIAkJcmV0ID0gaW5pdF9zdGF0dXNfcGFnZShlbmdpbmUpOwo+ICAgCQlpZiAocmV0 KQo+ICAgCQkJZ290byBlcnJvcjsKPiBAQCAtMjMxMSw3ICsyMjc4LDcgQEAgc3RhdGljIGludCBp bnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQlnb3Rv IGVycm9yOwo+ICAgCX0KPgo+IC0JcmV0ID0gaW50ZWxfcGluX2FuZF9tYXBfcmluZ2J1ZmZlcl9v YmooZGV2LCByaW5nYnVmKTsKPiArCXJldCA9IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJf b2JqKGRldl9wcml2LCByaW5nYnVmKTsKPiAgIAlpZiAocmV0KSB7Cj4gICAJCURSTV9FUlJPUigi RmFpbGVkIHRvIHBpbiBhbmQgbWFwIHJpbmdidWZmZXIgJXM6ICVkXG4iLAo+ICAgCQkJCWVuZ2lu ZS0+bmFtZSwgcmV0KTsKPiBAQCAtMjMzNywxMSArMjMwNCwxMSBAQCB2b2lkIGludGVsX2NsZWFu dXBfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpZiAoIWludGVs X2VuZ2luZV9pbml0aWFsaXplZChlbmdpbmUpKQo+ICAgCQlyZXR1cm47Cj4KPiAtCWRldl9wcml2 ID0gdG9faTkxNShlbmdpbmUtPmRldik7Cj4gKwlkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPgo+ ICAgCWlmIChlbmdpbmUtPmJ1ZmZlcikgewo+ICAgCQlpbnRlbF9zdG9wX2VuZ2luZShlbmdpbmUp Owo+IC0JCVdBUk5fT04oIUlTX0dFTjIoZW5naW5lLT5kZXYpICYmIChJOTE1X1JFQURfTU9ERShl bmdpbmUpICYgTU9ERV9JRExFKSA9PSAwKTsKPiArCQlXQVJOX09OKCFJU19HRU4yKGRldl9wcml2 KSAmJiAoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURMRSkgPT0gMCk7Cj4KPiAgIAkJ aW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooZW5naW5lLT5idWZmZXIpOwo+ICAgCQlpbnRlbF9y aW5nYnVmZmVyX2ZyZWUoZW5naW5lLT5idWZmZXIpOwo+IEBAIC0yMzUxLDcgKzIzMTgsNyBAQCB2 b2lkIGludGVsX2NsZWFudXBfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIAlpZiAoZW5naW5lLT5jbGVhbnVwKQo+ICAgCQllbmdpbmUtPmNsZWFudXAoZW5naW5lKTsK Pgo+IC0JaWYgKEk5MTVfTkVFRF9HRlhfSFdTKGVuZ2luZS0+ZGV2KSkgewo+ICsJaWYgKEk5MTVf TkVFRF9HRlhfSFdTKGRldl9wcml2KSkgewo+ICAgCQljbGVhbnVwX3N0YXR1c19wYWdlKGVuZ2lu ZSk7Cj4gICAJfSBlbHNlIHsKPiAgIAkJV0FSTl9PTihlbmdpbmUtPmlkICE9IFJDUyk7Cj4gQEAg LTIzNjAsNyArMjMyNyw3IEBAIHZvaWQgaW50ZWxfY2xlYW51cF9lbmdpbmUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICAJaTkxNV9jbWRfcGFyc2VyX2ZpbmlfcmluZyhlbmdp bmUpOwo+ICAgCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfZmluaSgmZW5naW5lLT5iYXRjaF9wb29sKTsK PiAtCWVuZ2luZS0+ZGV2ID0gTlVMTDsKPiArCWVuZ2luZS0+aTkxNSA9IE5VTEw7Cj4gICB9Cj4K PiAgIGludCBpbnRlbF9lbmdpbmVfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gQEAgLTI1MjYsNyArMjQ5Myw3IEBAIGludCBpbnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPgo+ICAgdm9pZCBpbnRlbF9yaW5nX2lu aXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCj4gICB7 Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuZ2luZS0+ ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkx NTsKPgo+ICAgCS8qIE91ciBzZW1hcGhvcmUgaW1wbGVtZW50YXRpb24gaXMgc3RyaWN0bHkgbW9u b3RvbmljIChpLmUuIHdlIHByb2NlZWQKPiAgIAkgKiBzbyBsb25nIGFzIHRoZSBzZW1hcGhvcmUg dmFsdWUgaW4gdGhlIHJlZ2lzdGVyL3BhZ2UgaXMgZ3JlYXRlcgo+IEBAIC0yNTYyLDcgKzI1Mjks NyBAQCB2b2lkIGludGVsX3JpbmdfaW5pdF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIHUzMiBzZXFubykKPiAgIHN0YXRpYyB2b2lkIGdlbjZfYnNkX3Jpbmdfd3JpdGVfdGFp bChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCQkJICAgICB1MzIgdmFsdWUp Cj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRl di0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBl bmdpbmUtPmk5MTU7Cj4KPiAgICAgICAgICAvKiBFdmVyeSB0YWlsIG1vdmUgbXVzdCBmb2xsb3cg dGhlIHNlcXVlbmNlIGJlbG93ICovCj4KPiBAQCAtMjYwNCw3ICsyNTcxLDcgQEAgc3RhdGljIGlu dCBnZW42X2JzZF9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAgCQlyZXR1cm4gcmV0Owo+Cj4gICAJY21kID0gTUlfRkxVU0hfRFc7Cj4gLQlpZiAoSU5URUxf SU5GTyhlbmdpbmUtPmRldiktPmdlbiA+PSA4KQo+ICsJaWYgKElOVEVMX0dFTihyZXEtPmk5MTUp ID49IDgpCj4gICAJCWNtZCArPSAxOwo+Cj4gICAJLyogV2UgYWx3YXlzIHJlcXVpcmUgYSBjb21t YW5kIGJhcnJpZXIgc28gdGhhdCBzdWJzZXF1ZW50Cj4gQEAgLTI2MjYsNyArMjU5Myw3IEBAIHN0 YXRpYyBpbnQgZ2VuNl9ic2RfcmluZ19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKPiAgIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBjbWQpOwo+ICAgCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsCj4gICAJCQlJOTE1X0dFTV9IV1NfU0NSQVRDSF9BRERSIHwgTUlfRkxVU0hf RFdfVVNFX0dUVCk7Cj4gLQlpZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldiktPmdlbiA+PSA4KSB7 Cj4gKwlpZiAoSU5URUxfR0VOKHJlcS0+aTkxNSkgPj0gOCkgewo+ICAgCQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCAwKTsgLyogdXBwZXIgYWRkciAqLwo+ICAgCQlpbnRlbF9yaW5nX2VtaXQoZW5n aW5lLCAwKTsgLyogdmFsdWUgKi8KPiAgIAl9IGVsc2UgIHsKPiBAQCAtMjcxNyw3ICsyNjg0LDYg QEAgc3RhdGljIGludCBnZW42X3JpbmdfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCj4gICAJCQkgICB1MzIgaW52YWxpZGF0ZSwgdTMyIGZsdXNoKQo+ICAgewo+ICAgCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2Owo+ICAgCXVpbnQzMl90IGNtZDsKPiAgIAlpbnQg cmV0Owo+Cj4gQEAgLTI3MjYsNyArMjY5Miw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9yaW5nX2ZsdXNo KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQlyZXR1cm4gcmV0Owo+Cj4g ICAJY21kID0gTUlfRkxVU0hfRFc7Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkK PiArCWlmIChJTlRFTF9HRU4ocmVxLT5pOTE1KSA+PSA4KQo+ICAgCQljbWQgKz0gMTsKPgo+ICAg CS8qIFdlIGFsd2F5cyByZXF1aXJlIGEgY29tbWFuZCBiYXJyaWVyIHNvIHRoYXQgc3Vic2VxdWVu dAo+IEBAIC0yNzQ3LDcgKzI3MTMsNyBAQCBzdGF0aWMgaW50IGdlbjZfcmluZ19mbHVzaChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5l LCBjbWQpOwo+ICAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsCj4gICAJCQlJOTE1X0dFTV9IV1Nf U0NSQVRDSF9BRERSIHwgTUlfRkxVU0hfRFdfVVNFX0dUVCk7Cj4gLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gOCkgewo+ICsJaWYgKElOVEVMX0dFTihyZXEtPmk5MTUpID49IDgpIHsKPiAg IAkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7IC8qIHVwcGVyIGFkZHIgKi8KPiAgIAkJaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7IC8qIHZhbHVlICovCj4gICAJfSBlbHNlICB7Cj4gQEAg LTI3NzIsOCArMjczOCw4IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCWVuZ2luZS0+aHdfaWQgPSAwOwo+ICAgCWVuZ2luZS0+ bW1pb19iYXNlID0gUkVOREVSX1JJTkdfQkFTRTsKPgo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDgpIHsKPiAtCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXYpKSB7Cj4g KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4gKwkJaWYgKGk5MTVfc2VtYXBob3Jl X2lzX2VuYWJsZWQoZGV2X3ByaXYpKSB7Cj4gICAJCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3Jl YXRlKGRldiwgNDA5Nik7Cj4gICAJCQlpZiAoSVNfRVJSKG9iaikpIHsKPiAgIAkJCQlEUk1fRVJS T1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBzZW1hcGhvcmUgYm8uIERpc2FibGluZyBzZW1hcGhvcmVz XG4iKTsKPiBAQCAtMjc5OCwxNyArMjc2NCwxNyBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmlu Z19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJZW5naW5lLT5pcnFfZW5hYmxl X21hc2sgPSBHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQ7Cj4gICAJCWVuZ2luZS0+Z2V0X3NlcW5v ID0gcmluZ19nZXRfc2Vxbm87Cj4gICAJCWVuZ2luZS0+c2V0X3NlcW5vID0gcmluZ19zZXRfc2Vx bm87Cj4gLQkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2KSkgewo+ICsJCWlmIChp OTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldl9wcml2KSkgewo+ICAgCQkJV0FSTl9PTighZGV2 X3ByaXYtPnNlbWFwaG9yZV9vYmopOwo+ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUuc3luY190byA9 IGdlbjhfcmluZ19zeW5jOwo+ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsID0gZ2VuOF9y Y3Nfc2lnbmFsOwo+ICAgCQkJR0VOOF9SSU5HX1NFTUFQSE9SRV9JTklUKGVuZ2luZSk7Cj4gICAJ CX0KPiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikgewo+ICsJfSBlbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiAgIAkJZW5naW5lLT5pbml0X2NvbnRl eHQgPSBpbnRlbF9yY3NfY3R4X2luaXQ7Cj4gICAJCWVuZ2luZS0+YWRkX3JlcXVlc3QgPSBnZW42 X2FkZF9yZXF1ZXN0Owo+ICAgCQllbmdpbmUtPmZsdXNoID0gZ2VuN19yZW5kZXJfcmluZ19mbHVz aDsKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gNikKPiArCQlpZiAoSVNfR0VONihk ZXZfcHJpdikpCj4gICAJCQllbmdpbmUtPmZsdXNoID0gZ2VuNl9yZW5kZXJfcmluZ19mbHVzaDsK PiAgIAkJZW5naW5lLT5pcnFfZ2V0ID0gZ2VuNl9yaW5nX2dldF9pcnE7Cj4gICAJCWVuZ2luZS0+ aXJxX3B1dCA9IGdlbjZfcmluZ19wdXRfaXJxOwo+IEBAIC0yODE2LDcgKzI3ODIsNyBAQCBpbnQg aW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg IAkJZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllciA9IGdlbjZfc2Vxbm9fYmFycmllcjsKPiAgIAkJ ZW5naW5lLT5nZXRfc2Vxbm8gPSByaW5nX2dldF9zZXFubzsKPiAgIAkJZW5naW5lLT5zZXRfc2Vx bm8gPSByaW5nX3NldF9zZXFubzsKPiAtCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChk ZXYpKSB7Cj4gKwkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2X3ByaXYpKSB7Cj4g ICAJCQllbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuNl9yaW5nX3N5bmM7Cj4gICAJCQll bmdpbmUtPnNlbWFwaG9yZS5zaWduYWwgPSBnZW42X3NpZ25hbDsKPiAgIAkJCS8qCj4gQEAgLTI4 MzcsNyArMjgwMyw3IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUubWJveC5zaWduYWxbVkVD U10gPSBHRU42X1ZFUlNZTkM7Cj4gICAJCQllbmdpbmUtPnNlbWFwaG9yZS5tYm94LnNpZ25hbFtW Q1MyXSA9IEdFTjZfTk9TWU5DOwo+ICAgCQl9Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjUoZGV2KSkg ewo+ICsJfSBlbHNlIGlmIChJU19HRU41KGRldl9wcml2KSkgewo+ICAgCQllbmdpbmUtPmFkZF9y ZXF1ZXN0ID0gcGNfcmVuZGVyX2FkZF9yZXF1ZXN0Owo+ICAgCQllbmdpbmUtPmZsdXNoID0gZ2Vu NF9yZW5kZXJfcmluZ19mbHVzaDsKPiAgIAkJZW5naW5lLT5nZXRfc2Vxbm8gPSBwY19yZW5kZXJf Z2V0X3NlcW5vOwo+IEBAIC0yODQ4LDEzICsyODE0LDEzIEBAIGludCBpbnRlbF9pbml0X3JlbmRl cl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQkJCQlHVF9SRU5ERVJf UElQRUNUTF9OT1RJRllfSU5URVJSVVBUOwo+ICAgCX0gZWxzZSB7Cj4gICAJCWVuZ2luZS0+YWRk X3JlcXVlc3QgPSBpOXh4X2FkZF9yZXF1ZXN0Owo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA8IDQpCj4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KQo+ICAgCQkJZW5naW5lLT5m bHVzaCA9IGdlbjJfcmVuZGVyX3JpbmdfZmx1c2g7Cj4gICAJCWVsc2UKPiAgIAkJCWVuZ2luZS0+ Zmx1c2ggPSBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoOwo+ICAgCQllbmdpbmUtPmdldF9zZXFubyA9 IHJpbmdfZ2V0X3NlcW5vOwo+ICAgCQllbmdpbmUtPnNldF9zZXFubyA9IHJpbmdfc2V0X3NlcW5v Owo+IC0JCWlmIChJU19HRU4yKGRldikpIHsKPiArCQlpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsK PiAgIAkJCWVuZ2luZS0+aXJxX2dldCA9IGk4eHhfcmluZ19nZXRfaXJxOwo+ICAgCQkJZW5naW5l LT5pcnFfcHV0ID0gaTh4eF9yaW5nX3B1dF9pcnE7Cj4gICAJCX0gZWxzZSB7Cj4gQEAgLTI4NjUs MTUgKzI4MzEsMTUgQEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gICAJfQo+ICAgCWVuZ2luZS0+d3JpdGVfdGFpbCA9IHJpbmdfd3Jp dGVfdGFpbDsKPgo+IC0JaWYgKElTX0hBU1dFTEwoZGV2KSkKPiArCWlmIChJU19IQVNXRUxMKGRl dl9wcml2KSkKPiAgIAkJZW5naW5lLT5kaXNwYXRjaF9leGVjYnVmZmVyID0gaHN3X3JpbmdfZGlz cGF0Y2hfZXhlY2J1ZmZlcjsKPiAtCWVsc2UgaWYgKElTX0dFTjgoZGV2KSkKPiArCWVsc2UgaWYg KElTX0dFTjgoZGV2X3ByaXYpKQo+ICAgCQllbmdpbmUtPmRpc3BhdGNoX2V4ZWNidWZmZXIgPSBn ZW44X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAtCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDYpCj4gKwllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gICAJ CWVuZ2luZS0+ZGlzcGF0Y2hfZXhlY2J1ZmZlciA9IGdlbjZfcmluZ19kaXNwYXRjaF9leGVjYnVm ZmVyOwo+IC0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKPiArCWVsc2UgaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKPiAgIAkJZW5naW5lLT5kaXNwYXRjaF9leGVjYnVm ZmVyID0gaTk2NV9kaXNwYXRjaF9leGVjYnVmZmVyOwo+IC0JZWxzZSBpZiAoSVNfSTgzMChkZXYp IHx8IElTXzg0NUcoZGV2KSkKPiArCWVsc2UgaWYgKElTX0k4MzAoZGV2X3ByaXYpIHx8IElTXzg0 NUcoZGV2X3ByaXYpKQo+ICAgCQllbmdpbmUtPmRpc3BhdGNoX2V4ZWNidWZmZXIgPSBpODMwX2Rp c3BhdGNoX2V4ZWNidWZmZXI7Cj4gICAJZWxzZQo+ICAgCQllbmdpbmUtPmRpc3BhdGNoX2V4ZWNi dWZmZXIgPSBpOTE1X2Rpc3BhdGNoX2V4ZWNidWZmZXI7Cj4gQEAgLTI4ODEsNyArMjg0Nyw3IEBA IGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAgCWVuZ2luZS0+Y2xlYW51cCA9IHJlbmRlcl9yaW5nX2NsZWFudXA7Cj4KPiAgIAkvKiBX b3JrYXJvdW5kIGJhdGNoYnVmZmVyIHRvIGNvbWJhdCBDUyB0bGIgYnVnLiAqLwo+IC0JaWYgKEhB U19CUk9LRU5fQ1NfVExCKGRldikpIHsKPiArCWlmIChIQVNfQlJPS0VOX0NTX1RMQihkZXZfcHJp dikpIHsKPiAgIAkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZShkZXYsIEk4MzBfV0FfU0la RSk7Cj4gICAJCWlmIChJU19FUlIob2JqKSkgewo+ICAgCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g YWxsb2NhdGUgYmF0Y2ggYm9cbiIpOwo+IEBAIC0yOTAzLDcgKzI4NjksNyBAQCBpbnQgaW50ZWxf aW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlpZiAo cmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g NSkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgewo+ICAgCQlyZXQgPSBpbnRl bF9pbml0X3BpcGVfY29udHJvbChlbmdpbmUpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJu IHJldDsKPiBAQCAtMjkyMywyNCArMjg4OSwyNCBAQCBpbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19i dWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAllbmdpbmUtPmh3X2lkID0gMTsKPgo+ ICAgCWVuZ2luZS0+d3JpdGVfdGFpbCA9IHJpbmdfd3JpdGVfdGFpbDsKPiAtCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA2KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7 Cj4gICAJCWVuZ2luZS0+bW1pb19iYXNlID0gR0VONl9CU0RfUklOR19CQVNFOwo+ICAgCQkvKiBn ZW42IGJzZCBuZWVkcyBhIHNwZWNpYWwgd2EgZm9yIHRhaWwgdXBkYXRlcyAqLwo+IC0JCWlmIChJ U19HRU42KGRldikpCj4gKwkJaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICAgCQkJZW5naW5lLT53 cml0ZV90YWlsID0gZ2VuNl9ic2RfcmluZ193cml0ZV90YWlsOwo+ICAgCQllbmdpbmUtPmZsdXNo ID0gZ2VuNl9ic2RfcmluZ19mbHVzaDsKPiAgIAkJZW5naW5lLT5hZGRfcmVxdWVzdCA9IGdlbjZf YWRkX3JlcXVlc3Q7Cj4gICAJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIgPSBnZW42X3NlcW5v X2JhcnJpZXI7Cj4gICAJCWVuZ2luZS0+Z2V0X3NlcW5vID0gcmluZ19nZXRfc2Vxbm87Cj4gICAJ CWVuZ2luZS0+c2V0X3NlcW5vID0gcmluZ19zZXRfc2Vxbm87Cj4gLQkJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDgpIHsKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4g ICAJCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9Cj4gICAJCQkJR1RfUkVOREVSX1VTRVJfSU5U RVJSVVBUIDw8IEdFTjhfVkNTMV9JUlFfU0hJRlQ7Cj4gICAJCQllbmdpbmUtPmlycV9nZXQgPSBn ZW44X3JpbmdfZ2V0X2lycTsKPiAgIAkJCWVuZ2luZS0+aXJxX3B1dCA9IGdlbjhfcmluZ19wdXRf aXJxOwo+ICAgCQkJZW5naW5lLT5kaXNwYXRjaF9leGVjYnVmZmVyID0KPiAgIAkJCQlnZW44X3Jp bmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAtCQkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJs ZWQoZGV2KSkgewo+ICsJCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJpdikp IHsKPiAgIAkJCQllbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuOF9yaW5nX3N5bmM7Cj4g ICAJCQkJZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsID0gZ2VuOF94Y3Nfc2lnbmFsOwo+ICAgCQkJ CUdFTjhfUklOR19TRU1BUEhPUkVfSU5JVChlbmdpbmUpOwo+IEBAIC0yOTUxLDcgKzI5MTcsNyBA QCBpbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgIAkJCWVuZ2luZS0+aXJxX3B1dCA9IGdlbjZfcmluZ19wdXRfaXJxOwo+ICAgCQkJZW5naW5l LT5kaXNwYXRjaF9leGVjYnVmZmVyID0KPiAgIAkJCQlnZW42X3JpbmdfZGlzcGF0Y2hfZXhlY2J1 ZmZlcjsKPiAtCQkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2KSkgewo+ICsJCQlp ZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJpdikpIHsKPiAgIAkJCQllbmdpbmUt PnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuNl9yaW5nX3N5bmM7Cj4gICAJCQkJZW5naW5lLT5zZW1h cGhvcmUuc2lnbmFsID0gZ2VuNl9zaWduYWw7Cj4gICAJCQkJZW5naW5lLT5zZW1hcGhvcmUubWJv eC53YWl0W1JDU10gPSBNSV9TRU1BUEhPUkVfU1lOQ19WUjsKPiBAQCAtMjk3Miw3ICsyOTM4LDcg QEAgaW50IGludGVsX2luaXRfYnNkX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gICAJCWVuZ2luZS0+YWRkX3JlcXVlc3QgPSBpOXh4X2FkZF9yZXF1ZXN0Owo+ICAgCQllbmdp bmUtPmdldF9zZXFubyA9IHJpbmdfZ2V0X3NlcW5vOwo+ICAgCQllbmdpbmUtPnNldF9zZXFubyA9 IHJpbmdfc2V0X3NlcW5vOwo+IC0JCWlmIChJU19HRU41KGRldikpIHsKPiArCQlpZiAoSVNfR0VO NShkZXZfcHJpdikpIHsKPiAgIAkJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gSUxLX0JTRF9V U0VSX0lOVEVSUlVQVDsKPiAgIAkJCWVuZ2luZS0+aXJxX2dldCA9IGdlbjVfcmluZ19nZXRfaXJx Owo+ICAgCQkJZW5naW5lLT5pcnFfcHV0ID0gZ2VuNV9yaW5nX3B1dF9pcnE7Cj4gQEAgLTMwMTQs NyArMjk4MCw3IEBAIGludCBpbnRlbF9pbml0X2JzZDJfcmluZ19idWZmZXIoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgIAllbmdpbmUtPmlycV9wdXQgPSBnZW44X3JpbmdfcHV0X2lycTsKPiAg IAllbmdpbmUtPmRpc3BhdGNoX2V4ZWNidWZmZXIgPQo+ICAgCQkJZ2VuOF9yaW5nX2Rpc3BhdGNo X2V4ZWNidWZmZXI7Cj4gLQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXYpKSB7Cj4g KwlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJpdikpIHsKPiAgIAkJZW5naW5l LT5zZW1hcGhvcmUuc3luY190byA9IGdlbjhfcmluZ19zeW5jOwo+ICAgCQllbmdpbmUtPnNlbWFw aG9yZS5zaWduYWwgPSBnZW44X3hjc19zaWduYWw7Cj4gICAJCUdFTjhfUklOR19TRU1BUEhPUkVf SU5JVChlbmdpbmUpOwo+IEBAIC0zMDQxLDEzICszMDA3LDEzIEBAIGludCBpbnRlbF9pbml0X2Js dF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCWVuZ2luZS0+aXJxX3Nl cW5vX2JhcnJpZXIgPSBnZW42X3NlcW5vX2JhcnJpZXI7Cj4gICAJZW5naW5lLT5nZXRfc2Vxbm8g PSByaW5nX2dldF9zZXFubzsKPiAgIAllbmdpbmUtPnNldF9zZXFubyA9IHJpbmdfc2V0X3NlcW5v Owo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKPiArCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDgpIHsKPiAgIAkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPQo+ICAgCQkJ R1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfQkNTX0lSUV9TSElGVDsKPiAgIAkJZW5n aW5lLT5pcnFfZ2V0ID0gZ2VuOF9yaW5nX2dldF9pcnE7Cj4gICAJCWVuZ2luZS0+aXJxX3B1dCA9 IGdlbjhfcmluZ19wdXRfaXJxOwo+ICAgCQllbmdpbmUtPmRpc3BhdGNoX2V4ZWNidWZmZXIgPSBn ZW44X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAtCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNf ZW5hYmxlZChkZXYpKSB7Cj4gKwkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2X3By aXYpKSB7Cj4gICAJCQllbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuOF9yaW5nX3N5bmM7 Cj4gICAJCQllbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwgPSBnZW44X3hjc19zaWduYWw7Cj4gICAJ CQlHRU44X1JJTkdfU0VNQVBIT1JFX0lOSVQoZW5naW5lKTsKPiBAQCAtMzA1Nyw3ICszMDIzLDcg QEAgaW50IGludGVsX2luaXRfYmx0X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gICAJCWVuZ2luZS0+aXJxX2dldCA9IGdlbjZfcmluZ19nZXRfaXJxOwo+ICAgCQllbmdpbmUt PmlycV9wdXQgPSBnZW42X3JpbmdfcHV0X2lycTsKPiAgIAkJZW5naW5lLT5kaXNwYXRjaF9leGVj YnVmZmVyID0gZ2VuNl9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXI7Cj4gLQkJaWYgKGk5MTVfc2Vt YXBob3JlX2lzX2VuYWJsZWQoZGV2KSkgewo+ICsJCWlmIChpOTE1X3NlbWFwaG9yZV9pc19lbmFi bGVkKGRldl9wcml2KSkgewo+ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsID0gZ2VuNl9z aWduYWw7Cj4gICAJCQllbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuNl9yaW5nX3N5bmM7 Cj4gICAJCQkvKgo+IEBAIC0zMTAyLDEzICszMDY4LDEzIEBAIGludCBpbnRlbF9pbml0X3ZlYm94 X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJZW5naW5lLT5nZXRfc2Vx bm8gPSByaW5nX2dldF9zZXFubzsKPiAgIAllbmdpbmUtPnNldF9zZXFubyA9IHJpbmdfc2V0X3Nl cW5vOwo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+ICsJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOCkgewo+ICAgCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9Cj4g ICAJCQlHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9WRUNTX0lSUV9TSElGVDsKPiAg IAkJZW5naW5lLT5pcnFfZ2V0ID0gZ2VuOF9yaW5nX2dldF9pcnE7Cj4gICAJCWVuZ2luZS0+aXJx X3B1dCA9IGdlbjhfcmluZ19wdXRfaXJxOwo+ICAgCQllbmdpbmUtPmRpc3BhdGNoX2V4ZWNidWZm ZXIgPSBnZW44X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAtCQlpZiAoaTkxNV9zZW1hcGhv cmVfaXNfZW5hYmxlZChkZXYpKSB7Cj4gKwkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQo ZGV2X3ByaXYpKSB7Cj4gICAJCQllbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuOF9yaW5n X3N5bmM7Cj4gICAJCQllbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwgPSBnZW44X3hjc19zaWduYWw7 Cj4gICAJCQlHRU44X1JJTkdfU0VNQVBIT1JFX0lOSVQoZW5naW5lKTsKPiBAQCAtMzExOCw3ICsz MDg0LDcgQEAgaW50IGludGVsX2luaXRfdmVib3hfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgIAkJZW5naW5lLT5pcnFfZ2V0ID0gaHN3X3ZlYm94X2dldF9pcnE7Cj4gICAJ CWVuZ2luZS0+aXJxX3B1dCA9IGhzd192ZWJveF9wdXRfaXJxOwo+ICAgCQllbmdpbmUtPmRpc3Bh dGNoX2V4ZWNidWZmZXIgPSBnZW42X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAtCQlpZiAo aTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXYpKSB7Cj4gKwkJaWYgKGk5MTVfc2VtYXBob3Jl X2lzX2VuYWJsZWQoZGV2X3ByaXYpKSB7Cj4gICAJCQllbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3Rv ID0gZ2VuNl9yaW5nX3N5bmM7Cj4gICAJCQllbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwgPSBnZW42 X3NpZ25hbDsKPiAgIAkJCWVuZ2luZS0+c2VtYXBob3JlLm1ib3gud2FpdFtSQ1NdID0gTUlfU0VN QVBIT1JFX1NZTkNfVkVSOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK PiBpbmRleCA3MjNmZjYxNjBmYmIuLjkyOWU3YjRhZjJhNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtMTQxLDcgKzE0MSw4IEBAIHN0cnVjdCAgaTkx NV9jdHhfd29ya2Fyb3VuZHMgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Cj4gICB9Owo+Cj4gLXN0cnVjdCAgaW50ZWxfZW5naW5lX2NzIHsKPiArc3RydWN0IGludGVsX2Vu Z2luZV9jcyB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiAgIAljb25zdCBj aGFyCSpuYW1lOwo+ICAgCWVudW0gaW50ZWxfZW5naW5lX2lkIHsKPiAgIAkJUkNTID0gMCwKPiBA QCAtMTU2LDcgKzE1Nyw2IEBAIHN0cnVjdCAgaW50ZWxfZW5naW5lX2NzIHsKPiAgIAl1bnNpZ25l ZCBpbnQgaHdfaWQ7Cj4gICAJdW5zaWduZWQgaW50IGd1Y19pZDsgLyogWFhYIHNhbWUgYXMgaHdf aWQ/ICovCj4gICAJdTMyCQltbWlvX2Jhc2U7Cj4gLQlzdHJ1Y3QJCWRybV9kZXZpY2UgKmRldjsK PiAgIAlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqYnVmZmVyOwo+ICAgCXN0cnVjdCBsaXN0X2hl YWQgYnVmZmVyczsKPgo+IEBAIC0zNTAsNyArMzUwLDcgQEAgc3RydWN0ICBpbnRlbF9lbmdpbmVf Y3Mgewo+ICAgc3RhdGljIGlubGluZSBib29sCj4gICBpbnRlbF9lbmdpbmVfaW5pdGlhbGl6ZWQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0JcmV0dXJuIGVuZ2luZS0+ ZGV2ICE9IE5VTEw7Cj4gKwlyZXR1cm4gZW5naW5lLT5pOTE1ICE9IE5VTEw7Cj4gICB9Cj4KPiAg IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQKPiBAQCAtNDI1LDcgKzQyNSw3IEBAIGludGVsX3dyaXRl X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPgo+ICAgc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKgo+ICAgaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nYnVmZmVyKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHNpemUpOwo+IC1pbnQgaW50ZWxfcGlu X2FuZF9tYXBfcmluZ2J1ZmZlcl9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAraW50IGlu dGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsK PiAgIHZvaWQgaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmdidWYpOwo+ICAgdm9pZCBpbnRlbF9yaW5nYnVmZmVyX2ZyZWUoc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmcpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gaW5k ZXggNGYxZGZlNjE2ODU2Li40ZWEyYmYyYzJhNGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91bmNvcmUuYwo+IEBAIC0xMzgxLDcgKzEzODEsNyBAQCB2b2lkIGludGVsX3VuY29yZV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWJyZWFrOwo+ICAgCX0KPgo+IC0JaWYgKGlu dGVsX3ZncHVfYWN0aXZlKGRldikpIHsKPiArCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJp dikpIHsKPiAgIAkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKHZncHUpOwo+ICAgCQlBU1NJR05f UkVBRF9NTUlPX1ZGVU5DUyh2Z3B1KTsKPiAgIAl9Cj4gQEAgLTE2NjMsOCArMTY2Myw4IEBAIHN0 YXRpYyBpbnQgd2FpdF9mb3JfcmVnaXN0ZXJfZncoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+Cj4gICBzdGF0aWMgaW50IGdlbjhfcmVxdWVzdF9lbmdpbmVfcmVzZXQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICAgCWludCByZXQ7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4KPiAg IAlJOTE1X1dSSVRFX0ZXKFJJTkdfUkVTRVRfQ1RMKGVuZ2luZS0+bW1pb19iYXNlKSwKPiAgIAkJ ICAgICAgX01BU0tFRF9CSVRfRU5BQkxFKFJFU0VUX0NUTF9SRVFVRVNUX1JFU0VUKSk7Cj4gQEAg LTE2ODIsNyArMTY4Miw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9yZXF1ZXN0X2VuZ2luZV9yZXNldChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgIHN0YXRpYyB2b2lkIGdlbjhfdW5y ZXF1ZXN0X2VuZ2luZV9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7 Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2 X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUt Pmk5MTU7Cj4KPiAgIAlJOTE1X1dSSVRFX0ZXKFJJTkdfUkVTRVRfQ1RMKGVuZ2luZS0+bW1pb19i YXNlKSwKPiAgIAkJICAgICAgX01BU0tFRF9CSVRfRElTQUJMRShSRVNFVF9DVExfUkVRVUVTVF9S RVNFVCkpOwo+IEBAIC0xODAyLDEwICsxODAyLDEwIEBAIGludGVsX3VuY29yZV9mb3JjZXdha2Vf Zm9yX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgewo+ICAgCWVu dW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWluczsKPgo+IC0JaWYgKGludGVsX3ZncHVfYWN0 aXZlKGRldl9wcml2LT5kZXYpKQo+ICsJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSkK PiAgIAkJcmV0dXJuIDA7Cj4KPiAtCXN3aXRjaCAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbikg ewo+ICsJc3dpdGNoIChJTlRFTF9HRU4oZGV2X3ByaXYpKSB7Cj4gICAJY2FzZSA5Ogo+ICAgCQlm d19kb21haW5zID0gX19nZW45X3JlZ19yZWFkX2Z3X2RvbWFpbnMoaTkxNV9tbWlvX3JlZ19vZmZz ZXQocmVnKSk7Cj4gICAJCWJyZWFrOwo+IEBAIC0xODQyLDEwICsxODQyLDEwIEBAIGludGVsX3Vu Y29yZV9mb3JjZXdha2VfZm9yX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgIHsKPiAgIAllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnM7Cj4KPiAtCWlm IChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdi0+ZGV2KSkKPiArCWlmIChpbnRlbF92Z3B1X2Fj dGl2ZShkZXZfcHJpdikpCj4gICAJCXJldHVybiAwOwo+Cj4gLQlzd2l0Y2ggKElOVEVMX0lORk8o ZGV2X3ByaXYpLT5nZW4pIHsKPiArCXN3aXRjaCAoSU5URUxfR0VOKGRldl9wcml2KSkgewo+ICAg CWNhc2UgOToKPiAgIAkJZndfZG9tYWlucyA9IF9fZ2VuOV9yZWdfd3JpdGVfZndfZG9tYWlucyhp OTE1X21taW9fcmVnX29mZnNldChyZWcpKTsKPiAgIAkJYnJlYWs7Cj4KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==