From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Boyer, Wayne" Subject: Re: [PATCH 1/5] drm/i915: Separate cherryview from valleyview Date: Wed, 9 Dec 2015 20:27:26 +0000 Message-ID: References: <20151208115138.GQ4437@intel.com> <1449604013-462-1-git-send-email-wayne.boyer@intel.com> <20151209171036.GJ4437@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 660886E366 for ; Wed, 9 Dec 2015 12:27:28 -0800 (PST) In-Reply-To: <20151209171036.GJ4437@intel.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?iso-8859-1?Q?Ville_Syrj=E4l=E4?= Cc: "intel-gfx@lists.freedesktop.org" , "Vivi, Rodrigo" List-Id: intel-gfx@lists.freedesktop.org VGhhbmtzIFZpbGxlLiAgSSdsbCBzZW5kIG9uZSBtb3JlIHVwZGF0ZSB3aXRoIHNvbWUgb2YgdGhl IGNoYW5nZXMuICBJJ2xsCmxlYXZlIHRoZSBvdGhlcnMgZm9yIGEgZGlmZmVyZW50IHBhdGNoLiAg RGV0YWlscyBiZWxvdy4KCldheW5lCiAKT24gMTIvOS8xNSwgOToxMCBBTSwgIlZpbGxlIFN5cmrD pGzDpCIgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPiB3cm90ZToKCgo+T24gVHVlLCBE ZWMgMDgsIDIwMTUgYXQgMTE6NDY6NTNBTSAtMDgwMCwgV2F5bmUgQm95ZXIgd3JvdGU6Cj4+IFRo ZSBjaGVycnl2aWV3IGRldmljZSBzaGFyZXMgbWFueSBjaGFyYWN0ZXJpc3RpY3Mgd2l0aCB0aGUg dmFsbGV5dmlldwo+PiBkZXZpY2UuICBXaGVuIHN1cHBvcnQgd2FzIGFkZGVkIHRvIHRoZSBkcml2 ZXIgZm9yIGNoZXJyeXZpZXcsIHRoZQo+PiBjb3JyZXNwb25kaW5nIGRldmljZSBpbmZvIHN0cnVj dHVyZSBpbmNsdWRlZCAuaXNfdmFsbGV5dmlldyA9IDEuCj4+IFRoaXMgaXMgbm90IGNvcnJlY3Qg YW5kIGxlYWRzIHRvIHNvbWUgY29uZnVzaW9uLgo+PiAKPj4gVGhpcyBwYXRjaCBjaGFuZ2VzIC5p c192YWxsZXl2aWV3IHRvIC5pc19jaGVycnl2aWV3IGluIHRoZSBjaGVycnl2aWV3Cj4+IGRldmlj ZSBpbmZvIHN0cnVjdHVyZSBhbmQgc2ltcGxpZmllcyB0aGUgSVNfQ0hFUlJZVklFVyBtYWNyby4K Pj4gVGhlbiB3aGVyZSBhcHByb3ByaWF0ZSwgaW5zdGFuY2VzIG9mIElTX1ZBTExFWVZJRVcgYXJl IHJlcGxhY2VkIHdpdGgKPj4gSVNfVkFMTEVZVklFVyB8fCBJU19DSEVSUllWSUVXIG9yIGVxdWl2 YWxlbnQuCj4+IAo+PiB2MjogVXNlIElTX1ZBTExFWVZJRVcgfHwgSVNfQ0hFUlJZVklFVyBpbnN0 ZWFkIG9mIGRlZmluaW5nIGEgbmV3IG1hY3JvLgo+PiAgICAgQWxzbyBhZGQgZm9sbG93dXAgcGF0 Y2hlcyB0byBmaXggaXNzdWVzIGRpc2NvdmVyZWQgZHVyaW5nIHRoZSBmaXJzdAo+PiAgICAgcmV2 aWV3LiAoVmlsbGUpCj4+IHYzOiBGaXggc29tZSBzdHlsZSBpc3N1ZXMgYW5kIG9uZSBnZW4gY2hl Y2suIFJlbW92ZSBDUlQgcmVsYXRlZCBjaGFuZ2VzCj4+ICAgICBhcyBDUlQgaXMgbm90IHN1cHBv cnRlZCBvbiBDSFYuIChJbXJlLCBWaWxsZSkKPj4gCj4+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+PiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdv LnZpdmlAaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBXYXluZSBCb3llciA8d2F5bmUuYm95 ZXJAaW50ZWwuY29tPgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jICAgICB8IDY4Cj4+KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jICAgICAgICAgfCAgOCArKy0tCj4+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAxMCArKy0tLQo+PiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgMTYgKysrKystLS0KPj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8ICA0ICstCj4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAgMiArLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYyAgICAgICAgIHwgIDggKystLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zdXNwZW5kLmMgICAgIHwgIDQgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c3lzZnMuYyAgICAgICB8IDEwICsrLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dWRpby5jICAgICAgfCAgNyArKy0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgICAgfCA1NCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgIHwgNDAgKysrKysrKysrLS0tLS0tLS0tLQo+PiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgICAgICAgIHwgMTQgKysrLS0tLQo+PiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jICAgIHwgIDYgKy0tCj4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgICAgfCAgNCArLQo+PiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jICAgIHwgIDIgKy0KPj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2kyYy5jICAgICAgICB8ICAyICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wYW5lbC5jICAgICAgfCAgMiArLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYyAgICAgICAgIHwgIDggKystLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cHNyLmMgICAgICAgIHwgIDYgKy0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJp dGUuYyAgICAgfCAgNCArLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMg ICAgIHwgIDQgKy0KPgo+TG9va3MgbGlrZSB5b3UgbWlzc2VkOgo+c2FuaXRpemVfZW5hYmxlX3Bw Z3R0KCkgaW4gaTkxNV9nZW1fZ3R0LmMKPldlbGwsIGl0IGp1c3QgaGFzIGEgcG9pbnRsZXNzICFD SFYgaW4gbGVmdCBpbiB0aGVyZS4KCkZpeGVkLgoKPgo+SSBkaWRuJ3QgZmluZCBhbnl0aGluZyB3 cm9uZyBpbiB0aGVyZSBhbnltb3JlLiBKdXN0IHNvbWUgbWlub3IKPnNpbXBsaWZpY2F0aW9ucyBh bmQgYmlrZXNoZWRzIHRoYXQgY291bGQgYmUgZG9uZSBhcyBwYXJ0IG9mIHRoaXMKPnBhdGNoLCBv ciBtYXliZSBzb21lIG9mIHRoZW0gY291bGQgYmUgZm9sbG93dXBzLiBTZWUgYmVsb3cuCj4KPj4g IDIyIGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCAxMzcgZGVsZXRpb25zKC0pCj4+ IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj5i L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+IGluZGV4IGE4NzIxZmMuLmZm ZjMxMjUzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiBAQCAtMTE0 Miw4ICsxMTQyLDM0IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUKPj4qbSwgdm9pZCAqdW51c2VkKQo+PiAgCQkJICAgTUVNU1RBVF9WSURfU0hJRlQpOwo+ PiAgCQlzZXFfcHJpbnRmKG0sICJDdXJyZW50IFAtc3RhdGU6ICVkXG4iLAo+PiAgCQkJICAgKHJn dnN0YXQgJiBNRU1TVEFUX1BTVEFURV9NQVNLKSA+PiBNRU1TVEFUX1BTVEFURV9TSElGVCk7Cj4+ IC0JfSBlbHNlIGlmIChJU19HRU42KGRldikgfHwgKElTX0dFTjcoZGV2KSAmJiAhSVNfVkFMTEVZ VklFVyhkZXYpKSB8fAo+PiAtCQkgICBJU19CUk9BRFdFTEwoZGV2KSB8fCBJU19HRU45KGRldikp IHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRl dikpIHsKPj4gKwkJdTMyIGZyZXFfc3RzOwo+PiArCj4+ICsJCW11dGV4X2xvY2soJmRldl9wcml2 LT5ycHMuaHdfbG9jayk7Cj4+ICsJCWZyZXFfc3RzID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYs IFBVTklUX1JFR19HUFVfRlJFUV9TVFMpOwo+PiArCQlzZXFfcHJpbnRmKG0sICJQVU5JVF9SRUdf R1BVX0ZSRVFfU1RTOiAweCUwOHhcbiIsIGZyZXFfc3RzKTsKPj4gKwkJc2VxX3ByaW50ZihtLCAi RERSIGZyZXE6ICVkIE1IelxuIiwgZGV2X3ByaXYtPm1lbV9mcmVxKTsKPj4gKwo+PiArCQlzZXFf cHJpbnRmKG0sICJhY3R1YWwgR1BVIGZyZXE6ICVkIE1IelxuIiwKPj4gKwkJCSAgIGludGVsX2dw dV9mcmVxKGRldl9wcml2LCAoZnJlcV9zdHMgPj4gOCkgJiAweGZmKSk7Cj4+ICsKPj4gKwkJc2Vx X3ByaW50ZihtLCAiY3VycmVudCBHUFUgZnJlcTogJWQgTUh6XG4iLAo+PiArCQkJICAgaW50ZWxf Z3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuY3VyX2ZyZXEpKTsKPj4gKwo+PiArCQlz ZXFfcHJpbnRmKG0sICJtYXggR1BVIGZyZXE6ICVkIE1IelxuIiwKPj4gKwkJCSAgIGludGVsX2dw dV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLm1heF9mcmVxKSk7Cj4+ICsKPj4gKwkJc2Vx X3ByaW50ZihtLCAibWluIEdQVSBmcmVxOiAlZCBNSHpcbiIsCj4+ICsJCQkgICBpbnRlbF9ncHVf ZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5taW5fZnJlcSkpOwo+PiArCj4+ICsJCXNlcV9w cmludGYobSwgImlkbGUgR1BVIGZyZXE6ICVkIE1IelxuIiwKPj4gKwkJCSAgIGludGVsX2dwdV9m cmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSkpOwo+PiArCj4+ICsJCXNlcV9w cmludGYobSwKPj4gKwkJCSAgICJlZmZpY2llbnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIs Cj4+ICsJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5lZmZpY2ll bnRfZnJlcSkpOwo+PiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4+ ICsJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KSB7Cj4+ICAJCXUzMiBycF9z dGF0ZV9saW1pdHM7Cj4+ICAJCXUzMiBndF9wZXJmX3N0YXR1czsKPj4gIAkJdTMyIHJwX3N0YXRl X2NhcDsKPj4gQEAgLTEyODQsMzMgKzEzMTAsNiBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5 X2luZm8oc3RydWN0IHNlcV9maWxlCj4+Km0sIHZvaWQgKnVudXNlZCkKPj4gIAkJc2VxX3ByaW50 ZihtLAo+PiAgCQkJICAgImVmZmljaWVudCAoUlBlKSBmcmVxdWVuY3k6ICVkIE1IelxuIiwKPj4g IAkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9m cmVxKSk7Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gLQkJdTMyIGZy ZXFfc3RzOwo+PiAtCj4+IC0JCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4+ IC0JCWZyZXFfc3RzID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19HUFVfRlJF UV9TVFMpOwo+PiAtCQlzZXFfcHJpbnRmKG0sICJQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTOiAweCUw OHhcbiIsIGZyZXFfc3RzKTsKPj4gLQkJc2VxX3ByaW50ZihtLCAiRERSIGZyZXE6ICVkIE1Ielxu IiwgZGV2X3ByaXYtPm1lbV9mcmVxKTsKPj4gLQo+PiAtCQlzZXFfcHJpbnRmKG0sICJhY3R1YWwg R1BVIGZyZXE6ICVkIE1IelxuIiwKPj4gLQkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCAo ZnJlcV9zdHMgPj4gOCkgJiAweGZmKSk7Cj4+IC0KPj4gLQkJc2VxX3ByaW50ZihtLCAiY3VycmVu dCBHUFUgZnJlcTogJWQgTUh6XG4iLAo+PiAtCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYs IGRldl9wcml2LT5ycHMuY3VyX2ZyZXEpKTsKPj4gLQo+PiAtCQlzZXFfcHJpbnRmKG0sICJtYXgg R1BVIGZyZXE6ICVkIE1IelxuIiwKPj4gLQkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBk ZXZfcHJpdi0+cnBzLm1heF9mcmVxKSk7Cj4+IC0KPj4gLQkJc2VxX3ByaW50ZihtLCAibWluIEdQ VSBmcmVxOiAlZCBNSHpcbiIsCj4+IC0JCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2 X3ByaXYtPnJwcy5taW5fZnJlcSkpOwo+PiAtCj4+IC0JCXNlcV9wcmludGYobSwgImlkbGUgR1BV IGZyZXE6ICVkIE1IelxuIiwKPj4gLQkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZf cHJpdi0+cnBzLmlkbGVfZnJlcSkpOwo+PiAtCj4+IC0JCXNlcV9wcmludGYobSwKPj4gLQkJCSAg ICJlZmZpY2llbnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIsCj4+IC0JCQkgICBpbnRlbF9n cHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSkpOwo+PiAtCQlt dXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4+ICAJfSBlbHNlIHsKPj4gIAkJ c2VxX3B1dHMobSwgIm5vIFAtc3RhdGUgaW5mbyBhdmFpbGFibGVcbiIpOwo+PiAgCX0KPj4gQEAg LTE2MDIsNyArMTYwMSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcnBjX2luZm8oc3RydWN0IHNlcV9m aWxlICptLAo+PnZvaWQgKnVudXNlZCkKPj4gIAlzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9 IG0tPnByaXZhdGU7Cj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5k ZXY7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCWlmIChJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgCQlyZXR1cm4gdmx2X2RycGNfaW5m byhtKTsKPj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQo+PiAgCQlyZXR1 cm4gZ2VuNl9kcnBjX2luZm8obSk7Cj4+IEBAIC0xNzQzLDcgKzE3NDIsNyBAQCBzdGF0aWMgaW50 IGk5MTVfc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwKPj52b2lkICp1bnVzZWQpCj4+ICAJ CXNyX2VuYWJsZWQgPSBJOTE1X1JFQUQoSU5TVFBNKSAmIElOU1RQTV9TRUxGX0VOOwo+PiAgCWVs c2UgaWYgKElTX1BJTkVWSUVXKGRldikpCj4+ICAJCXNyX2VuYWJsZWQgPSBJOTE1X1JFQUQoRFNQ RlczKSAmIFBJTkVWSUVXX1NFTEZfUkVGUkVTSF9FTjsKPj4gLQllbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldikpCj4+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkKPj4gIAkJc3JfZW5hYmxlZCA9IEk5MTVfUkVBRChGV19CTENfU0VMRl9WTFYpICYg RldfQ1NQV1JEV05FTjsKPj4gIAo+PiAgCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsK Pj4gQEAgLTM5ODMsNyArMzk4Miw3IEBAIHN0YXRpYyBpbnQgcGlwZV9jcmNfc2V0X3NvdXJjZShz dHJ1Y3QgZHJtX2RldmljZQo+PipkZXYsIGVudW0gcGlwZSBwaXBlLAo+PiAgCQlyZXQgPSBpOHh4 X3BpcGVfY3JjX2N0bF9yZWcoJnNvdXJjZSwgJnZhbCk7Cj4+ICAJZWxzZSBpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA1KQo+PiAgCQlyZXQgPSBpOXh4X3BpcGVfY3JjX2N0bF9yZWcoZGV2LCBw aXBlLCAmc291cmNlLCAmdmFsKTsKPj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4g IAkJcmV0ID0gdmx2X3BpcGVfY3JjX2N0bF9yZWcoZGV2LCBwaXBlLCAmc291cmNlLCAmdmFsKTsK Pj4gIAllbHNlIGlmIChJU19HRU41KGRldikgfHwgSVNfR0VONihkZXYpKQo+PiAgCQlyZXQgPSBp bGtfcGlwZV9jcmNfY3RsX3JlZygmc291cmNlLCAmdmFsKTsKPj4gQEAgLTQwNTIsNyArNDA1MSw3 IEBAIHN0YXRpYyBpbnQgcGlwZV9jcmNfc2V0X3NvdXJjZShzdHJ1Y3QgZHJtX2RldmljZQo+Pipk ZXYsIGVudW0gcGlwZSBwaXBlLAo+PiAgCj4+ICAJCWlmIChJU19HNFgoZGV2KSkKPj4gIAkJCWc0 eF91bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2LCBwaXBlKTsKPj4gLQkJZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQo+PiArCQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNf Q0hFUlJZVklFVyhkZXYpKQo+PiAgCQkJdmx2X3VuZG9fcGlwZV9zY3JhbWJsZV9yZXNldChkZXYs IHBpcGUpOwo+PiAgCQllbHNlIGlmIChJU19IQVNXRUxMKGRldikgJiYgcGlwZSA9PSBQSVBFX0Ep Cj4+ICAJCQloc3dfdHJhbnNfZWRwX3BpcGVfQV9jcmNfd2EoZGV2LCBmYWxzZSk7Cj4+IEBAIC00 NDQyLDcgKzQ0NDEsOCBAQCBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5X3Nob3coc3RydWN0IHNlcV9m aWxlICptLAo+PmNvbnN0IHVpbnQxNl90IHdtWzhdKQo+PiAgCQkgKiAtIFdNMSsgbGF0ZW5jeSB2 YWx1ZXMgaW4gMC41dXMgdW5pdHMKPj4gIAkJICogLSBsYXRlbmNpZXMgYXJlIGluIHVzIG9uIGdl bjkvdmx2L2Nodgo+PiAgCQkgKi8KPj4gLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkg fHwgSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OSB8fCBJU19WQUxMRVlWSUVXKGRldikgfHwKPj4gKwkJICAgIElTX0NIRVJSWVZJRVcoZGV2KSkK Pj4gIAkJCWxhdGVuY3kgKj0gMTA7Cj4+ICAJCWVsc2UgaWYgKGxldmVsID4gMCkKPj4gIAkJCWxh dGVuY3kgKj0gNTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1h LmMKPj5iL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPj4gaW5kZXggYTgxYzc2Ni4u N2YwOGJhOCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4+IEBAIC0yNTYsNyArMjU2 LDcgQEAgaW50ZWxfc2V0dXBfbWNoYmFyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJdTMy IHRlbXA7Cj4+ICAJYm9vbCBlbmFibGVkOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSkKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4g IAkJcmV0dXJuOwo+PiAgCj4+ICAJZGV2X3ByaXYtPm1jaGJhcl9uZWVkX2Rpc2FibGUgPSBmYWxz ZTsKPj4gQEAgLTc3OSw3ICs3NzksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19y dW50aW1lX2luaXQoc3RydWN0Cj4+ZHJtX2RldmljZSAqZGV2KQo+PiAgCQlpbmZvLT5udW1fc3By aXRlc1tQSVBFX0FdID0gMjsKPj4gIAkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9CXSA9IDI7Cj4+ ICAJCWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQ10gPSAxOwo+PiAtCX0gZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXYpKQo+PiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkKPj4gIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPj4gIAkJ CWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMjsKPj4gIAllbHNlCj4+IEBAIC03OTEsNyArNzkx LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdAo+ PmRybV9kZXZpY2UgKmRldikKPj4gIAkJaW5mby0+bnVtX3BpcGVzID0gMDsKPj4gIAl9IGVsc2Ug aWYgKGluZm8tPm51bV9waXBlcyA+IDAgJiYKPj4gIAkJICAgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID09IDcgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gOCkgJiYKPj4gLQkJICAgIUlTX1ZBTExF WVZJRVcoZGV2KSkgewo+PiArCQkgICAhKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllW SUVXKGRldikpKSB7Cj4+ICAJCXUzMiBmdXNlX3N0cmFwID0gSTkxNV9SRUFEKEZVU0VfU1RSQVAp Owo+PiAgCQl1MzIgc2Z1c2Vfc3RyYXAgPSBJOTE1X1JFQUQoU0ZVU0VfU1RSQVApOwo+PiAgCj4+ IEBAIC04MzYsNyArODM2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGlt ZV9pbml0KHN0cnVjdAo+PmRybV9kZXZpY2UgKmRldikKPj4gIAo+PiAgc3RhdGljIHZvaWQgaW50 ZWxfaW5pdF9kcGlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIHsKPj4g LQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+PiArCWlmICghSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiAgCQlyZXR1cm47Cj4KPkhl cmUgd2UgY291bGQgZHJvcCB0aGlzIGVhcmx5IGNoZWNrIGFuZCBqdXN0IGRvCj4KPiAgaWYgKElT X0NIVikgewo+ICAJLi4uCj4tIH0gZWxzZSB7Cj4rIH0gZWxzZSBpZiAoSVNfVkxWKSB7Cj4gCS4u Lgo+ICB9CgpGaXhlZC4KCj4KPj4gIAo+PiAgCS8qCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4+IGluZGV4IGU2OTM1ZjEuLjg0MWMzYzQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu Ywo+PiBAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNl X2luZm8KPj5pbnRlbF9jaGVycnl2aWV3X2luZm8gPSB7Cj4+ICAJLmdlbiA9IDgsIC5udW1fcGlw ZXMgPSAzLAo+PiAgCS5uZWVkX2dmeF9od3MgPSAxLCAuaGFzX2hvdHBsdWcgPSAxLAo+PiAgCS5y aW5nX21hc2sgPSBSRU5ERVJfUklORyB8IEJTRF9SSU5HIHwgQkxUX1JJTkcgfCBWRUJPWF9SSU5H LAo+PiAtCS5pc192YWxsZXl2aWV3ID0gMSwKPj4gKwkuaXNfY2hlcnJ5dmlldyA9IDEsCj4+ICAJ LmRpc3BsYXlfbW1pb19vZmZzZXQgPSBWTFZfRElTUExBWV9CQVNFLAo+PiAgCUdFTl9DSFZfUElQ RU9GRlNFVFMsCj4+ICAJQ1VSU09SX09GRlNFVFMsCj4+IEBAIC04MDIsNyArODAyLDcgQEAgc3Rh dGljIGludCBpOTE1X2RybV9yZXN1bWVfZWFybHkoc3RydWN0IGRybV9kZXZpY2UKPj4qZGV2KQo+ PiAgCj4+ICAJcGNpX3NldF9tYXN0ZXIoZGV2LT5wZGV2KTsKPj4gIAo+PiAtCWlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSkKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpCj4+ICAJCXJldCA9IHZsdl9yZXN1bWVfcHJlcGFyZShkZXZf cHJpdiwgZmFsc2UpOwo+PiAgCWlmIChyZXQpCj4+ICAJCURSTV9FUlJPUigiUmVzdW1lIHByZXBh cmUgZmFpbGVkOiAlZCwgY29udGludWluZyBhbnl3YXlcbiIsCj4+IEBAIC0xNTMyLDcgKzE1MzIs NyBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UKPj4qZGV2 aWNlKQo+PiAgCQlyZXQgPSBieHRfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYpOwo+PiAgCWVsc2Ug aWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4+ICAJ CWhzd19kaXNhYmxlX3BjOChkZXZfcHJpdik7Cj4+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikpCj4+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpCj4+ICAJCXJldCA9IHZsdl9yZXN1bWVfcHJlcGFyZShkZXZfcHJp diwgdHJ1ZSk7Cj4+ICAKPj4gIAkvKgo+PiBAQCAtMTU0OSw3ICsxNTQ5LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlCj4+KmRldmljZSkKPj4gIAkgKiBw b3dlciB3ZWxsLCBzbyBocGQgaXMgcmVpbml0aWFsaXplZCBmcm9tIHRoZXJlLiBGb3IKPj4gIAkg KiBldmVyeW9uZSBlbHNlIGRvIGl0IGhlcmUuCj4+ICAJICovCj4+IC0JaWYgKCFJU19WQUxMRVlW SUVXKGRldl9wcml2KSkKPj4gKwlpZiAoIShJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19D SEVSUllWSUVXKGRldl9wcml2KSkpCj4KPichVkxWICYmICFDSFYnIGFnYWluIHBlcmhhcHM/CgpG aXhlZC4KCj4KPj4gIAkJaW50ZWxfaHBkX2luaXQoZGV2X3ByaXYpOwo+PiAgCj4+ICAJaW50ZWxf ZW5hYmxlX2d0X3Bvd2Vyc2F2ZShkZXYpOwo+PiBAQCAtMTU3NCw3ICsxNTc0LDcgQEAgc3RhdGlj IGludCBpbnRlbF9zdXNwZW5kX2NvbXBsZXRlKHN0cnVjdAo+PmRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+PiAgCQlyZXQgPSBieHRfc3VzcGVuZF9jb21wbGV0ZShkZXZfcHJpdik7Cj4+ICAJ ZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkK Pj4gIAkJcmV0ID0gaHN3X3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYpOwo+PiAtCWVsc2UgaWYg KElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+PiArCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiAgCQlyZXQgPSB2bHZfc3VzcGVu ZF9jb21wbGV0ZShkZXZfcHJpdik7Cj4+ICAJZWxzZQo+PiAgCQlyZXQgPSAwOwo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PmIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+PiBpbmRleCBmMWE4YTUzLi4zODk5ZjIzIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPj4gQEAgLTc2Myw2ICs3NjMsNyBAQCBzdHJ1Y3QgaW50ZWxfY3Ny IHsKPj4gIAlmdW5jKGlzX2NyZXN0bGluZSkgc2VwIFwKPj4gIAlmdW5jKGlzX2l2eWJyaWRnZSkg c2VwIFwKPj4gIAlmdW5jKGlzX3ZhbGxleXZpZXcpIHNlcCBcCj4+ICsJZnVuYyhpc19jaGVycnl2 aWV3KSBzZXAgXAo+PiAgCWZ1bmMoaXNfaGFzd2VsbCkgc2VwIFwKPj4gIAlmdW5jKGlzX3NreWxh a2UpIHNlcCBcCj4+ICAJZnVuYyhpc19icm94dG9uKSBzZXAgXAo+PiBAQCAtMjQ1NSw5ICsyNDU2 LDkgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4+ICAJCQkJIElOVEVMX0RFVklEKGRl dikgPT0gMHgwMTUyIHx8IFwKPj4gIAkJCQkgSU5URUxfREVWSUQoZGV2KSA9PSAweDAxNWEpCj4+ ICAjZGVmaW5lIElTX1ZBTExFWVZJRVcoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc192YWxsZXl2 aWV3KQo+PiAtI2RlZmluZSBJU19DSEVSUllWSUVXKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNf dmFsbGV5dmlldyAmJgo+PklTX0dFTjgoZGV2KSkKPj4gKyNkZWZpbmUgSVNfQ0hFUlJZVklFVyhk ZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX2NoZXJyeXZpZXcpCj4+ICAjZGVmaW5lIElTX0hBU1dF TEwoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19oYXN3ZWxsKQo+PiAtI2RlZmluZSBJU19CUk9B RFdFTEwoZGV2KQkoIUlOVEVMX0lORk8oZGV2KS0+aXNfdmFsbGV5dmlldyAmJgo+PklTX0dFTjgo ZGV2KSkKPj4gKyNkZWZpbmUgSVNfQlJPQURXRUxMKGRldikJKCFJTlRFTF9JTkZPKGRldiktPmlz X2NoZXJyeXZpZXcgJiYKPj5JU19HRU44KGRldikpCj4+ICAjZGVmaW5lIElTX1NLWUxBS0UoZGV2 KQkoSU5URUxfSU5GTyhkZXYpLT5pc19za3lsYWtlKQo+PiAgI2RlZmluZSBJU19CUk9YVE9OKGRl dikJCShJTlRFTF9JTkZPKGRldiktPmlzX2Jyb3h0b24pCj4+ICAjZGVmaW5lIElTX0tBQllMQUtF KGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNfa2FieWxha2UpCj4+IEBAIC0yNTg0LDcgKzI1ODUs OCBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPj4gIAkJCQkgSVNfU0tZTEFLRShkZXYp IHx8IElTX0tBQllMQUtFKGRldikpCj4+ICAjZGVmaW5lIEhBU19SVU5USU1FX1BNKGRldikJKElT X0dFTjYoZGV2KSB8fCBJU19IQVNXRUxMKGRldikgfHwgXAo+PiAgCQkJCSBJU19CUk9BRFdFTEwo ZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikgfHwgXAo+PiAtCQkJCSBJU19TS1lMQUtFKGRldikg fHwgSVNfS0FCWUxBS0UoZGV2KSkKPj4gKwkJCQkgSVNfQ0hFUlJZVklFVyhkZXYpIHx8IElTX1NL WUxBS0UoZGV2KSB8fCBcCj4KPkJEV3x8Q0hWIGNvdWxkIGJlIHJlcGxhY2VkIHdpdGggSVNfR0VO OAoKQ2hhbmdlIGluIGEgc2VwYXJhdGUgcGF0Y2guCgo+Cj4+ICsJCQkJIElTX0tBQllMQUtFKGRl dikpCj4+ICAjZGVmaW5lIEhBU19SQzYoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYp Cj4+ICAjZGVmaW5lIEhBU19SQzZwKGRldikJCShJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA2IHx8 IElTX0lWWUJSSURHRShkZXYpKQo+PiAgCj4+IEBAIC0yNTk3LDcgKzI1OTksOCBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfY21kX3RhYmxlIHsKPj4gIAkJCQkgICAgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OCkKPj4gIAo+PiAgI2RlZmluZSBIQVNfQ09SRV9SSU5HX0ZSRVEoZGV2KQkoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gNiAmJiBcCj4+IC0JCQkJICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0JS T1hUT04oZGV2KSkKPj4gKwkJCQkgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklF VyhkZXYpICYmIFwKPj4gKwkJCQkgIUlTX0JST1hUT04oZGV2KSkKPj4gIAo+PiAgI2RlZmluZSBJ TlRFTF9QQ0hfREVWSUNFX0lEX01BU0sJCTB4ZmYwMAo+PiAgI2RlZmluZSBJTlRFTF9QQ0hfSUJY X0RFVklDRV9JRF9UWVBFCQkweDNiMDAKPj4gQEAgLTI2MjAsNyArMjYyMyw4IEBAIHN0cnVjdCBk cm1faTkxNV9jbWRfdGFibGUgewo+PiAgI2RlZmluZSBIQVNfUENIX05PUChkZXYpIChJTlRFTF9Q Q0hfVFlQRShkZXYpID09IFBDSF9OT1ApCj4+ICAjZGVmaW5lIEhBU19QQ0hfU1BMSVQoZGV2KSAo SU5URUxfUENIX1RZUEUoZGV2KSAhPSBQQ0hfTk9ORSkKPj4gIAo+PiAtI2RlZmluZSBIQVNfR01D SF9ESVNQTEFZKGRldikgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSB8fAo+PklTX1ZBTExFWVZJ RVcoZGV2KSkKPj4gKyNkZWZpbmUgSEFTX0dNQ0hfRElTUExBWShkZXYpIChJTlRFTF9JTkZPKGRl diktPmdlbiA8IDUgfHwgXAo+PiArCQkJICAgICAgIElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpCj4+ICAKPj4gIC8qIERQRiA9PSBkeW5hbWljIHBhcml0eSBmZWF0dXJl ICovCj4+ICAjZGVmaW5lIEhBU19MM19EUEYoZGV2KSAoSVNfSVZZQlJJREdFKGRldikgfHwgSVNf SEFTV0VMTChkZXYpKQo+PiBAQCAtMzUxMSw3ICszNTE1LDcgQEAgX19yYXdfd3JpdGUoNjQsIHEp Cj4+ICAKPj4gIHN0YXRpYyBpbmxpbmUgaTkxNV9yZWdfdCBpOTE1X3ZnYWNudHJsX3JlZyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgewo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+ICAJCXJl dHVybiBWTFZfVkdBQ05UUkw7Cj4+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g NSkKPj4gIAkJcmV0dXJuIENQVV9WR0FDTlRSTDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj5iL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK Pj4gaW5kZXggZGZhZjI1Yi4uZTk2ZTQ5NiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4+IEBAIC00ODM4LDcgKzQ4MzgsNyBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+PiAgCj4+ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+PiAg Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCS8qIFZMVkEwIChwb3RlbnRpYWwgaGFj ayksIEJJT1MgaXNuJ3QgYWN0dWFsbHkgd2FraW5nIHVzICovCj4+ICAJCUk5MTVfV1JJVEUoVkxW X0dUTENfV0FLRV9DVFJMLCBWTFZfR1RMQ19BTExPV1dBS0VSRVEpOwo+PiAgCQlpZiAod2FpdF9m b3IoKEk5MTVfUkVBRChWTFZfR1RMQ19QV19TVEFUVVMpICYKPj4gQEAgLTQ5NjMsNyArNDk2Myw3 IEBAIGk5MTVfZ2VtX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAo+PiAgCWRldl9w cml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSA9IEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX0dF TkVSQUw7Cj4+ICAKPj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNyAmJiAhSVNfVkFM TEVZVklFVyhkZXYpKQo+PiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3ICYmICFJU19W QUxMRVlWSUVXKGRldikgJiYKPj4hSVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgCQlkZXZfcHJpdi0+ bnVtX2ZlbmNlX3JlZ3MgPSAzMjsKPj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA0IHx8IElTX0k5NDVHKGRldikgfHwgSVNfSTk0NUdNKGRldikKPj58fCBJU19HMzMoZGV2KSkK Pj4gIAkJZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzID0gMTY7Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPj5iL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+PiBpbmRleCA0Mzc2MWM1Li40YjExNjFkIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4+IEBAIC0xOTAsNyArMTkw LDcgQEAgaTkxNV9nZW1fYWxsb2NfY29udGV4dF9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwK Pj5zaXplX3Qgc2l6ZSkKPj4gIAkgKiB3b3VsZCBtYWtlIHRoZSBvYmplY3Qgc25vb3BlZCB3aGlj aCBtaWdodCBoYXZlIGEKPj4gIAkgKiBuZWdhdGl2ZSBwZXJmb3JtYW5jZSBpbXBhY3QuCj4+ICAJ ICovCj4+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYgIUlTX1ZBTExFWVZJRVco ZGV2KSkgewo+PiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3ICYmICFJU19WQUxMRVlW SUVXKGRldikgJiYKPj4hSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCXJldCA9IGk5MTVfZ2Vt X29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBJOTE1X0NBQ0hFX0wzX0xMQyk7Cj4+ICAJCS8q IEZhaWx1cmUgc2hvdWxkbid0IGV2ZXIgaGFwcGVuIHRoaXMgZWFybHkgKi8KPj4gIAkJaWYgKFdB Uk5fT04ocmV0KSkgewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYwo+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+PiBpbmRleCBlODhkNjky Li4yM2EwYWFkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4gQEAgLTU4MSw3ICs1 ODEsNyBAQCBpOTE1X2VuYWJsZV9waXBlc3RhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+Pipk ZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUsCj4+ICB7Cj4+ICAJdTMyIGVuYWJsZV9tYXNrOwo+PiAg Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikpCj4+ICsJaWYgKElTX1ZBTExF WVZJRVcoZGV2X3ByaXYtPmRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdi0+ZGV2KSkKPgo+ Q2FuIGRyb3AgdGhlIC0+ZGV2IHdoaWxlIGF0IGl0LgoKRml4ZWQuCgo+Cj4+ICAJCWVuYWJsZV9t YXNrID0gdmx2X2dldF9waXBlc3RhdF9lbmFibGVfbWFzayhkZXZfcHJpdi0+ZGV2LAo+PiAgCQkJ CQkJCSAgIHN0YXR1c19tYXNrKTsKPj4gIAllbHNlCj4+IEBAIC01OTUsNyArNTk1LDcgQEAgaTkx NV9kaXNhYmxlX3BpcGVzdGF0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4+KmRldl9wcml2LCBl bnVtIHBpcGUgcGlwZSwKPj4gIHsKPj4gIAl1MzIgZW5hYmxlX21hc2s7Cj4+ICAKPj4gLQlpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZf cHJpdi0+ZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2LT5kZXYpKQo+Cj5EaXR0bwoKRml4 ZWQuCgo+Cj4+ICAJCWVuYWJsZV9tYXNrID0gdmx2X2dldF9waXBlc3RhdF9lbmFibGVfbWFzayhk ZXZfcHJpdi0+ZGV2LAo+PiAgCQkJCQkJCSAgIHN0YXR1c19tYXNrKTsKPj4gIAllbHNlCj4+IEBA IC0xNzIzLDcgKzE3MjMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2hwZF9pcnFfaGFuZGxlcihzdHJ1 Y3QKPj5kcm1fZGV2aWNlICpkZXYpCj4+ICAJICovCj4+ICAJUE9TVElOR19SRUFEKFBPUlRfSE9U UExVR19TVEFUKTsKPj4gIAo+PiAtCWlmIChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRl dikpIHsKPj4gKwlpZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkgewo+PiAgCQl1MzIgaG90cGx1Z190cmlnZ2VyID0gaG90cGx1Z19zdGF0 dXMgJiBIT1RQTFVHX0lOVF9TVEFUVVNfRzRYOwo+PiAgCj4+ICAJCWlmIChob3RwbHVnX3RyaWdn ZXIpIHsKPj4gQEAgLTQ0MTIsNyArNDQxMiw3IEBAIHZvaWQgaW50ZWxfaXJxX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUKPj4qZGV2X3ByaXYpCj4+ICAJSU5JVF9XT1JLKCZkZXZfcHJpdi0+ bDNfcGFyaXR5LmVycm9yX3dvcmssIGl2eWJyaWRnZV9wYXJpdHlfd29yayk7Cj4+ICAKPj4gIAkv KiBMZXQncyB0cmFjayB0aGUgZW5hYmxlZCBycHMgZXZlbnRzICovCj4+IC0JaWYgKElTX1ZBTExF WVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4gKwlpZiAoSVNf VkFMTEVZVklFVyhkZXZfcHJpdikpCj4+ICAJCS8qIFdhR3N2UkMwUmVzaWRlbmN5TWV0aG9kOnZs diAqLwo+PiAgCQlkZXZfcHJpdi0+cG1fcnBzX2V2ZW50cyA9IEdFTjZfUE1fUlBfRE9XTl9FSV9F WFBJUkVEIHwKPj5HRU42X1BNX1JQX1VQX0VJX0VYUElSRUQ7Cj4+ICAJZWxzZQo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKPj5iL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4+IGluZGV4IDJkOTE4MjEuLmEyYWEwOWMgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4+IEBAIC00OSw3ICs0OSw3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfc2F2ZV9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJ CWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUENIX1BQX09O X0RFTEFZUyk7Cj4+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkx NV9SRUFEKFBDSF9QUF9PRkZfREVMQVlTKTsKPj4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQ X0RJVklTT1IgPSBJOTE1X1JFQUQoUENIX1BQX0RJVklTT1IpOwo+PiAtCX0gZWxzZSBpZiAoIUlT X1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCX0gZWxzZSBpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAm JiAhSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9D T05UUk9MID0gSTkxNV9SRUFEKFBQX0NPTlRST0wpOwo+PiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5z YXZlUFBfT05fREVMQVlTID0gSTkxNV9SRUFEKFBQX09OX0RFTEFZUyk7Cj4+ICAJCWRldl9wcml2 LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTID0gSTkxNV9SRUFEKFBQX09GRl9ERUxBWVMpOwo+ PiBAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jlc3RvcmVfZGlzcGxheShzdHJ1 Y3QgZHJtX2RldmljZQo+PipkZXYpCj4+ICAJCUk5MTVfV1JJVEUoUENIX1BQX09GRl9ERUxBWVMs IGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PRkZfREVMQVlTKTsKPj4gIAkJSTkxNV9XUklURShQ Q0hfUFBfRElWSVNPUiwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1IpOwo+PiAgCQlJ OTE1X1dSSVRFKFBDSF9QUF9DT05UUk9MLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfQ09OVFJP TCk7Cj4+IC0JfSBlbHNlIGlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJfSBlbHNlIGlm ICghSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJSTkx NV9XUklURShQUF9PTl9ERUxBWVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMp Owo+PiAgCQlJOTE1X1dSSVRFKFBQX09GRl9ERUxBWVMsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQ UF9PRkZfREVMQVlTKTsKPj4gIAkJSTkxNV9XUklURShQUF9ESVZJU09SLCBkZXZfcHJpdi0+cmVn ZmlsZS5zYXZlUFBfRElWSVNPUik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3N5c2ZzLmMKPj5iL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+PiBp bmRleCBmOTI5YzYxLi44NmMzMDIwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3N5c2ZzLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5j Cj4+IEBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyB1MzIgY2FsY19yZXNpZGVuY3koc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4+ICAK Pj4gIAkvKiBPbiBWTFYgYW5kIENIViwgcmVzaWRlbmN5IHRpbWUgaXMgaW4gQ1ogdW5pdHMgcmF0 aGVyIHRoYW4gMS4yOHVzICovCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlm IChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCXVuaXRz ID0gMTsKPj4gIAkJZGl2ID0gZGV2X3ByaXYtPmN6Y2xrX2ZyZXE7Cj4+ICAKPj4gQEAgLTI4NCw3 ICsyODQsNyBAQCBzdGF0aWMgc3NpemVfdCBndF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2 aWNlCj4+KmtkZXYsCj4+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+PiAgCj4+ ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPj4gLQlpZiAoSVNfVkFMTEVZ VklFVyhkZXZfcHJpdi0+ZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2LT5k ZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYtPmRldikpIHsKPgo+Q2FuIGRyb3AgdGhlIC0+ ZGV2IGFnYWluCgpGaXhlZC4KCj4KPj4gIAkJdTMyIGZyZXE7Cj4+ICAJCWZyZXEgPSB2bHZfcHVu aXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7Cj4+ICAJCXJldCA9IGlu dGVsX2dwdV9mcmVxKGRldl9wcml2LCAoZnJlcSA+PiA4KSAmIDB4ZmYpOwo+PiBAQCAtNTk4LDcg KzU5OCw3IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ PiAgCQlpZiAocmV0KQo+PiAgCQkJRFJNX0VSUk9SKCJSQzZwIHJlc2lkZW5jeSBzeXNmcyBzZXR1 cCBmYWlsZWRcbiIpOwo+PiAgCX0KPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJ aWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJcmV0 ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwKPj4gIAkJCQkJ Jm1lZGlhX3JjNl9hdHRyX2dyb3VwKTsKPj4gIAkJaWYgKHJldCkKPj4gQEAgLTYxOSw3ICs2MTks NyBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAl9 Cj4+ICAKPj4gIAlyZXQgPSAwOwo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYg KElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+ICAJCXJldCA9IHN5 c2ZzX2NyZWF0ZV9maWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCB2bHZfYXR0cnMpOwo+ PiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4+ICAJCXJldCA9IHN5c2Zz X2NyZWF0ZV9maWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCBnZW42X2F0dHJzKTsKPj4g QEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPj4gIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+PiAgewo+PiAgCXN5c2ZzX3JlbW92ZV9iaW5fZmlsZSgmZGV2LT5wcmltYXJ5LT5rZGV2 LT5rb2JqLCAmZXJyb3Jfc3RhdGVfYXR0cik7Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkK Pj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJ c3lzZnNfcmVtb3ZlX2ZpbGVzKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIHZsdl9hdHRycyk7 Cj4+ICAJZWxzZQo+PiAgCQlzeXNmc19yZW1vdmVfZmlsZXMoJmRldi0+cHJpbWFyeS0+a2Rldi0+ a29iaiwgZ2VuNl9hdHRycyk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdWRpby5jCj4+Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4+IGlu ZGV4IDlhYTgzZTcuLjA2ZmZmYWUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F1ZGlvLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8u Ywo+PiBAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyB2b2lkIGlsa19hdWRpb19jb2RlY19kaXNh YmxlKHN0cnVjdAo+PmludGVsX2VuY29kZXIgKmVuY29kZXIpCj4+ICAJaWYgKEhBU19QQ0hfSUJY KGRldl9wcml2LT5kZXYpKSB7Cj4+ICAJCWF1ZF9jb25maWcgPSBJQlhfQVVEX0NGRyhwaXBlKTsK Pj4gIAkJYXVkX2NudHJsX3N0MiA9IElCWF9BVURfQ05UTF9TVDI7Cj4+IC0JfSBlbHNlIGlmIChJ U19WQUxMRVlWSUVXKGRldl9wcml2KSkgewo+PiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPj4gIAkJYXVkX2NvbmZpZyA9 IFZMVl9BVURfQ0ZHKHBpcGUpOwo+PiAgCQlhdWRfY250cmxfc3QyID0gVkxWX0FVRF9DTlRMX1NU MjsKPj4gIAl9IGVsc2Ugewo+PiBAQCAtNDM1LDcgKzQzNSw4IEBAIHN0YXRpYyB2b2lkIGlsa19h dWRpb19jb2RlY19lbmFibGUoc3RydWN0Cj4+ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAg CQlhdWRfY29uZmlnID0gSUJYX0FVRF9DRkcocGlwZSk7Cj4+ICAJCWF1ZF9jbnRsX3N0ID0gSUJY X0FVRF9DTlRMX1NUKHBpcGUpOwo+PiAgCQlhdWRfY250cmxfc3QyID0gSUJYX0FVRF9DTlRMX1NU MjsKPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoY29ubmVjdG9yLT5kZXYpKSB7Cj4+ICsJ fSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGNvbm5lY3Rvci0+ZGV2KSB8fAo+PiArCQkgICBJU19D SEVSUllWSUVXKGNvbm5lY3Rvci0+ZGV2KSkgewo+PiAgCQloZG1pd19oZG1pZWRpZCA9IFZMVl9I RE1JV19IRE1JRURJRChwaXBlKTsKPj4gIAkJYXVkX2NvbmZpZyA9IFZMVl9BVURfQ0ZHKHBpcGUp Owo+PiAgCQlhdWRfY250bF9zdCA9IFZMVl9BVURfQ05UTF9TVChwaXBlKTsKPj4gQEAgLTU1OSw3 ICs1NjAsNyBAQCB2b2lkIGludGVsX2luaXRfYXVkaW8oc3RydWN0IGRybV9kZXZpY2UgKmRldikK Pj4gIAlpZiAoSVNfRzRYKGRldikpIHsKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29k ZWNfZW5hYmxlID0gZzR4X2F1ZGlvX2NvZGVjX2VuYWJsZTsKPj4gIAkJZGV2X3ByaXYtPmRpc3Bs YXkuYXVkaW9fY29kZWNfZGlzYWJsZSA9IGc0eF9hdWRpb19jb2RlY19kaXNhYmxlOwo+PiAtCX0g ZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCWRldl9wcml2LT5kaXNwbGF5 LmF1ZGlvX2NvZGVjX2VuYWJsZSA9IGlsa19hdWRpb19jb2RlY19lbmFibGU7Cj4+ICAJCWRldl9w cml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2Rpc2FibGUgPSBpbGtfYXVkaW9fY29kZWNfZGlzYWJs ZTsKPj4gIAl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdl biA+PSA4KSB7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPj5iL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBpbmRleCBi NTlhMmQ4Li5kM2I2NDNiIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4+IEBAIC0xODcsNyArMTg3LDcgQEAgaW50IGludGVsX2hyYXdjbGsoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPj4gIAl1aW50MzJfdCBjbGtjZmc7Cj4+ICAKPj4gIAkvKiBUaGVyZSBpcyBubyBD TEtDRkcgcmVnIGluIFZhbGxleXZpZXcuIFZMViBocmF3Y2xrIGlzIDIwMCBNSHogKi8KPj4gLQlp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNf Q0hFUlJZVklFVyhkZXYpKQo+PiAgCQlyZXR1cm4gMjAwOwo+PiAgCj4+ICAJY2xrY2ZnID0gSTkx NV9SRUFEKENMS0NGRyk7Cj4+IEBAIC0yMTUsNyArMjE1LDcgQEAgaW50IGludGVsX2hyYXdjbGso c3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAo+PiAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRl X2N6Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIHsKPj4gLQlpZiAo IUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+PiArCWlmICghKElTX1ZBTExFWVZJRVcoZGV2X3By aXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSkKPj4gIAkJcmV0dXJuOwo+PiAgCj4+ICAJ ZGV2X3ByaXYtPmN6Y2xrX2ZyZXEgPSB2bHZfZ2V0X2Nja19jbG9ja19ocGxsKGRldl9wcml2LCAi Y3pjbGsiLAo+PiBAQCAtNzE2LDExICs3MTYsMTIgQEAgc3RhdGljIGJvb2wgaW50ZWxfUExMX2lz X3ZhbGlkKHN0cnVjdCBkcm1fZGV2aWNlCj4+KmRldiwKPj4gIAlpZiAoY2xvY2stPm0xICA8IGxp bWl0LT5tMS5taW4gIHx8IGxpbWl0LT5tMS5tYXggIDwgY2xvY2stPm0xKQo+PiAgCQlJTlRFTFBs bEludmFsaWQoIm0xIG91dCBvZiByYW5nZVxuIik7Cj4+ICAKPj4gLQlpZiAoIUlTX1BJTkVWSUVX KGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQlJPWFRPTihkZXYpKQo+PiArCWlm ICghSVNfUElORVZJRVcoZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpICYmCj4+ICsJICAgICFJ U19DSEVSUllWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkKPj4gIAkJaWYgKGNsb2NrLT5t MSA8PSBjbG9jay0+bTIpCj4+ICAJCQlJTlRFTFBsbEludmFsaWQoIm0xIDw9IG0yXG4iKTsKPj4g IAo+PiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19CUk9YVE9OKGRldikpIHsKPj4g KwlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmICFJU19C Uk9YVE9OKGRldikpIHsKPj4gIAkJaWYgKGNsb2NrLT5wIDwgbGltaXQtPnAubWluIHx8IGxpbWl0 LT5wLm1heCA8IGNsb2NrLT5wKQo+PiAgCQkJSU5URUxQbGxJbnZhbGlkKCJwIG91dCBvZiByYW5n ZVxuIik7Cj4+ICAJCWlmIChjbG9jay0+bSA8IGxpbWl0LT5tLm1pbiB8fCBsaW1pdC0+bS5tYXgg PCBjbG9jay0+bSkKPj4gQEAgLTEzMDUsNyArMTMwNiw3IEBAIHZvaWQgYXNzZXJ0X3BhbmVsX3Vu bG9ja2VkKHN0cnVjdAo+PmRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCQkgICAgSTkx NV9SRUFEKFBDSF9MVkRTKSAmIExWRFNfUElQRUJfU0VMRUNUKQo+PiAgCQkJcGFuZWxfcGlwZSA9 IFBJUEVfQjsKPj4gIAkJLyogWFhYOiBlbHNlIGZpeCBmb3IgZURQICovCj4+IC0JfSBlbHNlIGlm IChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJLyogcHJlc3VtYWJseSB3cml0ZSBsb2Nr IGRlcGVuZHMgb24gcGlwZSwgbm90IHBvcnQgc2VsZWN0ICovCj4+ICAJCXBwX3JlZyA9IFZMVl9Q SVBFX1BQX0NPTlRST0wocGlwZSk7Cj4+ICAJCXBhbmVsX3BpcGUgPSBwaXBlOwo+PiBAQCAtMTQy Myw3ICsxNDI0LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X3Nwcml0ZXNfZGlzYWJsZWQoc3RydWN0 Cj4+ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAJCQkgICAgICJwbGFuZSAlZCBhc3Nl cnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBvbiBwaXBlICVjIGJ1dCBpcwo+PnN0aWxsIGFj dGl2ZVxuIiwKPj4gIAkJCSAgICAgc3ByaXRlLCBwaXBlX25hbWUocGlwZSkpOwo+PiAgCQl9Cj4+ IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZB TExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJZm9yX2VhY2hfc3By aXRlKGRldl9wcml2LCBwaXBlLCBzcHJpdGUpIHsKPj4gIAkJCXUzMiB2YWwgPSBJOTE1X1JFQUQo U1BDTlRSKHBpcGUsIHNwcml0ZSkpOwo+PiAgCQkJSTkxNV9TVEFURV9XQVJOKHZhbCAmIFNQX0VO QUJMRSwKPj4gQEAgLTIzMTksNyArMjMyMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxf bGluZWFyX2FsaWdubWVudChzdHJ1Y3QKPj5kcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4g IAlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQo+PiAgCQlyZXR1cm4gMjU2ICog MTAyNDsKPj4gIAllbHNlIGlmIChJU19CUk9BRFdBVEVSKGRldl9wcml2KSB8fCBJU19DUkVTVExJ TkUoZGV2X3ByaXYpIHx8Cj4+IC0JCSBJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gKwkJIElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiAgCQly ZXR1cm4gMTI4ICogMTAyNDsKPj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu ID49IDQpCj4+ICAJCXJldHVybiA0ICogMTAyNDsKPj4gQEAgLTU0NTUsNyArNTQ1Niw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jZGNsayhzdHJ1Y3QgZHJtX2RldmljZQo+PipkZXYpCj4+ ICAJICogQlNwZWMgZXJyb25lb3VzbHkgY2xhaW1zIHdlIHNob3VsZCBhaW0gZm9yIDRNSHosIGJ1 dAo+PiAgCSAqIGluIGZhY3QgMU1IeiBpcyB0aGUgY29ycmVjdCBmcmVxdWVuY3kuCj4+ICAJICov Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCS8qCj4+ICAJCSAqIFByb2dyYW0gdGhl IGdtYnVzX2ZyZXEgYmFzZWQgb24gdGhlIGNkY2xrIGZyZXF1ZW5jeS4KPj4gIAkJICogQlNwZWMg ZXJyb25lb3VzbHkgY2xhaW1zIHdlIHNob3VsZCBhaW0gZm9yIDRNSHosIGJ1dAo+PiBAQCAtNzE4 MCw3ICs3MTgxLDcgQEAgc3RhdGljIGludCBpOXh4X2dldF9yZWZjbGsoY29uc3Qgc3RydWN0Cj4+ aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPj4gIAo+PiAgCVdBUk5fT04oIWNydGNfc3Rh dGUtPmJhc2Uuc3RhdGUpOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19C Uk9YVE9OKGRldikpIHsKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSB8fCBJU19CUk9YVE9OKGRldikpIHsKPj4gIAkJcmVmY2xrID0gMTAwMDAwOwo+PiAg CX0gZWxzZSBpZiAoaW50ZWxfcGlwZV93aWxsX2hhdmVfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9P VVRQVVRfTFZEUykgJiYKPj4gIAkgICAgaW50ZWxfcGFuZWxfdXNlX3NzYyhkZXZfcHJpdikgJiYg bnVtX2Nvbm5lY3RvcnMgPCAyKSB7Cj4+IEBAIC03ODc5LDcgKzc4ODAsNyBAQCBzdGF0aWMgdm9p ZCBpOXh4X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0Ywo+PippbnRlbF9jcnRjKQo+PiAg CQlwaXBlY29uZiB8PSBQSVBFQ09ORl9ET1VCTEVfV0lERTsKPj4gIAo+PiAgCS8qIG9ubHkgZzR4 IGFuZCBsYXRlciBoYXZlIGZhbmN5IGJwYy9kaXRoZXIgY29udHJvbHMgKi8KPj4gLQlpZiAoSVNf RzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKElTX0c0WChkZXYpIHx8 IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJLyogQnNw ZWMgY2xhaW1zIHRoYXQgd2UgY2FuJ3QgdXNlIGRpdGhlcmluZyBmb3IgMzBicHAgcGlwZXMuICov Cj4+ICAJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmRpdGhlciAmJiBpbnRlbF9jcnRjLT5jb25m aWctPnBpcGVfYnBwICE9IDMwKQo+PiAgCQkJcGlwZWNvbmYgfD0gUElQRUNPTkZfRElUSEVSX0VO IHwKPj4gQEAgLTc5MTksNyArNzkyMCw4IEBAIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3BpcGVjb25m KHN0cnVjdCBpbnRlbF9jcnRjCj4+KmludGVsX2NydGMpCj4+ICAJfSBlbHNlCj4+ICAJCXBpcGVj b25mIHw9IFBJUEVDT05GX1BST0dSRVNTSVZFOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSAmJiBpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4+ICsJaWYg KChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSAmJgo+PiArCSAgICAg aW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+PiAgCQlwaXBlY29uZiB8 PSBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1Q7Cj4+ICAKPj4gIAlJOTE1X1dSSVRFKFBJUEVD T05GKGludGVsX2NydGMtPnBpcGUpLCBwaXBlY29uZik7Cj4+IEBAIC04MTY2LDcgKzgxNjgsNyBA QCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QKPj5pbnRlbF9jcnRjICpj cnRjLAo+PiAgCWlmICghKHRtcCAmIFBJUEVDT05GX0VOQUJMRSkpCj4+ICAJCXJldHVybiBmYWxz ZTsKPj4gIAo+PiAtCWlmIChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikpIHsKPj4g KwlpZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2KSkgewo+PiAgCQlzd2l0Y2ggKHRtcCAmIFBJUEVDT05GX0JQQ19NQVNLKSB7Cj4+ICAJCWNh c2UgUElQRUNPTkZfNkJQQzoKPj4gIAkJCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDE4Owo+PiBA QCAtODE4Miw3ICs4MTg0LDggQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3Ry dWN0Cj4+aW50ZWxfY3J0YyAqY3J0YywKPj4gIAkJfQo+PiAgCX0KPj4gIAo+PiAtCWlmIChJU19W QUxMRVlWSUVXKGRldikgJiYgKHRtcCAmIFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVDVCkpCj4+ ICsJaWYgKChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSAmJgo+PiAr CSAgICAodG1wICYgUElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUKSkKPj4gIAkJcGlwZV9jb25m aWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwo+PiAgCj4+ICAJaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuIDwgNCkKPj4gQEAgLTgyMTAsNyArODIxMyw3IEBAIHN0YXRpYyBib29sIGk5eHhf Z2V0X3BpcGVfY29uZmlnKHN0cnVjdAo+PmludGVsX2NydGMgKmNydGMsCj4+ICAJCXBpcGVfY29u ZmlnLT5waXhlbF9tdWx0aXBsaWVyID0gMTsKPj4gIAl9Cj4+ICAJcGlwZV9jb25maWctPmRwbGxf aHdfc3RhdGUuZHBsbCA9IEk5MTVfUkVBRChEUExMKGNydGMtPnBpcGUpKTsKPj4gLQlpZiAoIUlT X1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19D SEVSUllWSUVXKGRldikpIHsKPj4gIAkJLyoKPj4gIAkJICogRFBMTF9EVk9fMlhfTU9ERSBtdXN0 IGJlIGVuYWJsZWQgZm9yIGJvdGggRFBMTHMKPj4gIAkJICogb24gODMwLiBGaWx0ZXIgaXQgb3V0 IGhlcmUgc28gdGhhdCB3ZSBkb24ndAo+PiBAQCAtMTE1MzcsNyArMTE1NDAsNyBAQCBzdGF0aWMg aW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0Ywo+PipjcnRjLAo+PiAgCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1IHx8IElTX0c0WChkZXYpKQo+PiAgCQl3b3JrLT5m bGlwX2NvdW50ID0gSTkxNV9SRUFEKFBJUEVfRkxJUENPVU5UX0c0WChwaXBlKSkgKyAxOwo+PiAg Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCXJpbmcgPSAmZGV2X3ByaXYtPnJpbmdb QkNTXTsKPj4gIAkJaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gaW50ZWxfZmJfb2JqKHdvcmstPm9s ZF9mYiktPnRpbGluZ19tb2RlKQo+PiAgCQkJLyogdmx2OiBESVNQTEFZX0ZMSVAgZmFpbHMgdG8g Y2hhbmdlIHRpbGluZyAqLwo+PiBAQCAtMTIwMTYsNyArMTIwMTksNyBAQCBjb21wdXRlX2Jhc2Vs aW5lX3BpcGVfYnBwKHN0cnVjdCBpbnRlbF9jcnRjCj4+KmNydGMsCj4+ICAJc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKPj4gIAlpbnQgYnBwLCBpOwo+PiAgCj4+ IC0JaWYgKChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikpKQo+PiArCWlmICgoSVNf RzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkpCj4+ ICAJCWJwcCA9IDEwKjM7Cj4+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkK Pj4gIAkJYnBwID0gMTIqMzsKPj4gQEAgLTEyNjI2LDcgKzEyNjI5LDcgQEAgaW50ZWxfcGlwZV9j b25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZQo+PipkZXYsCj4+ICAJUElQRV9DT05GX0NI RUNLX0kocGl4ZWxfbXVsdGlwbGllcik7Cj4+ICAJUElQRV9DT05GX0NIRUNLX0koaGFzX2hkbWlf c2luayk7Cj4+ICAJaWYgKChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDggJiYgIUlTX0hBU1dFTEwo ZGV2KSkgfHwKPj4gLQkgICAgSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCSAgICBJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+Cj4hSEFTX0RESSB3b3VsZCBzZWVtIHRv IGNvdmVyIGFsbCBvZiBpdC4KCkNoYW5nZSBpbiBhIHNlcGFyYXRlIHBhdGNoLgoKCj4KPj4gIAkJ UElQRV9DT05GX0NIRUNLX0kobGltaXRlZF9jb2xvcl9yYW5nZSk7Cj4+ICAJUElQRV9DT05GX0NI RUNLX0koaGFzX2luZm9mcmFtZSk7Cj4+ICAKPj4gQEAgLTE0Mzc4LDcgKzE0MzgxLDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QKPj5kcm1fZGV2aWNlICpkZXYpCj4+ ICAKPj4gIAkJaWYgKEk5MTVfUkVBRChQQ0hfRFBfRCkgJiBEUF9ERVRFQ1RFRCkKPj4gIAkJCWlu dGVsX2RwX2luaXQoZGV2LCBQQ0hfRFBfRCwgUE9SVF9EKTsKPj4gLQl9IGVsc2UgaWYgKElTX1ZB TExFWVZJRVcoZGV2KSkgewo+PiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQkvKgo+PiAgCQkgKiBUaGUgRFBfREVURUNURUQgYml0 IGlzIHRoZSBsYXRjaGVkIHN0YXRlIG9mIHRoZSBEREMKPj4gIAkJICogU0RBIHBpbiBhdCBib290 LiBIb3dldmVyIHNpbmNlIGVEUCBkb2Vzbid0IHJlcXVpcmUgRERDCj4+IEBAIC0xNDUyNyw3ICsx NDUzMCw3IEBAIHUzMiBpbnRlbF9mYl9waXRjaF9saW1pdChzdHJ1Y3QgZHJtX2RldmljZQo+Pipk ZXYsIHVpbnQ2NF90IGZiX21vZGlmaWVyLAo+PiAgCQkgKiAgcGl4ZWxzIGFuZCAzMksgYnl0ZXMu Igo+PiAgCQkgKi8KPj4gIAkJIHJldHVybiBtaW4oODE5Mipkcm1fZm9ybWF0X3BsYW5lX2NwcChw aXhlbF9mb3JtYXQsIDApLCAzMjc2OCk7Cj4+IC0JfSBlbHNlIGlmIChnZW4gPj0gNSAmJiAhSVNf VkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChnZW4gPj0gNSAmJiAhSVNfVkFMTEVZ VklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKPgo+SEFTX1BDSF9TUExJVCgpIHdv dWxkIGFjdHVhbGx5IGNvdmVyIGFsbCBvZiB0aGlzLgoKQ2hhbmdlIGluIGEgc2VwYXJhdGUgcGF0 Y2guCgoKPgo+PiAgCQlyZXR1cm4gMzIqMTAyNDsKPj4gIAl9IGVsc2UgaWYgKGdlbiA+PSA0KSB7 Cj4+ICAJCWlmIChmYl9tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPj4gQEAg LTE0NjMxLDcgKzE0NjM0LDggQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0 cnVjdAo+PmRybV9kZXZpY2UgKmRldiwKPj4gIAkJfQo+PiAgCQlicmVhazsKPj4gIAljYXNlIERS TV9GT1JNQVRfQUJHUjg4ODg6Cj4+IC0JCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmIElOVEVM X0lORk8oZGV2KS0+Z2VuIDwgOSkgewo+PiArCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAh SVNfQ0hFUlJZVklFVyhkZXYpICYmCj4+ICsJCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkp IHsKPj4gIAkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPj4g IAkJCQkgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCkpOwo+PiAg CQkJcmV0dXJuIC1FSU5WQUw7Cj4+IEBAIC0xNDY0Nyw3ICsxNDY1MSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QKPj5kcm1fZGV2aWNlICpkZXYsCj4+ICAJCX0K Pj4gIAkJYnJlYWs7Cj4+ICAJY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAxMDEwOgo+PiAtCQlpZiAo IUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAh SVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVs IGZvcm1hdDogJXNcbiIsCj4+ICAJCQkJICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5w aXhlbF9mb3JtYXQpKTsKPj4gIAkJCXJldHVybiAtRUlOVkFMOwo+PiBAQCAtMTQ3NzUsNyArMTQ3 NzksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0Cj4+ZHJtX2Rldmlj ZSAqZGV2KQo+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBpcm9ubGFrZV9j cnRjX2Rpc2FibGU7Cj4+ICAJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5l ID0KPj4gIAkJCWlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lOwo+PiAtCX0gZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikg fHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9waXBl X2NvbmZpZyA9IGk5eHhfZ2V0X3BpcGVfY29uZmlnOwo+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5n ZXRfaW5pdGlhbF9wbGFuZV9jb25maWcgPQo+PiAgCQkJaTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9j b25maWc7Cj4+IEBAIC0xNDgwOCw3ICsxNDgxMiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRf ZGlzcGxheShzdHJ1Y3QgCj4+ZHJtX2RldmljZSAqZGV2KQo+PiAgCWVsc2UgaWYgKElTX0hBU1dF TEwoZGV2KSkKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQg PQo+PiAgCQkJaGFzd2VsbF9nZXRfZGlzcGxheV9jbG9ja19zcGVlZDsKPj4gLQllbHNlIGlmIChJ U19WQUxMRVlWSUVXKGRldikpCj4+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3BsYXlfY2xv Y2tfc3BlZWQgPQo+PiAgCQkJdmFsbGV5dmlld19nZXRfZGlzcGxheV9jbG9ja19zcGVlZDsKPj4g IAllbHNlIGlmIChJU19HRU41KGRldikpCj4+IEBAIC0xNDg2Niw3ICsxNDg3MCw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgCj4+ZHJtX2RldmljZSAqZGV2KQo+PiAg CQkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0KPj4gIAkJCQlicm9hZHdl bGxfbW9kZXNldF9jYWxjX2NkY2xrOwo+PiAgCQl9Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpIHsKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jb21taXRfY2Rj bGsgPQo+PiAgCQkJdmFsbGV5dmlld19tb2Rlc2V0X2NvbW1pdF9jZGNsazsKPj4gIAkJZGV2X3By aXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0KPj4gQEAgLTE1NjQwLDcgKzE1NjQ0LDcg QEAgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAKPj4qZGV2 KQo+PiAgCQlwbGwtPm9uID0gZmFsc2U7Cj4+ICAJfQo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 KSkKPj4gIAkJdmx2X3dtX2dldF9od19zdGF0ZShkZXYpOwo+PiAgCWVsc2UgaWYgKElTX0dFTjko ZGV2KSkKPj4gIAkJc2tsX3dtX2dldF9od19zdGF0ZShkZXYpOwo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAKPj5iL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPj4gaW5kZXggZjMzNWM5Mi4uZTM2Zjc0MSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4+IEBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCB2bHZfcG93ZXJfc2VxdWVuY2Vy X3Jlc2V0KHN0cnVjdCAKPj5kcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcjsKPj4gIAo+PiAtCWlmIChXQVJOX09OKCFJU19WQUxMRVlWSUVXKGRldikpKQo+ PiArCWlmIChXQVJOX09OKCEoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 KSkpKQo+Cj4hVkxWICYmICFDSFYKCkZpeGVkLgoKPgo+PiAgCQlyZXR1cm47Cj4+ICAKPj4gIAkv Kgo+PiBAQCAtNTgyLDcgKzU4Miw3IEBAIHN0YXRpYyBpbnQgZWRwX25vdGlmeV9oYW5kbGVyKHN0 cnVjdCBub3RpZmllcl9ibG9jayAKPj4qdGhpcywgdW5zaWduZWQgbG9uZyBjb2RlLAo+PiAgCj4+ ICAJcHBzX2xvY2soaW50ZWxfZHApOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkg ewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ ICAJCWVudW0gcGlwZSBwaXBlID0gdmx2X3Bvd2VyX3NlcXVlbmNlcl9waXBlKGludGVsX2RwKTsK Pj4gIAkJaTkxNV9yZWdfdCBwcF9jdHJsX3JlZywgcHBfZGl2X3JlZzsKPj4gIAkJdTMyIHBwX2Rp djsKPj4gQEAgLTYxMCw3ICs2MTAsNyBAQCBzdGF0aWMgYm9vbCBlZHBfaGF2ZV9wYW5lbF9wb3dl cihzdHJ1Y3QgaW50ZWxfZHAgCj4+KmludGVsX2RwKQo+PiAgCj4+ICAJbG9ja2RlcF9hc3NlcnRf aGVsZCgmZGV2X3ByaXYtPnBwc19tdXRleCk7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpICYmCj4+ICsJaWYgKChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYp KSAmJgo+PiAgCSAgICBpbnRlbF9kcC0+cHBzX3BpcGUgPT0gSU5WQUxJRF9QSVBFKQo+PiAgCQly ZXR1cm4gZmFsc2U7Cj4+ICAKPj4gQEAgLTYyNCw3ICs2MjQsNyBAQCBzdGF0aWMgYm9vbCBlZHBf aGF2ZV9wYW5lbF92ZGQoc3RydWN0IGludGVsX2RwIAo+PippbnRlbF9kcCkKPj4gIAo+PiAgCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wcHNfbXV0ZXgpOwo+PiAgCj4+IC0JaWYgKElT X1ZBTExFWVZJRVcoZGV2KSAmJgo+PiArCWlmICgoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkgJiYKPj4gIAkgICAgaW50ZWxfZHAtPnBwc19waXBlID09IElOVkFMSURf UElQRSkKPj4gIAkJcmV0dXJuIGZhbHNlOwo+PiAgCj4+IEBAIC0xNzIzLDcgKzE3MjMsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kcF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyIAo+PiplbmNv ZGVyKQo+PiAgCQlJOTE1X1dSSVRFKFRSQU5TX0RQX0NUTChjcnRjLT5waXBlKSwgdHJhbnNfZHAp Owo+PiAgCX0gZWxzZSB7Cj4+ICAJCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYmICFJU19WQUxM RVlWSUVXKGRldikgJiYKPj4gLQkJICAgIGNydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5n ZSkKPj4gKwkJICAgICFJU19DSEVSUllWSUVXKGRldikgJiYgY3J0Yy0+Y29uZmlnLT5saW1pdGVk X2NvbG9yX3JhbmdlKQo+Cj5Db3VsZCBhY3R1YWxseSByZXBsYWNlIGFsbCB0aGF0IHdpdGggSVNf RzRYCgpDaGFuZ2UgaW4gYSBzZXBhcmF0ZSBwYXRjaC4KCgo+Cj4+ICAJCQlpbnRlbF9kcC0+RFAg fD0gRFBfQ09MT1JfUkFOR0VfMTZfMjM1Owo+PiAgCj4+ICAJCWlmIChhZGp1c3RlZF9tb2RlLT5m bGFncyAmIERSTV9NT0RFX0ZMQUdfUEhTWU5DKQo+PiBAQCAtMjQxOCw3ICsyNDE4LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZHBfZ2V0X2NvbmZpZyhzdHJ1Y3QgCj4+aW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPj4gIAlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdz Owo+PiAgCj4+ICAJaWYgKCFIQVNfUENIX1NQTElUKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2 KSAmJgo+PiAtCSAgICB0bXAgJiBEUF9DT0xPUl9SQU5HRV8xNl8yMzUpCj4+ICsJICAgICFJU19D SEVSUllWSUVXKGRldikgJiYgdG1wICYgRFBfQ09MT1JfUkFOR0VfMTZfMjM1KQo+Cj5EaXR0bwoK Q2hhbmdlIGluIGEgc2VwYXJhdGUgcGF0Y2guCgoKPgo+PiAgCQlwaXBlX2NvbmZpZy0+bGltaXRl ZF9jb2xvcl9yYW5nZSA9IHRydWU7Cj4+ICAKPj4gIAlwaXBlX2NvbmZpZy0+aGFzX2RwX2VuY29k ZXIgPSB0cnVlOwo+PiBAQCAtMjY5NCw3ICsyNjk0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5h YmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyIAo+PiplbmNvZGVyKQo+PiAgCj4+ICAJcHBzX2xv Y2soaW50ZWxfZHApOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlpZiAo SVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJdmx2X2luaXRf cGFuZWxfcG93ZXJfc2VxdWVuY2VyKGludGVsX2RwKTsKPj4gIAo+PiAgCS8qCj4+IEBAIC0yNzI4 LDcgKzI3MjgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAoc3RydWN0IGludGVsX2Vu Y29kZXIgCj4+KmVuY29kZXIpCj4+ICAKPj4gIAlwcHNfdW5sb2NrKGludGVsX2RwKTsKPj4gIAo+ PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYp IHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQl1bnNpZ25lZCBpbnQgbGFuZV9tYXNrID0g MHgwOwo+PiAgCj4+ICAJCWlmIChJU19DSEVSUllWSUVXKGRldikpCj4+IEBAIC0zMjE4LDcgKzMy MTgsNyBAQCBpbnRlbF9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ PiAgCQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3aW5nICYmIHBvcnQgPT0gUE9SVF9BKQo+PiAg CQkJcmV0dXJuIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKPj4gIAkJcmV0dXJuIERQ X1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMjsKPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllW SUVXKGRldikpCj4+ICAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7Cj4+ ICAJZWxzZSBpZiAoSVNfR0VONyhkZXYpICYmIHBvcnQgPT0gUE9SVF9BKQo+PiAgCQlyZXR1cm4g RFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8yOwo+PiBAQCAtMzI1OSw3ICszMjU5LDcgQEAg aW50ZWxfZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgCj4+KmludGVsX2RwLCB1 aW50OF90IHZvbHRhZ2Vfc3dpbmcpCj4+ICAJCWRlZmF1bHQ6Cj4+ICAJCQlyZXR1cm4gRFBfVFJB SU5fUFJFX0VNUEhfTEVWRUxfMDsKPj4gIAkJfQo+PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZ VklFVyhkZXYpKSB7Cj4+ICAJCXN3aXRjaCAodm9sdGFnZV9zd2luZyAmIERQX1RSQUlOX1ZPTFRB R0VfU1dJTkdfTUFTSykgewo+PiAgCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxf MDoKPj4gIAkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOwo+PiBAQCAtNDUzOSw3 ICs0NTM5LDcgQEAgYm9vbCBpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCAKPj5k cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gIAkJcmV0dXJuIGNwdF9kaWdpdGFsX3BvcnRf Y29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKPj4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRldl9w cml2KSkKPj4gIAkJcmV0dXJuIGJ4dF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBw b3J0KTsKPj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gKwllbHNlIGlm IChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4g IAkJcmV0dXJuIHZsdl9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKPj4g IAllbHNlCj4+ICAJCXJldHVybiBnNHhfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwg cG9ydCk7Cj4+IEBAIC00OTMzLDcgKzQ5MzMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9lbmNv ZGVyX3Jlc2V0KHN0cnVjdCAKPj5kcm1fZW5jb2RlciAqZW5jb2RlcikKPj4gIAkgKiBSZWFkIG91 dCB0aGUgY3VycmVudCBwb3dlciBzZXF1ZW5jZXIgYXNzaWdubWVudCwKPj4gIAkgKiBpbiBjYXNl IHRoZSBCSU9TIGRpZCBzb21ldGhpbmcgd2l0aCBpdC4KPj4gIAkgKi8KPj4gLQlpZiAoSVNfVkFM TEVZVklFVyhlbmNvZGVyLT5kZXYpKQo+PiArCWlmIChJU19WQUxMRVlWSUVXKGVuY29kZXItPmRl dikgfHwgSVNfQ0hFUlJZVklFVyhlbmNvZGVyLT5kZXYpKQo+PiAgCQl2bHZfaW5pdGlhbF9wb3dl cl9zZXF1ZW5jZXJfc2V0dXAoaW50ZWxfZHApOwo+PiAgCj4+ICAJaW50ZWxfZWRwX3BhbmVsX3Zk ZF9zYW5pdGl6ZShpbnRlbF9kcCk7Cj4+IEBAIC01MjkzLDcgKzUyOTMsNyBAQCAKPj5pbnRlbF9k cF9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcl9yZWdpc3RlcnMoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPj4gIAo+PiAgCS8qIEhhc3dlbGwgZG9lc24ndCBoYXZlIGFueSBwb3J0IHNlbGVjdGlv biBiaXRzIGZvciB0aGUgcGFuZWwKPj4gIAkgKiBwb3dlciBzZXF1ZW5jZXIgYW55IG1vcmUuICov Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCXBvcnRfc2VsID0gUEFORUxfUE9SVF9T RUxFQ1RfVkxWKHBvcnQpOwo+PiAgCX0gZWxzZSBpZiAoSEFTX1BDSF9JQlgoZGV2KSB8fCBIQVNf UENIX0NQVChkZXYpKSB7Cj4+ICAJCWlmIChwb3J0ID09IFBPUlRfQSkKPj4gQEAgLTU0MDUsMTIg KzU0MDUsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfc2V0X2RycnNfc3RhdGUoc3RydWN0IAo+ PmRybV9kZXZpY2UgKmRldiwgaW50IHJlZnJlc2hfcmF0ZSkKPj4gIAo+PiAgCQl2YWwgPSBJOTE1 X1JFQUQocmVnKTsKPj4gIAkJaWYgKGluZGV4ID4gRFJSU19ISUdIX1JSKSB7Cj4+IC0JCQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpCj4+ICAJCQkJdmFsIHw9IFBJUEVDT05GX0VEUF9SUl9NT0RFX1NXSVRD SF9WTFY7Cj4+ICAJCQllbHNlCj4+ICAJCQkJdmFsIHw9IFBJUEVDT05GX0VEUF9SUl9NT0RFX1NX SVRDSDsKPj4gIAkJfSBlbHNlIHsKPj4gLQkJCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJ CQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJCQl2 YWwgJj0gflBJUEVDT05GX0VEUF9SUl9NT0RFX1NXSVRDSF9WTFY7Cj4+ICAJCQllbHNlCj4+ICAJ CQkJdmFsICY9IH5QSVBFQ09ORl9FRFBfUlJfTU9ERV9TV0lUQ0g7Cj4+IEBAIC01Nzc3LDcgKzU3 NzcsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IAo+Pmlu dGVsX2RwICppbnRlbF9kcCwKPj4gIAl9Cj4+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29u ZmlnLm11dGV4KTsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAo SVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQlpbnRlbF9k cC0+ZWRwX25vdGlmaWVyLm5vdGlmaWVyX2NhbGwgPSBlZHBfbm90aWZ5X2hhbmRsZXI7Cj4+ICAJ CXJlZ2lzdGVyX3JlYm9vdF9ub3RpZmllcigmaW50ZWxfZHAtPmVkcF9ub3RpZmllcik7Cj4+ICAK Pj4gQEAgLTU4MjUsNyArNTgyNSw3IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgCj4+KmludGVsX2RpZ19wb3J0LAo+PiAgCS8qIGludGVsX2RwIHZm dW5jcyAqLwo+PiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+PiAgCQlpbnRlbF9k cC0+Z2V0X2F1eF9jbG9ja19kaXZpZGVyID0gc2tsX2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPj4g LQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xv Y2tfZGl2aWRlciA9IHZsdl9nZXRfYXV4X2Nsb2NrX2RpdmlkZXI7Cj4+ICAJZWxzZSBpZiAoSVNf SEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQo+PiAgCQlpbnRlbF9kcC0+Z2V0X2F1 eF9jbG9ja19kaXZpZGVyID0gaHN3X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPj4gQEAgLTU4NjAs OCArNTg2MCw4IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgCj4+KmludGVsX2RpZ19wb3J0LAo+PiAgCQlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5U RUxfT1VUUFVUX0VEUDsKPj4gIAo+PiAgCS8qIGVEUCBvbmx5IG9uIHBvcnQgQiBhbmQvb3IgQyBv biB2bHYvY2h2ICovCj4+IC0JaWYgKFdBUk5fT04oSVNfVkFMTEVZVklFVyhkZXYpICYmIGlzX2Vk cChpbnRlbF9kcCkgJiYKPj4gLQkJICAgIHBvcnQgIT0gUE9SVF9CICYmIHBvcnQgIT0gUE9SVF9D KSkKPj4gKwlpZiAoV0FSTl9PTigoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2KSkgJiYKPj4gKwkJICAgIGlzX2VkcChpbnRlbF9kcCkgJiYgcG9ydCAhPSBQT1JUX0IgJiYg cG9ydCAhPSBQT1JUX0MpKQo+PiAgCQlyZXR1cm4gZmFsc2U7Cj4+ICAKPj4gIAlEUk1fREVCVUdf S01TKCJBZGRpbmcgJXMgY29ubmVjdG9yIG9uIHBvcnQgJWNcbiIsCj4+IEBAIC01OTEyLDcgKzU5 MTIsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 IAo+PippbnRlbF9kaWdfcG9ydCwKPj4gIAlpZiAoaXNfZWRwKGludGVsX2RwKSkgewo+PiAgCQlw cHNfbG9jayhpbnRlbF9kcCk7Cj4+ICAJCWludGVsX2RwX2luaXRfcGFuZWxfcG93ZXJfdGltZXN0 YW1wcyhpbnRlbF9kcCk7Cj4+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJCWlmIChJ U19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgCQkJdmx2X2luaXRp YWxfcG93ZXJfc2VxdWVuY2VyX3NldHVwKGludGVsX2RwKTsKPj4gIAkJZWxzZQo+PiAgCQkJaW50 ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIoZGV2LCBpbnRlbF9kcCk7Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYyAKPj5iL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RzaS5jCj4+IGluZGV4IDIzMDk1N2YuLmNhZGE3MzcgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4+IEBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfZHNpX2RldmljZV9yZWFkeShzdHJ1Y3QgCj4+aW50ZWxfZW5jb2RlciAqZW5jb2Rl cikKPj4gIHsKPj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7 Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCWlmIChJU19WQUxMRVlWSUVX KGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgCQl2bHZfZHNpX2RldmljZV9yZWFkeShl bmNvZGVyKTsKPj4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRldikpCj4+ICAJCWJ4dF9kc2lfZGV2 aWNlX3JlYWR5KGVuY29kZXIpOwo+PiBAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RzaV9wcmVfZW5hYmxlKHN0cnVjdCAKPj5pbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+PiAg Cj4+ICAJbXNsZWVwKGludGVsX2RzaS0+cGFuZWxfb25fZGVsYXkpOwo+PiAgCj4+IC0JaWYgKElT X1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hF UlJZVklFVyhkZXYpKSB7Cj4+ICAJCS8qCj4+ICAJCSAqIERpc2FibGUgRFBPdW5pdCBjbG9jayBn YXRpbmcsIGNhbiBzdGFsbCBwaXBlCj4+ICAJCSAqIGFuZCB3ZSBuZWVkIERQTEwgUkVGQSBhbHdh eXMgZW5hYmxlZAo+PiBAQCAtNjg0LDggKzY4NCw3IEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9n ZXRfaHdfc3RhdGUoc3RydWN0IAo+PmludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ICAJCSAqIEVu YWJsZSBiaXQgZG9lcyBub3QgZ2V0IHNldC4gVG8gY2hlY2sgd2hldGhlciBEU0kgUG9ydCBDCj4+ ICAJCSAqIHdhcyBlbmFibGVkIGluIEJJT1MsIGNoZWNrIHRoZSBQaXBlIEIgZW5hYmxlIGJpdAo+ PiAgCQkgKi8KPj4gLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhk ZXYpICYmCj4+IC0JCSAgICAocG9ydCA9PSBQT1JUX0MpKQo+PiArCQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpICYmIChwb3J0ID09IFBPUlRfQykpCj4KPkNvdWxkIHRocm93IGF3YXkgdGhlIGV4dHJh IHBhcmVucyBhcm91bmQgdGhlID09IHdoaWxlIGl0IGF0LgoKRml4ZWQuCgo+Cj4+ICAJCQlkcGlf ZW5hYmxlZCA9IEk5MTVfUkVBRChQSVBFQ09ORihQSVBFX0IpKSAmCj4+ICAJCQkJCQkJUElQRUNP TkZfRU5BQkxFOwo+PiAgCj4+IEBAIC03MTYsNyArNzE1LDggQEAgc3RhdGljIHZvaWQgaW50ZWxf ZHNpX2dldF9jb25maWcoc3RydWN0IAo+PmludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ICAKPj4g IAlpZiAoSVNfQlJPWFRPTihlbmNvZGVyLT5iYXNlLmRldikpCj4+ICAJCXBjbGsgPSBieHRfZ2V0 X2RzaV9wY2xrKGVuY29kZXIsIHBpcGVfY29uZmlnLT5waXBlX2JwcCk7Cj4+IC0JZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhlbmNvZGVyLT5iYXNlLmRldikpCj4+ICsJZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhlbmNvZGVyLT5iYXNlLmRldikgfHwKPj4gKwkJIElTX0NIRVJSWVZJRVcoZW5jb2Rlci0+ YmFzZS5kZXYpKQo+PiAgCQlwY2xrID0gdmx2X2dldF9kc2lfcGNsayhlbmNvZGVyLCBwaXBlX2Nv bmZpZy0+cGlwZV9icHApOwo+PiAgCj4+ICAJaWYgKCFwY2xrKQo+PiBAQCAtODY5LDcgKzg2OSw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyIAo+ PippbnRlbF9lbmNvZGVyKQo+PiAgCX0KPj4gIAo+PiAgCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQs IGludGVsX2RzaS0+cG9ydHMpIHsKPj4gLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiAr CQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQkJ LyoKPj4gIAkJCSAqIGVzY2FwZSBjbG9jayBkaXZpZGVyLCAyME1Ieiwgc2hhcmVkIGZvciBBIGFu ZCBDLgo+PiAgCQkJICogZGV2aWNlIHJlYWR5IG11c3QgYmUgb2ZmIHdoZW4gZG9pbmcgdGhpcyEg dHhjbGtlc2M/Cj4+IEBAIC0xMTI5LDcgKzExMjksNyBAQCB2b2lkIGludGVsX2RzaV9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJaWYgKCFkZXZfcHJpdi0+dmJ0Lmhhc19taXBpKQo+ PiAgCQlyZXR1cm47Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYg KElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJZGV2X3By aXYtPm1pcGlfbW1pb19iYXNlID0gVkxWX01JUElfQkFTRTsKPj4gIAl9IGVsc2Ugewo+PiAgCQlE Uk1fRVJST1IoIlVuc3VwcG9ydGVkIE1pcGkgZGV2aWNlIHRvIHJlZyBiYXNlIik7Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMgCj4+Yi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMKPj4gaW5kZXggY2IzY2YzOS4uZmJkMmI1MSAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+PiBAQCAtNTYxLDcgKzU2 MSw3IEBAIHZvaWQgaW50ZWxfZW5hYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgCj4+ KmVuY29kZXIpCj4+ICB7Cj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJh c2UuZGV2Owo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlpZiAoSVNfVkFM TEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJdmx2X2VuYWJsZV9kc2lf cGxsKGVuY29kZXIpOwo+PiAgCWVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkKPj4gIAkJYnh0X2Vu YWJsZV9kc2lfcGxsKGVuY29kZXIpOwo+PiBAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgaW50ZWxf ZGlzYWJsZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyIAo+PiplbmNvZGVyKQo+PiAgewo+ PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPj4gIAo+PiAt CWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJ U19DSEVSUllWSUVXKGRldikpCj4+ICAJCXZsdl9kaXNhYmxlX2RzaV9wbGwoZW5jb2Rlcik7Cj4+ ICAJZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKQo+PiAgCQlieHRfZGlzYWJsZV9kc2lfcGxsKGVu Y29kZXIpOwo+PiBAQCAtNTk5LDYgKzU5OSw2IEBAIHZvaWQgaW50ZWxfZHNpX3Jlc2V0X2Nsb2Nr cyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAKPj4qZW5jb2RlciwgZW51bSBwb3J0IHBvcnQpCj4+ICAK Pj4gIAlpZiAoSVNfQlJPWFRPTihkZXYpKQo+PiAgCQlieHRfZHNpX3Jlc2V0X2Nsb2NrcyhlbmNv ZGVyLCBwb3J0KTsKPj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJZWxzZSBp ZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJdmx2X2Rz aV9yZXNldF9jbG9ja3MoZW5jb2RlciwgcG9ydCk7Cj4+ICB9Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgCj4+Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oZG1pLmMKPj4gaW5kZXggYzM5NzhiYS4uYmU3ZmFiOSAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkbWkuYwo+PiBAQCAtNjM4LDcgKzYzOCw3IEBAIHN0YXRpYyBib29sIGludGVs X2hkbWlfc2V0X2djcF9pbmZvZnJhbWUoc3RydWN0IAo+PmRybV9lbmNvZGVyICplbmNvZGVyKQo+ PiAgCj4+ICAJaWYgKEhBU19EREkoZGV2X3ByaXYpKQo+PiAgCQlyZWcgPSBIU1dfVFZJREVPX0RJ UF9HQ1AoY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2Rlcik7Cj4+IC0JZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXZfcHJpdikpCj4+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4+ICAJCXJlZyA9IFZMVl9UVklERU9fRElQX0dD UChjcnRjLT5waXBlKTsKPj4gIAllbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2LT5kZXYp KQo+PiAgCQlyZWcgPSBUVklERU9fRElQX0dDUChjcnRjLT5waXBlKTsKPj4gQEAgLTIxMDAsNyAr MjEwMCw3IEBAIHZvaWQgaW50ZWxfaGRtaV9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgCj4+aW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4gIAkJQlVHKCk7Cj4+ICAJfQo+PiAgCj4+ IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikg fHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCWludGVsX2hkbWktPndyaXRlX2luZm9mcmFt ZSA9IHZsdl93cml0ZV9pbmZvZnJhbWU7Cj4+ICAJCWludGVsX2hkbWktPnNldF9pbmZvZnJhbWVz ID0gdmx2X3NldF9pbmZvZnJhbWVzOwo+PiAgCQlpbnRlbF9oZG1pLT5pbmZvZnJhbWVfZW5hYmxl ZCA9IHZsdl9pbmZvZnJhbWVfZW5hYmxlZDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hvdHBsdWcuYyAKPj5iL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hv dHBsdWcuYwo+PiBpbmRleCBiMTc3ODU3Li5hMjk0YTNjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaG90cGx1Zy5jCj4+IEBAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBpbnRlbF9ocGRf aXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gIAkJCSAqIGhvdHBsdWcgYml0 cyBpdHNlbGYuIFNvIG9ubHkgV0FSTiBhYm91dCB1bmV4cGVjdGVkCj4+ICAJCQkgKiBpbnRlcnJ1 cHRzIG9uIHNhbmVyIHBsYXRmb3Jtcy4KPj4gIAkJCSAqLwo+PiAtCQkJV0FSTl9PTkNFKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDUgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSwKPj4gKwkJCVdBUk5f T05DRSghSEFTX0dNQ0hfRElTUExBWShkZXYpLAo+PiAgCQkJCSAgIlJlY2VpdmVkIEhQRCBpbnRl cnJ1cHQgb24gcGluICVkIGFsdGhvdWdoIGRpc2FibGVkXG4iLCBpKTsKPj4gIAkJCWNvbnRpbnVl Owo+PiAgCQl9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMu YyAKPj5iL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4+IGluZGV4IGUyNmUyMmEu LjI1MjU0YjUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4+IEBAIC02MzYsNyAr NjM2LDcgQEAgaW50IGludGVsX3NldHVwX2dtYnVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ ICAJaWYgKEhBU19QQ0hfTk9QKGRldikpCj4+ICAJCXJldHVybiAwOwo+PiAgCj4+IC0JaWYgKElT X1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2KSkKPj4gIAkJZGV2X3ByaXYtPmdwaW9fbW1pb19iYXNlID0gVkxWX0RJU1BMQVlf QkFTRTsKPj4gIAllbHNlIGlmICghSEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdikpCj4+ICAJCWRl dl9wcml2LT5ncGlvX21taW9fYmFzZSA9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jIAo+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwu Ywo+PiBpbmRleCBhZTgwOGI2Li43MjE4M2EwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BhbmVsLmMKPj4gQEAgLTE3ODQsNyArMTc4NCw3IEBAIGludGVsX3BhbmVsX2luaXRfYmFja2xp Z2h0X2Z1bmNzKHN0cnVjdCAKPj5pbnRlbF9wYW5lbCAqcGFuZWwpCj4+ICAJCXBhbmVsLT5iYWNr bGlnaHQuc2V0ID0gcGNoX3NldF9iYWNrbGlnaHQ7Cj4+ICAJCXBhbmVsLT5iYWNrbGlnaHQuZ2V0 ID0gcGNoX2dldF9iYWNrbGlnaHQ7Cj4+ICAJCXBhbmVsLT5iYWNrbGlnaHQuaHpfdG9fcHdtID0g cGNoX2h6X3RvX3B3bTsKPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiAr CX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ PiAgCQlpZiAoZGV2X3ByaXYtPnZidC5oYXNfbWlwaSkgewo+PiAgCQkJcGFuZWwtPmJhY2tsaWdo dC5zZXR1cCA9IHB3bV9zZXR1cF9iYWNrbGlnaHQ7Cj4+ICAJCQlwYW5lbC0+YmFja2xpZ2h0LmVu YWJsZSA9IHB3bV9lbmFibGVfYmFja2xpZ2h0Owo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYyAKPj5iL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK Pj4gaW5kZXggZWUwNWNlOC4uZmU1NjE4MSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4+IEBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBpbnRlbF9zZXRfbWVtb3J5X2N4c3Ioc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgCj4+KmRldl9wcml2LCBib29sIGVuYWJsZSkKPj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPj4gIAl1MzIgdmFsOwo+PiAgCj4+IC0J aWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwg SVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCUk5MTVfV1JJVEUoRldfQkxDX1NFTEZfVkxWLCBl bmFibGUgPyBGV19DU1BXUkRXTkVOIDogMCk7Cj4+ICAJCVBPU1RJTkdfUkVBRChGV19CTENfU0VM Rl9WTFYpOwo+PiAgCQlkZXZfcHJpdi0+d20udmx2LmN4c3IgPSBlbmFibGU7Cj4+IEBAIC00NDA1 LDcgKzQ0MDUsNyBAQCB2b2lkIGdlbjZfcnBzX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Cj4+KmRldl9wcml2KQo+PiAgCj4+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2Nr KTsKPj4gIAlpZiAoZGV2X3ByaXYtPnJwcy5lbmFibGVkKSB7Cj4+IC0JCWlmIChJU19WQUxMRVlW SUVXKGRldikpCj4+ICsJCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhk ZXYpKQo+PiAgCQkJdmx2X3NldF9ycHNfaWRsZShkZXZfcHJpdik7Cj4+ICAJCWVsc2UKPj4gIAkJ CWdlbjZfc2V0X3JwcyhkZXZfcHJpdi0+ZGV2LCBkZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSk7Cj4+ IEBAIC00NDU4LDcgKzQ0NTgsNyBAQCB2b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlIAo+PipkZXZfcHJpdiwKPj4gIAo+PiAgdm9pZCBpbnRlbF9zZXRfcnBzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHU4IHZhbCkKPj4gIHsKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKQo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ PiAgCQl2YWxsZXl2aWV3X3NldF9ycHMoZGV2LCB2YWwpOwo+PiAgCWVsc2UKPj4gIAkJZ2VuNl9z ZXRfcnBzKGRldiwgdmFsKTsKPj4gQEAgLTQ1MDIsNyArNDUwMiw3IEBAIHN0YXRpYyB2b2lkIHZh bGxleXZpZXdfZGlzYWJsZV9ycHMoc3RydWN0IAo+PmRybV9kZXZpY2UgKmRldikKPj4gIAo+PiAg c3RhdGljIHZvaWQgaW50ZWxfcHJpbnRfcmM2X2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dTMyIG1vZGUpCj4+ICB7Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJ U19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCWlmIChtb2Rl ICYgKEdFTjdfUkNfQ1RMX1RPX01PREUgfCBHRU42X1JDX0NUTF9FSV9NT0RFKDEpKSkKPj4gIAkJ CW1vZGUgPSBHRU42X1JDX0NUTF9SQzZfRU5BQkxFOwo+PiAgCQllbHNlCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyAKPj5iL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Bzci5jCj4+IGluZGV4IGI2NjA5ZTYuLjE3NzhhN2QgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Bzci5jCj4+IEBAIC0zMzIsOCArMzMyLDggQEAgc3RhdGljIGJvb2wgaW50 ZWxfcHNyX21hdGNoX2NvbmRpdGlvbnMoc3RydWN0IAo+PmludGVsX2RwICppbnRlbF9kcCkKPj4g IAkJcmV0dXJuIGZhbHNlOwo+PiAgCX0KPj4gIAo+PiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXYp ICYmICgoZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9saW5rKSB8fAo+PiAtCQkJCSAgICAoZGlnX3Bv cnQtPnBvcnQgIT0gUE9SVF9BKSkpIHsKPj4gKwlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAh SVNfQ0hFUlJZVklFVyhkZXYpICYmCj4+ICsJICAgICgoZGV2X3ByaXYtPnZidC5wc3IuZnVsbF9s aW5rKSB8fCAoZGlnX3BvcnQtPnBvcnQgIT0gUE9SVF9BKSkpIHsKPgo+Q291bGQgcmVtb3ZlIHNv bWUgb2YgdGhlIHVzbGVzcyBwYXJlbnMgaGVyZSB0b28uCgpOb3QgY2hhbmdlZC4gIFRoaXMgbWFr ZXMgc2Vuc2UgYnV0IHRoZSBjb21waWxlciB0aHJvd3MgYSB3YXJuaW5nIHdpdGhvdXQgCnRoZSBw YXJlbnMuCgoKPgo+PiAgCQlEUk1fREVCVUdfS01TKCJQU1IgY29uZGl0aW9uIGZhaWxlZDogTGlu ayBTdGFuZGJ5IHJlcXVlc3RlZC9uZWVkZWQgCj4+YnV0IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBw bGF0Zm9ybVxuIik7Cj4+ICAJCXJldHVybiBmYWxzZTsKPj4gIAl9Cj4+IEBAIC02NTAsNyArNjUw LDcgQEAgdm9pZCBpbnRlbF9wc3Jfc2luZ2xlX2ZyYW1lX3VwZGF0ZShzdHJ1Y3QgCj4+ZHJtX2Rl dmljZSAqZGV2LAo+PiAgCSAqIFNpbmdsZSBmcmFtZSB1cGRhdGUgaXMgYWxyZWFkeSBzdXBwb3J0 ZWQgb24gQkRXKyBidXQgaXQgcmVxdWlyZXMKPj4gIAkgKiBtYW55IFcvQSBhbmQgaXQgaXNuJ3Qg cmVhbGx5IG5lZWRlZC4KPj4gIAkgKi8KPj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkKPj4g KwlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgCQly ZXR1cm47Cj4+ICAKPj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgCj4+Yi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+PiBpbmRleCAyYjk2ZjMzLi5mOGJmNjIyIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+PiBAQCAtOTUxLDcgKzk1MSw3 IEBAIGludCBpbnRlbF9zcHJpdGVfc2V0X2NvbG9ya2V5KHN0cnVjdCBkcm1fZGV2aWNlIAo+Pipk ZXYsIHZvaWQgKmRhdGEsCj4+ICAJaWYgKChzZXQtPmZsYWdzICYgKEk5MTVfU0VUX0NPTE9SS0VZ X0RFU1RJTkFUSU9OIHwgCj4+STkxNV9TRVRfQ09MT1JLRVlfU09VUkNFKSkgPT0gKEk5MTVfU0VU X0NPTE9SS0VZX0RFU1RJTkFUSU9OIHwgCj4+STkxNV9TRVRfQ09MT1JLRVlfU09VUkNFKSkKPj4g IAkJcmV0dXJuIC1FSU5WQUw7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmCj4+ ICsJaWYgKChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSAmJgo+PiAg CSAgICBzZXQtPmZsYWdzICYgSTkxNV9TRVRfQ09MT1JLRVlfREVTVElOQVRJT04pCj4+ICAJCXJl dHVybiAtRUlOVkFMOwo+PiAgCj4+IEBAIC0xMDg2LDcgKzEwODYsNyBAQCBpbnRlbF9wbGFuZV9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gCj4+cGlwZSBwaXBlLCBpbnQgcGxhbmUp Cj4+ICAJCQlpbnRlbF9wbGFuZS0+bWF4X2Rvd25zY2FsZSA9IDE7Cj4+ICAJCX0KPj4gIAo+PiAt CQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJCWlmIChJU19WQUxMRVlWSUVXKGRldikg fHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCQlpbnRlbF9wbGFuZS0+dXBkYXRlX3BsYW5l ID0gdmx2X3VwZGF0ZV9wbGFuZTsKPj4gIAkJCWludGVsX3BsYW5lLT5kaXNhYmxlX3BsYW5lID0g dmx2X2Rpc2FibGVfcGxhbmU7Cj4+ICAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5jIAo+PmIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMKPj4gaW5kZXggYzIzNThiYS4uZmNmMDRmZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdW5jb3JlLmMKPj4gQEAgLTExMTUsNyArMTExNSw3IEBAIHN0YXRpYyB2b2lkIGZ3X2RvbWFp bl9pbml0KHN0cnVjdCAKPj5kcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gIAkJZC0+dmFs X2NsZWFyID0gX01BU0tFRF9CSVRfRElTQUJMRShGT1JDRVdBS0VfS0VSTkVMKTsKPj4gIAl9Cj4+ ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4+ICsJaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiAgCQlkLT5yZWdfcG9z dCA9IEZPUkNFV0FLRV9BQ0tfVkxWOwo+PiAgCWVsc2UgaWYgKElTX0dFTjYoZGV2X3ByaXYpIHx8 IElTX0dFTjcoZGV2X3ByaXYpIHx8IElTX0dFTjgoZGV2X3ByaXYpKQo+PiAgCQlkLT5yZWdfcG9z dCA9IEVDT0JVUzsKPj4gQEAgLTExNDgsNyArMTE0OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Vu Y29yZV9md19kb21haW5zX2luaXQoc3RydWN0IAo+PmRybV9kZXZpY2UgKmRldikKPj4gIAkJCSAg ICAgICBGT1JDRVdBS0VfQUNLX0JMSVRURVJfR0VOOSk7Cj4+ICAJCWZ3X2RvbWFpbl9pbml0KGRl dl9wcml2LCBGV19ET01BSU5fSURfTUVESUEsCj4+ICAJCQkgICAgICAgRk9SQ0VXQUtFX01FRElB X0dFTjksIEZPUkNFV0FLRV9BQ0tfTUVESUFfR0VOOSk7Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldikpIHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpIHsKPj4gIAkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtl X2dldCA9IGZ3X2RvbWFpbnNfZ2V0Owo+PiAgCQlpZiAoIUlTX0NIRVJSWVZJRVcoZGV2KSkKPj4g IAkJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPQo+PiAtLSAKPj4gMi42 LjMKPgo+LS0gCj5WaWxsZSBTeXJqw6Rsw6QKPkludGVsIE9UQwoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK