From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/5] drm/i915: Separate cherryview from valleyview Date: Wed, 9 Dec 2015 19:10:36 +0200 Message-ID: <20151209171036.GJ4437@intel.com> References: <20151208115138.GQ4437@intel.com> <1449604013-462-1-git-send-email-wayne.boyer@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id B33A96E248 for ; Wed, 9 Dec 2015 09:10:40 -0800 (PST) Content-Disposition: inline In-Reply-To: <1449604013-462-1-git-send-email-wayne.boyer@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Wayne Boyer Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMDgsIDIwMTUgYXQgMTE6NDY6NTNBTSAtMDgwMCwgV2F5bmUgQm95ZXIgd3Jv dGU6Cj4gVGhlIGNoZXJyeXZpZXcgZGV2aWNlIHNoYXJlcyBtYW55IGNoYXJhY3RlcmlzdGljcyB3 aXRoIHRoZSB2YWxsZXl2aWV3Cj4gZGV2aWNlLiAgV2hlbiBzdXBwb3J0IHdhcyBhZGRlZCB0byB0 aGUgZHJpdmVyIGZvciBjaGVycnl2aWV3LCB0aGUKPiBjb3JyZXNwb25kaW5nIGRldmljZSBpbmZv IHN0cnVjdHVyZSBpbmNsdWRlZCAuaXNfdmFsbGV5dmlldyA9IDEuCj4gVGhpcyBpcyBub3QgY29y cmVjdCBhbmQgbGVhZHMgdG8gc29tZSBjb25mdXNpb24uCj4gCj4gVGhpcyBwYXRjaCBjaGFuZ2Vz IC5pc192YWxsZXl2aWV3IHRvIC5pc19jaGVycnl2aWV3IGluIHRoZSBjaGVycnl2aWV3Cj4gZGV2 aWNlIGluZm8gc3RydWN0dXJlIGFuZCBzaW1wbGlmaWVzIHRoZSBJU19DSEVSUllWSUVXIG1hY3Jv Lgo+IFRoZW4gd2hlcmUgYXBwcm9wcmlhdGUsIGluc3RhbmNlcyBvZiBJU19WQUxMRVlWSUVXIGFy ZSByZXBsYWNlZCB3aXRoCj4gSVNfVkFMTEVZVklFVyB8fCBJU19DSEVSUllWSUVXIG9yIGVxdWl2 YWxlbnQuCj4gCj4gdjI6IFVzZSBJU19WQUxMRVlWSUVXIHx8IElTX0NIRVJSWVZJRVcgaW5zdGVh ZCBvZiBkZWZpbmluZyBhIG5ldyBtYWNyby4KPiAgICAgQWxzbyBhZGQgZm9sbG93dXAgcGF0Y2hl cyB0byBmaXggaXNzdWVzIGRpc2NvdmVyZWQgZHVyaW5nIHRoZSBmaXJzdAo+ICAgICByZXZpZXcu IChWaWxsZSkKPiB2MzogRml4IHNvbWUgc3R5bGUgaXNzdWVzIGFuZCBvbmUgZ2VuIGNoZWNrLiBS ZW1vdmUgQ1JUIHJlbGF0ZWQgY2hhbmdlcwo+ICAgICBhcyBDUlQgaXMgbm90IHN1cHBvcnRlZCBv biBDSFYuIChJbXJlLCBWaWxsZSkKPiAKPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFdheW5lIEJveWVyIDx3YXluZS5ib3llckBpbnRlbC5j b20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICB8IDY4 ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RtYS5jICAgICAgICAgfCAgOCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMgICAgICAgICB8IDEwICsrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgICB8IDE2ICsrKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgICAgICAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYyB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAg ICB8ICA4ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgIHwg IDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAgICAgIHwgMTAgKyst LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyAgICAgIHwgIDcgKystLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCA1NCArKysrKysrKysr KysrKy0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAg ICAgfCA0MCArKysrKysrKystLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RzaS5jICAgICAgICB8IDE0ICsrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpX3BsbC5jICAgIHwgIDYgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWku YyAgICAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcuYyAg ICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jICAgICAgICB8ICAy ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICB8ICAyICstCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICB8ICA4ICsrLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgICAgICAgIHwgIDYgKy0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VuY29yZS5jICAgICB8ICA0ICstCgpMb29rcyBsaWtlIHlvdSBtaXNzZWQ6 CnNhbml0aXplX2VuYWJsZV9wcGd0dCgpIGluIGk5MTVfZ2VtX2d0dC5jCldlbGwsIGl0IGp1c3Qg aGFzIGEgcG9pbnRsZXNzICFDSFYgaW4gbGVmdCBpbiB0aGVyZS4KCkkgZGlkbid0IGZpbmQgYW55 dGhpbmcgd3JvbmcgaW4gdGhlcmUgYW55bW9yZS4gSnVzdCBzb21lIG1pbm9yCnNpbXBsaWZpY2F0 aW9ucyBhbmQgYmlrZXNoZWRzIHRoYXQgY291bGQgYmUgZG9uZSBhcyBwYXJ0IG9mIHRoaXMKcGF0 Y2gsIG9yIG1heWJlIHNvbWUgb2YgdGhlbSBjb3VsZCBiZSBmb2xsb3d1cHMuIFNlZSBiZWxvdy4K Cj4gIDIyIGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBhODcyMWZjLi5mZmYz MTI1MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTExNDIsOCAr MTE0MiwzNCBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCj4gIAkJCSAgIE1FTVNUQVRfVklEX1NISUZUKTsKPiAgCQlzZXFf cHJpbnRmKG0sICJDdXJyZW50IFAtc3RhdGU6ICVkXG4iLAo+ICAJCQkgICAocmd2c3RhdCAmIE1F TVNUQVRfUFNUQVRFX01BU0spID4+IE1FTVNUQVRfUFNUQVRFX1NISUZUKTsKPiAtCX0gZWxzZSBp ZiAoSVNfR0VONihkZXYpIHx8IChJU19HRU43KGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSkg fHwKPiAtCQkgICBJU19CUk9BRFdFTEwoZGV2KSB8fCBJU19HRU45KGRldikpIHsKPiArCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICsJCXUz MiBmcmVxX3N0czsKPiArCj4gKwkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsK PiArCQlmcmVxX3N0cyA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfR1BVX0ZS RVFfU1RTKTsKPiArCQlzZXFfcHJpbnRmKG0sICJQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTOiAweCUw OHhcbiIsIGZyZXFfc3RzKTsKPiArCQlzZXFfcHJpbnRmKG0sICJERFIgZnJlcTogJWQgTUh6XG4i LCBkZXZfcHJpdi0+bWVtX2ZyZXEpOwo+ICsKPiArCQlzZXFfcHJpbnRmKG0sICJhY3R1YWwgR1BV IGZyZXE6ICVkIE1IelxuIiwKPiArCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIChmcmVx X3N0cyA+PiA4KSAmIDB4ZmYpKTsKPiArCj4gKwkJc2VxX3ByaW50ZihtLCAiY3VycmVudCBHUFUg ZnJlcTogJWQgTUh6XG4iLAo+ICsJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3By aXYtPnJwcy5jdXJfZnJlcSkpOwo+ICsKPiArCQlzZXFfcHJpbnRmKG0sICJtYXggR1BVIGZyZXE6 ICVkIE1IelxuIiwKPiArCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5y cHMubWF4X2ZyZXEpKTsKPiArCj4gKwkJc2VxX3ByaW50ZihtLCAibWluIEdQVSBmcmVxOiAlZCBN SHpcbiIsCj4gKwkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLm1p bl9mcmVxKSk7Cj4gKwo+ICsJCXNlcV9wcmludGYobSwgImlkbGUgR1BVIGZyZXE6ICVkIE1Ielxu IiwKPiArCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuaWRsZV9m cmVxKSk7Cj4gKwo+ICsJCXNlcV9wcmludGYobSwKPiArCQkJICAgImVmZmljaWVudCAoUlBlKSBm cmVxdWVuY3k6ICVkIE1IelxuIiwKPiArCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRl dl9wcml2LT5ycHMuZWZmaWNpZW50X2ZyZXEpKTsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2 LT5ycHMuaHdfbG9jayk7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYp IHsKPiAgCQl1MzIgcnBfc3RhdGVfbGltaXRzOwo+ICAJCXUzMiBndF9wZXJmX3N0YXR1czsKPiAg CQl1MzIgcnBfc3RhdGVfY2FwOwo+IEBAIC0xMjg0LDMzICsxMzEwLDYgQEAgc3RhdGljIGludCBp OTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJ CXNlcV9wcmludGYobSwKPiAgCQkJICAgImVmZmljaWVudCAoUlBlKSBmcmVxdWVuY3k6ICVkIE1I elxuIiwKPiAgCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuZWZm aWNpZW50X2ZyZXEpKTsKPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gLQkJ dTMyIGZyZXFfc3RzOwo+IC0KPiAtCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2sp Owo+IC0JCWZyZXFfc3RzID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19HUFVf RlJFUV9TVFMpOwo+IC0JCXNlcV9wcmludGYobSwgIlBVTklUX1JFR19HUFVfRlJFUV9TVFM6IDB4 JTA4eFxuIiwgZnJlcV9zdHMpOwo+IC0JCXNlcV9wcmludGYobSwgIkREUiBmcmVxOiAlZCBNSHpc biIsIGRldl9wcml2LT5tZW1fZnJlcSk7Cj4gLQo+IC0JCXNlcV9wcmludGYobSwgImFjdHVhbCBH UFUgZnJlcTogJWQgTUh6XG4iLAo+IC0JCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgKGZy ZXFfc3RzID4+IDgpICYgMHhmZikpOwo+IC0KPiAtCQlzZXFfcHJpbnRmKG0sICJjdXJyZW50IEdQ VSBmcmVxOiAlZCBNSHpcbiIsCj4gLQkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZf cHJpdi0+cnBzLmN1cl9mcmVxKSk7Cj4gLQo+IC0JCXNlcV9wcmludGYobSwgIm1heCBHUFUgZnJl cTogJWQgTUh6XG4iLAo+IC0JCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYt PnJwcy5tYXhfZnJlcSkpOwo+IC0KPiAtCQlzZXFfcHJpbnRmKG0sICJtaW4gR1BVIGZyZXE6ICVk IE1IelxuIiwKPiAtCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMu bWluX2ZyZXEpKTsKPiAtCj4gLQkJc2VxX3ByaW50ZihtLCAiaWRsZSBHUFUgZnJlcTogJWQgTUh6 XG4iLAo+IC0JCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5pZGxl X2ZyZXEpKTsKPiAtCj4gLQkJc2VxX3ByaW50ZihtLAo+IC0JCQkgICAiZWZmaWNpZW50IChSUGUp IGZyZXF1ZW5jeTogJWQgTUh6XG4iLAo+IC0JCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwg ZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSkpOwo+IC0JCW11dGV4X3VubG9jaygmZGV2X3By aXYtPnJwcy5od19sb2NrKTsKPiAgCX0gZWxzZSB7Cj4gIAkJc2VxX3B1dHMobSwgIm5vIFAtc3Rh dGUgaW5mbyBhdmFpbGFibGVcbiIpOwo+ICAJfQo+IEBAIC0xNjAyLDcgKzE2MDEsNyBAQCBzdGF0 aWMgaW50IGk5MTVfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ ICAJc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSBtLT5wcml2YXRlOwo+ICAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYp KQo+ICAJCXJldHVybiB2bHZfZHJwY19pbmZvKG0pOwo+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gNikKPiAgCQlyZXR1cm4gZ2VuNl9kcnBjX2luZm8obSk7Cj4gQEAgLTE3NDMs NyArMTc0Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICp1bnVzZWQpCj4gIAkJc3JfZW5hYmxlZCA9IEk5MTVfUkVBRChJTlNUUE0pICYgSU5T VFBNX1NFTEZfRU47Cj4gIAllbHNlIGlmIChJU19QSU5FVklFVyhkZXYpKQo+ICAJCXNyX2VuYWJs ZWQgPSBJOTE1X1JFQUQoRFNQRlczKSAmIFBJTkVWSUVXX1NFTEZfUkVGUkVTSF9FTjsKPiAtCWVs c2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiArCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJc3JfZW5hYmxlZCA9IEk5MTVfUkVBRChGV19C TENfU0VMRl9WTFYpICYgRldfQ1NQV1JEV05FTjsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1 dChkZXZfcHJpdik7Cj4gQEAgLTM5ODMsNyArMzk4Miw3IEBAIHN0YXRpYyBpbnQgcGlwZV9jcmNf c2V0X3NvdXJjZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwKPiAgCQly ZXQgPSBpOHh4X3BpcGVfY3JjX2N0bF9yZWcoJnNvdXJjZSwgJnZhbCk7Cj4gIAllbHNlIGlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA8IDUpCj4gIAkJcmV0ID0gaTl4eF9waXBlX2NyY19jdGxfcmVn KGRldiwgcGlwZSwgJnNvdXJjZSwgJnZhbCk7Cj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dikpCj4gKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYp KQo+ICAJCXJldCA9IHZsdl9waXBlX2NyY19jdGxfcmVnKGRldiwgcGlwZSwgJnNvdXJjZSwgJnZh bCk7Cj4gIAllbHNlIGlmIChJU19HRU41KGRldikgfHwgSVNfR0VONihkZXYpKQo+ICAJCXJldCA9 IGlsa19waXBlX2NyY19jdGxfcmVnKCZzb3VyY2UsICZ2YWwpOwo+IEBAIC00MDUyLDcgKzQwNTEs NyBAQCBzdGF0aWMgaW50IHBpcGVfY3JjX3NldF9zb3VyY2Uoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgZW51bSBwaXBlIHBpcGUsCj4gIAo+ICAJCWlmIChJU19HNFgoZGV2KSkKPiAgCQkJZzR4X3Vu ZG9fcGlwZV9zY3JhbWJsZV9yZXNldChkZXYsIHBpcGUpOwo+IC0JCWVsc2UgaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKPiArCQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZ VklFVyhkZXYpKQo+ICAJCQl2bHZfdW5kb19waXBlX3NjcmFtYmxlX3Jlc2V0KGRldiwgcGlwZSk7 Cj4gIAkJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpICYmIHBpcGUgPT0gUElQRV9BKQo+ICAJCQlo c3dfdHJhbnNfZWRwX3BpcGVfQV9jcmNfd2EoZGV2LCBmYWxzZSk7Cj4gQEAgLTQ0NDIsNyArNDQ0 MSw4IEBAIHN0YXRpYyB2b2lkIHdtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNv bnN0IHVpbnQxNl90IHdtWzhdKQo+ICAJCSAqIC0gV00xKyBsYXRlbmN5IHZhbHVlcyBpbiAwLjV1 cyB1bml0cwo+ICAJCSAqIC0gbGF0ZW5jaWVzIGFyZSBpbiB1cyBvbiBnZW45L3Zsdi9jaHYKPiAg CQkgKi8KPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSB8fCBJU19WQUxMRVlWSUVX KGRldikpCj4gKwkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkgfHwgSVNfVkFMTEVZVklF VyhkZXYpIHx8Cj4gKwkJICAgIElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQkJbGF0ZW5jeSAqPSAx MDsKPiAgCQllbHNlIGlmIChsZXZlbCA+IDApCj4gIAkJCWxhdGVuY3kgKj0gNTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZG1hLmMKPiBpbmRleCBhODFjNzY2Li43ZjA4YmE4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RtYS5jCj4gQEAgLTI1Niw3ICsyNTYsNyBAQCBpbnRlbF9zZXR1cF9tY2hiYXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXUzMiB0ZW1wOwo+ICAJYm9vbCBlbmFibGVkOwo+ICAK PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZGV2X3ByaXYtPm1jaGJh cl9uZWVkX2Rpc2FibGUgPSBmYWxzZTsKPiBAQCAtNzc5LDcgKzc3OSw3IEBAIHN0YXRpYyB2b2lk IGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAJCWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQV0gPSAyOwo+ICAJCWluZm8tPm51bV9zcHJpdGVz W1BJUEVfQl0gPSAyOwo+ICAJCWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQ10gPSAxOwo+IC0JfSBl bHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVco ZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwg cGlwZSkKPiAgCQkJaW5mby0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAyOwo+ICAJZWxzZQo+IEBAIC03 OTEsNyArNzkxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJaW5mby0+bnVtX3BpcGVzID0gMDsKPiAgCX0g ZWxzZSBpZiAoaW5mby0+bnVtX3BpcGVzID4gMCAmJgo+ICAJCSAgIChJTlRFTF9JTkZPKGRldikt PmdlbiA9PSA3IHx8IElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDgpICYmCj4gLQkJICAgIUlTX1ZB TExFWVZJRVcoZGV2KSkgewo+ICsJCSAgICEoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2KSkpIHsKPiAgCQl1MzIgZnVzZV9zdHJhcCA9IEk5MTVfUkVBRChGVVNFX1NUUkFQ KTsKPiAgCQl1MzIgc2Z1c2Vfc3RyYXAgPSBJOTE1X1JFQUQoU0ZVU0VfU1RSQVApOwo+ICAKPiBA QCAtODM2LDcgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfaW5p dF9kcGlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaWYgKCFJ U19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiArCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg JiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCXJldHVybjsKCkhlcmUgd2UgY291bGQg ZHJvcCB0aGlzIGVhcmx5IGNoZWNrIGFuZCBqdXN0IGRvCgogIGlmIChJU19DSFYpIHsKICAJLi4u Ci0gfSBlbHNlIHsKKyB9IGVsc2UgaWYgKElTX1ZMVikgewogCS4uLgogIH0KCj4gIAo+ICAJLyoK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCBlNjkzNWYxLi44NDFjM2M0IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2NoZXJyeXZpZXdfaW5mbyA9IHsKPiAgCS5n ZW4gPSA4LCAubnVtX3BpcGVzID0gMywKPiAgCS5uZWVkX2dmeF9od3MgPSAxLCAuaGFzX2hvdHBs dWcgPSAxLAo+ICAJLnJpbmdfbWFzayA9IFJFTkRFUl9SSU5HIHwgQlNEX1JJTkcgfCBCTFRfUklO RyB8IFZFQk9YX1JJTkcsCj4gLQkuaXNfdmFsbGV5dmlldyA9IDEsCj4gKwkuaXNfY2hlcnJ5dmll dyA9IDEsCj4gIAkuZGlzcGxheV9tbWlvX29mZnNldCA9IFZMVl9ESVNQTEFZX0JBU0UsCj4gIAlH RU5fQ0hWX1BJUEVPRkZTRVRTLAo+ICAJQ1VSU09SX09GRlNFVFMsCj4gQEAgLTgwMiw3ICs4MDIs NyBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAKPiAgCXBjaV9zZXRfbWFzdGVyKGRldi0+cGRldik7Cj4gIAo+IC0JaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpKQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCXJldCA9IHZsdl9yZXN1bWVfcHJlcGFyZShkZXZf cHJpdiwgZmFsc2UpOwo+ICAJaWYgKHJldCkKPiAgCQlEUk1fRVJST1IoIlJlc3VtZSBwcmVwYXJl IGZhaWxlZDogJWQsIGNvbnRpbnVpbmcgYW55d2F5XG4iLAo+IEBAIC0xNTMyLDcgKzE1MzIsNyBA QCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSkK PiAgCQlyZXQgPSBieHRfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYpOwo+ICAJZWxzZSBpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiAgCQloc3dfZGlz YWJsZV9wYzgoZGV2X3ByaXYpOwo+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikp Cj4gKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRl dl9wcml2KSkKPiAgCQlyZXQgPSB2bHZfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIHRydWUpOwo+ ICAKPiAgCS8qCj4gQEAgLTE1NDksNyArMTU0OSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGlt ZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2aWNlKQo+ICAJICogcG93ZXIgd2VsbCwgc28gaHBk IGlzIHJlaW5pdGlhbGl6ZWQgZnJvbSB0aGVyZS4gRm9yCj4gIAkgKiBldmVyeW9uZSBlbHNlIGRv IGl0IGhlcmUuCj4gIAkgKi8KPiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gKwlp ZiAoIShJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkp CgonIVZMViAmJiAhQ0hWJyBhZ2FpbiBwZXJoYXBzPwoKPiAgCQlpbnRlbF9ocGRfaW5pdChkZXZf cHJpdik7Cj4gIAo+ICAJaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShkZXYpOwo+IEBAIC0xNTc0 LDcgKzE1NzQsNyBAQCBzdGF0aWMgaW50IGludGVsX3N1c3BlbmRfY29tcGxldGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCXJldCA9IGJ4dF9zdXNwZW5kX2NvbXBsZXRl KGRldl9wcml2KTsKPiAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FE V0VMTChkZXZfcHJpdikpCj4gIAkJcmV0ID0gaHN3X3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYp Owo+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19W QUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQlyZXQg PSB2bHZfc3VzcGVuZF9jb21wbGV0ZShkZXZfcHJpdik7Cj4gIAllbHNlCj4gIAkJcmV0ID0gMDsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBmMWE4YTUzLi4zODk5ZjIzIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTc2Myw2ICs3NjMsNyBAQCBzdHJ1Y3QgaW50ZWxf Y3NyIHsKPiAgCWZ1bmMoaXNfY3Jlc3RsaW5lKSBzZXAgXAo+ICAJZnVuYyhpc19pdnlicmlkZ2Up IHNlcCBcCj4gIAlmdW5jKGlzX3ZhbGxleXZpZXcpIHNlcCBcCj4gKwlmdW5jKGlzX2NoZXJyeXZp ZXcpIHNlcCBcCj4gIAlmdW5jKGlzX2hhc3dlbGwpIHNlcCBcCj4gIAlmdW5jKGlzX3NreWxha2Up IHNlcCBcCj4gIAlmdW5jKGlzX2Jyb3h0b24pIHNlcCBcCj4gQEAgLTI0NTUsOSArMjQ1Niw5IEBA IHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+ICAJCQkJIElOVEVMX0RFVklEKGRldikgPT0g MHgwMTUyIHx8IFwKPiAgCQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4MDE1YSkKPiAgI2RlZmlu ZSBJU19WQUxMRVlWSUVXKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNfdmFsbGV5dmlldykKPiAt I2RlZmluZSBJU19DSEVSUllWSUVXKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNfdmFsbGV5dmll dyAmJiBJU19HRU44KGRldikpCj4gKyNkZWZpbmUgSVNfQ0hFUlJZVklFVyhkZXYpCShJTlRFTF9J TkZPKGRldiktPmlzX2NoZXJyeXZpZXcpCj4gICNkZWZpbmUgSVNfSEFTV0VMTChkZXYpCShJTlRF TF9JTkZPKGRldiktPmlzX2hhc3dlbGwpCj4gLSNkZWZpbmUgSVNfQlJPQURXRUxMKGRldikJKCFJ TlRFTF9JTkZPKGRldiktPmlzX3ZhbGxleXZpZXcgJiYgSVNfR0VOOChkZXYpKQo+ICsjZGVmaW5l IElTX0JST0FEV0VMTChkZXYpCSghSU5URUxfSU5GTyhkZXYpLT5pc19jaGVycnl2aWV3ICYmIElT X0dFTjgoZGV2KSkKPiAgI2RlZmluZSBJU19TS1lMQUtFKGRldikJKElOVEVMX0lORk8oZGV2KS0+ aXNfc2t5bGFrZSkKPiAgI2RlZmluZSBJU19CUk9YVE9OKGRldikJCShJTlRFTF9JTkZPKGRldikt PmlzX2Jyb3h0b24pCj4gICNkZWZpbmUgSVNfS0FCWUxBS0UoZGV2KQkoSU5URUxfSU5GTyhkZXYp LT5pc19rYWJ5bGFrZSkKPiBAQCAtMjU4NCw3ICsyNTg1LDggQEAgc3RydWN0IGRybV9pOTE1X2Nt ZF90YWJsZSB7Cj4gIAkJCQkgSVNfU0tZTEFLRShkZXYpIHx8IElTX0tBQllMQUtFKGRldikpCj4g ICNkZWZpbmUgSEFTX1JVTlRJTUVfUE0oZGV2KQkoSVNfR0VONihkZXYpIHx8IElTX0hBU1dFTEwo ZGV2KSB8fCBcCj4gIAkJCQkgSVNfQlJPQURXRUxMKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYp IHx8IFwKPiAtCQkJCSBJU19TS1lMQUtFKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkKPiArCQkJ CSBJU19DSEVSUllWSUVXKGRldikgfHwgSVNfU0tZTEFLRShkZXYpIHx8IFwKCkJEV3x8Q0hWIGNv dWxkIGJlIHJlcGxhY2VkIHdpdGggSVNfR0VOOAoKPiArCQkJCSBJU19LQUJZTEFLRShkZXYpKQo+ ICAjZGVmaW5lIEhBU19SQzYoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4gICNk ZWZpbmUgSEFTX1JDNnAoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDYgfHwgSVNfSVZZ QlJJREdFKGRldikpCj4gIAo+IEBAIC0yNTk3LDcgKzI1OTksOCBAQCBzdHJ1Y3QgZHJtX2k5MTVf Y21kX3RhYmxlIHsKPiAgCQkJCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KQo+ICAKPiAg I2RlZmluZSBIQVNfQ09SRV9SSU5HX0ZSRVEoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g NiAmJiBcCj4gLQkJCQkgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQlJPWFRPTihkZXYpKQo+ ICsJCQkJICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJiBcCj4g KwkJCQkgIUlTX0JST1hUT04oZGV2KSkKPiAgCj4gICNkZWZpbmUgSU5URUxfUENIX0RFVklDRV9J RF9NQVNLCQkweGZmMDAKPiAgI2RlZmluZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFCQkw eDNiMDAKPiBAQCAtMjYyMCw3ICsyNjIzLDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7 Cj4gICNkZWZpbmUgSEFTX1BDSF9OT1AoZGV2KSAoSU5URUxfUENIX1RZUEUoZGV2KSA9PSBQQ0hf Tk9QKQo+ICAjZGVmaW5lIEhBU19QQ0hfU1BMSVQoZGV2KSAoSU5URUxfUENIX1RZUEUoZGV2KSAh PSBQQ0hfTk9ORSkKPiAgCj4gLSNkZWZpbmUgSEFTX0dNQ0hfRElTUExBWShkZXYpIChJTlRFTF9J TkZPKGRldiktPmdlbiA8IDUgfHwgSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsjZGVmaW5lIEhBU19H TUNIX0RJU1BMQVkoZGV2KSAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1IHx8IFwKPiArCQkJICAg ICAgIElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAo+ICAvKiBE UEYgPT0gZHluYW1pYyBwYXJpdHkgZmVhdHVyZSAqLwo+ICAjZGVmaW5lIEhBU19MM19EUEYoZGV2 KSAoSVNfSVZZQlJJREdFKGRldikgfHwgSVNfSEFTV0VMTChkZXYpKQo+IEBAIC0zNTExLDcgKzM1 MTUsNyBAQCBfX3Jhd193cml0ZSg2NCwgcSkKPiAgCj4gIHN0YXRpYyBpbmxpbmUgaTkxNV9yZWdf dCBpOTE1X3ZnYWNudHJsX3JlZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpCj4gIAkJcmV0dXJuIFZMVl9WR0FDTlRSTDsKPiAgCWVsc2UgaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDUpCj4gIAkJcmV0dXJuIENQVV9WR0FDTlRSTDsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBkZmFmMjViLi5lOTZlNDk2IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jCj4gQEAgLTQ4MzgsNyArNDgzOCw3IEBAIGludCBpOTE1X2dlbV9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJLyogVkxWQTAgKHBvdGVudGlh bCBoYWNrKSwgQklPUyBpc24ndCBhY3R1YWxseSB3YWtpbmcgdXMgKi8KPiAgCQlJOTE1X1dSSVRF KFZMVl9HVExDX1dBS0VfQ1RSTCwgVkxWX0dUTENfQUxMT1dXQUtFUkVRKTsKPiAgCQlpZiAod2Fp dF9mb3IoKEk5MTVfUkVBRChWTFZfR1RMQ19QV19TVEFUVVMpICYKPiBAQCAtNDk2Myw3ICs0OTYz LDcgQEAgaTkxNV9nZW1fbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWRldl9w cml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSA9IEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX0dF TkVSQUw7Cj4gIAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYgIUlTX1ZBTExF WVZJRVcoZGV2KSkKPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3ICYmICFJU19WQUxM RVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlkZXZfcHJpdi0+bnVtX2Zl bmNlX3JlZ3MgPSAzMjsKPiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQgfHwg SVNfSTk0NUcoZGV2KSB8fCBJU19JOTQ1R00oZGV2KSB8fCBJU19HMzMoZGV2KSkKPiAgCQlkZXZf cHJpdi0+bnVtX2ZlbmNlX3JlZ3MgPSAxNjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCj4gaW5kZXggNDM3NjFjNS4uNGIxMTYxZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMTkwLDcgKzE5MCw3IEBAIGk5MTVfZ2VtX2Fs bG9jX2NvbnRleHRfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKQo+ICAJ ICogd291bGQgbWFrZSB0aGUgb2JqZWN0IHNub29wZWQgd2hpY2ggbWlnaHQgaGF2ZSBhCj4gIAkg KiBuZWdhdGl2ZSBwZXJmb3JtYW5jZSBpbXBhY3QuCj4gIAkgKi8KPiAtCWlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA3ICYmICFJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA3ICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJ RVcoZGV2KSkgewo+ICAJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2Jq LCBJOTE1X0NBQ0hFX0wzX0xMQyk7Cj4gIAkJLyogRmFpbHVyZSBzaG91bGRuJ3QgZXZlciBoYXBw ZW4gdGhpcyBlYXJseSAqLwo+ICAJCWlmIChXQVJOX09OKHJldCkpIHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKPiBpbmRleCBlODhkNjkyLi4yM2EwYWFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCj4gQEAgLTU4MSw3ICs1ODEsNyBAQCBpOTE1X2VuYWJsZV9waXBlc3RhdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlLAo+ICB7Cj4gIAl1MzIg ZW5hYmxlX21hc2s7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikpCj4g KwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldl9w cml2LT5kZXYpKQoKQ2FuIGRyb3AgdGhlIC0+ZGV2IHdoaWxlIGF0IGl0LgoKPiAgCQllbmFibGVf bWFzayA9IHZsdl9nZXRfcGlwZXN0YXRfZW5hYmxlX21hc2soZGV2X3ByaXYtPmRldiwKPiAgCQkJ CQkJCSAgIHN0YXR1c19tYXNrKTsKPiAgCWVsc2UKPiBAQCAtNTk1LDcgKzU5NSw3IEBAIGk5MTVf ZGlzYWJsZV9waXBlc3RhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0g cGlwZSBwaXBlLAo+ICB7Cj4gIAl1MzIgZW5hYmxlX21hc2s7Cj4gIAo+IC0JaWYgKElTX1ZBTExF WVZJRVcoZGV2X3ByaXYtPmRldikpCj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2 KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2LT5kZXYpKQoKZGl0dG8KCj4gIAkJZW5hYmxlX21h c2sgPSB2bHZfZ2V0X3BpcGVzdGF0X2VuYWJsZV9tYXNrKGRldl9wcml2LT5kZXYsCj4gIAkJCQkJ CQkgICBzdGF0dXNfbWFzayk7Cj4gIAllbHNlCj4gQEAgLTE3MjMsNyArMTcyMyw3IEBAIHN0YXRp YyB2b2lkIGk5eHhfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkg Ki8KPiAgCVBPU1RJTkdfUkVBRChQT1JUX0hPVFBMVUdfU1RBVCk7Cj4gIAo+IC0JaWYgKElTX0c0 WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKElTX0c0WChkZXYpIHx8IElT X1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQl1MzIgaG90cGx1 Z190cmlnZ2VyID0gaG90cGx1Z19zdGF0dXMgJiBIT1RQTFVHX0lOVF9TVEFUVVNfRzRYOwo+ICAK PiAgCQlpZiAoaG90cGx1Z190cmlnZ2VyKSB7Cj4gQEAgLTQ0MTIsNyArNDQxMiw3IEBAIHZvaWQg aW50ZWxfaXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJSU5J VF9XT1JLKCZkZXZfcHJpdi0+bDNfcGFyaXR5LmVycm9yX3dvcmssIGl2eWJyaWRnZV9wYXJpdHlf d29yayk7Cj4gIAo+ICAJLyogTGV0J3MgdHJhY2sgdGhlIGVuYWJsZWQgcnBzIGV2ZW50cyAqLwo+ IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2 KSkKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiAgCQkvKiBXYUdzdlJDMFJlc2lk ZW5jeU1ldGhvZDp2bHYgKi8KPiAgCQlkZXZfcHJpdi0+cG1fcnBzX2V2ZW50cyA9IEdFTjZfUE1f UlBfRE9XTl9FSV9FWFBJUkVEIHwgR0VONl9QTV9SUF9VUF9FSV9FWFBJUkVEOwo+ICAJZWxzZQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4gaW5kZXggMmQ5MTgyMS4uYTJhYTA5YyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4gQEAgLTQ5LDcgKzQ5LDcgQEAg c3RhdGljIHZvaWQgaTkxNV9zYXZlX2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg CQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfT05fREVMQVlTID0gSTkxNV9SRUFEKFBDSF9QUF9P Tl9ERUxBWVMpOwo+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkx NV9SRUFEKFBDSF9QUF9PRkZfREVMQVlTKTsKPiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBf RElWSVNPUiA9IEk5MTVfUkVBRChQQ0hfUFBfRElWSVNPUik7Cj4gLQl9IGVsc2UgaWYgKCFJU19W QUxMRVlWSUVXKGRldikpIHsKPiArCX0gZWxzZSBpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAh SVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0NPTlRS T0wgPSBJOTE1X1JFQUQoUFBfQ09OVFJPTCk7Cj4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQ X09OX0RFTEFZUyA9IEk5MTVfUkVBRChQUF9PTl9ERUxBWVMpOwo+ICAJCWRldl9wcml2LT5yZWdm aWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkxNV9SRUFEKFBQX09GRl9ERUxBWVMpOwo+IEBAIC04 NCw3ICs4NCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzdG9yZV9kaXNwbGF5KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gIAkJSTkxNV9XUklURShQQ0hfUFBfT0ZGX0RFTEFZUywgZGV2X3ByaXYt PnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+ICAJCUk5MTVfV1JJVEUoUENIX1BQX0RJVklT T1IsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9ESVZJU09SKTsKPiAgCQlJOTE1X1dSSVRFKFBD SF9QUF9DT05UUk9MLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfQ09OVFJPTCk7Cj4gLQl9IGVs c2UgaWYgKCFJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCX0gZWxzZSBpZiAoIUlTX1ZBTExFWVZJ RVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJSTkxNV9XUklURShQUF9PTl9E RUxBWVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMpOwo+ICAJCUk5MTVfV1JJ VEUoUFBfT0ZGX0RFTEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+ ICAJCUk5MTVfV1JJVEUoUFBfRElWSVNPUiwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklT T1IpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiBpbmRleCBmOTI5YzYxLi44NmMzMDIw IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+IEBAIC00OSw3ICs0OSw3IEBAIHN0 YXRpYyB1MzIgY2FsY19yZXNpZGVuY3koc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWludGVs X3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAkvKiBPbiBWTFYgYW5kIENIViwgcmVz aWRlbmN5IHRpbWUgaXMgaW4gQ1ogdW5pdHMgcmF0aGVyIHRoYW4gMS4yOHVzICovCj4gLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkgewo+ICAJCXVuaXRzID0gMTsKPiAgCQlkaXYgPSBkZXZfcHJpdi0+Y3pj bGtfZnJlcTsKPiAgCj4gQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9hY3Rf ZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAo+ICAJaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOwo+ICAKPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7 Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkgewo+ICsJaWYgKElTX1ZBTExF WVZJRVcoZGV2X3ByaXYtPmRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdi0+ZGV2KSkgewoK Q2FuIGRyb3AgdGhlIC0+ZGV2IGFnYWluCgo+ICAJCXUzMiBmcmVxOwo+ICAJCWZyZXEgPSB2bHZf cHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7Cj4gIAkJcmV0ID0g aW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIChmcmVxID4+IDgpICYgMHhmZik7Cj4gQEAgLTU5OCw3 ICs1OTgsNyBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCQlpZiAocmV0KQo+ICAJCQlEUk1fRVJST1IoIlJDNnAgcmVzaWRlbmN5IHN5c2ZzIHNldHVw IGZhaWxlZFxuIik7Cj4gIAl9Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAo SVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCXJldCA9IHN5 c2ZzX21lcmdlX2dyb3VwKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosCj4gIAkJCQkJJm1lZGlh X3JjNl9hdHRyX2dyb3VwKTsKPiAgCQlpZiAocmV0KQo+IEBAIC02MTksNyArNjE5LDcgQEAgdm9p ZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAl9Cj4gIAo+ICAJ cmV0ID0gMDsKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlyZXQgPSBzeXNmc19jcmVhdGVfZmls ZXMoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgdmx2X2F0dHJzKTsKPiAgCWVsc2UgaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4gIAkJcmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGVzKCZk ZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIGdlbjZfYXR0cnMpOwo+IEBAIC02MzUsNyArNjM1LDcg QEAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHZvaWQg aTkxNV90ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAlzeXNm c19yZW1vdmVfYmluX2ZpbGUoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgJmVycm9yX3N0YXRl X2F0dHIpOwo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiArCWlmIChJU19WQUxMRVlWSUVX KGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJCXN5c2ZzX3JlbW92ZV9maWxlcygmZGV2 LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCB2bHZfYXR0cnMpOwo+ICAJZWxzZQo+ICAJCXN5c2ZzX3Jl bW92ZV9maWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCBnZW42X2F0dHJzKTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiBpbmRleCA5YWE4M2U3Li4wNmZmZmFlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gQEAgLTM3NSw3ICszNzUsNyBAQCBzdGF0aWMg dm9pZCBpbGtfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cikKPiAgCWlmIChIQVNfUENIX0lCWChkZXZfcHJpdi0+ZGV2KSkgewo+ICAJCWF1ZF9jb25maWcg PSBJQlhfQVVEX0NGRyhwaXBlKTsKPiAgCQlhdWRfY250cmxfc3QyID0gSUJYX0FVRF9DTlRMX1NU MjsKPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsK PiAgCQlhdWRfY29uZmlnID0gVkxWX0FVRF9DRkcocGlwZSk7Cj4gIAkJYXVkX2NudHJsX3N0MiA9 IFZMVl9BVURfQ05UTF9TVDI7Cj4gIAl9IGVsc2Ugewo+IEBAIC00MzUsNyArNDM1LDggQEAgc3Rh dGljIHZvaWQgaWxrX2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAo+ICAJCWF1ZF9jb25maWcgPSBJQlhfQVVEX0NGRyhwaXBlKTsKPiAgCQlhdWRfY250 bF9zdCA9IElCWF9BVURfQ05UTF9TVChwaXBlKTsKPiAgCQlhdWRfY250cmxfc3QyID0gSUJYX0FV RF9DTlRMX1NUMjsKPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhjb25uZWN0b3ItPmRldikp IHsKPiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhjb25uZWN0b3ItPmRldikgfHwKPiArCQkg ICBJU19DSEVSUllWSUVXKGNvbm5lY3Rvci0+ZGV2KSkgewo+ICAJCWhkbWl3X2hkbWllZGlkID0g VkxWX0hETUlXX0hETUlFRElEKHBpcGUpOwo+ICAJCWF1ZF9jb25maWcgPSBWTFZfQVVEX0NGRyhw aXBlKTsKPiAgCQlhdWRfY250bF9zdCA9IFZMVl9BVURfQ05UTF9TVChwaXBlKTsKPiBAQCAtNTU5 LDcgKzU2MCw3IEBAIHZvaWQgaW50ZWxfaW5pdF9hdWRpbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJaWYgKElTX0c0WChkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29k ZWNfZW5hYmxlID0gZzR4X2F1ZGlvX2NvZGVjX2VuYWJsZTsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxh eS5hdWRpb19jb2RlY19kaXNhYmxlID0gZzR4X2F1ZGlvX2NvZGVjX2Rpc2FibGU7Cj4gLQl9IGVs c2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVX KGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVk aW9fY29kZWNfZW5hYmxlID0gaWxrX2F1ZGlvX2NvZGVjX2VuYWJsZTsKPiAgCQlkZXZfcHJpdi0+ ZGlzcGxheS5hdWRpb19jb2RlY19kaXNhYmxlID0gaWxrX2F1ZGlvX2NvZGVjX2Rpc2FibGU7Cj4g IAl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4 KSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGI1OWEyZDguLmQz YjY0M2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTE4Nyw3 ICsxODcsNyBAQCBpbnQgaW50ZWxfaHJhd2NsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJ dWludDMyX3QgY2xrY2ZnOwo+ICAKPiAgCS8qIFRoZXJlIGlzIG5vIENMS0NGRyByZWcgaW4gVmFs bGV5dmlldy4gVkxWIGhyYXdjbGsgaXMgMjAwIE1IeiAqLwo+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ ICAJCXJldHVybiAyMDA7Cj4gIAo+ICAJY2xrY2ZnID0gSTkxNV9SRUFEKENMS0NGRyk7Cj4gQEAg LTIxNSw3ICsyMTUsNyBAQCBpbnQgaW50ZWxfaHJhd2NsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2N6Y2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2KSkK PiArCWlmICghKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3By aXYpKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZGV2X3ByaXYtPmN6Y2xrX2ZyZXEgPSB2bHZfZ2V0 X2Nja19jbG9ja19ocGxsKGRldl9wcml2LCAiY3pjbGsiLAo+IEBAIC03MTYsMTEgKzcxNiwxMiBA QCBzdGF0aWMgYm9vbCBpbnRlbF9QTExfaXNfdmFsaWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCWlmIChjbG9jay0+bTEgIDwgbGltaXQtPm0xLm1pbiAgfHwgbGltaXQtPm0xLm1heCAgPCBj bG9jay0+bTEpCj4gIAkJSU5URUxQbGxJbnZhbGlkKCJtMSBvdXQgb2YgcmFuZ2VcbiIpOwo+ICAK PiAtCWlmICghSVNfUElORVZJRVcoZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19C Uk9YVE9OKGRldikpCj4gKwlpZiAoIUlTX1BJTkVWSUVXKGRldikgJiYgIUlTX1ZBTExFWVZJRVco ZGV2KSAmJgo+ICsJICAgICFJU19DSEVSUllWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkK PiAgCQlpZiAoY2xvY2stPm0xIDw9IGNsb2NrLT5tMikKPiAgCQkJSU5URUxQbGxJbnZhbGlkKCJt MSA8PSBtMlxuIik7Cj4gIAo+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0JST1hU T04oZGV2KSkgewo+ICsJaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVco ZGV2KSAmJiAhSVNfQlJPWFRPTihkZXYpKSB7Cj4gIAkJaWYgKGNsb2NrLT5wIDwgbGltaXQtPnAu bWluIHx8IGxpbWl0LT5wLm1heCA8IGNsb2NrLT5wKQo+ICAJCQlJTlRFTFBsbEludmFsaWQoInAg b3V0IG9mIHJhbmdlXG4iKTsKPiAgCQlpZiAoY2xvY2stPm0gPCBsaW1pdC0+bS5taW4gfHwgbGlt aXQtPm0ubWF4IDwgY2xvY2stPm0pCj4gQEAgLTEzMDUsNyArMTMwNiw3IEBAIHZvaWQgYXNzZXJ0 X3BhbmVsX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkg ICAgSTkxNV9SRUFEKFBDSF9MVkRTKSAmIExWRFNfUElQRUJfU0VMRUNUKQo+ICAJCQlwYW5lbF9w aXBlID0gUElQRV9COwo+ICAJCS8qIFhYWDogZWxzZSBmaXggZm9yIGVEUCAqLwo+IC0JfSBlbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCS8qIHByZXN1bWFibHkgd3JpdGUgbG9j ayBkZXBlbmRzIG9uIHBpcGUsIG5vdCBwb3J0IHNlbGVjdCAqLwo+ICAJCXBwX3JlZyA9IFZMVl9Q SVBFX1BQX0NPTlRST0wocGlwZSk7Cj4gIAkJcGFuZWxfcGlwZSA9IHBpcGU7Cj4gQEAgLTE0MjMs NyArMTQyNCw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9zcHJpdGVzX2Rpc2FibGVkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAicGxhbmUgJWQgYXNzZXJ0aW9u IGZhaWx1cmUsIHNob3VsZCBiZSBvZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0aXZlXG4i LAo+ICAJCQkgICAgIHNwcml0ZSwgcGlwZV9uYW1lKHBpcGUpKTsKPiAgCQl9Cj4gLQl9IGVsc2Ug aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJZm9yX2VhY2hfc3ByaXRlKGRldl9wcml2 LCBwaXBlLCBzcHJpdGUpIHsKPiAgCQkJdTMyIHZhbCA9IEk5MTVfUkVBRChTUENOVFIocGlwZSwg c3ByaXRlKSk7Cj4gIAkJCUk5MTVfU1RBVEVfV0FSTih2YWwgJiBTUF9FTkFCTEUsCj4gQEAgLTIz MTksNyArMjMyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfbGluZWFyX2FsaWdubWVu dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAoSU5URUxfSU5GTyhk ZXZfcHJpdiktPmdlbiA+PSA5KQo+ICAJCXJldHVybiAyNTYgKiAxMDI0Owo+ICAJZWxzZSBpZiAo SVNfQlJPQURXQVRFUihkZXZfcHJpdikgfHwgSVNfQ1JFU1RMSU5FKGRldl9wcml2KSB8fAo+IC0J CSBJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiArCQkgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gIAkJcmV0dXJuIDEyOCAqIDEwMjQ7Cj4gIAll bHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpCj4gIAkJcmV0dXJuIDQgKiAx MDI0Owo+IEBAIC01NDU1LDcgKzU0NTYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY2Rj bGsoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCSAqIEJTcGVjIGVycm9uZW91c2x5IGNsYWlt cyB3ZSBzaG91bGQgYWltIGZvciA0TUh6LCBidXQKPiAgCSAqIGluIGZhY3QgMU1IeiBpcyB0aGUg Y29ycmVjdCBmcmVxdWVuY3kuCj4gIAkgKi8KPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsK PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJ LyoKPiAgCQkgKiBQcm9ncmFtIHRoZSBnbWJ1c19mcmVxIGJhc2VkIG9uIHRoZSBjZGNsayBmcmVx dWVuY3kuCj4gIAkJICogQlNwZWMgZXJyb25lb3VzbHkgY2xhaW1zIHdlIHNob3VsZCBhaW0gZm9y IDRNSHosIGJ1dAo+IEBAIC03MTgwLDcgKzcxODEsNyBAQCBzdGF0aWMgaW50IGk5eHhfZ2V0X3Jl ZmNsayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAlX QVJOX09OKCFjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0JST1hUT04oZGV2KSkgewo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8 fCBJU19DSEVSUllWSUVXKGRldikgfHwgSVNfQlJPWFRPTihkZXYpKSB7Cj4gIAkJcmVmY2xrID0g MTAwMDAwOwo+ICAJfSBlbHNlIGlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90eXBlKGNydGNfc3Rh dGUsIElOVEVMX09VVFBVVF9MVkRTKSAmJgo+ICAJICAgIGludGVsX3BhbmVsX3VzZV9zc2MoZGV2 X3ByaXYpICYmIG51bV9jb25uZWN0b3JzIDwgMikgewo+IEBAIC03ODc5LDcgKzc4ODAsNyBAQCBz dGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YykKPiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9ET1VCTEVfV0lERTsKPiAgCj4gIAkvKiBvbmx5 IGc0eCBhbmQgbGF0ZXIgaGF2ZSBmYW5jeSBicGMvZGl0aGVyIGNvbnRyb2xzICovCj4gLQlpZiAo SVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSVNfRzRYKGRldikg fHwgSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCS8qIEJz cGVjIGNsYWltcyB0aGF0IHdlIGNhbid0IHVzZSBkaXRoZXJpbmcgZm9yIDMwYnBwIHBpcGVzLiAq Lwo+ICAJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmRpdGhlciAmJiBpbnRlbF9jcnRjLT5jb25m aWctPnBpcGVfYnBwICE9IDMwKQo+ICAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9ESVRIRVJfRU4g fAo+IEBAIC03OTE5LDcgKzc5MjAsOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAgCX0gZWxzZQo+ICAJCXBpcGVjb25mIHw9 IFBJUEVDT05GX1BST0dSRVNTSVZFOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYg aW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ICsJaWYgKChJU19WQUxM RVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSAmJgo+ICsJICAgICBpbnRlbF9jcnRj LT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gIAkJcGlwZWNvbmYgfD0gUElQRUNPTkZf Q09MT1JfUkFOR0VfU0VMRUNUOwo+ICAKPiAgCUk5MTVfV1JJVEUoUElQRUNPTkYoaW50ZWxfY3J0 Yy0+cGlwZSksIHBpcGVjb25mKTsKPiBAQCAtODE2Niw3ICs4MTY4LDcgQEAgc3RhdGljIGJvb2wg aTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlpZiAoISh0 bXAgJiBQSVBFQ09ORl9FTkFCTEUpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQlpZiAoSVNf RzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSVNfRzRYKGRldikgfHwg SVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCXN3aXRjaCAo dG1wICYgUElQRUNPTkZfQlBDX01BU0spIHsKPiAgCQljYXNlIFBJUEVDT05GXzZCUEM6Cj4gIAkJ CXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDE4Owo+IEBAIC04MTgyLDcgKzgxODQsOCBAQCBzdGF0 aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg CQl9Cj4gIAl9Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiAodG1wICYgUElQRUNP TkZfQ09MT1JfUkFOR0VfU0VMRUNUKSkKPiArCWlmICgoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2KSkgJiYKPiArCSAgICAodG1wICYgUElQRUNPTkZfQ09MT1JfUkFOR0Vf U0VMRUNUKSkKPiAgCQlwaXBlX2NvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSA9IHRydWU7Cj4g IAo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkKPiBAQCAtODIxMCw3ICs4MjEzLDcg QEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIgPSAxOwo+ICAJfQo+ICAJcGlw ZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbCA9IEk5MTVfUkVBRChEUExMKGNydGMtPnBpcGUp KTsKPiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoIUlTX1ZBTExFWVZJRVco ZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJLyoKPiAgCQkgKiBEUExMX0RWT18y WF9NT0RFIG11c3QgYmUgZW5hYmxlZCBmb3IgYm90aCBEUExMcwo+ICAJCSAqIG9uIDgzMC4gRmls dGVyIGl0IG91dCBoZXJlIHNvIHRoYXQgd2UgZG9uJ3QKPiBAQCAtMTE1MzcsNyArMTE1NDAsNyBA QCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1IHx8IElTX0c0WChkZXYpKQo+ICAJCXdv cmstPmZsaXBfY291bnQgPSBJOTE1X1JFQUQoUElQRV9GTElQQ09VTlRfRzRYKHBpcGUpKSArIDE7 Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKElTX1ZBTExFWVZJRVco ZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQlyaW5nID0gJmRldl9wcml2LT5yaW5n W0JDU107Cj4gIAkJaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gaW50ZWxfZmJfb2JqKHdvcmstPm9s ZF9mYiktPnRpbGluZ19tb2RlKQo+ICAJCQkvKiB2bHY6IERJU1BMQVlfRkxJUCBmYWlscyB0byBj aGFuZ2UgdGlsaW5nICovCj4gQEAgLTEyMDE2LDcgKzEyMDE5LDcgQEAgY29tcHV0ZV9iYXNlbGlu ZV9waXBlX2JwcChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4gIAlpbnQgYnBwLCBpOwo+ICAKPiAtCWlmICgo SVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSkKPiArCWlmICgoSVNfRzRYKGRldikg fHwgSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkpCj4gIAkJYnBwID0g MTAqMzsKPiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpCj4gIAkJYnBwID0g MTIqMzsKPiBAQCAtMTI2MjYsNyArMTI2MjksNyBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShwaXhlbF9tdWx0 aXBsaWVyKTsKPiAgCVBJUEVfQ09ORl9DSEVDS19JKGhhc19oZG1pX3NpbmspOwo+ICAJaWYgKChJ TlRFTF9JTkZPKGRldiktPmdlbiA8IDggJiYgIUlTX0hBU1dFTEwoZGV2KSkgfHwKPiAtCSAgICBJ U19WQUxMRVlWSUVXKGRldikpCj4gKwkgICAgSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2KSkKCiFIQVNfRERJIHdvdWxkIHNlZW0gdG8gY292ZXIgYWxsIG9mIGl0LgoKPiAg CQlQSVBFX0NPTkZfQ0hFQ0tfSShsaW1pdGVkX2NvbG9yX3JhbmdlKTsKPiAgCVBJUEVfQ09ORl9D SEVDS19JKGhhc19pbmZvZnJhbWUpOwo+ICAKPiBAQCAtMTQzNzgsNyArMTQzODEsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ ICAJCWlmIChJOTE1X1JFQUQoUENIX0RQX0QpICYgRFBfREVURUNURUQpCj4gIAkJCWludGVsX2Rw X2luaXQoZGV2LCBQQ0hfRFBfRCwgUE9SVF9EKTsKPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllW SUVXKGRldikpIHsKPiAgCQkvKgo+ICAJCSAqIFRoZSBEUF9ERVRFQ1RFRCBiaXQgaXMgdGhlIGxh dGNoZWQgc3RhdGUgb2YgdGhlIEREQwo+ICAJCSAqIFNEQSBwaW4gYXQgYm9vdC4gSG93ZXZlciBz aW5jZSBlRFAgZG9lc24ndCByZXF1aXJlIEREQwo+IEBAIC0xNDUyNyw3ICsxNDUzMCw3IEBAIHUz MiBpbnRlbF9mYl9waXRjaF9saW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50NjRfdCBm Yl9tb2RpZmllciwKPiAgCQkgKiAgcGl4ZWxzIGFuZCAzMksgYnl0ZXMuIgo+ICAJCSAqLwo+ICAJ CSByZXR1cm4gbWluKDgxOTIqZHJtX2Zvcm1hdF9wbGFuZV9jcHAocGl4ZWxfZm9ybWF0LCAwKSwg MzI3NjgpOwo+IC0JfSBlbHNlIGlmIChnZW4gPj0gNSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpKSB7 Cj4gKwl9IGVsc2UgaWYgKGdlbiA+PSA1ICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NI RVJSWVZJRVcoZGV2KSkgewoKSEFTX1BDSF9TUExJVCgpIHdvdWxkIGFjdHVhbGx5IGNvdmVyIGFs bCBvZiB0aGlzLgoKPiAgCQlyZXR1cm4gMzIqMTAyNDsKPiAgCX0gZWxzZSBpZiAoZ2VuID49IDQp IHsKPiAgCQlpZiAoZmJfbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCj4gQEAg LTE0NjMxLDcgKzE0NjM0LDggQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAJY2FzZSBEUk1fRk9S TUFUX0FCR1I4ODg4Ogo+IC0JCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmIElOVEVMX0lORk8o ZGV2KS0+Z2VuIDwgOSkgewo+ICsJCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVS UllWSUVXKGRldikgJiYKPiArCQkgICAgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KSB7Cj4gIAkJ CURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPiAgCQkJCSAgZHJt X2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KSk7Cj4gIAkJCXJldHVybiAt RUlOVkFMOwo+IEBAIC0xNDY0Nyw3ICsxNDY1MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVi dWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCX0KPiAgCQlicmVhazsKPiAg CWNhc2UgRFJNX0ZPUk1BVF9BQkdSMjEwMTAxMDoKPiAtCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2 KSkgewo+ICsJCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikp IHsKPiAgCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ICAJ CQkJICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsKPiAgCQkJ cmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTE0Nzc1LDcgKzE0Nzc5LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZGV2X3ByaXYtPmRp c3BsYXkuY3J0Y19kaXNhYmxlID0gaXJvbmxha2VfY3J0Y19kaXNhYmxlOwo+ICAJCWRldl9wcml2 LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lID0KPiAgCQkJaXJvbmxha2VfdXBkYXRlX3By aW1hcnlfcGxhbmU7Cj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBl bHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJ ZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnID0gaTl4eF9nZXRfcGlwZV9jb25maWc7 Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnID0KPiAgCQkJ aTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWc7Cj4gQEAgLTE0ODA4LDcgKzE0ODEyLDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAllbHNlIGlmIChJU19IQVNXRUxMKGRldikpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rp c3BsYXlfY2xvY2tfc3BlZWQgPQo+ICAJCQloYXN3ZWxsX2dldF9kaXNwbGF5X2Nsb2NrX3NwZWVk Owo+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5n ZXRfZGlzcGxheV9jbG9ja19zcGVlZCA9Cj4gIAkJCXZhbGxleXZpZXdfZ2V0X2Rpc3BsYXlfY2xv Y2tfc3BlZWQ7Cj4gIAllbHNlIGlmIChJU19HRU41KGRldikpCj4gQEAgLTE0ODY2LDcgKzE0ODcw LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIAkJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayA9Cj4gIAkJCQli cm9hZHdlbGxfbW9kZXNldF9jYWxjX2NkY2xrOwo+ICAJCX0KPiAtCX0gZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpIHsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NvbW1pdF9j ZGNsayA9Cj4gIAkJCXZhbGxleXZpZXdfbW9kZXNldF9jb21taXRfY2RjbGs7Cj4gIAkJZGV2X3By aXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0KPiBAQCAtMTU2NDAsNyArMTU2NDQsNyBA QCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAkJcGxsLT5vbiA9IGZhbHNlOwo+ICAJfQo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikp Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQl2 bHZfd21fZ2V0X2h3X3N0YXRlKGRldik7Cj4gIAllbHNlIGlmIChJU19HRU45KGRldikpCj4gIAkJ c2tsX3dtX2dldF9od19zdGF0ZShkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4 IGYzMzVjOTIuLmUzNmY3NDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtNTE3 LDcgKzUxNyw3IEBAIHZvaWQgdmx2X3Bvd2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3By aXYtPmRldjsKPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAKPiAtCWlmIChX QVJOX09OKCFJU19WQUxMRVlWSUVXKGRldikpKQo+ICsJaWYgKFdBUk5fT04oIShJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSkpCgohVkxWICYmICFDSFYKCj4gIAkJcmV0 dXJuOwo+ICAKPiAgCS8qCj4gQEAgLTU4Miw3ICs1ODIsNyBAQCBzdGF0aWMgaW50IGVkcF9ub3Rp ZnlfaGFuZGxlcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgY29k ZSwKPiAgCj4gIAlwcHNfbG9jayhpbnRlbF9kcCk7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkgewo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikp IHsKPiAgCQllbnVtIHBpcGUgcGlwZSA9IHZsdl9wb3dlcl9zZXF1ZW5jZXJfcGlwZShpbnRlbF9k cCk7Cj4gIAkJaTkxNV9yZWdfdCBwcF9jdHJsX3JlZywgcHBfZGl2X3JlZzsKPiAgCQl1MzIgcHBf ZGl2Owo+IEBAIC02MTAsNyArNjEwLDcgQEAgc3RhdGljIGJvb2wgZWRwX2hhdmVfcGFuZWxfcG93 ZXIoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxk KCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYm Cj4gKwlpZiAoKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpICYmCj4g IAkgICAgaW50ZWxfZHAtPnBwc19waXBlID09IElOVkFMSURfUElQRSkKPiAgCQlyZXR1cm4gZmFs c2U7Cj4gIAo+IEBAIC02MjQsNyArNjI0LDcgQEAgc3RhdGljIGJvb2wgZWRwX2hhdmVfcGFuZWxf dmRkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAo+ICAJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZGV2X3ByaXYtPnBwc19tdXRleCk7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAm Jgo+ICsJaWYgKChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSAmJgo+ ICAJICAgIGludGVsX2RwLT5wcHNfcGlwZSA9PSBJTlZBTElEX1BJUEUpCj4gIAkJcmV0dXJuIGZh bHNlOwo+ICAKPiBAQCAtMTcyMyw3ICsxNzIzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfcHJl cGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCQlJOTE1X1dSSVRFKFRSQU5T X0RQX0NUTChjcnRjLT5waXBlKSwgdHJhbnNfZHApOwo+ICAJfSBlbHNlIHsKPiAgCQlpZiAoIUhB U19QQ0hfU1BMSVQoZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpICYmCj4gLQkJICAgIGNydGMt PmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKPiArCQkgICAgIUlTX0NIRVJSWVZJRVcoZGV2 KSAmJiBjcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCgpDb3VsZCBhY3R1YWxseSBy ZXBsYWNlIGFsbCB0aGF0IHdpdGggSVNfRzRYCgo+ICAJCQlpbnRlbF9kcC0+RFAgfD0gRFBfQ09M T1JfUkFOR0VfMTZfMjM1Owo+ICAKPiAgCQlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHX1BIU1lOQykKPiBAQCAtMjQxOCw3ICsyNDE4LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZHBfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7Cj4gIAo+ICAJaWYgKCFI QVNfUENIX1NQTElUKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJgo+IC0JICAgIHRtcCAm IERQX0NPTE9SX1JBTkdFXzE2XzIzNSkKPiArCSAgICAhSVNfQ0hFUlJZVklFVyhkZXYpICYmIHRt cCAmIERQX0NPTE9SX1JBTkdFXzE2XzIzNSkKCmRpdHRvCgo+ICAJCXBpcGVfY29uZmlnLT5saW1p dGVkX2NvbG9yX3JhbmdlID0gdHJ1ZTsKPiAgCj4gIAlwaXBlX2NvbmZpZy0+aGFzX2RwX2VuY29k ZXIgPSB0cnVlOwo+IEBAIC0yNjk0LDcgKzI2OTQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFi bGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAo+ICAJcHBzX2xvY2soaW50 ZWxfZHApOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQl2bHZfaW5pdF9wYW5lbF9wb3dl cl9zZXF1ZW5jZXIoaW50ZWxfZHApOwo+ICAKPiAgCS8qCj4gQEAgLTI3MjgsNyArMjcyOCw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cikKPiAgCj4gIAlwcHNfdW5sb2NrKGludGVsX2RwKTsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKSB7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 KSkgewo+ICAJCXVuc2lnbmVkIGludCBsYW5lX21hc2sgPSAweDA7Cj4gIAo+ICAJCWlmIChJU19D SEVSUllWSUVXKGRldikpCj4gQEAgLTMyMTgsNyArMzIxOCw3IEBAIGludGVsX2RwX3ZvbHRhZ2Vf bWF4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJaWYgKGRldl9wcml2LT5lZHBfbG93 X3Zzd2luZyAmJiBwb3J0ID09IFBPUlRfQSkKPiAgCQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0Vf U1dJTkdfTEVWRUxfMzsKPiAgCQlyZXR1cm4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8y Owo+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwl9IGVsc2UgaWYgKElTX1ZB TExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJcmV0dXJuIERQX1RSQUlO X1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKPiAgCWVsc2UgaWYgKElTX0dFTjcoZGV2KSAmJiBwb3J0 ID09IFBPUlRfQSkKPiAgCQlyZXR1cm4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8yOwo+ IEBAIC0zMjU5LDcgKzMyNTksNyBAQCBpbnRlbF9kcF9wcmVfZW1waGFzaXNfbWF4KHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3Qgdm9sdGFnZV9zd2luZykKPiAgCQlkZWZhdWx0Ogo+ ICAJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMDsKPiAgCQl9Cj4gLQl9IGVsc2Ug aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJc3dpdGNoICh2b2x0YWdlX3N3aW5nICYg RFBfVFJBSU5fVk9MVEFHRV9TV0lOR19NQVNLKSB7Cj4gIAkJY2FzZSBEUF9UUkFJTl9WT0xUQUdF X1NXSU5HX0xFVkVMXzA6Cj4gIAkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOwo+ IEBAIC00NTM5LDcgKzQ1MzksNyBAQCBib29sIGludGVsX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXJldHVybiBjcHRfZGlnaXRh bF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4gIAllbHNlIGlmIChJU19CUk9YVE9O KGRldl9wcml2KSkKPiAgCQlyZXR1cm4gYnh0X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2X3By aXYsIHBvcnQpOwo+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gKwllbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkK PiAgCQlyZXR1cm4gdmx2X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZGV2X3ByaXYsIHBvcnQpOwo+ ICAJZWxzZQo+ICAJCXJldHVybiBnNHhfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwg cG9ydCk7Cj4gQEAgLTQ5MzMsNyArNDkzMyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX2VuY29k ZXJfcmVzZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICAJICogUmVhZCBvdXQgdGhl IGN1cnJlbnQgcG93ZXIgc2VxdWVuY2VyIGFzc2lnbm1lbnQsCj4gIAkgKiBpbiBjYXNlIHRoZSBC SU9TIGRpZCBzb21ldGhpbmcgd2l0aCBpdC4KPiAgCSAqLwo+IC0JaWYgKElTX1ZBTExFWVZJRVco ZW5jb2Rlci0+ZGV2KSkKPiArCWlmIChJU19WQUxMRVlWSUVXKGVuY29kZXItPmRldikgfHwgSVNf Q0hFUlJZVklFVyhlbmNvZGVyLT5kZXYpKQo+ICAJCXZsdl9pbml0aWFsX3Bvd2VyX3NlcXVlbmNl cl9zZXR1cChpbnRlbF9kcCk7Cj4gIAo+ICAJaW50ZWxfZWRwX3BhbmVsX3ZkZF9zYW5pdGl6ZShp bnRlbF9kcCk7Cj4gQEAgLTUyOTMsNyArNTI5Myw3IEBAIGludGVsX2RwX2luaXRfcGFuZWxfcG93 ZXJfc2VxdWVuY2VyX3JlZ2lzdGVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgCS8q IEhhc3dlbGwgZG9lc24ndCBoYXZlIGFueSBwb3J0IHNlbGVjdGlvbiBiaXRzIGZvciB0aGUgcGFu ZWwKPiAgCSAqIHBvd2VyIHNlcXVlbmNlciBhbnkgbW9yZS4gKi8KPiAtCWlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhk ZXYpKSB7Cj4gIAkJcG9ydF9zZWwgPSBQQU5FTF9QT1JUX1NFTEVDVF9WTFYocG9ydCk7Cj4gIAl9 IGVsc2UgaWYgKEhBU19QQ0hfSUJYKGRldikgfHwgSEFTX1BDSF9DUFQoZGV2KSkgewo+ICAJCWlm IChwb3J0ID09IFBPUlRfQSkKPiBAQCAtNTQwNSwxMiArNTQwNSwxMiBAQCBzdGF0aWMgdm9pZCBp bnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcmVmcmVz aF9yYXRlKQo+ICAKPiAgCQl2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiAgCQlpZiAoaW5kZXggPiBE UlJTX0hJR0hfUlIpIHsKPiAtCQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiArCQkJaWYgKElT X1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJCQl2YWwgfD0gUElQ RUNPTkZfRURQX1JSX01PREVfU1dJVENIX1ZMVjsKPiAgCQkJZWxzZQo+ICAJCQkJdmFsIHw9IFBJ UEVDT05GX0VEUF9SUl9NT0RFX1NXSVRDSDsKPiAgCQl9IGVsc2Ugewo+IC0JCQlpZiAoSVNfVkFM TEVZVklFVyhkZXYpKQo+ICsJCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkKPiAgCQkJCXZhbCAmPSB+UElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIX1ZMVjsK PiAgCQkJZWxzZQo+ICAJCQkJdmFsICY9IH5QSVBFQ09ORl9FRFBfUlJfTU9ERV9TV0lUQ0g7Cj4g QEAgLTU3NzcsNyArNTc3Nyw3IEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nvbm5lY3Rv cihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJfQo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYt Pm1vZGVfY29uZmlnLm11dGV4KTsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4g KwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCWlu dGVsX2RwLT5lZHBfbm90aWZpZXIubm90aWZpZXJfY2FsbCA9IGVkcF9ub3RpZnlfaGFuZGxlcjsK PiAgCQlyZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJmludGVsX2RwLT5lZHBfbm90aWZpZXIpOwo+ ICAKPiBAQCAtNTgyNSw3ICs1ODI1LDcgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gIAkvKiBpbnRlbF9kcCB2ZnVu Y3MgKi8KPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICAJCWludGVsX2RwLT5n ZXRfYXV4X2Nsb2NrX2RpdmlkZXIgPSBza2xfZ2V0X2F1eF9jbG9ja19kaXZpZGVyOwo+IC0JZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYp IHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19kaXZp ZGVyID0gdmx2X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPiAgCWVsc2UgaWYgKElTX0hBU1dFTEwo ZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkKPiAgCQlpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19k aXZpZGVyID0gaHN3X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPiBAQCAtNTg2MCw4ICs1ODYwLDgg QEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQsCj4gIAkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVMX09VVFBVVF9FRFA7 Cj4gIAo+ICAJLyogZURQIG9ubHkgb24gcG9ydCBCIGFuZC9vciBDIG9uIHZsdi9jaHYgKi8KPiAt CWlmIChXQVJOX09OKElTX1ZBTExFWVZJRVcoZGV2KSAmJiBpc19lZHAoaW50ZWxfZHApICYmCj4g LQkJICAgIHBvcnQgIT0gUE9SVF9CICYmIHBvcnQgIT0gUE9SVF9DKSkKPiArCWlmIChXQVJOX09O KChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSAmJgo+ICsJCSAgICBp c19lZHAoaW50ZWxfZHApICYmIHBvcnQgIT0gUE9SVF9CICYmIHBvcnQgIT0gUE9SVF9DKSkKPiAg CQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJRFJNX0RFQlVHX0tNUygiQWRkaW5nICVzIGNvbm5lY3Rv ciBvbiBwb3J0ICVjXG4iLAo+IEBAIC01OTEyLDcgKzU5MTIsNyBAQCBpbnRlbF9kcF9pbml0X2Nv bm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiAgCWlm IChpc19lZHAoaW50ZWxfZHApKSB7Cj4gIAkJcHBzX2xvY2soaW50ZWxfZHApOwo+ICAJCWludGVs X2RwX2luaXRfcGFuZWxfcG93ZXJfdGltZXN0YW1wcyhpbnRlbF9kcCk7Cj4gLQkJaWYgKElTX1ZB TExFWVZJRVcoZGV2KSkKPiArCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkKPiAgCQkJdmx2X2luaXRpYWxfcG93ZXJfc2VxdWVuY2VyX3NldHVwKGludGVsX2Rw KTsKPiAgCQllbHNlCj4gIAkJCWludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKGRl diwgaW50ZWxfZHApOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gaW5kZXggMjMwOTU3Zi4u Y2FkYTczNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gQEAgLTM2OSw3ICszNjks NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfZGV2aWNlX3JlYWR5KHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ YmFzZS5kZXY7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPiArCWlmIChJU19WQUxM RVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJCXZsdl9kc2lfZGV2aWNlX3Jl YWR5KGVuY29kZXIpOwo+ICAJZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKQo+ICAJCWJ4dF9kc2lf ZGV2aWNlX3JlYWR5KGVuY29kZXIpOwo+IEBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfZHNpX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAo+ ICAJbXNsZWVwKGludGVsX2RzaS0+cGFuZWxfb25fZGVsYXkpOwo+ICAKPiAtCWlmIChJU19WQUxM RVlWSUVXKGRldikpIHsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklF VyhkZXYpKSB7Cj4gIAkJLyoKPiAgCQkgKiBEaXNhYmxlIERQT3VuaXQgY2xvY2sgZ2F0aW5nLCBj YW4gc3RhbGwgcGlwZQo+ICAJCSAqIGFuZCB3ZSBuZWVkIERQTEwgUkVGQSBhbHdheXMgZW5hYmxl ZAo+IEBAIC02ODQsOCArNjg0LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHNpX2dldF9od19zdGF0 ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkgKiBFbmFibGUgYml0IGRvZXMg bm90IGdldCBzZXQuIFRvIGNoZWNrIHdoZXRoZXIgRFNJIFBvcnQgQwo+ICAJCSAqIHdhcyBlbmFi bGVkIGluIEJJT1MsIGNoZWNrIHRoZSBQaXBlIEIgZW5hYmxlIGJpdAo+ICAJCSAqLwo+IC0JCWlm IChJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJgo+IC0JCSAgICAo cG9ydCA9PSBQT1JUX0MpKQo+ICsJCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYgKHBvcnQgPT0g UE9SVF9DKSkKCkNvdWxkIHRocm93IGF3YXkgdGhlIGV4dHJhIHBhcmVucyBhcm91bmQgdGhlID09 IHdoaWxlIGl0IGF0LgoKPiAgCQkJZHBpX2VuYWJsZWQgPSBJOTE1X1JFQUQoUElQRUNPTkYoUElQ RV9CKSkgJgo+ICAJCQkJCQkJUElQRUNPTkZfRU5BQkxFOwo+ICAKPiBAQCAtNzE2LDcgKzcxNSw4 IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICAKPiAgCWlmIChJU19CUk9YVE9OKGVuY29kZXItPmJhc2UuZGV2KSkKPiAg CQlwY2xrID0gYnh0X2dldF9kc2lfcGNsayhlbmNvZGVyLCBwaXBlX2NvbmZpZy0+cGlwZV9icHAp Owo+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhlbmNvZGVyLT5iYXNlLmRldikpCj4gKwllbHNl IGlmIChJU19WQUxMRVlWSUVXKGVuY29kZXItPmJhc2UuZGV2KSB8fAo+ICsJCSBJU19DSEVSUllW SUVXKGVuY29kZXItPmJhc2UuZGV2KSkKPiAgCQlwY2xrID0gdmx2X2dldF9kc2lfcGNsayhlbmNv ZGVyLCBwaXBlX2NvbmZpZy0+cGlwZV9icHApOwo+ICAKPiAgCWlmICghcGNsaykKPiBAQCAtODY5 LDcgKzg2OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9l bmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAJfQo+ICAKPiAgCWZvcl9lYWNoX2RzaV9wb3J0KHBv cnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiAtCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4g KwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQkJ LyoKPiAgCQkJICogZXNjYXBlIGNsb2NrIGRpdmlkZXIsIDIwTUh6LCBzaGFyZWQgZm9yIEEgYW5k IEMuCj4gIAkJCSAqIGRldmljZSByZWFkeSBtdXN0IGJlIG9mZiB3aGVuIGRvaW5nIHRoaXMhIHR4 Y2xrZXNjPwo+IEBAIC0xMTI5LDcgKzExMjksNyBAQCB2b2lkIGludGVsX2RzaV9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpZiAoIWRldl9wcml2LT52YnQuaGFzX21pcGkpCj4gIAkJ cmV0dXJuOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChJU19WQUxM RVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPm1pcGlf bW1pb19iYXNlID0gVkxWX01JUElfQkFTRTsKPiAgCX0gZWxzZSB7Cj4gIAkJRFJNX0VSUk9SKCJV bnN1cHBvcnRlZCBNaXBpIGRldmljZSB0byByZWcgYmFzZSIpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kc2lfcGxsLmMKPiBpbmRleCBjYjNjZjM5Li5mYmQyYjUxIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+IEBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBpbnRlbF9l bmFibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgewo+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+ICAKPiAtCWlmIChJU19W QUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkKPiAgCQl2bHZfZW5hYmxlX2RzaV9wbGwoZW5jb2Rlcik7Cj4gIAllbHNlIGlmIChJ U19CUk9YVE9OKGRldikpCj4gIAkJYnh0X2VuYWJsZV9kc2lfcGxsKGVuY29kZXIpOwo+IEBAIC01 NzEsNyArNTcxLDcgQEAgdm9pZCBpbnRlbF9kaXNhYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVy LT5iYXNlLmRldjsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJaWYgKElTX1ZB TExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJdmx2X2Rpc2FibGVfZHNp X3BsbChlbmNvZGVyKTsKPiAgCWVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkKPiAgCQlieHRfZGlz YWJsZV9kc2lfcGxsKGVuY29kZXIpOwo+IEBAIC01OTksNiArNTk5LDYgQEAgdm9pZCBpbnRlbF9k c2lfcmVzZXRfY2xvY2tzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBlbnVtIHBvcnQg cG9ydCkKPiAgCj4gIAlpZiAoSVNfQlJPWFRPTihkZXYpKQo+ICAJCWJ4dF9kc2lfcmVzZXRfY2xv Y2tzKGVuY29kZXIsIHBvcnQpOwo+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJ ZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQl2 bHZfZHNpX3Jlc2V0X2Nsb2NrcyhlbmNvZGVyLCBwb3J0KTsKPiAgfQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oZG1pLmMKPiBpbmRleCBjMzk3OGJhLi5iZTdmYWI5IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkbWkuYwo+IEBAIC02MzgsNyArNjM4LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfaGRt aV9zZXRfZ2NwX2luZm9mcmFtZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIAo+ICAJ aWYgKEhBU19EREkoZGV2X3ByaXYpKQo+ICAJCXJlZyA9IEhTV19UVklERU9fRElQX0dDUChjcnRj LT5jb25maWctPmNwdV90cmFuc2NvZGVyKTsKPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZ VklFVyhkZXZfcHJpdikpCj4gIAkJcmVnID0gVkxWX1RWSURFT19ESVBfR0NQKGNydGMtPnBpcGUp Owo+ICAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdi0+ZGV2KSkKPiAgCQlyZWcgPSBU VklERU9fRElQX0dDUChjcnRjLT5waXBlKTsKPiBAQCAtMjEwMCw3ICsyMTAwLDcgQEAgdm9pZCBp bnRlbF9oZG1pX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0LAo+ICAJCUJVRygpOwo+ICAJfQo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7 Cj4gIAkJaW50ZWxfaGRtaS0+d3JpdGVfaW5mb2ZyYW1lID0gdmx2X3dyaXRlX2luZm9mcmFtZTsK PiAgCQlpbnRlbF9oZG1pLT5zZXRfaW5mb2ZyYW1lcyA9IHZsdl9zZXRfaW5mb2ZyYW1lczsKPiAg CQlpbnRlbF9oZG1pLT5pbmZvZnJhbWVfZW5hYmxlZCA9IHZsdl9pbmZvZnJhbWVfZW5hYmxlZDsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCj4gaW5kZXggYjE3Nzg1Ny4uYTI5NGEz YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKPiBAQCAtNDA3LDcgKzQw Nyw3IEBAIHZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gIAkJCSAqIGhvdHBsdWcgYml0cyBpdHNlbGYuIFNvIG9ubHkgV0FSTiBhYm91dCB1bmV4cGVj dGVkCj4gIAkJCSAqIGludGVycnVwdHMgb24gc2FuZXIgcGxhdGZvcm1zLgo+ICAJCQkgKi8KPiAt CQkJV0FSTl9PTkNFKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgJiYgIUlTX1ZBTExFWVZJRVco ZGV2KSwKPiArCQkJV0FSTl9PTkNFKCFIQVNfR01DSF9ESVNQTEFZKGRldiksCj4gIAkJCQkgICJS ZWNlaXZlZCBIUEQgaW50ZXJydXB0IG9uIHBpbiAlZCBhbHRob3VnaCBkaXNhYmxlZFxuIiwgaSk7 Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaTJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+IGluZGV4 IGUyNmUyMmEuLjI1MjU0YjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaTJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+IEBAIC02 MzYsNyArNjM2LDcgQEAgaW50IGludGVsX3NldHVwX2dtYnVzKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gIAlpZiAoSEFTX1BDSF9OT1AoZGV2KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpCj4gIAkJZGV2X3ByaXYtPmdwaW9fbW1pb19iYXNlID0gVkxWX0RJU1BMQVlf QkFTRTsKPiAgCWVsc2UgaWYgKCFIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2KSkKPiAgCQlkZXZf cHJpdi0+Z3Bpb19tbWlvX2Jhc2UgPQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IGlu ZGV4IGFlODA4YjYuLjcyMTgzYTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcGFuZWwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMK PiBAQCAtMTc4NCw3ICsxNzg0LDcgQEAgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Mo c3RydWN0IGludGVsX3BhbmVsICpwYW5lbCkKPiAgCQlwYW5lbC0+YmFja2xpZ2h0LnNldCA9IHBj aF9zZXRfYmFja2xpZ2h0Owo+ICAJCXBhbmVsLT5iYWNrbGlnaHQuZ2V0ID0gcGNoX2dldF9iYWNr bGlnaHQ7Cj4gIAkJcGFuZWwtPmJhY2tsaWdodC5oel90b19wd20gPSBwY2hfaHpfdG9fcHdtOwo+ IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCX0gZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCWlmIChkZXZfcHJpdi0+ dmJ0Lmhhc19taXBpKSB7Cj4gIAkJCXBhbmVsLT5iYWNrbGlnaHQuc2V0dXAgPSBwd21fc2V0dXBf YmFja2xpZ2h0Owo+ICAJCQlwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZSA9IHB3bV9lbmFibGVfYmFj a2xpZ2h0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IGVlMDVjZTguLmZlNTYxODEg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQg aW50ZWxfc2V0X21lbW9yeV9jeHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg Ym9vbCBlbmFibGUpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsK PiAgCXUzMiB2YWw7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKElT X1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQlJOTE1X1dSSVRF KEZXX0JMQ19TRUxGX1ZMViwgZW5hYmxlID8gRldfQ1NQV1JEV05FTiA6IDApOwo+ICAJCVBPU1RJ TkdfUkVBRChGV19CTENfU0VMRl9WTFYpOwo+ICAJCWRldl9wcml2LT53bS52bHYuY3hzciA9IGVu YWJsZTsKPiBAQCAtNDQwNSw3ICs0NDA1LDcgQEAgdm9pZCBnZW42X3Jwc19pZGxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cnBzLmh3X2xvY2spOwo+ICAJaWYgKGRldl9wcml2LT5ycHMuZW5hYmxlZCkgewo+IC0JCWlmIChJ U19WQUxMRVlWSUVXKGRldikpCj4gKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpCj4gIAkJCXZsdl9zZXRfcnBzX2lkbGUoZGV2X3ByaXYpOwo+ICAJCWVsc2UK PiAgCQkJZ2VuNl9zZXRfcnBzKGRldl9wcml2LT5kZXYsIGRldl9wcml2LT5ycHMuaWRsZV9mcmVx KTsKPiBAQCAtNDQ1OCw3ICs0NDU4LDcgQEAgdm9pZCBnZW42X3Jwc19ib29zdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICB2b2lkIGludGVsX3NldF9ycHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdTggdmFsKQo+ICB7Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYp KQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJ dmFsbGV5dmlld19zZXRfcnBzKGRldiwgdmFsKTsKPiAgCWVsc2UKPiAgCQlnZW42X3NldF9ycHMo ZGV2LCB2YWwpOwo+IEBAIC00NTAyLDcgKzQ1MDIsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3 X2Rpc2FibGVfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICBzdGF0aWMgdm9pZCBp bnRlbF9wcmludF9yYzZfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgbW9kZSkKPiAg ewo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQlpZiAobW9kZSAmIChHRU43X1JDX0NUTF9U T19NT0RFIHwgR0VONl9SQ19DVExfRUlfTU9ERSgxKSkpCj4gIAkJCW1vZGUgPSBHRU42X1JDX0NU TF9SQzZfRU5BQkxFOwo+ICAJCWVsc2UKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+IGluZGV4 IGI2NjA5ZTYuLjE3NzhhN2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcHNyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+IEBAIC0z MzIsOCArMzMyLDggQEAgc3RhdGljIGJvb2wgaW50ZWxfcHNyX21hdGNoX2NvbmRpdGlvbnMoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+IC0J aWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgKChkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbmsp IHx8Cj4gLQkJCQkgICAgKGRpZ19wb3J0LT5wb3J0ICE9IFBPUlRfQSkpKSB7Cj4gKwlpZiAoIUlT X1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmCj4gKwkgICAgKChkZXZf cHJpdi0+dmJ0LnBzci5mdWxsX2xpbmspIHx8IChkaWdfcG9ydC0+cG9ydCAhPSBQT1JUX0EpKSkg ewoKQ291bGQgcmVtb3ZlIHNvbWUgb2YgdGhlIHVzbGVzcyBwYXJlbnMgaGVyZSB0b28uCgo+ICAJ CURSTV9ERUJVR19LTVMoIlBTUiBjb25kaXRpb24gZmFpbGVkOiBMaW5rIFN0YW5kYnkgcmVxdWVz dGVkL25lZWRlZCBidXQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtXG4iKTsKPiAgCQly ZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIGludGVsX3Bzcl9z aW5nbGVfZnJhbWVfdXBkYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkgKiBTaW5nbGUg ZnJhbWUgdXBkYXRlIGlzIGFscmVhZHkgc3VwcG9ydGVkIG9uIEJEVysgYnV0IGl0IHJlcXVpcmVz Cj4gIAkgKiBtYW55IFcvQSBhbmQgaXQgaXNuJ3QgcmVhbGx5IG5lZWRlZC4KPiAgCSAqLwo+IC0J aWYgKCFJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAh SVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJCXJldHVybjsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZf cHJpdi0+cHNyLmxvY2spOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXgg MmI5NmYzMy4uZjhiZjYyMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4g QEAgLTk1MSw3ICs5NTEsNyBAQCBpbnQgaW50ZWxfc3ByaXRlX3NldF9jb2xvcmtleShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJaWYgKChzZXQtPmZsYWdzICYgKEk5MTVf U0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9OIHwgSTkxNV9TRVRfQ09MT1JLRVlfU09VUkNFKSkgPT0g KEk5MTVfU0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9OIHwgSTkxNV9TRVRfQ09MT1JLRVlfU09VUkNF KSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYm Cj4gKwlpZiAoKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpICYmCj4g IAkgICAgc2V0LT5mbGFncyAmIEk5MTVfU0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9OKQo+ICAJCXJl dHVybiAtRUlOVkFMOwo+ICAKPiBAQCAtMTA4Niw3ICsxMDg2LDcgQEAgaW50ZWxfcGxhbmVfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwgaW50IHBsYW5lKQo+ICAJ CQlpbnRlbF9wbGFuZS0+bWF4X2Rvd25zY2FsZSA9IDE7Cj4gIAkJfQo+ICAKPiAtCQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKSB7Cj4gKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpIHsKPiAgCQkJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZSA9IHZsdl91cGRh dGVfcGxhbmU7Cj4gIAkJCWludGVsX3BsYW5lLT5kaXNhYmxlX3BsYW5lID0gdmx2X2Rpc2FibGVf cGxhbmU7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNv cmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gaW5kZXggYzIzNThi YS4uZmNmMDRmZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNv cmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTEx MTUsNyArMTExNSw3IEBAIHN0YXRpYyB2b2lkIGZ3X2RvbWFpbl9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlkLT52YWxfY2xlYXIgPSBfTUFTS0VEX0JJVF9ESVNB QkxFKEZPUkNFV0FLRV9LRVJORUwpOwo+ICAJfQo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dl9wcml2KSkKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkKPiAgCQlkLT5yZWdfcG9zdCA9IEZPUkNFV0FLRV9BQ0tfVkxWOwo+ICAJZWxz ZSBpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZfcHJpdikgfHwgSVNfR0VOOChk ZXZfcHJpdikpCj4gIAkJZC0+cmVnX3Bvc3QgPSBFQ09CVVM7Cj4gQEAgLTExNDgsNyArMTE0OCw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgCQkJICAgICAgIEZPUkNFV0FLRV9BQ0tfQkxJVFRFUl9HRU45KTsKPiAg CQlmd19kb21haW5faW5pdChkZXZfcHJpdiwgRldfRE9NQUlOX0lEX01FRElBLAo+ICAJCQkgICAg ICAgRk9SQ0VXQUtFX01FRElBX0dFTjksIEZPUkNFV0FLRV9BQ0tfTUVESUFfR0VOOSk7Cj4gLQl9 IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPnVuY29yZS5m dW5jcy5mb3JjZV93YWtlX2dldCA9IGZ3X2RvbWFpbnNfZ2V0Owo+ICAJCWlmICghSVNfQ0hFUlJZ VklFVyhkZXYpKQo+ICAJCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0ID0K PiAtLSAKPiAyLjYuMwoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK