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 22:59:54 +0200 Message-ID: <20151209205954.GN4437@intel.com> References: <20151209171036.GJ4437@intel.com> <1449692975-14803-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 16E8E6E20F for ; Wed, 9 Dec 2015 12:59:58 -0800 (PST) Content-Disposition: inline In-Reply-To: <1449692975-14803-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 T24gV2VkLCBEZWMgMDksIDIwMTUgYXQgMTI6Mjk6MzVQTSAtMDgwMCwgV2F5bmUgQm95ZXIgd3Jv dGU6Cj4gVGhlIGNoZXJyeXZpZXcgZGV2aWNlIHNoYXJlcyBtYW55IGNoYXJhY3RlcmlzdGljcyB3 aXRoIHRoZSB2YWxsZXl2aWV3Cj4gZGV2aWNlLiAgV2hlbiBzdXBwb3J0IHdhcyBhZGRlZCB0byB0 aGUgZHJpdmVyIGZvciBjaGVycnl2aWV3LCB0aGUKPiBjb3JyZXNwb25kaW5nIGRldmljZSBpbmZv IHN0cnVjdHVyZSBpbmNsdWRlZCAuaXNfdmFsbGV5dmlldyA9IDEuCj4gVGhpcyBpcyBub3QgY29y cmVjdCBhbmQgbGVhZHMgdG8gc29tZSBjb25mdXNpb24uCj4gCj4gVGhpcyBwYXRjaCBjaGFuZ2Vz IC5pc192YWxsZXl2aWV3IHRvIC5pc19jaGVycnl2aWV3IGluIHRoZSBjaGVycnl2aWV3Cj4gZGV2 aWNlIGluZm8gc3RydWN0dXJlIGFuZCBzaW1wbGlmaWVzIHRoZSBJU19DSEVSUllWSUVXIG1hY3Jv Lgo+IFRoZW4gd2hlcmUgYXBwcm9wcmlhdGUsIGluc3RhbmNlcyBvZiBJU19WQUxMRVlWSUVXIGFy ZSByZXBsYWNlZCB3aXRoCj4gSVNfVkFMTEVZVklFVyB8fCBJU19DSEVSUllWSUVXIG9yIGVxdWl2 YWxlbnQuCj4gCj4gdjI6IFVzZSBJU19WQUxMRVlWSUVXIHx8IElTX0NIRVJSWVZJRVcgaW5zdGVh ZCBvZiBkZWZpbmluZyBhIG5ldyBtYWNyby4KPiAgICAgQWxzbyBhZGQgZm9sbG93dXAgcGF0Y2hl cyB0byBmaXggaXNzdWVzIGRpc2NvdmVyZWQgZHVyaW5nIHRoZSBmaXJzdAo+ICAgICByZXZpZXcu IChWaWxsZSkKPiB2MzogRml4IHNvbWUgc3R5bGUgaXNzdWVzIGFuZCBvbmUgZ2VuIGNoZWNrLiBS ZW1vdmUgQ1JUIHJlbGF0ZWQgY2hhbmdlcwo+ICAgICBhcyBDUlQgaXMgbm90IHN1cHBvcnRlZCBv biBDSFYuIChJbXJlLCBWaWxsZSkKPiB2NDogTWFrZSBhIGZldyBtb3JlIG9wdGltaXphdGlvbnMu IChWaWxsZSkKPiAKPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+IFNp Z25lZC1vZmYtYnk6IFdheW5lIEJveWVyIDx3YXluZS5ib3llckBpbnRlbC5jb20+CgpsZ3RtClJl dmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t PgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgIHwgNjgg KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZG1hLmMgICAgICAgICB8IDExICsrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jICAgICAgICAgfCAxMCArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgICAgfCAxNiArKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAg ICAgfCAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgfCAg OCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jICAgICB8ICA0ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyAgICAgICB8IDEwICsrLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgICAgICB8ICA3ICsrLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgNTQgKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgIHwg NDAgKysrKysrKysrLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2ku YyAgICAgICAgfCAxNCArKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9w bGwuYyAgICB8ICA2ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAg ICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMgICAgfCAg MiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYyAgICAgICAgfCAgMiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jICAgICAgfCAgMiArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgfCAgOCArKy0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICAgICB8ICA2ICstLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuYyAgICAgfCAgNCArLQo+ICAyMyBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5z ZXJ0aW9ucygrKSwgMTQyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gaW5kZXggYTg3MjFmYy4uZmZmMzEyNTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwo+IEBAIC0xMTQyLDggKzExNDIsMzQgQEAgc3RhdGljIGludCBpOTE1X2Zy ZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCQkgICBN RU1TVEFUX1ZJRF9TSElGVCk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiQ3VycmVudCBQLXN0YXRlOiAl ZFxuIiwKPiAgCQkJICAgKHJndnN0YXQgJiBNRU1TVEFUX1BTVEFURV9NQVNLKSA+PiBNRU1TVEFU X1BTVEFURV9TSElGVCk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjYoZGV2KSB8fCAoSVNfR0VONyhk ZXYpICYmICFJU19WQUxMRVlWSUVXKGRldikpIHx8Cj4gLQkJICAgSVNfQlJPQURXRUxMKGRldikg fHwgSVNfR0VOOShkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJ U19DSEVSUllWSUVXKGRldikpIHsKPiArCQl1MzIgZnJlcV9zdHM7Cj4gKwo+ICsJCW11dGV4X2xv Y2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gKwkJZnJlcV9zdHMgPSB2bHZfcHVuaXRfcmVh ZChkZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7Cj4gKwkJc2VxX3ByaW50ZihtLCAi UFVOSVRfUkVHX0dQVV9GUkVRX1NUUzogMHglMDh4XG4iLCBmcmVxX3N0cyk7Cj4gKwkJc2VxX3By aW50ZihtLCAiRERSIGZyZXE6ICVkIE1IelxuIiwgZGV2X3ByaXYtPm1lbV9mcmVxKTsKPiArCj4g KwkJc2VxX3ByaW50ZihtLCAiYWN0dWFsIEdQVSBmcmVxOiAlZCBNSHpcbiIsCj4gKwkJCSAgIGlu dGVsX2dwdV9mcmVxKGRldl9wcml2LCAoZnJlcV9zdHMgPj4gOCkgJiAweGZmKSk7Cj4gKwo+ICsJ CXNlcV9wcmludGYobSwgImN1cnJlbnQgR1BVIGZyZXE6ICVkIE1IelxuIiwKPiArCQkJICAgaW50 ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuY3VyX2ZyZXEpKTsKPiArCj4gKwkJ c2VxX3ByaW50ZihtLCAibWF4IEdQVSBmcmVxOiAlZCBNSHpcbiIsCj4gKwkJCSAgIGludGVsX2dw dV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLm1heF9mcmVxKSk7Cj4gKwo+ICsJCXNlcV9w cmludGYobSwgIm1pbiBHUFUgZnJlcTogJWQgTUh6XG4iLAo+ICsJCQkgICBpbnRlbF9ncHVfZnJl cShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5taW5fZnJlcSkpOwo+ICsKPiArCQlzZXFfcHJpbnRm KG0sICJpZGxlIEdQVSBmcmVxOiAlZCBNSHpcbiIsCj4gKwkJCSAgIGludGVsX2dwdV9mcmVxKGRl dl9wcml2LCBkZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSkpOwo+ICsKPiArCQlzZXFfcHJpbnRmKG0s Cj4gKwkJCSAgICJlZmZpY2llbnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIsCj4gKwkJCSAg IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9mcmVxKSk7 Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ICsJfSBlbHNlIGlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KSB7Cj4gIAkJdTMyIHJwX3N0YXRlX2xpbWl0czsK PiAgCQl1MzIgZ3RfcGVyZl9zdGF0dXM7Cj4gIAkJdTMyIHJwX3N0YXRlX2NhcDsKPiBAQCAtMTI4 NCwzMyArMTMxMCw2IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlzZXFfcHJpbnRmKG0sCj4gIAkJCSAgICJlZmZp Y2llbnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIsCj4gIAkJCSAgIGludGVsX2dwdV9mcmVx KGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9mcmVxKSk7Cj4gLQl9IGVsc2UgaWYg KElTX1ZBTExFWVZJRVcoZGV2KSkgewo+IC0JCXUzMiBmcmVxX3N0czsKPiAtCj4gLQkJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiAtCQlmcmVxX3N0cyA9IHZsdl9wdW5pdF9y ZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTKTsKPiAtCQlzZXFfcHJpbnRmKG0s ICJQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTOiAweCUwOHhcbiIsIGZyZXFfc3RzKTsKPiAtCQlzZXFf cHJpbnRmKG0sICJERFIgZnJlcTogJWQgTUh6XG4iLCBkZXZfcHJpdi0+bWVtX2ZyZXEpOwo+IC0K PiAtCQlzZXFfcHJpbnRmKG0sICJhY3R1YWwgR1BVIGZyZXE6ICVkIE1IelxuIiwKPiAtCQkJICAg aW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIChmcmVxX3N0cyA+PiA4KSAmIDB4ZmYpKTsKPiAtCj4g LQkJc2VxX3ByaW50ZihtLCAiY3VycmVudCBHUFUgZnJlcTogJWQgTUh6XG4iLAo+IC0JCQkgICBp bnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSkpOwo+IC0KPiAt CQlzZXFfcHJpbnRmKG0sICJtYXggR1BVIGZyZXE6ICVkIE1IelxuIiwKPiAtCQkJICAgaW50ZWxf Z3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMubWF4X2ZyZXEpKTsKPiAtCj4gLQkJc2Vx X3ByaW50ZihtLCAibWluIEdQVSBmcmVxOiAlZCBNSHpcbiIsCj4gLQkJCSAgIGludGVsX2dwdV9m cmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLm1pbl9mcmVxKSk7Cj4gLQo+IC0JCXNlcV9wcmlu dGYobSwgImlkbGUgR1BVIGZyZXE6ICVkIE1IelxuIiwKPiAtCQkJICAgaW50ZWxfZ3B1X2ZyZXEo ZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuaWRsZV9mcmVxKSk7Cj4gLQo+IC0JCXNlcV9wcmludGYo bSwKPiAtCQkJICAgImVmZmljaWVudCAoUlBlKSBmcmVxdWVuY3k6ICVkIE1IelxuIiwKPiAtCQkJ ICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuZWZmaWNpZW50X2ZyZXEp KTsKPiAtCQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gIAl9IGVsc2Ug ewo+ICAJCXNlcV9wdXRzKG0sICJubyBQLXN0YXRlIGluZm8gYXZhaWxhYmxlXG4iKTsKPiAgCX0K PiBAQCAtMTYwMiw3ICsxNjAxLDcgQEAgc3RhdGljIGludCBpOTE1X2RycGNfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2Rl ID0gbS0+cHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5vci0+ ZGV2Owo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlyZXR1cm4gdmx2X2RycGNfaW5mbyht KTsKPiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4gIAkJcmV0dXJuIGdl bjZfZHJwY19pbmZvKG0pOwo+IEBAIC0xNzQzLDcgKzE3NDIsNyBAQCBzdGF0aWMgaW50IGk5MTVf c3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCXNyX2VuYWJs ZWQgPSBJOTE1X1JFQUQoSU5TVFBNKSAmIElOU1RQTV9TRUxGX0VOOwo+ICAJZWxzZSBpZiAoSVNf UElORVZJRVcoZGV2KSkKPiAgCQlzcl9lbmFibGVkID0gSTkxNV9SRUFEKERTUEZXMykgJiBQSU5F VklFV19TRUxGX1JFRlJFU0hfRU47Cj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4g KwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJ CXNyX2VuYWJsZWQgPSBJOTE1X1JFQUQoRldfQkxDX1NFTEZfVkxWKSAmIEZXX0NTUFdSRFdORU47 Cj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+IEBAIC0zOTgzLDcgKzM5 ODIsNyBAQCBzdGF0aWMgaW50IHBpcGVfY3JjX3NldF9zb3VyY2Uoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgZW51bSBwaXBlIHBpcGUsCj4gIAkJcmV0ID0gaTh4eF9waXBlX2NyY19jdGxfcmVnKCZz b3VyY2UsICZ2YWwpOwo+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KQo+ICAJ CXJldCA9IGk5eHhfcGlwZV9jcmNfY3RsX3JlZyhkZXYsIHBpcGUsICZzb3VyY2UsICZ2YWwpOwo+ IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlyZXQgPSB2bHZfcGlwZV9jcmNfY3Rs X3JlZyhkZXYsIHBpcGUsICZzb3VyY2UsICZ2YWwpOwo+ICAJZWxzZSBpZiAoSVNfR0VONShkZXYp IHx8IElTX0dFTjYoZGV2KSkKPiAgCQlyZXQgPSBpbGtfcGlwZV9jcmNfY3RsX3JlZygmc291cmNl LCAmdmFsKTsKPiBAQCAtNDA1Miw3ICs0MDUxLDcgQEAgc3RhdGljIGludCBwaXBlX2NyY19zZXRf c291cmNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAo+ICAKPiAgCQlp ZiAoSVNfRzRYKGRldikpCj4gIAkJCWc0eF91bmRvX3BpcGVfc2NyYW1ibGVfcmVzZXQoZGV2LCBw aXBlKTsKPiAtCQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwkJZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQkJdmx2X3VuZG9fcGlw ZV9zY3JhbWJsZV9yZXNldChkZXYsIHBpcGUpOwo+ICAJCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2 KSAmJiBwaXBlID09IFBJUEVfQSkKPiAgCQkJaHN3X3RyYW5zX2VkcF9waXBlX0FfY3JjX3dhKGRl diwgZmFsc2UpOwo+IEBAIC00NDQyLDcgKzQ0NDEsOCBAQCBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5 X3Nob3coc3RydWN0IHNlcV9maWxlICptLCBjb25zdCB1aW50MTZfdCB3bVs4XSkKPiAgCQkgKiAt IFdNMSsgbGF0ZW5jeSB2YWx1ZXMgaW4gMC41dXMgdW5pdHMKPiAgCQkgKiAtIGxhdGVuY2llcyBh cmUgaW4gdXMgb24gZ2VuOS92bHYvY2h2Cj4gIAkJICovCj4gLQkJaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDkgfHwgSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA5IHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fAo+ICsJCSAgICBJU19DSEVSUllW SUVXKGRldikpCj4gIAkJCWxhdGVuY3kgKj0gMTA7Cj4gIAkJZWxzZSBpZiAobGV2ZWwgPiAwKQo+ ICAJCQlsYXRlbmN5ICo9IDU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gaW5kZXggYTgxYzc2 Ni4uMDgzZTJjMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IEBAIC0yNTYsNyArMjU2 LDcgQEAgaW50ZWxfc2V0dXBfbWNoYmFyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAl1MzIg dGVtcDsKPiAgCWJvb2wgZW5hYmxlZDsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJcmV0 dXJuOwo+ICAKPiAgCWRldl9wcml2LT5tY2hiYXJfbmVlZF9kaXNhYmxlID0gZmFsc2U7Cj4gQEAg LTc3OSw3ICs3NzksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0Fd ID0gMjsKPiAgCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0JdID0gMjsKPiAgCQlpbmZvLT5udW1f c3ByaXRlc1tQSVBFX0NdID0gMTsKPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ ICAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4gIAkJCWluZm8tPm51bV9zcHJpdGVz W3BpcGVdID0gMjsKPiAgCWVsc2UKPiBAQCAtNzkxLDcgKzc5MSw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJ CWluZm8tPm51bV9waXBlcyA9IDA7Cj4gIAl9IGVsc2UgaWYgKGluZm8tPm51bV9waXBlcyA+IDAg JiYKPiAgCQkgICAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gNyB8fCBJTlRFTF9JTkZPKGRldikt PmdlbiA9PSA4KSAmJgo+IC0JCSAgICFJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCQkgICAhKElT X1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpKSB7Cj4gIAkJdTMyIGZ1c2Vf c3RyYXAgPSBJOTE1X1JFQUQoRlVTRV9TVFJBUCk7Cj4gIAkJdTMyIHNmdXNlX3N0cmFwID0gSTkx NV9SRUFEKFNGVVNFX1NUUkFQKTsKPiAgCj4gQEAgLTgzNiw5ICs4MzYsNiBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2luaXRfZHBpbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gLQkJ cmV0dXJuOwo+IC0KPiAgCS8qCj4gIAkgKiBJT1NGX1BPUlRfRFBJTyBpcyB1c2VkIGZvciBWTFYg eDIgUEhZIChEUC9IRE1JIEIgYW5kIEMpLAo+ICAJICogQ0hWIHgxIFBIWSAoRFAvSERNSSBEKQo+ IEBAIC04NDcsNyArODQ0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kcGlvKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2 KSkgewo+ICAJCURQSU9fUEhZX0lPU0ZfUE9SVChEUElPX1BIWTApID0gSU9TRl9QT1JUX0RQSU9f MjsKPiAgCQlEUElPX1BIWV9JT1NGX1BPUlQoRFBJT19QSFkxKSA9IElPU0ZfUE9SVF9EUElPOwo+ IC0JfSBlbHNlIHsKPiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKPiAg CQlEUElPX1BIWV9JT1NGX1BPUlQoRFBJT19QSFkwKSA9IElPU0ZfUE9SVF9EUElPOwo+ICAJfQo+ ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggZTY5MzVmMS4uMWZiYmU4ZSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC0zMTEsNyArMzExLDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jaGVycnl2aWV3X2luZm8gPSB7Cj4g IAkuZ2VuID0gOCwgLm51bV9waXBlcyA9IDMsCj4gIAkubmVlZF9nZnhfaHdzID0gMSwgLmhhc19o b3RwbHVnID0gMSwKPiAgCS5yaW5nX21hc2sgPSBSRU5ERVJfUklORyB8IEJTRF9SSU5HIHwgQkxU X1JJTkcgfCBWRUJPWF9SSU5HLAo+IC0JLmlzX3ZhbGxleXZpZXcgPSAxLAo+ICsJLmlzX2NoZXJy eXZpZXcgPSAxLAo+ICAJLmRpc3BsYXlfbW1pb19vZmZzZXQgPSBWTFZfRElTUExBWV9CQVNFLAo+ ICAJR0VOX0NIVl9QSVBFT0ZGU0VUUywKPiAgCUNVUlNPUl9PRkZTRVRTLAo+IEBAIC04MDIsNyAr ODAyLDcgQEAgc3RhdGljIGludCBpOTE1X2RybV9yZXN1bWVfZWFybHkoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgCj4gIAlwY2lfc2V0X21hc3RlcihkZXYtPnBkZXYpOwo+ICAKPiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8 fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQlyZXQgPSB2bHZfcmVzdW1lX3ByZXBhcmUo ZGV2X3ByaXYsIGZhbHNlKTsKPiAgCWlmIChyZXQpCj4gIAkJRFJNX0VSUk9SKCJSZXN1bWUgcHJl cGFyZSBmYWlsZWQ6ICVkLCBjb250aW51aW5nIGFueXdheVxuIiwKPiBAQCAtMTUzMiw3ICsxNTMy LDcgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZp Y2UpCj4gIAkJcmV0ID0gYnh0X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2KTsKPiAgCWVsc2UgaWYg KElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJaHN3 X2Rpc2FibGVfcGM4KGRldl9wcml2KTsKPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3By aXYpKQo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklF VyhkZXZfcHJpdikpCj4gIAkJcmV0ID0gdmx2X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2LCB0cnVl KTsKPiAgCj4gIAkvKgo+IEBAIC0xNTQ5LDcgKzE1NDksNyBAQCBzdGF0aWMgaW50IGludGVsX3J1 bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSkKPiAgCSAqIHBvd2VyIHdlbGwsIHNv IGhwZCBpcyByZWluaXRpYWxpemVkIGZyb20gdGhlcmUuIEZvcgo+ICAJICogZXZlcnlvbmUgZWxz ZSBkbyBpdCBoZXJlLgo+ICAJICovCj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ ICsJaWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikpCj4gIAkJaW50ZWxfaHBkX2luaXQoZGV2X3ByaXYpOwo+ICAKPiAgCWludGVsX2VuYWJsZV9n dF9wb3dlcnNhdmUoZGV2KTsKPiBAQCAtMTU3NCw3ICsxNTc0LDcgQEAgc3RhdGljIGludCBpbnRl bF9zdXNwZW5kX2NvbXBsZXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CQlyZXQgPSBieHRfc3VzcGVuZF9jb21wbGV0ZShkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19I QVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ICAJCXJldCA9IGhz d19zdXNwZW5kX2NvbXBsZXRlKGRldl9wcml2KTsKPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVco ZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpCj4gIAkJcmV0ID0gdmx2X3N1c3BlbmRfY29tcGxldGUoZGV2X3By aXYpOwo+ICAJZWxzZQo+ICAJCXJldCA9IDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5k ZXggZjFhOGE1My4uMzg5OWYyMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC03 NjMsNiArNzYzLDcgQEAgc3RydWN0IGludGVsX2NzciB7Cj4gIAlmdW5jKGlzX2NyZXN0bGluZSkg c2VwIFwKPiAgCWZ1bmMoaXNfaXZ5YnJpZGdlKSBzZXAgXAo+ICAJZnVuYyhpc192YWxsZXl2aWV3 KSBzZXAgXAo+ICsJZnVuYyhpc19jaGVycnl2aWV3KSBzZXAgXAo+ICAJZnVuYyhpc19oYXN3ZWxs KSBzZXAgXAo+ICAJZnVuYyhpc19za3lsYWtlKSBzZXAgXAo+ICAJZnVuYyhpc19icm94dG9uKSBz ZXAgXAo+IEBAIC0yNDU1LDkgKzI0NTYsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsK PiAgCQkJCSBJTlRFTF9ERVZJRChkZXYpID09IDB4MDE1MiB8fCBcCj4gIAkJCQkgSU5URUxfREVW SUQoZGV2KSA9PSAweDAxNWEpCj4gICNkZWZpbmUgSVNfVkFMTEVZVklFVyhkZXYpCShJTlRFTF9J TkZPKGRldiktPmlzX3ZhbGxleXZpZXcpCj4gLSNkZWZpbmUgSVNfQ0hFUlJZVklFVyhkZXYpCShJ TlRFTF9JTkZPKGRldiktPmlzX3ZhbGxleXZpZXcgJiYgSVNfR0VOOChkZXYpKQo+ICsjZGVmaW5l IElTX0NIRVJSWVZJRVcoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19jaGVycnl2aWV3KQo+ICAj ZGVmaW5lIElTX0hBU1dFTEwoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19oYXN3ZWxsKQo+IC0j ZGVmaW5lIElTX0JST0FEV0VMTChkZXYpCSghSU5URUxfSU5GTyhkZXYpLT5pc192YWxsZXl2aWV3 ICYmIElTX0dFTjgoZGV2KSkKPiArI2RlZmluZSBJU19CUk9BRFdFTEwoZGV2KQkoIUlOVEVMX0lO Rk8oZGV2KS0+aXNfY2hlcnJ5dmlldyAmJiBJU19HRU44KGRldikpCj4gICNkZWZpbmUgSVNfU0tZ TEFLRShkZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX3NreWxha2UpCj4gICNkZWZpbmUgSVNfQlJP WFRPTihkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5pc19icm94dG9uKQo+ICAjZGVmaW5lIElTX0tB QllMQUtFKGRldikJKElOVEVMX0lORk8oZGV2KS0+aXNfa2FieWxha2UpCj4gQEAgLTI1ODQsNyAr MjU4NSw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+ICAJCQkJIElTX1NLWUxBS0Uo ZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKQo+ICAjZGVmaW5lIEhBU19SVU5USU1FX1BNKGRldikJ KElTX0dFTjYoZGV2KSB8fCBJU19IQVNXRUxMKGRldikgfHwgXAo+ICAJCQkJIElTX0JST0FEV0VM TChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBcCj4gLQkJCQkgSVNfU0tZTEFLRShkZXYp IHx8IElTX0tBQllMQUtFKGRldikpCj4gKwkJCQkgSVNfQ0hFUlJZVklFVyhkZXYpIHx8IElTX1NL WUxBS0UoZGV2KSB8fCBcCj4gKwkJCQkgSVNfS0FCWUxBS0UoZGV2KSkKPiAgI2RlZmluZSBIQVNf UkM2KGRldikJCShJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQo+ICAjZGVmaW5lIEhBU19SQzZw KGRldikJCShJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA2IHx8IElTX0lWWUJSSURHRShkZXYpKQo+ ICAKPiBAQCAtMjU5Nyw3ICsyNTk5LDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4g IAkJCQkgICAgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkKPiAgCj4gICNkZWZpbmUgSEFTX0NP UkVfUklOR19GUkVRKGRldikJKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYgJiYgXAo+IC0JCQkJ ICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkKPiArCQkJCSAhSVNfVkFM TEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikgJiYgXAo+ICsJCQkJICFJU19CUk9Y VE9OKGRldikpCj4gIAo+ICAjZGVmaW5lIElOVEVMX1BDSF9ERVZJQ0VfSURfTUFTSwkJMHhmZjAw Cj4gICNkZWZpbmUgSU5URUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQRQkJMHgzYjAwCj4gQEAgLTI2 MjAsNyArMjYyMyw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+ICAjZGVmaW5lIEhB U19QQ0hfTk9QKGRldikgKElOVEVMX1BDSF9UWVBFKGRldikgPT0gUENIX05PUCkKPiAgI2RlZmlu ZSBIQVNfUENIX1NQTElUKGRldikgKElOVEVMX1BDSF9UWVBFKGRldikgIT0gUENIX05PTkUpCj4g IAo+IC0jZGVmaW5lIEhBU19HTUNIX0RJU1BMQVkoZGV2KSAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA1IHx8IElTX1ZBTExFWVZJRVcoZGV2KSkKPiArI2RlZmluZSBIQVNfR01DSF9ESVNQTEFZKGRl dikgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSB8fCBcCj4gKwkJCSAgICAgICBJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAKPiAgLyogRFBGID09IGR5bmFtaWMg cGFyaXR5IGZlYXR1cmUgKi8KPiAgI2RlZmluZSBIQVNfTDNfRFBGKGRldikgKElTX0lWWUJSSURH RShkZXYpIHx8IElTX0hBU1dFTEwoZGV2KSkKPiBAQCAtMzUxMSw3ICszNTE1LDcgQEAgX19yYXdf d3JpdGUoNjQsIHEpCj4gIAo+ICBzdGF0aWMgaW5saW5lIGk5MTVfcmVnX3QgaTkxNV92Z2FjbnRy bF9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ ICAJCXJldHVybiBWTFZfVkdBQ05UUkw7Cj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+PSA1KQo+ICAJCXJldHVybiBDUFVfVkdBQ05UUkw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gaW5kZXggZGZhZjI1Yi4uZTk2ZTQ5NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ IEBAIC00ODM4LDcgKzQ4MzgsNyBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAKPiAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gLQlp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCS8qIFZMVkEwIChwb3RlbnRpYWwgaGFjayksIEJJT1Mg aXNuJ3QgYWN0dWFsbHkgd2FraW5nIHVzICovCj4gIAkJSTkxNV9XUklURShWTFZfR1RMQ19XQUtF X0NUUkwsIFZMVl9HVExDX0FMTE9XV0FLRVJFUSk7Cj4gIAkJaWYgKHdhaXRfZm9yKChJOTE1X1JF QUQoVkxWX0dUTENfUFdfU1RBVFVTKSAmCj4gQEAgLTQ5NjMsNyArNDk2Myw3IEBAIGk5MTVfZ2Vt X2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIAlkZXZfcHJpdi0+cmVsYXRpdmVf Y29uc3RhbnRzX21vZGUgPSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9HRU5FUkFMOwo+ICAKPiAt CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3ICYmICFJU19WQUxMRVlWSUVXKGRldikpCj4g KwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNyAmJiAhSVNfVkFMTEVZVklFVyhkZXYpICYm ICFJU19DSEVSUllWSUVXKGRldikpCj4gIAkJZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzID0gMzI7 Cj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0IHx8IElTX0k5NDVHKGRldikg fHwgSVNfSTk0NUdNKGRldikgfHwgSVNfRzMzKGRldikpCj4gIAkJZGV2X3ByaXYtPm51bV9mZW5j ZV9yZWdzID0gMTY7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGlu ZGV4IDQzNzYxYzUuLjRiMTE2MWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCj4gQEAgLTE5MCw3ICsxOTAsNyBAQCBpOTE1X2dlbV9hbGxvY19jb250ZXh0X29i aihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSkKPiAgCSAqIHdvdWxkIG1ha2Ug dGhlIG9iamVjdCBzbm9vcGVkIHdoaWNoIG1pZ2h0IGhhdmUgYQo+ICAJICogbmVnYXRpdmUgcGVy Zm9ybWFuY2UgaW1wYWN0Lgo+ICAJICovCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g NyAmJiAhSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gNyAmJiAhSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKPiAg CQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwgSTkxNV9DQUNIRV9M M19MTEMpOwo+ICAJCS8qIEZhaWx1cmUgc2hvdWxkbid0IGV2ZXIgaGFwcGVuIHRoaXMgZWFybHkg Ki8KPiAgCQlpZiAoV0FSTl9PTihyZXQpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKPiBpbmRleCAxZjdlNmI5Li45NjNkOWI2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMKPiBAQCAtMTQwLDggKzE0MCw3IEBAIHN0YXRpYyBpbnQgc2FuaXRpemVfZW5hYmxl X3BwZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfcHBndHQpCj4gICNlbmRp Zgo+ICAKPiAgCS8qIEVhcmx5IFZMViBkb2Vzbid0IGhhdmUgdGhpcyAqLwo+IC0JaWYgKElTX1ZB TExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmCj4gLQkgICAgZGV2LT5wZGV2 LT5yZXZpc2lvbiA8IDB4Yikgewo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiBkZXYtPnBk ZXYtPnJldmlzaW9uIDwgMHhiKSB7Cj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiZGlzYWJsaW5nIFBQ R1RUIG9uIHByZS1CMyBzdGVwIFZMVlxuIik7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCj4gaW5kZXggZTg4ZDY5Mi4uODY2NjRkMSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYwo+IEBAIC01ODEsNyArNTgxLDcgQEAgaTkxNV9lbmFibGVfcGlwZXN0YXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwKPiAgewo+ ICAJdTMyIGVuYWJsZV9tYXNrOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2LT5k ZXYpKQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKQo+ICAJCWVuYWJsZV9tYXNrID0gdmx2X2dldF9waXBlc3RhdF9lbmFibGVfbWFzayhk ZXZfcHJpdi0+ZGV2LAo+ICAJCQkJCQkJICAgc3RhdHVzX21hc2spOwo+ICAJZWxzZQo+IEBAIC01 OTUsNyArNTk1LDcgQEAgaTkxNV9kaXNhYmxlX3BpcGVzdGF0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUsCj4gIHsKPiAgCXUzMiBlbmFibGVfbWFzazsK PiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkKPiArCWlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQllbmFibGVf bWFzayA9IHZsdl9nZXRfcGlwZXN0YXRfZW5hYmxlX21hc2soZGV2X3ByaXYtPmRldiwKPiAgCQkJ CQkJCSAgIHN0YXR1c19tYXNrKTsKPiAgCWVsc2UKPiBAQCAtMTcyMyw3ICsxNzIzLDcgQEAgc3Rh dGljIHZvaWQgaTl4eF9ocGRfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg CSAqLwo+ICAJUE9TVElOR19SRUFEKFBPUlRfSE9UUExVR19TVEFUKTsKPiAgCj4gLQlpZiAoSVNf RzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSVNfRzRYKGRldikgfHwg SVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCXUzMiBob3Rw bHVnX3RyaWdnZXIgPSBob3RwbHVnX3N0YXR1cyAmIEhPVFBMVUdfSU5UX1NUQVRVU19HNFg7Cj4g IAo+ICAJCWlmIChob3RwbHVnX3RyaWdnZXIpIHsKPiBAQCAtNDQxMiw3ICs0NDEyLDcgQEAgdm9p ZCBpbnRlbF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlJ TklUX1dPUksoJmRldl9wcml2LT5sM19wYXJpdHkuZXJyb3Jfd29yaywgaXZ5YnJpZGdlX3Bhcml0 eV93b3JrKTsKPiAgCj4gIAkvKiBMZXQncyB0cmFjayB0aGUgZW5hYmxlZCBycHMgZXZlbnRzICov Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3By aXYpKQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ICAJCS8qIFdhR3N2UkMwUmVz aWRlbmN5TWV0aG9kOnZsdiAqLwo+ICAJCWRldl9wcml2LT5wbV9ycHNfZXZlbnRzID0gR0VONl9Q TV9SUF9ET1dOX0VJX0VYUElSRUQgfCBHRU42X1BNX1JQX1VQX0VJX0VYUElSRUQ7Cj4gIAllbHNl Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKPiBpbmRleCAyZDkxODIxLi5hMmFhMDlj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKPiBAQCAtNDksNyArNDksNyBA QCBzdGF0aWMgdm9pZCBpOTE1X3NhdmVfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9PTl9ERUxBWVMgPSBJOTE1X1JFQUQoUENIX1BQ X09OX0RFTEFZUyk7Cj4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMgPSBJ OTE1X1JFQUQoUENIX1BQX09GRl9ERUxBWVMpOwo+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQ UF9ESVZJU09SID0gSTkxNV9SRUFEKFBDSF9QUF9ESVZJU09SKTsKPiAtCX0gZWxzZSBpZiAoIUlT X1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmICghSVNfVkFMTEVZVklFVyhkZXYpICYm ICFJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfQ09O VFJPTCA9IEk5MTVfUkVBRChQUF9DT05UUk9MKTsKPiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZl UFBfT05fREVMQVlTID0gSTkxNV9SRUFEKFBQX09OX0RFTEFZUyk7Cj4gIAkJZGV2X3ByaXYtPnJl Z2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMgPSBJOTE1X1JFQUQoUFBfT0ZGX0RFTEFZUyk7Cj4gQEAg LTg0LDcgKzg0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXN0b3JlX2Rpc3BsYXkoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgCQlJOTE1X1dSSVRFKFBDSF9QUF9PRkZfREVMQVlTLCBkZXZfcHJp di0+cmVnZmlsZS5zYXZlUFBfT0ZGX0RFTEFZUyk7Cj4gIAkJSTkxNV9XUklURShQQ0hfUFBfRElW SVNPUiwgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX0RJVklTT1IpOwo+ICAJCUk5MTVfV1JJVEUo UENIX1BQX0NPTlRST0wsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9DT05UUk9MKTsKPiAtCX0g ZWxzZSBpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmICghSVNfVkFMTEVZ VklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQlJOTE1X1dSSVRFKFBQX09O X0RFTEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyk7Cj4gIAkJSTkxNV9X UklURShQUF9PRkZfREVMQVlTLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfT0ZGX0RFTEFZUyk7 Cj4gIAkJSTkxNV9XUklURShQUF9ESVZJU09SLCBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfRElW SVNPUik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+IGluZGV4IGY5MjljNjEuLjM3ZTNm MGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gQEAgLTQ5LDcgKzQ5LDcgQEAg c3RhdGljIHUzMiBjYWxjX3Jlc2lkZW5jeShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJaW50 ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCS8qIE9uIFZMViBhbmQgQ0hWLCBy ZXNpZGVuY3kgdGltZSBpcyBpbiBDWiB1bml0cyByYXRoZXIgdGhhbiAxLjI4dXMgKi8KPiAtCWlm IChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNf Q0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJdW5pdHMgPSAxOwo+ICAJCWRpdiA9IGRldl9wcml2LT5j emNsa19mcmVxOwo+ICAKPiBAQCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyBzc2l6ZV90IGd0X2Fj dF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gIAlpbnRlbF9ydW50aW1lX3Bt X2dldChkZXZfcHJpdik7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2Nr KTsKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2LT5kZXYpKSB7Cj4gKwlpZiAoSVNfVkFM TEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQl1MzIg ZnJlcTsKPiAgCQlmcmVxID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19HUFVf RlJFUV9TVFMpOwo+ICAJCXJldCA9IGludGVsX2dwdV9mcmVxKGRldl9wcml2LCAoZnJlcSA+PiA4 KSAmIDB4ZmYpOwo+IEBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJaWYgKHJldCkKPiAgCQkJRFJNX0VSUk9SKCJSQzZw IHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwo+ICAJfQo+IC0JaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkgewo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVX KGRldikpIHsKPiAgCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgmZGV2LT5wcmltYXJ5LT5rZGV2 LT5rb2JqLAo+ICAJCQkJCSZtZWRpYV9yYzZfYXR0cl9ncm91cCk7Cj4gIAkJaWYgKHJldCkKPiBA QCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAJfQo+ICAKPiAgCXJldCA9IDA7Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYp KQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJ cmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGVzKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIHZsdl9h dHRycyk7Cj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQo+ICAJCXJldCA9 IHN5c2ZzX2NyZWF0ZV9maWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCBnZW42X2F0dHJz KTsKPiBAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgewo+ICAJc3lzZnNfcmVtb3ZlX2Jpbl9maWxlKCZkZXYtPnByaW1hcnktPmtk ZXYtPmtvYmosICZlcnJvcl9zdGF0ZV9hdHRyKTsKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikp Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlz eXNmc19yZW1vdmVfZmlsZXMoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgdmx2X2F0dHJzKTsK PiAgCWVsc2UKPiAgCQlzeXNmc19yZW1vdmVfZmlsZXMoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29i aiwgZ2VuNl9hdHRycyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gaW5kZXggOWFh ODNlNy4uMDZmZmZhZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dWRpby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+IEBAIC0z NzUsNyArMzc1LDcgQEAgc3RhdGljIHZvaWQgaWxrX2F1ZGlvX2NvZGVjX2Rpc2FibGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAlpZiAoSEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRl dikpIHsKPiAgCQlhdWRfY29uZmlnID0gSUJYX0FVRF9DRkcocGlwZSk7Cj4gIAkJYXVkX2NudHJs X3N0MiA9IElCWF9BVURfQ05UTF9TVDI7Cj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gIAkJYXVkX2NvbmZpZyA9IFZMVl9BVURfQ0ZHKHBpcGUp Owo+ICAJCWF1ZF9jbnRybF9zdDIgPSBWTFZfQVVEX0NOVExfU1QyOwo+ICAJfSBlbHNlIHsKPiBA QCAtNDM1LDcgKzQzNSw4IEBAIHN0YXRpYyB2b2lkIGlsa19hdWRpb19jb2RlY19lbmFibGUoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQlhdWRfY29uZmlnID0gSUJYX0FVRF9D RkcocGlwZSk7Cj4gIAkJYXVkX2NudGxfc3QgPSBJQlhfQVVEX0NOVExfU1QocGlwZSk7Cj4gIAkJ YXVkX2NudHJsX3N0MiA9IElCWF9BVURfQ05UTF9TVDI7Cj4gLQl9IGVsc2UgaWYgKElTX1ZBTExF WVZJRVcoY29ubmVjdG9yLT5kZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoY29u bmVjdG9yLT5kZXYpIHx8Cj4gKwkJICAgSVNfQ0hFUlJZVklFVyhjb25uZWN0b3ItPmRldikpIHsK PiAgCQloZG1pd19oZG1pZWRpZCA9IFZMVl9IRE1JV19IRE1JRURJRChwaXBlKTsKPiAgCQlhdWRf Y29uZmlnID0gVkxWX0FVRF9DRkcocGlwZSk7Cj4gIAkJYXVkX2NudGxfc3QgPSBWTFZfQVVEX0NO VExfU1QocGlwZSk7Cj4gQEAgLTU1OSw3ICs1NjAsNyBAQCB2b2lkIGludGVsX2luaXRfYXVkaW8o c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWlmIChJU19HNFgoZGV2KSkgewo+ICAJCWRldl9w cml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZSA9IGc0eF9hdWRpb19jb2RlY19lbmFibGU7 Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZSA9IGc0eF9hdWRpb19j b2RlY19kaXNhYmxlOwo+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCX0g ZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJ CWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZSA9IGlsa19hdWRpb19jb2RlY19l bmFibGU7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZSA9IGlsa19h dWRpb19jb2RlY19kaXNhYmxlOwo+ICAJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldikgfHwgSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBpbmRleCBiNTlhMmQ4Li5kM2I2NDNiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IEBAIC0xODcsNyArMTg3LDcgQEAgaW50IGludGVsX2hyYXdjbGsoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgCXVpbnQzMl90IGNsa2NmZzsKPiAgCj4gIAkvKiBUaGVyZSBp cyBubyBDTEtDRkcgcmVnIGluIFZhbGxleXZpZXcuIFZMViBocmF3Y2xrIGlzIDIwMCBNSHogKi8K PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlyZXR1cm4gMjAwOwo+ICAKPiAgCWNsa2NmZyA9IEk5 MTVfUkVBRChDTEtDRkcpOwo+IEBAIC0yMTUsNyArMjE1LDcgQEAgaW50IGludGVsX2hyYXdjbGso c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9j emNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmICghSVNf VkFMTEVZVklFVyhkZXZfcHJpdikpCj4gKwlpZiAoIShJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8 fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWRldl9wcml2 LT5jemNsa19mcmVxID0gdmx2X2dldF9jY2tfY2xvY2tfaHBsbChkZXZfcHJpdiwgImN6Y2xrIiwK PiBAQCAtNzE2LDExICs3MTYsMTIgQEAgc3RhdGljIGJvb2wgaW50ZWxfUExMX2lzX3ZhbGlkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlpZiAoY2xvY2stPm0xICA8IGxpbWl0LT5tMS5taW4g IHx8IGxpbWl0LT5tMS5tYXggIDwgY2xvY2stPm0xKQo+ICAJCUlOVEVMUGxsSW52YWxpZCgibTEg b3V0IG9mIHJhbmdlXG4iKTsKPiAgCj4gLQlpZiAoIUlTX1BJTkVWSUVXKGRldikgJiYgIUlTX1ZB TExFWVZJRVcoZGV2KSAmJiAhSVNfQlJPWFRPTihkZXYpKQo+ICsJaWYgKCFJU19QSU5FVklFVyhk ZXYpICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYKPiArCSAgICAhSVNfQ0hFUlJZVklFVyhkZXYp ICYmICFJU19CUk9YVE9OKGRldikpCj4gIAkJaWYgKGNsb2NrLT5tMSA8PSBjbG9jay0+bTIpCj4g IAkJCUlOVEVMUGxsSW52YWxpZCgibTEgPD0gbTJcbiIpOwo+ICAKPiAtCWlmICghSVNfVkFMTEVZ VklFVyhkZXYpICYmICFJU19CUk9YVE9OKGRldikpIHsKPiArCWlmICghSVNfVkFMTEVZVklFVyhk ZXYpICYmICFJU19DSEVSUllWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkgewo+ICAJCWlm IChjbG9jay0+cCA8IGxpbWl0LT5wLm1pbiB8fCBsaW1pdC0+cC5tYXggPCBjbG9jay0+cCkKPiAg CQkJSU5URUxQbGxJbnZhbGlkKCJwIG91dCBvZiByYW5nZVxuIik7Cj4gIAkJaWYgKGNsb2NrLT5t IDwgbGltaXQtPm0ubWluIHx8IGxpbWl0LT5tLm1heCA8IGNsb2NrLT5tKQo+IEBAIC0xMzA1LDcg KzEzMDYsNyBAQCB2b2lkIGFzc2VydF9wYW5lbF91bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAkJICAgIEk5MTVfUkVBRChQQ0hfTFZEUykgJiBMVkRTX1BJUEVC X1NFTEVDVCkKPiAgCQkJcGFuZWxfcGlwZSA9IFBJUEVfQjsKPiAgCQkvKiBYWFg6IGVsc2UgZml4 IGZvciBlRFAgKi8KPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwl9IGVs c2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQkv KiBwcmVzdW1hYmx5IHdyaXRlIGxvY2sgZGVwZW5kcyBvbiBwaXBlLCBub3QgcG9ydCBzZWxlY3Qg Ki8KPiAgCQlwcF9yZWcgPSBWTFZfUElQRV9QUF9DT05UUk9MKHBpcGUpOwo+ICAJCXBhbmVsX3Bp cGUgPSBwaXBlOwo+IEBAIC0xNDIzLDcgKzE0MjQsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfc3By aXRlc19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAg ICAgInBsYW5lICVkIGFzc2VydGlvbiBmYWlsdXJlLCBzaG91bGQgYmUgb2ZmIG9uIHBpcGUgJWMg YnV0IGlzIHN0aWxsIGFjdGl2ZVxuIiwKPiAgCQkJICAgICBzcHJpdGUsIHBpcGVfbmFtZShwaXBl KSk7Cj4gIAkJfQo+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCWZv cl9lYWNoX3Nwcml0ZShkZXZfcHJpdiwgcGlwZSwgc3ByaXRlKSB7Cj4gIAkJCXUzMiB2YWwgPSBJ OTE1X1JFQUQoU1BDTlRSKHBpcGUsIHNwcml0ZSkpOwo+ICAJCQlJOTE1X1NUQVRFX1dBUk4odmFs ICYgU1BfRU5BQkxFLAo+IEBAIC0yMzE5LDcgKzIzMjAsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50 IGludGVsX2xpbmVhcl9hbGlnbm1lbnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkKPiAgCQlyZXR1cm4gMjU2 ICogMTAyNDsKPiAgCWVsc2UgaWYgKElTX0JST0FEV0FURVIoZGV2X3ByaXYpIHx8IElTX0NSRVNU TElORShkZXZfcHJpdikgfHwKPiAtCQkgSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4gKwkJIElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCXJl dHVybiAxMjggKiAxMDI0Owo+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+ PSA0KQo+ICAJCXJldHVybiA0ICogMTAyNDsKPiBAQCAtNTQ1NSw3ICs1NDU2LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfdXBkYXRlX2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkgKiBC U3BlYyBlcnJvbmVvdXNseSBjbGFpbXMgd2Ugc2hvdWxkIGFpbSBmb3IgNE1IeiwgYnV0Cj4gIAkg KiBpbiBmYWN0IDFNSHogaXMgdGhlIGNvcnJlY3QgZnJlcXVlbmN5Lgo+ICAJICovCj4gLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkgewo+ICAJCS8qCj4gIAkJICogUHJvZ3JhbSB0aGUgZ21idXNfZnJlcSBi YXNlZCBvbiB0aGUgY2RjbGsgZnJlcXVlbmN5Lgo+ICAJCSAqIEJTcGVjIGVycm9uZW91c2x5IGNs YWltcyB3ZSBzaG91bGQgYWltIGZvciA0TUh6LCBidXQKPiBAQCAtNzE4MCw3ICs3MTgxLDcgQEAg c3RhdGljIGludCBpOXh4X2dldF9yZWZjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAo+ICAJV0FSTl9PTighY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4g IAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19CUk9YVE9OKGRldikpIHsKPiArCWlm IChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpIHx8IElTX0JST1hUT04o ZGV2KSkgewo+ICAJCXJlZmNsayA9IDEwMDAwMDsKPiAgCX0gZWxzZSBpZiAoaW50ZWxfcGlwZV93 aWxsX2hhdmVfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfTFZEUykgJiYKPiAgCSAgICBp bnRlbF9wYW5lbF91c2Vfc3NjKGRldl9wcml2KSAmJiBudW1fY29ubmVjdG9ycyA8IDIpIHsKPiBA QCAtNzg3OSw3ICs3ODgwLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9zZXRfcGlwZWNvbmYoc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIAkJcGlwZWNvbmYgfD0gUElQRUNPTkZfRE9VQkxF X1dJREU7Cj4gIAo+ICAJLyogb25seSBnNHggYW5kIGxhdGVyIGhhdmUgZmFuY3kgYnBjL2RpdGhl ciBjb250cm9scyAqLwo+IC0JaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSkg ewo+ICsJaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllW SUVXKGRldikpIHsKPiAgCQkvKiBCc3BlYyBjbGFpbXMgdGhhdCB3ZSBjYW4ndCB1c2UgZGl0aGVy aW5nIGZvciAzMGJwcCBwaXBlcy4gKi8KPiAgCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kaXRo ZXIgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX2JwcCAhPSAzMCkKPiAgCQkJcGlwZWNvbmYg fD0gUElQRUNPTkZfRElUSEVSX0VOIHwKPiBAQCAtNzkxOSw3ICs3OTIwLDggQEAgc3RhdGljIHZv aWQgaTl4eF9zZXRfcGlwZWNvbmYoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gIAl9 IGVsc2UKPiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9QUk9HUkVTU0lWRTsKPiAgCj4gLQlpZiAo SVNfVkFMTEVZVklFVyhkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9y YW5nZSkKPiArCWlmICgoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkg JiYKPiArCSAgICAgaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ICAJ CXBpcGVjb25mIHw9IFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVDVDsKPiAgCj4gIAlJOTE1X1dS SVRFKFBJUEVDT05GKGludGVsX2NydGMtPnBpcGUpLCBwaXBlY29uZik7Cj4gQEAgLTgxNjYsNyAr ODE2OCw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJaWYgKCEodG1wICYgUElQRUNPTkZfRU5BQkxFKSkKPiAgCQlyZXR1cm4g ZmFsc2U7Cj4gIAo+IC0JaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ ICsJaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVX KGRldikpIHsKPiAgCQlzd2l0Y2ggKHRtcCAmIFBJUEVDT05GX0JQQ19NQVNLKSB7Cj4gIAkJY2Fz ZSBQSVBFQ09ORl82QlBDOgo+ICAJCQlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSAxODsKPiBAQCAt ODE4Miw3ICs4MTg0LDggQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVX KGRldikgJiYgKHRtcCAmIFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVDVCkpCj4gKwlpZiAoKElT X1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpICYmCj4gKwkgICAgKHRtcCAm IFBJUEVDT05GX0NPTE9SX1JBTkdFX1NFTEVDVCkpCj4gIAkJcGlwZV9jb25maWctPmxpbWl0ZWRf Y29sb3JfcmFuZ2UgPSB0cnVlOwo+ICAKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQp Cj4gQEAgLTgyMTAsNyArODIxMyw3IEBAIHN0YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmln KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCXBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBs aWVyID0gMTsKPiAgCX0KPiAgCXBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGwgPSBJOTE1 X1JFQUQoRFBMTChjcnRjLT5waXBlKSk7Cj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+ ICsJaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJ CS8qCj4gIAkJICogRFBMTF9EVk9fMlhfTU9ERSBtdXN0IGJlIGVuYWJsZWQgZm9yIGJvdGggRFBM THMKPiAgCQkgKiBvbiA4MzAuIEZpbHRlciBpdCBvdXQgaGVyZSBzbyB0aGF0IHdlIGRvbid0Cj4g QEAgLTExNTM3LDcgKzExNTQwLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSB8 fCBJU19HNFgoZGV2KSkKPiAgCQl3b3JrLT5mbGlwX2NvdW50ID0gSTkxNV9SRUFEKFBJUEVfRkxJ UENPVU5UX0c0WChwaXBlKSkgKyAxOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsK PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJ cmluZyA9ICZkZXZfcHJpdi0+cmluZ1tCQ1NdOwo+ICAJCWlmIChvYmotPnRpbGluZ19tb2RlICE9 IGludGVsX2ZiX29iaih3b3JrLT5vbGRfZmIpLT50aWxpbmdfbW9kZSkKPiAgCQkJLyogdmx2OiBE SVNQTEFZX0ZMSVAgZmFpbHMgdG8gY2hhbmdlIHRpbGluZyAqLwo+IEBAIC0xMjAxNiw3ICsxMjAx OSw3IEBAIGNvbXB1dGVfYmFzZWxpbmVfcGlwZV9icHAoc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlOwo+ICAJaW50 IGJwcCwgaTsKPiAgCj4gLQlpZiAoKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSkp Cj4gKwlpZiAoKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllW SUVXKGRldikpKQo+ICAJCWJwcCA9IDEwKjM7Cj4gIAllbHNlIGlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA1KQo+ICAJCWJwcCA9IDEyKjM7Cj4gQEAgLTEyNjI2LDcgKzEyNjI5LDcgQEAgaW50 ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJUElQRV9D T05GX0NIRUNLX0kocGl4ZWxfbXVsdGlwbGllcik7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShoYXNf aGRtaV9zaW5rKTsKPiAgCWlmICgoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4ICYmICFJU19IQVNX RUxMKGRldikpIHx8Cj4gLQkgICAgSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJICAgIElTX1ZBTExF WVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJUElQRV9DT05GX0NIRUNLX0ko bGltaXRlZF9jb2xvcl9yYW5nZSk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShoYXNfaW5mb2ZyYW1l KTsKPiAgCj4gQEAgLTE0Mzc4LDcgKzE0MzgxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0dXBf b3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCQlpZiAoSTkxNV9SRUFEKFBD SF9EUF9EKSAmIERQX0RFVEVDVEVEKQo+ICAJCQlpbnRlbF9kcF9pbml0KGRldiwgUENIX0RQX0Qs IFBPUlRfRCk7Cj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJLyoK PiAgCQkgKiBUaGUgRFBfREVURUNURUQgYml0IGlzIHRoZSBsYXRjaGVkIHN0YXRlIG9mIHRoZSBE REMKPiAgCQkgKiBTREEgcGluIGF0IGJvb3QuIEhvd2V2ZXIgc2luY2UgZURQIGRvZXNuJ3QgcmVx dWlyZSBEREMKPiBAQCAtMTQ1MjcsNyArMTQ1MzAsNyBAQCB1MzIgaW50ZWxfZmJfcGl0Y2hfbGlt aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDY0X3QgZmJfbW9kaWZpZXIsCj4gIAkJICog IHBpeGVscyBhbmQgMzJLIGJ5dGVzLiIKPiAgCQkgKi8KPiAgCQkgcmV0dXJuIG1pbig4MTkyKmRy bV9mb3JtYXRfcGxhbmVfY3BwKHBpeGVsX2Zvcm1hdCwgMCksIDMyNzY4KTsKPiAtCX0gZWxzZSBp ZiAoZ2VuID49IDUgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChnZW4g Pj0gNSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKPiAg CQlyZXR1cm4gMzIqMTAyNDsKPiAgCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsKPiAgCQlpZiAoZmJf bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCj4gQEAgLTE0NjMxLDcgKzE0NjM0 LDggQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ IC0JCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkg ewo+ICsJCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikgJiYK PiArCQkgICAgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KSB7Cj4gIAkJCURSTV9ERUJVRygidW5z dXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPiAgCQkJCSAgZHJtX2dldF9mb3JtYXRfbmFt ZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KSk7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0x NDY0Nyw3ICsxNDY1MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCX0KPiAgCQlicmVhazsKPiAgCWNhc2UgRFJNX0ZPUk1B VF9BQkdSMjEwMTAxMDoKPiAtCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJCWlmICgh SVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQkJRFJNX0RF QlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ICAJCQkJICBkcm1fZ2V0X2Zv cm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7 Cj4gQEAgLTE0Nzc1LDcgKzE0Nzc5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNh YmxlID0gaXJvbmxha2VfY3J0Y19kaXNhYmxlOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0 ZV9wcmltYXJ5X3BsYW5lID0KPiAgCQkJaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmU7Cj4g LQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3Bs YXkuZ2V0X3BpcGVfY29uZmlnID0gaTl4eF9nZXRfcGlwZV9jb25maWc7Cj4gIAkJZGV2X3ByaXYt PmRpc3BsYXkuZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnID0KPiAgCQkJaTl4eF9nZXRfaW5pdGlh bF9wbGFuZV9jb25maWc7Cj4gQEAgLTE0ODA4LDcgKzE0ODEyLDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAllbHNlIGlmIChJU19I QVNXRUxMKGRldikpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3Bl ZWQgPQo+ICAJCQloYXN3ZWxsX2dldF9kaXNwbGF5X2Nsb2NrX3NwZWVkOwo+IC0JZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2KSkKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZGlzcGxheV9jbG9j a19zcGVlZCA9Cj4gIAkJCXZhbGxleXZpZXdfZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQ7Cj4gIAll bHNlIGlmIChJU19HRU41KGRldikpCj4gQEAgLTE0ODY2LDcgKzE0ODcwLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCWRldl9w cml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayA9Cj4gIAkJCQlicm9hZHdlbGxfbW9kZXNl dF9jYWxjX2NkY2xrOwo+ICAJCX0KPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7 Cj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikp IHsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NvbW1pdF9jZGNsayA9Cj4gIAkJCXZh bGxleXZpZXdfbW9kZXNldF9jb21taXRfY2RjbGs7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9k ZXNldF9jYWxjX2NkY2xrID0KPiBAQCAtMTU2NDAsNyArMTU2NDQsNyBAQCBpbnRlbF9tb2Rlc2V0 X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJcGxsLT5vbiA9IGZh bHNlOwo+ICAJfQo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFM TEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQl2bHZfd21fZ2V0X2h3X3N0 YXRlKGRldik7Cj4gIAllbHNlIGlmIChJU19HRU45KGRldikpCj4gIAkJc2tsX3dtX2dldF9od19z dGF0ZShkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IGYzMzVjOTIuLjFlZGVi M2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtNTE3LDcgKzUxNyw3IEBAIHZv aWQgdmx2X3Bvd2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiAgCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAKPiAtCWlmIChXQVJOX09OKCFJU19WQUxM RVlWSUVXKGRldikpKQo+ICsJaWYgKFdBUk5fT04oIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNf Q0hFUlJZVklFVyhkZXYpKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJLyoKPiBAQCAtNTgyLDcgKzU4 Miw3IEBAIHN0YXRpYyBpbnQgZWRwX25vdGlmeV9oYW5kbGVyKHN0cnVjdCBub3RpZmllcl9ibG9j ayAqdGhpcywgdW5zaWduZWQgbG9uZyBjb2RlLAo+ICAKPiAgCXBwc19sb2NrKGludGVsX2RwKTsK PiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCWVudW0gcGlwZSBwaXBlID0gdmx2X3Bv d2VyX3NlcXVlbmNlcl9waXBlKGludGVsX2RwKTsKPiAgCQlpOTE1X3JlZ190IHBwX2N0cmxfcmVn LCBwcF9kaXZfcmVnOwo+ICAJCXUzMiBwcF9kaXY7Cj4gQEAgLTYxMCw3ICs2MTAsNyBAQCBzdGF0 aWMgYm9vbCBlZHBfaGF2ZV9wYW5lbF9wb3dlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ ICAKPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wcHNfbXV0ZXgpOwo+ICAKPiAt CWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYKPiArCWlmICgoSVNfVkFMTEVZVklFVyhkZXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2KSkgJiYKPiAgCSAgICBpbnRlbF9kcC0+cHBzX3BpcGUgPT0gSU5W QUxJRF9QSVBFKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gQEAgLTYyNCw3ICs2MjQsNyBAQCBz dGF0aWMgYm9vbCBlZHBfaGF2ZV9wYW5lbF92ZGQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgCj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPiAgCj4g LQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmCj4gKwlpZiAoKElTX1ZBTExFWVZJRVcoZGV2KSB8 fCBJU19DSEVSUllWSUVXKGRldikpICYmCj4gIAkgICAgaW50ZWxfZHAtPnBwc19waXBlID09IElO VkFMSURfUElQRSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IEBAIC0xNzIzLDcgKzE3MjMsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQo+ICAJCUk5MTVfV1JJVEUoVFJBTlNfRFBfQ1RMKGNydGMtPnBpcGUpLCB0cmFuc19kcCk7 Cj4gIAl9IGVsc2Ugewo+ICAJCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYmICFJU19WQUxMRVlW SUVXKGRldikgJiYKPiAtCQkgICAgY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ ICsJCSAgICAhSVNfQ0hFUlJZVklFVyhkZXYpICYmIGNydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xv cl9yYW5nZSkKPiAgCQkJaW50ZWxfZHAtPkRQIHw9IERQX0NPTE9SX1JBTkdFXzE2XzIzNTsKPiAg Cj4gIAkJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19QSFNZTkMpCj4g QEAgLTI0MTgsNyArMjQxOCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX2dldF9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+ICAKPiAgCWlmICghSEFTX1BDSF9TUExJVChkZXYpICYm ICFJU19WQUxMRVlWSUVXKGRldikgJiYKPiAtCSAgICB0bXAgJiBEUF9DT0xPUl9SQU5HRV8xNl8y MzUpCj4gKwkgICAgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJiB0bXAgJiBEUF9DT0xPUl9SQU5HRV8x Nl8yMzUpCj4gIAkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwo+ICAK PiAgCXBpcGVfY29uZmlnLT5oYXNfZHBfZW5jb2RlciA9IHRydWU7Cj4gQEAgLTI2OTQsNyArMjY5 NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiAgCj4gIAlwcHNfbG9jayhpbnRlbF9kcCk7Cj4gIAo+IC0JaWYgKElTX1ZBTExF WVZJRVcoZGV2KSkKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhk ZXYpKQo+ICAJCXZsdl9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNlcihpbnRlbF9kcCk7Cj4gIAo+ ICAJLyoKPiBAQCAtMjcyOCw3ICsyNzI4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2Rw KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAKPiAgCXBwc191bmxvY2soaW50ZWxf ZHApOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJdW5zaWduZWQgaW50IGxhbmVf bWFzayA9IDB4MDsKPiAgCj4gIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKPiBAQCAtMzIxOCw3 ICszMjE4LDcgQEAgaW50ZWxfZHBfdm9sdGFnZV9tYXgoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPiAgCQlpZiAoZGV2X3ByaXYtPmVkcF9sb3dfdnN3aW5nICYmIHBvcnQgPT0gUE9SVF9BKQo+ ICAJCQlyZXR1cm4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8zOwo+ICAJCXJldHVybiBE UF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzI7Cj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkKPiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkKPiAgCQlyZXR1cm4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8zOwo+ICAJ ZWxzZSBpZiAoSVNfR0VONyhkZXYpICYmIHBvcnQgPT0gUE9SVF9BKQo+ICAJCXJldHVybiBEUF9U UkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzI7Cj4gQEAgLTMyNTksNyArMzI1OSw3IEBAIGludGVs X2RwX3ByZV9lbXBoYXNpc19tYXgoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdWludDhfdCB2 b2x0YWdlX3N3aW5nKQo+ICAJCWRlZmF1bHQ6Cj4gIAkJCXJldHVybiBEUF9UUkFJTl9QUkVfRU1Q SF9MRVZFTF8wOwo+ICAJCX0KPiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4g Kwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsK PiAgCQlzd2l0Y2ggKHZvbHRhZ2Vfc3dpbmcgJiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX01BU0sp IHsKPiAgCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMDoKPiAgCQkJcmV0dXJu IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzM7Cj4gQEAgLTQ1MzksNyArNDUzOSw3IEBAIGJvb2wg aW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAkJcmV0dXJuIGNwdF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBw b3J0KTsKPiAgCWVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ICAJCXJldHVybiBieHRf ZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4gLQllbHNlIGlmIChJU19W QUxMRVlWSUVXKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYp IHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCXJldHVybiB2bHZfZGlnaXRhbF9wb3J0 X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIGc0eF9kaWdp dGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKPiBAQCAtNDkzMyw3ICs0OTMzLDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNldChzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpCj4gIAkgKiBSZWFkIG91dCB0aGUgY3VycmVudCBwb3dlciBzZXF1ZW5jZXIgYXNz aWdubWVudCwKPiAgCSAqIGluIGNhc2UgdGhlIEJJT1MgZGlkIHNvbWV0aGluZyB3aXRoIGl0Lgo+ ICAJICovCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhlbmNvZGVyLT5kZXYpKQo+ICsJaWYgKElTX1ZB TExFWVZJRVcoZW5jb2Rlci0+ZGV2KSB8fCBJU19DSEVSUllWSUVXKGVuY29kZXItPmRldikpCj4g IAkJdmx2X2luaXRpYWxfcG93ZXJfc2VxdWVuY2VyX3NldHVwKGludGVsX2RwKTsKPiAgCj4gIAlp bnRlbF9lZHBfcGFuZWxfdmRkX3Nhbml0aXplKGludGVsX2RwKTsKPiBAQCAtNTI5Myw3ICs1Mjkz LDcgQEAgaW50ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJLyogSGFzd2VsbCBkb2Vzbid0IGhhdmUgYW55IHBv cnQgc2VsZWN0aW9uIGJpdHMgZm9yIHRoZSBwYW5lbAo+ICAJICogcG93ZXIgc2VxdWVuY2VyIGFu eSBtb3JlLiAqLwo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQlwb3J0X3NlbCA9IFBBTkVM X1BPUlRfU0VMRUNUX1ZMVihwb3J0KTsKPiAgCX0gZWxzZSBpZiAoSEFTX1BDSF9JQlgoZGV2KSB8 fCBIQVNfUENIX0NQVChkZXYpKSB7Cj4gIAkJaWYgKHBvcnQgPT0gUE9SVF9BKQo+IEBAIC01NDA1 LDEyICs1NDA1LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX3NldF9kcnJzX3N0YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCByZWZyZXNoX3JhdGUpCj4gIAo+ICAJCXZhbCA9IEk5MTVf UkVBRChyZWcpOwo+ICAJCWlmIChpbmRleCA+IERSUlNfSElHSF9SUikgewo+IC0JCQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQo+ICsJCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2KSkKPiAgCQkJCXZhbCB8PSBQSVBFQ09ORl9FRFBfUlJfTU9ERV9TV0lUQ0hfVkxW Owo+ICAJCQllbHNlCj4gIAkJCQl2YWwgfD0gUElQRUNPTkZfRURQX1JSX01PREVfU1dJVENIOwo+ ICAJCX0gZWxzZSB7Cj4gLQkJCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwkJCWlmIChJU19W QUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJCQkJdmFsICY9IH5QSVBF Q09ORl9FRFBfUlJfTU9ERV9TV0lUQ0hfVkxWOwo+ICAJCQllbHNlCj4gIAkJCQl2YWwgJj0gflBJ UEVDT05GX0VEUF9SUl9NT0RFX1NXSVRDSDsKPiBAQCAtNTc3Nyw3ICs1Nzc3LDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs Cj4gIAl9Cj4gIAltdXRleF91bmxvY2soJmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICAKPiAt CWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwg SVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJaW50ZWxfZHAtPmVkcF9ub3RpZmllci5ub3RpZmll cl9jYWxsID0gZWRwX25vdGlmeV9oYW5kbGVyOwo+ICAJCXJlZ2lzdGVyX3JlYm9vdF9ub3RpZmll cigmaW50ZWxfZHAtPmVkcF9ub3RpZmllcik7Cj4gIAo+IEBAIC01ODI1LDcgKzU4MjUsNyBAQCBp bnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCwKPiAgCS8qIGludGVsX2RwIHZmdW5jcyAqLwo+ICAJaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDkpCj4gIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IHNrbF9n ZXRfYXV4X2Nsb2NrX2RpdmlkZXI7Cj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4g KwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJ CWludGVsX2RwLT5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIgPSB2bHZfZ2V0X2F1eF9jbG9ja19kaXZp ZGVyOwo+ICAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQo+ ICAJCWludGVsX2RwLT5nZXRfYXV4X2Nsb2NrX2RpdmlkZXIgPSBoc3dfZ2V0X2F1eF9jbG9ja19k aXZpZGVyOwo+IEBAIC01ODYwLDggKzU4NjAsOCBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3Rvcihz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiAgCQlpbnRlbF9lbmNv ZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0VEUDsKPiAgCj4gIAkvKiBlRFAgb25seSBvbiBwb3J0 IEIgYW5kL29yIEMgb24gdmx2L2NodiAqLwo+IC0JaWYgKFdBUk5fT04oSVNfVkFMTEVZVklFVyhk ZXYpICYmIGlzX2VkcChpbnRlbF9kcCkgJiYKPiAtCQkgICAgcG9ydCAhPSBQT1JUX0IgJiYgcG9y dCAhPSBQT1JUX0MpKQo+ICsJaWYgKFdBUk5fT04oKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpICYmCj4gKwkJICAgIGlzX2VkcChpbnRlbF9kcCkgJiYgcG9ydCAhPSBQ T1JUX0IgJiYgcG9ydCAhPSBQT1JUX0MpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlEUk1f REVCVUdfS01TKCJBZGRpbmcgJXMgY29ubmVjdG9yIG9uIHBvcnQgJWNcbiIsCj4gQEAgLTU5MTIs NyArNTkxMiw3IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICAJaWYgKGlzX2VkcChpbnRlbF9kcCkpIHsKPiAgCQlw cHNfbG9jayhpbnRlbF9kcCk7Cj4gIAkJaW50ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl90aW1lc3Rh bXBzKGludGVsX2RwKTsKPiAtCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJCWlmIChJU19W QUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJCQl2bHZfaW5pdGlhbF9w b3dlcl9zZXF1ZW5jZXJfc2V0dXAoaW50ZWxfZHApOwo+ICAJCWVsc2UKPiAgCQkJaW50ZWxfZHBf aW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIoZGV2LCBpbnRlbF9kcCk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHNpLmMKPiBpbmRleCAyMzA5NTdmLi4yNWJkZjFjIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHNpLmMKPiBAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9k ZXZpY2VfcmVhZHkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIHsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiAgCj4gLQlpZiAoSVNfVkFM TEVZVklFVyhkZXYpKQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVX KGRldikpCj4gIAkJdmx2X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7Cj4gIAllbHNlIGlmIChJ U19CUk9YVE9OKGRldikpCj4gIAkJYnh0X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7Cj4gQEAg LTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCj4gIAltc2xlZXAoaW50ZWxfZHNpLT5wYW5lbF9v bl9kZWxheSk7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJaWYgKElTX1ZB TExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQkvKgo+ICAJCSAqIERp c2FibGUgRFBPdW5pdCBjbG9jayBnYXRpbmcsIGNhbiBzdGFsbCBwaXBlCj4gIAkJICogYW5kIHdl IG5lZWQgRFBMTCBSRUZBIGFsd2F5cyBlbmFibGVkCj4gQEAgLTY4NCw4ICs2ODQsNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9kc2lfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ICAJCSAqIEVuYWJsZSBiaXQgZG9lcyBub3QgZ2V0IHNldC4gVG8gY2hlY2sgd2hldGhl ciBEU0kgUG9ydCBDCj4gIAkJICogd2FzIGVuYWJsZWQgaW4gQklPUywgY2hlY2sgdGhlIFBpcGUg QiBlbmFibGUgYml0Cj4gIAkJICovCj4gLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNf Q0hFUlJZVklFVyhkZXYpICYmCj4gLQkJICAgIChwb3J0ID09IFBPUlRfQykpCj4gKwkJaWYgKElT X1ZBTExFWVZJRVcoZGV2KSAmJiBwb3J0ID09IFBPUlRfQykKPiAgCQkJZHBpX2VuYWJsZWQgPSBJ OTE1X1JFQUQoUElQRUNPTkYoUElQRV9CKSkgJgo+ICAJCQkJCQkJUElQRUNPTkZfRU5BQkxFOwo+ ICAKPiBAQCAtNzE2LDcgKzcxNSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9nZXRfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCWlmIChJU19CUk9YVE9OKGVu Y29kZXItPmJhc2UuZGV2KSkKPiAgCQlwY2xrID0gYnh0X2dldF9kc2lfcGNsayhlbmNvZGVyLCBw aXBlX2NvbmZpZy0+cGlwZV9icHApOwo+IC0JZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhlbmNvZGVy LT5iYXNlLmRldikpCj4gKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGVuY29kZXItPmJhc2UuZGV2 KSB8fAo+ICsJCSBJU19DSEVSUllWSUVXKGVuY29kZXItPmJhc2UuZGV2KSkKPiAgCQlwY2xrID0g dmx2X2dldF9kc2lfcGNsayhlbmNvZGVyLCBwaXBlX2NvbmZpZy0+cGlwZV9icHApOwo+ICAKPiAg CWlmICghcGNsaykKPiBAQCAtODY5LDcgKzg2OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9w cmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAJfQo+ICAKPiAg CWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiAtCQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKSB7Cj4gKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpIHsKPiAgCQkJLyoKPiAgCQkJICogZXNjYXBlIGNsb2NrIGRpdmlkZXIsIDIw TUh6LCBzaGFyZWQgZm9yIEEgYW5kIEMuCj4gIAkJCSAqIGRldmljZSByZWFkeSBtdXN0IGJlIG9m ZiB3aGVuIGRvaW5nIHRoaXMhIHR4Y2xrZXNjPwo+IEBAIC0xMTI5LDcgKzExMjksNyBAQCB2b2lk IGludGVsX2RzaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpZiAoIWRldl9wcml2 LT52YnQuaGFzX21pcGkpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7 Cj4gIAkJZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlID0gVkxWX01JUElfQkFTRTsKPiAgCX0gZWxz ZSB7Cj4gIAkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBNaXBpIGRldmljZSB0byByZWcgYmFzZSIp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMKPiBpbmRleCBjYjNjZjM5Li5mYmQy YjUxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+IEBAIC01NjEsNyAr NTYxLDcgQEAgdm9pZCBpbnRlbF9lbmFibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2Uu ZGV2Owo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwlpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiAgCQl2bHZfZW5hYmxlX2RzaV9wbGwoZW5j b2Rlcik7Cj4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRldikpCj4gIAkJYnh0X2VuYWJsZV9kc2lf cGxsKGVuY29kZXIpOwo+IEBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBpbnRlbF9kaXNhYmxlX2Rz aV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIHsKPiAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikp Cj4gIAkJdmx2X2Rpc2FibGVfZHNpX3BsbChlbmNvZGVyKTsKPiAgCWVsc2UgaWYgKElTX0JST1hU T04oZGV2KSkKPiAgCQlieHRfZGlzYWJsZV9kc2lfcGxsKGVuY29kZXIpOwo+IEBAIC01OTksNiAr NTk5LDYgQEAgdm9pZCBpbnRlbF9kc2lfcmVzZXRfY2xvY2tzKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLCBlbnVtIHBvcnQgcG9ydCkKPiAgCj4gIAlpZiAoSVNfQlJPWFRPTihkZXYpKQo+ ICAJCWJ4dF9kc2lfcmVzZXRfY2xvY2tzKGVuY29kZXIsIHBvcnQpOwo+IC0JZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkKPiAgCQl2bHZfZHNpX3Jlc2V0X2Nsb2NrcyhlbmNvZGVyLCBwb3J0KTsK PiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBpbmRleCBjMzk3OGJhLi5iZTdmYWI5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IEBAIC02MzgsNyArNjM4LDcgQEAg c3RhdGljIGJvb2wgaW50ZWxfaGRtaV9zZXRfZ2NwX2luZm9mcmFtZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCj4gIAo+ICAJaWYgKEhBU19EREkoZGV2X3ByaXYpKQo+ICAJCXJlZyA9IEhT V19UVklERU9fRElQX0dDUChjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyKTsKPiAtCWVsc2Ug aWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gIAkJcmVnID0gVkxWX1RWSURF T19ESVBfR0NQKGNydGMtPnBpcGUpOwo+ICAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJp di0+ZGV2KSkKPiAgCQlyZWcgPSBUVklERU9fRElQX0dDUChjcnRjLT5waXBlKTsKPiBAQCAtMjEw MCw3ICsyMTAwLDcgQEAgdm9pZCBpbnRlbF9oZG1pX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICAJCUJVRygpOwo+ICAJfQo+ICAKPiAt CWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwg SVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4gIAkJaW50ZWxfaGRtaS0+d3JpdGVfaW5mb2ZyYW1lID0g dmx2X3dyaXRlX2luZm9mcmFtZTsKPiAgCQlpbnRlbF9oZG1pLT5zZXRfaW5mb2ZyYW1lcyA9IHZs dl9zZXRfaW5mb2ZyYW1lczsKPiAgCQlpbnRlbF9oZG1pLT5pbmZvZnJhbWVfZW5hYmxlZCA9IHZs dl9pbmZvZnJhbWVfZW5hYmxlZDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaG90cGx1Zy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCj4g aW5kZXggYjE3Nzg1Ny4uYTI5NGEzYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ob3RwbHVnLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3Rw bHVnLmMKPiBAQCAtNDA3LDcgKzQwNyw3IEBAIHZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVyKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCSAqIGhvdHBsdWcgYml0cyBpdHNlbGYuIFNvIG9u bHkgV0FSTiBhYm91dCB1bmV4cGVjdGVkCj4gIAkJCSAqIGludGVycnVwdHMgb24gc2FuZXIgcGxh dGZvcm1zLgo+ICAJCQkgKi8KPiAtCQkJV0FSTl9PTkNFKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDUgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSwKPiArCQkJV0FSTl9PTkNFKCFIQVNfR01DSF9ESVNQ TEFZKGRldiksCj4gIAkJCQkgICJSZWNlaXZlZCBIUEQgaW50ZXJydXB0IG9uIHBpbiAlZCBhbHRo b3VnaCBkaXNhYmxlZFxuIiwgaSk7Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9pMmMuYwo+IGluZGV4IGUyNmUyMmEuLjI1MjU0YjUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9pMmMuYwo+IEBAIC02MzYsNyArNjM2LDcgQEAgaW50IGludGVsX3NldHVwX2dtYnVz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpZiAoSEFTX1BDSF9OT1AoZGV2KSkKPiAgCQly ZXR1cm4gMDsKPiAgCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJZGV2X3ByaXYtPmdwaW9fbW1p b19iYXNlID0gVkxWX0RJU1BMQVlfQkFTRTsKPiAgCWVsc2UgaWYgKCFIQVNfR01DSF9ESVNQTEFZ KGRldl9wcml2KSkKPiAgCQlkZXZfcHJpdi0+Z3Bpb19tbWlvX2Jhc2UgPQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcGFuZWwuYwo+IGluZGV4IGFlODA4YjYuLjcyMTgzYTAgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BhbmVsLmMKPiBAQCAtMTc4NCw3ICsxNzg0LDcgQEAgaW50ZWxfcGFuZWxf aW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCkKPiAgCQlwYW5l bC0+YmFja2xpZ2h0LnNldCA9IHBjaF9zZXRfYmFja2xpZ2h0Owo+ICAJCXBhbmVsLT5iYWNrbGln aHQuZ2V0ID0gcGNoX2dldF9iYWNrbGlnaHQ7Cj4gIAkJcGFuZWwtPmJhY2tsaWdodC5oel90b19w d20gPSBwY2hfaHpfdG9fcHdtOwo+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsK PiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkg ewo+ICAJCWlmIChkZXZfcHJpdi0+dmJ0Lmhhc19taXBpKSB7Cj4gIAkJCXBhbmVsLT5iYWNrbGln aHQuc2V0dXAgPSBwd21fc2V0dXBfYmFja2xpZ2h0Owo+ICAJCQlwYW5lbC0+YmFja2xpZ2h0LmVu YWJsZSA9IHB3bV9lbmFibGVfYmFja2xpZ2h0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGlu ZGV4IGVlMDVjZTguLmZlNTYxODEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAt MjkxLDcgKzI5MSw3IEBAIHZvaWQgaW50ZWxfc2V0X21lbW9yeV9jeHNyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBlbmFibGUpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZGV2X3ByaXYtPmRldjsKPiAgCXUzMiB2YWw7Cj4gIAo+IC0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkgewo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRl dikpIHsKPiAgCQlJOTE1X1dSSVRFKEZXX0JMQ19TRUxGX1ZMViwgZW5hYmxlID8gRldfQ1NQV1JE V05FTiA6IDApOwo+ICAJCVBPU1RJTkdfUkVBRChGV19CTENfU0VMRl9WTFYpOwo+ICAJCWRldl9w cml2LT53bS52bHYuY3hzciA9IGVuYWJsZTsKPiBAQCAtNDQwNSw3ICs0NDA1LDcgQEAgdm9pZCBn ZW42X3Jwc19pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlt dXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ICAJaWYgKGRldl9wcml2LT5ycHMu ZW5hYmxlZCkgewo+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4gKwkJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gIAkJCXZsdl9zZXRfcnBzX2lkbGUo ZGV2X3ByaXYpOwo+ICAJCWVsc2UKPiAgCQkJZ2VuNl9zZXRfcnBzKGRldl9wcml2LT5kZXYsIGRl dl9wcml2LT5ycHMuaWRsZV9mcmVxKTsKPiBAQCAtNDQ1OCw3ICs0NDU4LDcgQEAgdm9pZCBnZW42 X3Jwc19ib29zdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICB2b2lk IGludGVsX3NldF9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggdmFsKQo+ICB7Cj4gLQlp ZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpCj4gIAkJdmFsbGV5dmlld19zZXRfcnBzKGRldiwgdmFsKTsKPiAgCWVs c2UKPiAgCQlnZW42X3NldF9ycHMoZGV2LCB2YWwpOwo+IEBAIC00NTAyLDcgKzQ1MDIsNyBAQCBz dGF0aWMgdm9pZCB2YWxsZXl2aWV3X2Rpc2FibGVfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wcmludF9yYzZfaW5mbyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1MzIgbW9kZSkKPiAgewo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ICsJ aWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQlpZiAo bW9kZSAmIChHRU43X1JDX0NUTF9UT19NT0RFIHwgR0VONl9SQ19DVExfRUlfTU9ERSgxKSkpCj4g IAkJCW1vZGUgPSBHRU42X1JDX0NUTF9SQzZfRU5BQkxFOwo+ICAJCWVsc2UKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wc3IuYwo+IGluZGV4IGI2NjA5ZTYuLjE3NzhhN2QgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wc3IuYwo+IEBAIC0zMzIsOCArMzMyLDggQEAgc3RhdGljIGJvb2wgaW50ZWxfcHNy X21hdGNoX2NvbmRpdGlvbnMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQlyZXR1cm4g ZmFsc2U7Cj4gIAl9Cj4gIAo+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgKChkZXZfcHJp di0+dmJ0LnBzci5mdWxsX2xpbmspIHx8Cj4gLQkJCQkgICAgKGRpZ19wb3J0LT5wb3J0ICE9IFBP UlRfQSkpKSB7Cj4gKwlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhk ZXYpICYmCj4gKwkgICAgKChkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbmspIHx8IChkaWdfcG9y dC0+cG9ydCAhPSBQT1JUX0EpKSkgewo+ICAJCURSTV9ERUJVR19LTVMoIlBTUiBjb25kaXRpb24g ZmFpbGVkOiBMaW5rIFN0YW5kYnkgcmVxdWVzdGVkL25lZWRlZCBidXQgbm90IHN1cHBvcnRlZCBv biB0aGlzIHBsYXRmb3JtXG4iKTsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gQEAgLTY1MCw3 ICs2NTAsNyBAQCB2b2lkIGludGVsX3Bzcl9zaW5nbGVfZnJhbWVfdXBkYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAkgKiBTaW5nbGUgZnJhbWUgdXBkYXRlIGlzIGFscmVhZHkgc3VwcG9y dGVkIG9uIEJEVysgYnV0IGl0IHJlcXVpcmVzCj4gIAkgKiBtYW55IFcvQSBhbmQgaXQgaXNuJ3Qg cmVhbGx5IG5lZWRlZC4KPiAgCSAqLwo+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikpCj4gKwlp ZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJCXJldHVy bjsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggMmI5NmYzMy4uZjhiZjYyMiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTk1MSw3ICs5NTEsNyBAQCBpbnQgaW50ZWxf c3ByaXRlX3NldF9jb2xvcmtleShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ ICAJaWYgKChzZXQtPmZsYWdzICYgKEk5MTVfU0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9OIHwgSTkx NV9TRVRfQ09MT1JLRVlfU09VUkNFKSkgPT0gKEk5MTVfU0VUX0NPTE9SS0VZX0RFU1RJTkFUSU9O IHwgSTkxNV9TRVRfQ09MT1JLRVlfU09VUkNFKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4g LQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmCj4gKwlpZiAoKElTX1ZBTExFWVZJRVcoZGV2KSB8 fCBJU19DSEVSUllWSUVXKGRldikpICYmCj4gIAkgICAgc2V0LT5mbGFncyAmIEk5MTVfU0VUX0NP TE9SS0VZX0RFU1RJTkFUSU9OKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiBAQCAtMTA4Niw3 ICsxMDg2LDcgQEAgaW50ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVt IHBpcGUgcGlwZSwgaW50IHBsYW5lKQo+ICAJCQlpbnRlbF9wbGFuZS0+bWF4X2Rvd25zY2FsZSA9 IDE7Cj4gIAkJfQo+ICAKPiAtCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwkJaWYgKElT X1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPiAgCQkJaW50ZWxfcGxh bmUtPnVwZGF0ZV9wbGFuZSA9IHZsdl91cGRhdGVfcGxhbmU7Cj4gIAkJCWludGVsX3BsYW5lLT5k aXNhYmxlX3BsYW5lID0gdmx2X2Rpc2FibGVfcGxhbmU7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3VuY29yZS5jCj4gaW5kZXggYzIzNThiYS4uZmNmMDRmZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTExMTUsNyArMTExNSw3IEBAIHN0YXRpYyB2b2lkIGZ3 X2RvbWFpbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlkLT52 YWxfY2xlYXIgPSBfTUFTS0VEX0JJVF9ESVNBQkxFKEZPUkNFV0FLRV9LRVJORUwpOwo+ICAJfQo+ ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiArCWlmIChJU19WQUxMRVlWSUVX KGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAgCQlkLT5yZWdfcG9zdCA9 IEZPUkNFV0FLRV9BQ0tfVkxWOwo+ICAJZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNf R0VONyhkZXZfcHJpdikgfHwgSVNfR0VOOChkZXZfcHJpdikpCj4gIAkJZC0+cmVnX3Bvc3QgPSBF Q09CVVM7Cj4gQEAgLTExNDgsNyArMTE0OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3VuY29yZV9m d19kb21haW5zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJICAgICAgIEZPUkNF V0FLRV9BQ0tfQkxJVFRFUl9HRU45KTsKPiAgCQlmd19kb21haW5faW5pdChkZXZfcHJpdiwgRldf RE9NQUlOX0lEX01FRElBLAo+ICAJCQkgICAgICAgRk9SQ0VXQUtFX01FRElBX0dFTjksIEZPUkNF V0FLRV9BQ0tfTUVESUFfR0VOOSk7Cj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkg ewo+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYp KSB7Cj4gIAkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldCA9IGZ3X2RvbWFp bnNfZ2V0Owo+ICAJCWlmICghSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJCQlkZXZfcHJpdi0+dW5j b3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0ID0KPiAtLSAKPiAyLjYuMwoKLS0gClZpbGxlIFN5cmrD pGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK