From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mo4.mail-out.ovh.net ([178.32.228.4]) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UP6aD-00012k-Ri for barebox@lists.infradead.org; Mon, 08 Apr 2013 07:33:44 +0000 Received: from mail628.ha.ovh.net (b7.ovh.net [213.186.33.57]) by mo4.mail-out.ovh.net (Postfix) with SMTP id EBC7A104E878 for ; Mon, 8 Apr 2013 09:45:43 +0200 (CEST) Date: Mon, 8 Apr 2013 09:29:37 +0200 From: Jean-Christophe PLAGNIOL-VILLARD Message-ID: <20130408072937.GU1568@game.jcrosoft.org> References: <20130402065241.GB1906@pengutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [PATCH] ARM: Support for IXP4xx built-in Ethernet interfaces. To: Krzysztof Halasa Cc: barebox@lists.infradead.org T24gMjE6NTggU3VuIDA3IEFwciAgICAgLCBLcnp5c3p0b2YgSGFsYXNhIHdyb3RlOgo+IFNpZ25l ZC1vZmYtYnk6IEtyenlzenRvZiBIYcWCYXNhIDxraGNAcG0ud2F3LnBsPgo+IAo+IGRpZmYgLS1n aXQgYS9hcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvcGxhdGZvcm0uaCBiL2FyY2gv YXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9wbGF0Zm9ybS5oCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwLi4xZGY0YWE0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Fy Y2gvYXJtL21hY2gtaXhwNHh4L2luY2x1ZGUvbWFjaC9wbGF0Zm9ybS5oCj4gQEAgLTAsMCArMSwx NSBAQAo+ICsjaW5jbHVkZSA8YXNtL3R5cGVzLmg+Cj4gKwo+ICsjZGVmaW5lIElYUDRYWF9FVEhf TlBFQSAweDAwCj4gKyNkZWZpbmUgSVhQNFhYX0VUSF9OUEVCIDB4MTAKPiArI2RlZmluZSBJWFA0 WFhfRVRIX05QRUMgMHgyMAo+ICsKPiArLyogSW5mb3JtYXRpb24gYWJvdXQgYnVpbHQtaW4gRXRo ZXJuZXQgTUFDIGludGVyZmFjZXMgKi8KPiArc3RydWN0IGV0aF9wbGF0X2luZm8gewo+ICsJdm9p ZCAqcmVnczsKPiArCXU4IG5wZTsKPiArCXU4IHBoeTsgLyogTUlJIFBIWSBJRCwgMCAtIDMxICov Cj4gKwl1OCByeHE7IC8qIGNvbmZpZ3VyYWJsZSwgY3VycmVudGx5IDAgLSAzMSBvbmx5ICovCj4g Kwl1OCB0eHJlYWR5cTsKPiArCXU4IGh3YWRkcls2XTsKPiArfTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L0tjb25maWcKPiBpbmRleCAyNzM2MDk0Li5k NjE2NGVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbmV0L0tjb25maWcKPiArKysgYi9kcml2ZXJz L25ldC9LY29uZmlnCj4gQEAgLTkzLDYgKzkzLDE0IEBAIGNvbmZpZyBEUklWRVJfTkVUX01BQ0IK PiAgCWRlcGVuZHMgb24gSEFTX01BQ0IKPiAgCXNlbGVjdCBQSFlMSUIKPiAgCj4gK2NvbmZpZyBE UklWRVJfTkVUX0lYUDRYWF9FVEgKPiArCXRyaXN0YXRlICJJbnRlbCBJWFA0eHggRXRoZXJuZXQg c3VwcG9ydCIKPiArCWRlcGVuZHMgb24gQVJDSF9JWFA0WFggJiYgSVhQNFhYX05QRSAmJiBJWFA0 WFhfUU1HUgo+ICsJc2VsZWN0IFBIWUxJQgo+ICsJaGVscAo+ICsJICBTYXkgWSBoZXJlIGlmIHlv dSB3YW50IHRvIHVzZSBidWlsdC1pbiBFdGhlcm5ldCBwb3J0cwo+ICsJICBvbiBJWFA0eHggcHJv Y2Vzc29yLgo+ICsKPiAgY29uZmlnIERSSVZFUl9ORVRfVEFQCj4gIAlib29sICJ0YXAgRXRoZXJu ZXQgZHJpdmVyIgo+ICAJZGVwZW5kcyBvbiBMSU5VWAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L01ha2VmaWxlCj4gaW5kZXggNDIxMzZmOC4uNGEyY2Vk OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL25ldC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvbmV0 L01ha2VmaWxlCj4gQEAgLTE0LDYgKzE0LDcgQEAgb2JqLSQoQ09ORklHX0RSSVZFUl9ORVRfTUFD QikJCSs9IG1hY2Iubwo+ICBvYmotJChDT05GSUdfRFJJVkVSX05FVF9UQVApCQkrPSB0YXAubwo+ ICBvYmotJChDT05GSUdfUEhZTElCKQkJCSs9IHBoeS8KPiAgb2JqLSQoQ09ORklHX05FVF9VU0Ip CQkJKz0gdXNiLwo+ICtvYmotJChDT05GSUdfRFJJVkVSX05FVF9JWFA0WFhfRVRIKQkrPSBpeHA0 eHhfZXRoLm8KPiAgb2JqLSQoQ09ORklHX0RSSVZFUl9ORVRfVFNFKQkJKz0gYWx0ZXJhX3RzZS5v Cj4gIG9iai0kKENPTkZJR19EUklWRVJfTkVUX0tTODg1MV9NTEwpCSs9IGtzODg1MV9tbGwubwo+ ICBvYmotJChDT05GSUdfRFJJVkVSX05FVF9ERVNJR05XQVJFKQkrPSBkZXNpZ253YXJlLm8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhwNHh4X2V0aC5jIGIvZHJpdmVycy9uZXQvaXhwNHh4 X2V0aC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4xYWUzN2YxCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbmV0L2l4cDR4eF9ldGguYwo+IEBAIC0wLDAg KzEsNzQxIEBACj4gKy8qCj4gKyAqIEludGVsIElYUDR4eCBFdGhlcm5ldCBkcml2ZXIgZm9yIExp bnV4Cj4gKyAqCj4gKyAqIENvcHlyaWdodCAoQykgMjAwNyBLcnp5c3p0b2YgSGFsYXNhIDxraGNA cG0ud2F3LnBsPgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVy bXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICog RXRoZXJuZXQgcG9ydCBjb25maWcgKDB4MDAgaXMgbm90IHByZXNlbnQgb24gSVhQNDJYKToKPiAr ICoKPiArICogbG9naWNhbCBwb3J0CQkweDAwCQkweDEwCQkweDIwCj4gKyAqIE5QRQkJCTAgKE5Q RS1BKQkxIChOUEUtQikJMiAoTlBFLUMpCj4gKyAqIHBoeXNpY2FsIHBvcnQJMgkJMAkJMQo+ICsg KiBSWCBxdWV1ZSAodmFyaWFibGUpCTIwCQkyMQkJMjIKPiArICogVFggcXVldWUJCTIzCQkyNAkJ MjUKPiArICogUlgtZnJlZSBxdWV1ZQkyNgkJMjcJCTI4Cj4gKyAqIFRYLWRvbmUgcXVldWUgaXMg YWx3YXlzIDMxLCBwZXItcG9ydCBSWCBxdWV1ZSBpcyBjb25maWd1cmFibGUKPiArICoKPiArICoK PiArICogUXVldWUgZW50cmllczoKPiArICogYml0cyAwIC0+IDEgIC0gTlBFIElEIChSWCBhbmQg VFgtZG9uZSkKPiArICogYml0cyAwIC0+IDIgIC0gcHJpb3JpdHkgKFRYLCBwZXIgODAyLjFEKQo+ ICsgKiBiaXRzIDMgLT4gNCAgLSBwb3J0IElEICh1c2VyLXNldD8pCj4gKyAqIGJpdHMgNSAtPiAz MSAtIHBoeXNpY2FsIGRlc2NyaXB0b3IgYWRkcmVzcwo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxj b21tb24uaD4KPiArI2luY2x1ZGUgPGluaXQuaD4KPiArI2luY2x1ZGUgPG1hbGxvYy5oPgo+ICsj aW5jbHVkZSA8bmV0Lmg+Cj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8YXNtL21t dS5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWlpLmg+Cj4gKyNpbmNsdWRlIDxtYWNoL2l4cDR4eC1y ZWdzLmg+Cj4gKyNpbmNsdWRlIDxtYWNoL3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxtYWNoL2Nw dS5oPgo+ICsjaW5jbHVkZSA8bWFjaC9ucGUuaD4KPiArI2luY2x1ZGUgPG1hY2gvcW1nci5oPgo+ ICsKPiArI2RlZmluZSBERUJVR19ERVNDCQkwCj4gKyNkZWZpbmUgREVCVUdfUlgJCTAKPiArI2Rl ZmluZSBERUJVR19UWAkJMAo+ICsjZGVmaW5lIERFQlVHX1BLVF9CWVRFUwkJMAo+ICsjZGVmaW5l IERFQlVHX01ESU8JCTAKPiArI2RlZmluZSBERUJVR19PUEVOCQkwCj4gKyNkZWZpbmUgREVCVUdf Q0xPU0UJCTAKPiArCj4gKyNkZWZpbmUgUlhfREVTQ1MJCTE2IC8qIGFsc28gbGVuZ3RoIG9mIGFs bCBSWCBxdWV1ZXMgKi8KPiArI2RlZmluZSBUWF9ERVNDUwkJMTYgLyogYWxzbyBsZW5ndGggb2Yg YWxsIFRYIHF1ZXVlcyAqLwo+ICsjZGVmaW5lIFRYRE9ORV9RVUVVRV9MRU4JMTYgLyogZHdvcmRz ICovCj4gKwo+ICsjZGVmaW5lIE1BWF9NUlUJCQkxNTM2IC8qIDB4NjAwICovCj4gKyNkZWZpbmUg UlhfQlVGRl9TSVpFCQlNQVhfTVJVCj4gKwo+ICsjZGVmaW5lIE1BWF9NRElPX1JFVFJJRVMJMTAw IC8qIG1pY3Jvc2Vjb25kcywgdHlwaWNhbGx5IDMwIGN5Y2xlcyAqLwo+ICsjZGVmaW5lIE1BWF9D TE9TRV9XQUlUCQkxMDAwIC8qIG1pY3Jvc2Vjb25kcywgdHlwaWNhbGx5IDItMyBjeWNsZXMgKi8K PiArI2RlZmluZSBFVEhfQUxFTgkJNgo+ICsKPiArI2RlZmluZSBQSFlTSUNBTF9JRChwb3J0KQko KChwb3J0KS0+bnBlLT5pZCArIDIpICUgMykKPiArI2RlZmluZSBMT0dJQ0FMX0lEKHBvcnQpCSgo cG9ydCktPm5wZS0+aWQgPDwgNCkKPiArI2RlZmluZSBSWF9RVUVVRShwb3J0KQkJKChwb3J0KS0+ bnBlLT5pZCArIDIwKSAvKiBjYW4gYmUgY2hhbmdlZCAqLwo+ICsjZGVmaW5lIFRYX1FVRVVFKHBv cnQpCQkoKHBvcnQpLT5ucGUtPmlkICsgMjMpCj4gKyNkZWZpbmUgUlhGUkVFX1FVRVVFKHBvcnQp CSgocG9ydCktPm5wZS0+aWQgKyAyNikKPiArI2RlZmluZSBUWERPTkVfUVVFVUUJCTMxCj4gKwo+ ICsvKiBUWCBDb250cm9sIFJlZ2lzdGVycyAqLwo+ICsjZGVmaW5lIFRYX0NOVFJMMF9UWF9FTgkJ MHgwMQo+ICsjZGVmaW5lIFRYX0NOVFJMMF9IQUxGRFVQTEVYCTB4MDIKPiArI2RlZmluZSBUWF9D TlRSTDBfUkVUUlkJCTB4MDQKPiArI2RlZmluZSBUWF9DTlRSTDBfUEFEX0VOCTB4MDgKPiArI2Rl ZmluZSBUWF9DTlRSTDBfQVBQRU5EX0ZDUwkweDEwCj4gKyNkZWZpbmUgVFhfQ05UUkwwXzJERUZF UgkweDIwCj4gKyNkZWZpbmUgVFhfQ05UUkwwX1JNSUkJCTB4NDAgLyogcmVkdWNlZCBNSUkgKi8K PiArI2RlZmluZSBUWF9DTlRSTDFfUkVUUklFUwkweDBGIC8qIDQgYml0cyAqLwo+ICsKPiArLyog UlggQ29udHJvbCBSZWdpc3RlcnMgKi8KPiArI2RlZmluZSBSWF9DTlRSTDBfUlhfRU4JCTB4MDEK PiArI2RlZmluZSBSWF9DTlRSTDBfUEFEU1RSSVBfRU4JMHgwMgo+ICsjZGVmaW5lIFJYX0NOVFJM MF9TRU5EX0ZDUwkweDA0Cj4gKyNkZWZpbmUgUlhfQ05UUkwwX1BBVVNFX0VOCTB4MDgKPiArI2Rl ZmluZSBSWF9DTlRSTDBfTE9PUF9FTgkweDEwCj4gKyNkZWZpbmUgUlhfQ05UUkwwX0FERFJfRkxU Ul9FTgkweDIwCj4gKyNkZWZpbmUgUlhfQ05UUkwwX1JYX1JVTlRfRU4JMHg0MAo+ICsjZGVmaW5l IFJYX0NOVFJMMF9CQ0FTVF9ESVMJMHg4MAo+ICsjZGVmaW5lIFJYX0NOVFJMMV9ERUZFUl9FTgkw eDAxCj4gKwo+ICsvKiBDb3JlIENvbnRyb2wgUmVnaXN0ZXIgKi8KPiArI2RlZmluZSBDT1JFX1JF U0VUCQkweDAxCj4gKyNkZWZpbmUgQ09SRV9SWF9GSUZPX0ZMVVNICTB4MDIKPiArI2RlZmluZSBD T1JFX1RYX0ZJRk9fRkxVU0gJMHgwNAo+ICsjZGVmaW5lIENPUkVfU0VORF9KQU0JCTB4MDgKPiAr I2RlZmluZSBDT1JFX01EQ19FTgkJMHgxMCAvKiBNRElPIHVzaW5nIE5QRS1CIEVUSC0wIG9ubHkg Ki8KPiArCj4gKyNkZWZpbmUgREVGQVVMVF9UWF9DTlRSTDAJKFRYX0NOVFJMMF9UWF9FTiB8IFRY X0NOVFJMMF9SRVRSWSB8ICAgICAgIFwKPiArCQkJCSBUWF9DTlRSTDBfUEFEX0VOIHwgVFhfQ05U UkwwX0FQUEVORF9GQ1MgfCBcCj4gKwkJCQkgVFhfQ05UUkwwXzJERUZFUikKPiArI2RlZmluZSBE RUZBVUxUX1JYX0NOVFJMMAlSWF9DTlRSTDBfUlhfRU4KPiArI2RlZmluZSBERUZBVUxUX0NPUkVf Q05UUkwJQ09SRV9NRENfRU4KPiArCj4gKwo+ICsvKiBOUEUgbWVzc2FnZSBjb2RlcyAqLwo+ICsj ZGVmaW5lIE5QRV9HRVRTVEFUVVMJCQkgMHgwMAo+ICsjZGVmaW5lIE5QRV9FREJfU0VUUE9SVEFE RFJFU1MJCSAweDAxCj4gKyNkZWZpbmUgTlBFX0VEQl9HRVRNQUNBRERSRVNTREFUQUJBU0UJIDB4 MDIKPiArI2RlZmluZSBOUEVfRURCX1NFVE1BQ0FERFJFU1NTREFUQUJBU0UJIDB4MDMKPiArI2Rl ZmluZSBOUEVfR0VUU1RBVFMJCQkgMHgwNAo+ICsjZGVmaW5lIE5QRV9SRVNFVFNUQVRTCQkJIDB4 MDUKPiArI2RlZmluZSBOUEVfU0VUTUFYRlJBTUVMRU5HVEhTCQkgMHgwNgo+ICsjZGVmaW5lIE5Q RV9WTEFOX1NFVFJYVEFHTU9ERQkJIDB4MDcKPiArI2RlZmluZSBOUEVfVkxBTl9TRVRERUZBVUxU UlhWSUQJIDB4MDgKPiArI2RlZmluZSBOUEVfVkxBTl9TRVRQT1JUVkxBTlRBQkxFRU5UUlkJIDB4 MDkKPiArI2RlZmluZSBOUEVfVkxBTl9TRVRQT1JUVkxBTlRBQkxFUkFOR0UJIDB4MEEKPiArI2Rl ZmluZSBOUEVfVkxBTl9TRVRSWFFPU0VOVFJZCQkgMHgwQgo+ICsjZGVmaW5lIE5QRV9WTEFOX1NF VFBPUlRJREVYVFJBQ1RJT05NT0RFIDB4MEMKPiArI2RlZmluZSBOUEVfU1RQX1NFVEJMT0NLSU5H U1RBVEUJIDB4MEQKPiArI2RlZmluZSBOUEVfRldfU0VURklSRVdBTExNT0RFCQkgMHgwRQo+ICsj ZGVmaW5lIE5QRV9QQ19TRVRGUkFNRUNPTlRST0xEVVJBVElPTklEIDB4MEYKPiArI2RlZmluZSBO UEVfUENfU0VUQVBNQUNUQUJMRQkJIDB4MTEKPiArI2RlZmluZSBOUEVfU0VUTE9PUEJBQ0tfTU9E RQkJIDB4MTIKPiArI2RlZmluZSBOUEVfUENfU0VUQlNTSURUQUJMRQkJIDB4MTMKPiArI2RlZmlu ZSBOUEVfQUREUkVTU19GSUxURVJfQ09ORklHCSAweDE0Cj4gKyNkZWZpbmUgTlBFX0FQUEVOREZD U0NPTkZJRwkJIDB4MTUKPiArI2RlZmluZSBOUEVfTk9USUZZX01BQ19SRUNPVkVSWV9ET05FCSAw eDE2Cj4gKyNkZWZpbmUgTlBFX01BQ19SRUNPVkVSWV9TVEFSVAkJIDB4MTcKPiArCj4gK3N0cnVj dCBldGhfcmVncyB7Cj4gKwl1MzIgdHhfY29udHJvbFsyXSwgX19yZXMxWzJdOwkJIC8qIDAwMCAq Lwo+ICsJdTMyIHJ4X2NvbnRyb2xbMl0sIF9fcmVzMlsyXTsJCSAvKiAwMTAgKi8KPiArCXUzMiBy YW5kb21fc2VlZCwgX19yZXMzWzNdOwkJIC8qIDAyMCAqLwo+ICsJdTMyIHBhcnRpYWxfZW1wdHlf dGhyZXNob2xkLCBfX3JlczQ7CSAvKiAwMzAgKi8KPiArCXUzMiBwYXJ0aWFsX2Z1bGxfdGhyZXNo b2xkLCBfX3JlczU7CSAvKiAwMzggKi8KPiArCXUzMiB0eF9zdGFydF9ieXRlcywgX19yZXM2WzNd OwkJIC8qIDA0MCAqLwo+ICsJdTMyIHR4X2RlZmVycmFsLCByeF9kZWZlcnJhbCwgX19yZXM3WzJd OyAvKiAwNTAgKi8KPiArCXUzMiB0eF8ycGFydF9kZWZlcnJhbFsyXSwgX19yZXM4WzJdOwkgLyog MDYwICovCj4gKwl1MzIgc2xvdF90aW1lLCBfX3JlczlbM107CQkgLyogMDcwICovCj4gKwl1MzIg bWRpb19jb21tYW5kWzRdOwkJCSAvKiAwODAgKi8KPiArCXUzMiBtZGlvX3N0YXR1c1s0XTsJCQkg LyogMDkwICovCj4gKwl1MzIgbWNhc3RfbWFza1s2XSwgX19yZXMxMFsyXTsJCSAvKiAwQTAgKi8K PiArCXUzMiBtY2FzdF9hZGRyWzZdLCBfX3JlczExWzJdOwkJIC8qIDBDMCAqLwo+ICsJdTMyIGlu dF9jbG9ja190aHJlc2hvbGQsIF9fcmVzMTJbM107CSAvKiAwRTAgKi8KPiArCXUzMiBod19hZGRy WzZdLCBfX3JlczEzWzYxXTsJCSAvKiAwRjAgKi8KPiArCXUzMiBjb3JlX2NvbnRyb2w7CQkJIC8q IDFGQyAqLwo+ICt9Owo+ICsKPiArLyogTlBFIG1lc3NhZ2Ugc3RydWN0dXJlICovCj4gK3N0cnVj dCBtc2cgewo+ICsJdTggY21kLCBldGhfaWQsIHBhcmFtc1s2XTsKPiArfTsKPiArCj4gKy8qIEV0 aGVybmV0IHBhY2tldCBkZXNjcmlwdG9yLCAzMiBieXRlcyAqLwo+ICtzdHJ1Y3QgZGVzYyB7Cj4g Kwl1OCAqbmV4dDsgICAgLyogcG9pbnRlciB0byBuZXh0IGJ1ZmZlciwgdW51c2VkICovCj4gKwo+ ICsJdTE2IGJ1Zl9sZW47IC8qIGJ1ZmZlciBsZW5ndGggKi8KPiArCXUxNiBwa3RfbGVuOyAvKiBw YWNrZXQgbGVuZ3RoICovCj4gKwl1OCAqZGF0YTsgICAgLyogcG9pbnRlciB0byBkYXRhIGJ1ZmZl ciBpbiBSQU0gKi8KPiArCXU4IGRlc3RfaWQ7Cj4gKwl1OCBzcmNfaWQ7Cj4gKwl1MTYgZmxhZ3M7 Cj4gKwl1OCBxb3M7Cj4gKwl1OCBwYWRsZW47Cj4gKwl1MTYgdmxhbl90Y2k7Cj4gKwo+ICsJdTgg ZHN0X21hY1tFVEhfQUxFTl0sIHNyY19tYWNbRVRIX0FMRU5dOwo+ICt9Owo+ICsKPiArc3RydWN0 IGlvIHsKPiArCXN0cnVjdCBkZXNjIHJ4X2Rlc2NfdGFiW1JYX0RFU0NTXTsgLyogYWxpZ25tZW50 OiAweDEwICovCj4gKwlzdHJ1Y3QgZGVzYyB0eF9kZXNjX3RhYltUWF9ERVNDU107Cj4gKwl1OCBy eF9idWZmX3RhYltSWF9ERVNDU11bTUFYX01SVV07Cj4gKwl1OCB0eF9idWZmX3RhYltUWF9ERVND U11bTUFYX01SVV07Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgcG9ydCB7Cj4gKwlzdHJ1Y3QgaW8gKmlv Owo+ICsJc3RydWN0IGV0aF9yZWdzICpyZWdzOwo+ICsJc3RydWN0IG5wZSAqbnBlOwo+ICsJdTgg ZmlybXdhcmVbNF07Cj4gKwlzdHJ1Y3QgZXRoX3BsYXRfaW5mbyAqcGluZm87Cj4gKwlzdHJ1Y3Qg bWlpX2J1cyBtaWlfYnVzOwo+ICsJc3RydWN0IGV0aF9kZXZpY2UgZXRoOwo+ICt9Owo+ICsKPiAr c3RhdGljIHN0cnVjdCBldGhfcmVncyAqbWRpb19yZWdzOyAvKiBtZGlvIGNvbW1hbmQgYW5kIHN0 YXR1cyBvbmx5ICovCj4gKwo+ICtzdGF0aWMgaW50IGl4cDR4eF9tZGlvX2NtZChpbnQgd3JpdGUs IGNvbnN0IHN0cnVjdCBkZXZpY2VfZCAqZGV2LCB1bnNpZ25lZCBjaGFyIHBoeV9pZCwKPiArCQkJ ICAgdW5zaWduZWQgY2hhciBsb2NhdGlvbiwgdW5zaWduZWQgc2hvcnQgdmFsdWUpCj4gK3sKPiAr CWludCBjeWNsZXMgPSAwOwo+ICsKPiArCWlmIChfX3Jhd19yZWFkbCgmbWRpb19yZWdzLT5tZGlv X2NvbW1hbmRbM10pICYgMHg4MCkgewo+ICsJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogTUlJIG5v dCByZWFkeSB0byB0cmFuc21pdFxuIiwgZGV2LT5uYW1lLCBkZXYtPmlkKTsKPiArCQlyZXR1cm4g LTE7Cj4gKwl9Cj4gKwo+ICsJaWYgKHdyaXRlKSB7Cj4gKwkJX19yYXdfd3JpdGVsKHZhbHVlICYg MHhGRiwgJm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzBdKTsKPiArCQlfX3Jhd193cml0ZWwodmFs dWUgPj4gOCwgJm1kaW9fcmVncy0+bWRpb19jb21tYW5kWzFdKTsKPiArCX0KPiArCV9fcmF3X3dy aXRlbCgoKHBoeV9pZCA8PCA1KSB8IGxvY2F0aW9uKSAmIDB4RkYsCj4gKwkJICAgICAmbWRpb19y ZWdzLT5tZGlvX2NvbW1hbmRbMl0pOwo+ICsJX19yYXdfd3JpdGVsKChwaHlfaWQgPj4gMykgfCAo d3JpdGUgPDwgMikgfCAweDgwIC8qIEdPICovLAo+ICsJCSAgICAgJm1kaW9fcmVncy0+bWRpb19j b21tYW5kWzNdKTsKPiArCj4gKwl3aGlsZSAoKGN5Y2xlcyA8IE1BWF9NRElPX1JFVFJJRVMpICYm Cj4gKwkgICAgICAgKF9fcmF3X3JlYWRsKCZtZGlvX3JlZ3MtPm1kaW9fY29tbWFuZFszXSkgJiAw eDgwKSkgewo+ICsJCXVkZWxheSgxKTsKPiArCQljeWNsZXMrKzsKPiArCX0KPiArCj4gKwlpZiAo Y3ljbGVzID09IE1BWF9NRElPX1JFVFJJRVMpIHsKPiArCQlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6 IE1JSSB3cml0ZSBmYWlsZWRcbiIsIGRldi0+bmFtZSwgZGV2LT5pZCk7Cj4gKwkJcmV0dXJuIC0x Owo+ICsJfQo+ICsKPiArI2lmIERFQlVHX01ESU8KPiArCWZwcmludGYoc3RkZXJyLCAiJXMlZDog bWRpb18lcygpIHRvb2sgJWkgY3ljbGVzXG4iLCBkZXYtPm5hbWUsIGRldi0+aWQsCj4gKwkJd3Jp dGUgPyAid3JpdGUiIDogInJlYWQiLCBjeWNsZXMpOwo+ICsjZW5kaWYKbm8gcHJpbnRmIGluIGRy aXZlciB1c2UgZGV2X2RiZwo+ICsKPiArCWlmICh3cml0ZSkKPiArCQlyZXR1cm4gMDsKPiArCj4g KwlpZiAoX19yYXdfcmVhZGwoJm1kaW9fcmVncy0+bWRpb19zdGF0dXNbM10pICYgMHg4MCkgewo+ ICsjaWYgREVCVUdfTURJTwo+ICsJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogTUlJIHJlYWQgZmFp bGVkXG4iLCBkZXYtPm5hbWUsIGRldi0+aWQpOwo+ICsjZW5kaWYKPiArCQlyZXR1cm4gLTE7Cj4g Kwl9Cj4gKwo+ICsJdmFsdWUgPSAoX19yYXdfcmVhZGwoJm1kaW9fcmVncy0+bWRpb19zdGF0dXNb MF0pICYgMHhGRikgfAo+ICsJCSgoX19yYXdfcmVhZGwoJm1kaW9fcmVncy0+bWRpb19zdGF0dXNb MV0pICYgMHhGRikgPDwgOCk7Cj4gKyNpZiBERUJVR19NRElPCj4gKwlmcHJpbnRmKHN0ZGVyciwg IiVzJWQ6IE1JSSByZWFkIFslaV0gLT4gMHglWFxuIiwgZGV2LT5uYW1lLCBkZXYtPmlkLCBsb2Nh dGlvbiwgdmFsdWUpOwo+ICsjZW5kaWYKPiArCj4gKwlyZXR1cm4gdmFsdWU7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgaXhwNHh4X21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWlpLCBpbnQgcGh5 X2lkLCBpbnQgbG9jYXRpb24pCj4gK3sKPiArCWludCByZXQgPSBpeHA0eHhfbWRpb19jbWQoMCwg Jm1paS0+ZGV2LCBwaHlfaWQsIGxvY2F0aW9uLCAwKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgaXhwNHh4X21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKm1paSwgaW50 IHBoeV9pZCwgaW50IGxvY2F0aW9uLCB1MTYgdmFsdWUpCj4gK3sKPiArCWludCByZXQgPSBpeHA0 eHhfbWRpb19jbWQoMSwgJm1paS0+ZGV2LCBwaHlfaWQsIGxvY2F0aW9uLCB2YWx1ZSk7Cj4gKyNp ZiBERUJVR19NRElPCj4gKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IE1JSSB3cml0ZSBbJWldIDwt IDB4JVgsIGVyciA9ICVpXG4iLAo+ICsJCW1paS0+ZGV2Lm5hbWUsIG1paS0+ZGV2LmlkLCBsb2Nh dGlvbiwgdmFsdWUsIHJldCk7Cj4gKyNlbmRpZgo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgaXhwNHh4X2FkanVzdF9saW5rKHN0cnVjdCBldGhfZGV2aWNlICpkZXYpCj4g K3sKPiArCXN0cnVjdCBwb3J0ICpwb3J0ID0gZGV2LT5wcml2Owo+ICsKPiArCWlmIChkZXYtPnBo eWRldi0+ZHVwbGV4KQo+ICsJCV9fcmF3X3dyaXRlbChERUZBVUxUX1RYX0NOVFJMMCAmIH5UWF9D TlRSTDBfSEFMRkRVUExFWCwKPiArCQkJICAgICAmcG9ydC0+cmVncy0+dHhfY29udHJvbFswXSk7 Cj4gKwllbHNlCj4gKwkJX19yYXdfd3JpdGVsKERFRkFVTFRfVFhfQ05UUkwwIHwgVFhfQ05UUkww X0hBTEZEVVBMRVgsCj4gKwkJCSAgICAgJnBvcnQtPnJlZ3MtPnR4X2NvbnRyb2xbMF0pOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZGVidWdfcGt0KHN0cnVjdCBldGhfZGV2aWNlICpk ZXYsIGNvbnN0IGNoYXIgKmZ1bmMsCj4gKwkJCSAgICAgdTggKmRhdGEsIGludCBsZW4pCj4gK3sK PiArI2lmIERFQlVHX1BLVF9CWVRFUwo+ICsJaW50IGk7Cj4gKwo+ICsJZnByaW50ZihzdGRlcnIs ICIlcyVkOiAlcyglNGkpICIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBmdW5jLCBsZW4p Owo+ICsJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Cj4gKwkJaWYgKGkgPj0gREVCVUdfUEtU X0JZVEVTKQo+ICsJCQlicmVhazsKPiArCQlmcHJpbnRmKHN0ZGVyciwgIiVzJTAyWCIsCj4gKwkJ CSgoaSA9PSA2KSB8fCAoaSA9PSAxMikgfHwgKGkgPj0gMTQpKSA/ICIgIiA6ICIiLAo+ICsJCQlk YXRhW2ldKTsKPiArCX0KPiArCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKPiArI2VuZGlmCj4gK30K PiArCj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZGVidWdfZGVzYyhzdHJ1Y3QgZGVzYyAqZGVz YykKPiArewo+ICsjaWYgREVCVUdfREVTQwo+ICsJZnByaW50ZihzdGRlcnIsICIlMDdYOiAlWCAl M1ggJTNYICUwN1ggJTJYIDwgJTJYICU0WCAlWCIKPiArCQkiICVYICVYICUwMlglMDJYJTAyWCUw MlglMDJYJTAyWCA8ICUwMlglMDJYJTAyWCUwMlglMDJYJTAyWFxuIiwKPiArCQkodTMyKWRlc2Ms ICh1MzIpZGVzYy0+bmV4dCwgZGVzYy0+YnVmX2xlbiwgZGVzYy0+cGt0X2xlbiwKPiArCQkodTMy KWRlc2MtPmRhdGEsIGRlc2MtPmRlc3RfaWQsIGRlc2MtPnNyY19pZCwgZGVzYy0+ZmxhZ3MsCj4g KwkJZGVzYy0+cW9zLCBkZXNjLT5wYWRsZW4sIGRlc2MtPnZsYW5fdGNpLAo+ICsJCWRlc2MtPmRz dF9tYWNbMF0sIGRlc2MtPmRzdF9tYWNbMV0sIGRlc2MtPmRzdF9tYWNbMl0sCj4gKwkJZGVzYy0+ ZHN0X21hY1szXSwgZGVzYy0+ZHN0X21hY1s0XSwgZGVzYy0+ZHN0X21hY1s1XSwKPiArCQlkZXNj LT5zcmNfbWFjWzBdLCBkZXNjLT5zcmNfbWFjWzFdLCBkZXNjLT5zcmNfbWFjWzJdLAo+ICsJCWRl c2MtPnNyY19tYWNbM10sIGRlc2MtPnNyY19tYWNbNF0sIGRlc2MtPnNyY19tYWNbNV0pOwo+ICsj ZW5kaWYKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgcXVldWVfZ2V0X2Rlc2ModW5zaWdu ZWQgaW50IHF1ZXVlLCBzdHJ1Y3QgcG9ydCAqcG9ydCwKPiArCQkJCSBpbnQgaXNfdHgpCj4gK3sK PiArCXUzMiBhZGRyLCBuOwo+ICsJc3RydWN0IGRlc2MgKnRhYjsKPiArCj4gKwlpZiAoIShhZGRy ID0gcW1ncl9nZXRfZW50cnkocXVldWUpKSkKPiArCQlyZXR1cm4gLTE7Cj4gKwo+ICsJYWRkciAm PSB+MHgxRjsgLyogbWFzayBvdXQgbm9uLWFkZHJlc3MgYml0cyAqLwo+ICsJdGFiID0gaXNfdHgg PyBwb3J0LT5pby0+dHhfZGVzY190YWIgOiBwb3J0LT5pby0+cnhfZGVzY190YWI7Cj4gKwluID0g KGFkZHIgLSAodTMyKXRhYikgLyBzaXplb2Yoc3RydWN0IGRlc2MpOwo+ICsJQlVHX09OKG4gPj0g KGlzX3R4ID8gVFhfREVTQ1MgOiBSWF9ERVNDUykpOwo+ICsJZGVidWdfZGVzYygoc3RydWN0IGRl c2MqKWFkZHIpOwo+ICsJQlVHX09OKHRhYltuXS5uZXh0KTsKPiArCXJldHVybiBuOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcXVldWVfcHV0X2Rlc2ModW5zaWduZWQgaW50IHF1ZXVl LCBzdHJ1Y3QgZGVzYyAqZGVzYykKPiArewo+ICsJZGVidWdfZGVzYyhkZXNjKTsKPiArCUJVR19P TigoKHUzMilkZXNjKSAmIDB4MUYpOwo+ICsJcW1ncl9wdXRfZW50cnkocXVldWUsICh1MzIpZGVz Yyk7Cj4gKwkvKiBEb24ndCBjaGVjayBmb3IgcXVldWUgb3ZlcmZsb3cgaGVyZSwgd2UndmUgYWxs b2NhdGVkIHN1ZmZpY2llbnQKPiArCSAgIGxlbmd0aCBhbmQgcXVldWVzID49IDMyIGRvbid0IHN1 cHBvcnQgdGhpcyBjaGVjayBhbnl3YXkuICovCj4gK30KPiArCj4gKwo+ICtzdGF0aWMgaW50IGl4 cDR4eF9ldGhfcG9sbChzdHJ1Y3QgZXRoX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgcG9y dCAqcG9ydCA9IGRldi0+cHJpdjsKPiArCXN0cnVjdCBkZXNjICpkZXNjOwo+ICsJdTggKmJ1ZmY7 Cj4gKwlpbnQgbiwgbGVuOwo+ICsKPiArI2lmIERFQlVHX1JYCj4gKwlmcHJpbnRmKHN0ZGVyciwg IiVzJWQ6IGV0aF9wb2xsXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7Cj4gKyNlbmRp Zgo+ICsKPiArCWlmICgobiA9IHF1ZXVlX2dldF9kZXNjKFJYX1FVRVVFKHBvcnQpLCBwb3J0LCAw KSkgPCAwKSB7Cj4gKyNpZiBERUJVR19SWAo+ICsJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogZXRo X3BvbGwgPSBubyBwYWNrZXQgcmVjZWl2ZWRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2Lmlk KTsKPiArI2VuZGlmCj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJYmFycmllcigpOwo+ICsJ ZGVzYyA9ICZwb3J0LT5pby0+cnhfZGVzY190YWJbbl07Cj4gKwlidWZmID0gcG9ydC0+aW8tPnJ4 X2J1ZmZfdGFiW25dOwo+ICsJbGVuID0gZGVzYy0+cGt0X2xlbjsKPiArCS8qIHByb2Nlc3MgcmVj ZWl2ZWQgZnJhbWUgKi8KPiArCW1lbWNweSgodm9pZCAqKU5ldFJ4UGFja2V0c1swXSwgYnVmZiwg bGVuKTsKPiArCWRlYnVnX3BrdChkZXYsICJSWCIsIGRlc2MtPmRhdGEsIGxlbik7Cj4gKwo+ICsJ LyogcHV0IHRoZSBuZXcgYnVmZmVyIG9uIFJYLWZyZWUgcXVldWUgKi8KPiArCWRlc2MtPmJ1Zl9s ZW4gPSBNQVhfTVJVOwo+ICsJZGVzYy0+cGt0X2xlbiA9IDA7Cj4gKwlxdWV1ZV9wdXRfZGVzYyhS WEZSRUVfUVVFVUUocG9ydCksIGRlc2MpOwo+ICsKPiArCW5ldF9yZWNlaXZlKE5ldFJ4UGFja2V0 c1swXSwgbGVuKTsKPiArCj4gKyNpZiBERUJVR19SWAo+ICsJZnByaW50ZihzdGRlcnIsICIlcyVk OiBldGhfcG9sbCBlbmRcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKPiArI2VuZGlm Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArCj4gK3N0YXRpYyBpbnQgaXhwNHh4X2V0aF94bWl0 KHN0cnVjdCBldGhfZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pCj4gK3sKPiArCXN0 cnVjdCBwb3J0ICpwb3J0ID0gZGV2LT5wcml2Owo+ICsJaW50IG47Cj4gKwlzdHJ1Y3QgZGVzYyAq ZGVzYzsKPiArCj4gKyNpZiBERUJVR19UWAo+ICsJZnByaW50ZihzdGRlcnIsICIlcyVkOiBldGhf eG1pdFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOwo+ICsjZW5kaWYKPiArCj4gKwlp ZiAodW5saWtlbHkobGVuID4gMTUwMCkpCj4gKwkJcmV0dXJuIC0xOwo+ICsKPiArCWRlYnVnX3Br dChkZXYsICJUWCIsIGRhdGEsIGxlbik7Cj4gKwo+ICsJaWYgKChuID0gcXVldWVfZ2V0X2Rlc2Mo VFhET05FX1FVRVVFLCBwb3J0LCAxKSkgPCAwKQo+ICsJCXJldHVybiAtMTsgLyogbm8gZnJlZSBi dWZmZXJzICovCj4gKwlkZXNjID0gJnBvcnQtPmlvLT50eF9kZXNjX3RhYltuXTsKPiArCWRlc2Mt PmRhdGEgPSBwb3J0LT5pby0+dHhfYnVmZl90YWJbbl07Cj4gKwlkZXNjLT5idWZfbGVuID0gZGVz Yy0+cGt0X2xlbiA9IGxlbjsKPiArCW1lbWNweShkZXNjLT5kYXRhLCBkYXRhLCBsZW4pOwo+ICsK PiArCS8qIE5QRSBmaXJtd2FyZSBwYWRzIHNob3J0IGZyYW1lcyB3aXRoIHplcm9zIGludGVybmFs bHkgKi8KPiArCS8vIHdtYigpOwo+ICsJYmFycmllcigpOwo+ICsJcXVldWVfcHV0X2Rlc2MoVFhf UVVFVUUocG9ydCksIGRlc2MpOwo+ICsKPiArI2lmIERFQlVHX1RYCj4gKwlmcHJpbnRmKHN0ZGVy ciwgIiVzJWQ6IGV0aF94bWl0IGVuZFxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOwo+ ICsjZW5kaWYKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByZXF1ZXN0X3F1 ZXVlcyhzdHJ1Y3QgcG9ydCAqcG9ydCwgc3RydWN0IGV0aF9kZXZpY2UgKmRldikKPiArewo+ICsJ cW1ncl9yZXF1ZXN0X3F1ZXVlKFJYRlJFRV9RVUVVRShwb3J0KSwgUlhfREVTQ1MsIDAsIDAsICIl czpSWC1mcmVlIiwgZGV2LT5kZXYubmFtZSk7Cj4gKwlxbWdyX3JlcXVlc3RfcXVldWUoUlhfUVVF VUUocG9ydCksIFJYX0RFU0NTLCAwLCAwLCAiJXM6UlgiLCBkZXYtPmRldi5uYW1lKTsKPiArCXFt Z3JfcmVxdWVzdF9xdWV1ZShUWF9RVUVVRShwb3J0KSwgVFhfREVTQ1MsIDAsIDAsICIlczpUWCIs IGRldi0+ZGV2Lm5hbWUpOwo+ICsKPiArCS8qIENvbW1vbiBUWC1kb25lIHF1ZXVlIGhhbmRsZXMg YnVmZmVycyBzZW50IG91dCBieSB0aGUgTlBFcyAqLwo+ICsJcW1ncl9yZXF1ZXN0X3F1ZXVlKFRY RE9ORV9RVUVVRSwgVFhET05FX1FVRVVFX0xFTiwgMCwgMCwKPiArCQkJICAgIiVzOlRYLWRvbmUi LCBkZXYtPmRldi5uYW1lKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcmVsZWFzZV9xdWV1ZXMo c3RydWN0IHBvcnQgKnBvcnQpCj4gK3sKPiArCXFtZ3JfcmVsZWFzZV9xdWV1ZShSWEZSRUVfUVVF VUUocG9ydCkpOwo+ICsJcW1ncl9yZWxlYXNlX3F1ZXVlKFJYX1FVRVVFKHBvcnQpKTsKPiArCXFt Z3JfcmVsZWFzZV9xdWV1ZShUWF9RVUVVRShwb3J0KSk7Cj4gKwlxbWdyX3JlbGVhc2VfcXVldWUo VFhET05FX1FVRVVFKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW5pdF9xdWV1ZXMoc3RydWN0 IHBvcnQgKnBvcnQpCj4gK3sKPiArCWludCBpOwo+ICsKPiArCW1lbXNldChwb3J0LT5pby0+dHhf ZGVzY190YWIsIDAsIHNpemVvZihwb3J0LT5pby0+dHhfZGVzY190YWIpKTsgLyogZGVzY3MgKi8K PiArCW1lbXNldChwb3J0LT5pby0+cnhfZGVzY190YWIsIDAsIHNpemVvZihwb3J0LT5pby0+cnhf ZGVzY190YWIpKTsKPiArCj4gKwkvKiBTZXR1cCBSWCBidWZmZXJzICovCj4gKwlmb3IgKGkgPSAw OyBpIDwgUlhfREVTQ1M7IGkrKykgewo+ICsJCXN0cnVjdCBkZXNjICpkZXNjID0gJnBvcnQtPmlv LT5yeF9kZXNjX3RhYltpXTsKPiArCQlkZXNjLT5idWZfbGVuID0gTUFYX01SVTsKPiArCQlkZXNj LT5kYXRhID0gcG9ydC0+aW8tPnJ4X2J1ZmZfdGFiW2ldOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IGl4cDR4eF9ldGhfb3BlbihzdHJ1Y3QgZXRoX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlz dHJ1Y3QgcG9ydCAqcG9ydCA9IGRldi0+cHJpdjsKPiArCXN0cnVjdCBucGUgKm5wZSA9IHBvcnQt Pm5wZTsKPiArCXN0cnVjdCBtc2cgbXNnOwo+ICsJaW50IGksIGVycjsKPiArCj4gKyNpZiBERUJV R19PUEVOCj4gKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IG9wZW5pbmcgJXBcbiIsIGRldi0+ZGV2 Lm5hbWUsIGRldi0+ZGV2LmlkLCBkZXYpOwo+ICsjZW5kaWYKPiArCj4gKwlpZiAoIW5wZV9ydW5u aW5nKG5wZSkpIHsKPiArCQllcnIgPSBucGVfbG9hZF9maXJtd2FyZShucGUpOwo+ICsJCWlmIChl cnIpCj4gKwkJCXJldHVybiBlcnI7Cj4gKwo+ICsJCWlmIChucGVfcmVjdl9tZXNzYWdlKG5wZSwg Jm1zZywgIkVUSF9HRVRfU1RBVFVTIikpIHsKPiArCQkJZnByaW50ZihzdGRlcnIsICIlcyVkOiAl cyBub3QgcmVzcG9uZGluZ1xuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQsIG5wZS0+bmFt ZSk7Cj4gKwkJCXJldHVybiAtRUlPOwo+ICsJCX0KPiArCQltZW1jcHkocG9ydC0+ZmlybXdhcmUs IG1zZy5wYXJhbXMgKyAyLCA0KTsKPiArCX0KPiArCj4gKwllcnIgPSBwaHlfZGV2aWNlX2Nvbm5l Y3QoZGV2LCAmcG9ydC0+bWlpX2J1cywgcG9ydC0+cGluZm8tPnBoeSwKPiArCQkJCSBpeHA0eHhf YWRqdXN0X2xpbmssIDAsIFBIWV9JTlRFUkZBQ0VfTU9ERV9NSUkpOwo+ICsJaWYgKGVycikKPiAr CQlyZXR1cm4gZXJyOwo+ICsKPiArCXBvcnQtPmlvID0gZG1hX2FsbG9jX2NvaGVyZW50KHNpemVv ZigqcG9ydC0+aW8pKTsKPiArCj4gKwltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwo+ICsJ bXNnLmNtZCA9IE5QRV9WTEFOX1NFVFJYUU9TRU5UUlk7Cj4gKwltc2cuZXRoX2lkID0gTE9HSUNB TF9JRChwb3J0KTsKPiArCW1zZy5wYXJhbXNbM10gPSBSWF9RVUVVRShwb3J0KSB8IDB4ODA7Cj4g Kwltc2cucGFyYW1zWzRdID0gUlhfUVVFVUUocG9ydCkgPj4gNDsgLyogTVNCIG9mIG9mZnNldCAq Lwo+ICsJbXNnLnBhcmFtc1s1XSA9IFJYX1FVRVVFKHBvcnQpIDw8IDQ7IC8qIExTQiBvZiBvZmZz ZXQgKi8KPiArCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKPiArCQltc2cucGFyYW1zWzFdID0g aTsKPiArCQlpZiAobnBlX3NlbmRfcmVjdl9tZXNzYWdlKHBvcnQtPm5wZSwgJm1zZywgIkVUSF9T RVRfUlhRIikpIHsKPiArCQkJZXJyID0gLUVJTzsKPiArCQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsJ fQo+ICsKPiArCW1zZy5jbWQgPSBOUEVfRURCX1NFVFBPUlRBRERSRVNTOwo+ICsJbXNnLmV0aF9p ZCA9IFBIWVNJQ0FMX0lEKHBvcnQpOwo+ICsJbWVtY3B5KG1zZy5wYXJhbXMsIHBvcnQtPnBpbmZv LT5od2FkZHIsIEVUSF9BTEVOKTsKPiArCWlmIChucGVfc2VuZF9yZWN2X21lc3NhZ2UocG9ydC0+ bnBlLCAmbXNnLCAiRVRIX1NFVF9NQUMiKSkgewo+ICsJCWVyciA9IC1FSU87Cj4gKwkJZ290byBv dXQ7Cj4gKwl9Cj4gKwo+ICsJbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKPiArCW1zZy5j bWQgPSBOUEVfRldfU0VURklSRVdBTExNT0RFOwo+ICsJbXNnLmV0aF9pZCA9IExPR0lDQUxfSUQo cG9ydCk7Cj4gKwlpZiAobnBlX3NlbmRfcmVjdl9tZXNzYWdlKHBvcnQtPm5wZSwgJm1zZywgIkVU SF9TRVRfRklSRVdBTExfTU9ERSIpKSB7Cj4gKwkJZXJyID0gLUVJTzsKPiArCQlnb3RvIG91dDsK PiArCX0KPiArCj4gKwlyZXF1ZXN0X3F1ZXVlcyhwb3J0LCBkZXYpOwo+ICsJaW5pdF9xdWV1ZXMo cG9ydCk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IEVUSF9BTEVOOyBpKyspCj4gKwkJX19yYXdf d3JpdGVsKHBvcnQtPnBpbmZvLT5od2FkZHJbaV0sICZwb3J0LT5yZWdzLT5od19hZGRyW2ldKTsK PiArCV9fcmF3X3dyaXRlbCgweDA4LCAmcG9ydC0+cmVncy0+cmFuZG9tX3NlZWQpOwo+ICsJX19y YXdfd3JpdGVsKDB4MTIsICZwb3J0LT5yZWdzLT5wYXJ0aWFsX2VtcHR5X3RocmVzaG9sZCk7Cj4g KwlfX3Jhd193cml0ZWwoMHgzMCwgJnBvcnQtPnJlZ3MtPnBhcnRpYWxfZnVsbF90aHJlc2hvbGQp Owo+ICsJX19yYXdfd3JpdGVsKDB4MDgsICZwb3J0LT5yZWdzLT50eF9zdGFydF9ieXRlcyk7Cj4g KwlfX3Jhd193cml0ZWwoMHgxNSwgJnBvcnQtPnJlZ3MtPnR4X2RlZmVycmFsKTsKPiArCV9fcmF3 X3dyaXRlbCgweDA4LCAmcG9ydC0+cmVncy0+dHhfMnBhcnRfZGVmZXJyYWxbMF0pOwo+ICsJX19y YXdfd3JpdGVsKDB4MDcsICZwb3J0LT5yZWdzLT50eF8ycGFydF9kZWZlcnJhbFsxXSk7Cj4gKwlf X3Jhd193cml0ZWwoMHg4MCwgJnBvcnQtPnJlZ3MtPnNsb3RfdGltZSk7Cj4gKwlfX3Jhd193cml0 ZWwoMHgwMSwgJnBvcnQtPnJlZ3MtPmludF9jbG9ja190aHJlc2hvbGQpOwo+ICsKPiArCS8qIFBv cHVsYXRlIHF1ZXVlcyB3aXRoIGJ1ZmZlcnMsIG5vIGZhaWx1cmUgYWZ0ZXIgdGhpcyBwb2ludCAq Lwo+ICsJZm9yIChpID0gMDsgaSA8IFRYX0RFU0NTOyBpKyspCj4gKwkJcXVldWVfcHV0X2Rlc2Mo VFhET05FX1FVRVVFLCAmcG9ydC0+aW8tPnR4X2Rlc2NfdGFiW2ldKTsKPiArCj4gKwlmb3IgKGkg PSAwOyBpIDwgUlhfREVTQ1M7IGkrKykKPiArCQlxdWV1ZV9wdXRfZGVzYyhSWEZSRUVfUVVFVUUo cG9ydCksICZwb3J0LT5pby0+cnhfZGVzY190YWJbaV0pOwo+ICsKPiArCV9fcmF3X3dyaXRlbChU WF9DTlRSTDFfUkVUUklFUywgJnBvcnQtPnJlZ3MtPnR4X2NvbnRyb2xbMV0pOwo+ICsJX19yYXdf d3JpdGVsKERFRkFVTFRfVFhfQ05UUkwwLCAmcG9ydC0+cmVncy0+dHhfY29udHJvbFswXSk7Cj4g KwlfX3Jhd193cml0ZWwoMCwgJnBvcnQtPnJlZ3MtPnJ4X2NvbnRyb2xbMV0pOwo+ICsJX19yYXdf d3JpdGVsKERFRkFVTFRfUlhfQ05UUkwwLCAmcG9ydC0+cmVncy0+cnhfY29udHJvbFswXSk7Cj4g Kwo+ICsjaWYgMAo+ICsJcW1ncl9zZXRfaXJxKFJYX1FVRVVFKHBvcnQpLCBRVUVVRV9JUlFfU1JD X05PVF9FTVBUWSwKPiArCQkgICAgIGV0aF9yeF9pcnEsIGRldik7Cj4gKwlxbWdyX3NldF9pcnEo VFhET05FX1FVRVVFLCBRVUVVRV9JUlFfU1JDX05PVF9FTVBUWSwKPiArCQkgICAgIGV0aF90eGRv bmVfaXJxLCBOVUxMKTsKPiArCXFtZ3JfZW5hYmxlX2lycShUWERPTkVfUVVFVUUpOwo+ICsjZW5k aWYKPz8KPiArCW1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7Cj4gKyNpZiBERUJVR19PUEVO Cj4gKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQgb3BlbmVkXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYt PmRldi5pZCk7Cj4gKyNlbmRpZgo+ICsJcmV0dXJuIDA7Cj4gK291dDoKPiArCWRtYV9mcmVlX2Nv aGVyZW50KHBvcnQtPmlvLCBzaXplb2YoKnBvcnQtPmlvKSk7Cj4gKwlwb3J0LT5pbyA9IE5VTEw7 Cj4gKyNpZiBERUJVR19PUEVOCj4gKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQgb3BlbiBmYWlsZWQg KCVpKVxuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQsIGVycik7Cj4gKyNlbmRpZgo+ICsJ cmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaXhwNHh4X2V0aF9jbG9zZShzdHJ1 Y3QgZXRoX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgcG9ydCAqcG9ydCA9IGRldi0+cHJp djsKPiArCXN0cnVjdCBtc2cgbXNnOwo+ICsJaW50IGJ1ZmZzID0gUlhfREVTQ1M7IC8qIGFsbG9j YXRlZCBSWCBidWZmZXJzICovCj4gKwlpbnQgaTsKPiArCj4gKyNpZiBERUJVR19DTE9TRQo+ICsJ ZnByaW50ZihzdGRlcnIsICIlcyVkOiBjbG9zaW5nXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRl di5pZCk7Cj4gKyNlbmRpZgo+ICsjaWYgMAo+ICsJcW1ncl9kaXNhYmxlX2lycShSWF9RVUVVRShw b3J0KSk7Cj4gKyNlbmRpZgo+ICsKPiArCWlmICghcG9ydC0+aW8pCj4gKwkJcmV0dXJuOyAvKiBh bHJlYWR5IGNsb3NlZCAqLwo+ICsKPiArCXdoaWxlIChxdWV1ZV9nZXRfZGVzYyhSWEZSRUVfUVVF VUUocG9ydCksIHBvcnQsIDApID49IDApCj4gKwkJYnVmZnMtLTsKPiArCj4gKwltZW1zZXQoJm1z ZywgMCwgc2l6ZW9mKG1zZykpOwo+ICsJbXNnLmNtZCA9IE5QRV9TRVRMT09QQkFDS19NT0RFOwo+ ICsJbXNnLmV0aF9pZCA9IExPR0lDQUxfSUQocG9ydCk7Cj4gKwltc2cucGFyYW1zWzFdID0gMTsK PiArCWlmIChucGVfc2VuZF9yZWN2X21lc3NhZ2UocG9ydC0+bnBlLCAmbXNnLCAiRVRIX0VOQUJM RV9MT09QQkFDSyIpKQo+ICsJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogdW5hYmxlIHRvIGVuYWJs ZSBsb29wYmFja1xuIiwgZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQpOwo+ICsKPiArI2lmIERF QlVHX0NMT1NFCj4gKwlmcHJpbnRmKHN0ZGVyciwgIiVzJWQ6IGRyYWluaW5nIFJYIHF1ZXVlXG4i LCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7Cj4gKyNlbmRpZgo+ICsJaSA9IDA7Cj4gKwlk byB7IC8qIGRyYWluIFJYIGJ1ZmZlcnMgKi8KPiArCQl3aGlsZSAocXVldWVfZ2V0X2Rlc2MoUlhf UVVFVUUocG9ydCksIHBvcnQsIDApID49IDApCj4gKwkJCWJ1ZmZzLS07Cj4gKwkJaWYgKCFidWZm cykKPiArCQkJYnJlYWs7Cj4gKwkJaWYgKHFtZ3Jfc3RhdF9mdWxsKFRYRE9ORV9RVUVVRSkgJiYg IShpICUgMTApKSB7Cj4gKwkJCS8qIHdlIGhhdmUgdG8gaW5qZWN0IHNvbWUgcGFja2V0ICovCj4g KwkJCXN0cnVjdCBkZXNjICpkZXNjOwo+ICsJCQlpbnQgbiA9IHF1ZXVlX2dldF9kZXNjKFRYRE9O RV9RVUVVRSwgcG9ydCwgMSk7Cj4gKwkJCUJVR19PTihuIDwgMCk7Cj4gKwkJCWRlc2MgPSAmcG9y dC0+aW8tPnR4X2Rlc2NfdGFiW25dOwo+ICsJCQlkZXNjLT5idWZfbGVuID0gZGVzYy0+cGt0X2xl biA9IDE7Cj4gKwkJCS8vd21iKCk7Cj4gKwkJCWJhcnJpZXIoKTsKPiArCQkJcXVldWVfcHV0X2Rl c2MoVFhfUVVFVUUocG9ydCksIGRlc2MpOwo+ICsJCX0KPiArCQl1ZGVsYXkoMSk7Cj4gKwl9IHdo aWxlICgrK2kgPCBNQVhfQ0xPU0VfV0FJVCk7Cj4gKwo+ICsJaWYgKGJ1ZmZzKQo+ICsJCWZwcmlu dGYoc3RkZXJyLCAiJXMlZDogdW5hYmxlIHRvIGRyYWluIFJYIHF1ZXVlLCAlaSBidWZmZXIocykg bGVmdCBpbiBOUEVcbiIsCj4gKwkJCWRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkLCBidWZmcyk7 Cj4gKyNpZiBERUJVR19DTE9TRQo+ICsJaWYgKCFidWZmcykKPiArCQlmcHJpbnRmKHN0ZGVyciwg IiVzJWQ6IGRyYWluaW5nIFJYIHF1ZXVlIHRvb2sgJWkgY3ljbGVzXG4iLCBkZXYtPmRldi5uYW1l LCBkZXYtPmRldi5pZCwgaSk7Cj4gKyNlbmRpZgo+ICsKPiArCWJ1ZmZzID0gVFhfREVTQ1M7Cj4g Kwl3aGlsZSAocXVldWVfZ2V0X2Rlc2MoVFhfUVVFVUUocG9ydCksIHBvcnQsIDEpID49IDApCj4g KwkJYnVmZnMtLTsgLyogY2FuY2VsIFRYICovCj4gKwo+ICsJaSA9IDA7Cj4gKwlkbyB7Cj4gKwkJ d2hpbGUgKHF1ZXVlX2dldF9kZXNjKFRYRE9ORV9RVUVVRSwgcG9ydCwgMSkgPj0gMCkKPiArCQkJ YnVmZnMtLTsKPiArCQlpZiAoIWJ1ZmZzKQo+ICsJCQlicmVhazsKPiArCX0gd2hpbGUgKCsraSA8 IE1BWF9DTE9TRV9XQUlUKTsKPiArCj4gKwlpZiAoYnVmZnMpCj4gKwkJZnByaW50ZihzdGRlcnIs ICIlcyVkOiB1bmFibGUgdG8gZHJhaW4gVFggcXVldWUsICVpIGJ1ZmZlcihzKSBsZWZ0IGluIE5Q RVxuIiwKPiArCQkJZGV2LT5kZXYubmFtZSwgZGV2LT5kZXYuaWQsIGJ1ZmZzKTsKPiArI2lmIERF QlVHX0NMT1NFCj4gKwlpZiAoIWJ1ZmZzKQo+ICsJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogZHJh aW5pbmcgVFggcXVldWVzIHRvb2sgJWkgY3ljbGVzXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRl di5pZCwgaSk7Cj4gKyNlbmRpZgo+ICsKPiArCW1zZy5wYXJhbXNbMV0gPSAwOwo+ICsJaWYgKG5w ZV9zZW5kX3JlY3ZfbWVzc2FnZShwb3J0LT5ucGUsICZtc2csICJFVEhfRElTQUJMRV9MT09QQkFD SyIpKQo+ICsJCWZwcmludGYoc3RkZXJyLCAiJXMlZDogdW5hYmxlIHRvIGRpc2FibGUgbG9vcGJh Y2tcbiIsIGRldi0+ZGV2Lm5hbWUsIGRldi0+ZGV2LmlkKTsKPiArCj4gKyNpZiAwCj4gKwlxbWdy X2Rpc2FibGVfaXJxKFRYRE9ORV9RVUVVRSk7Cj4gKyNlbmRpZgo+ICsJcmVsZWFzZV9xdWV1ZXMo cG9ydCk7Cj4gKwlkbWFfZnJlZV9jb2hlcmVudChwb3J0LT5pbywgc2l6ZW9mKCpwb3J0LT5pbykp Owo+ICsJcG9ydC0+aW8gPSBOVUxMOwo+ICsjaWYgREVCVUdfQ0xPU0UKPiArCWZwcmludGYoc3Rk ZXJyLCAiJXMlZDogY2xvc2VkXG4iLCBkZXYtPmRldi5uYW1lLCBkZXYtPmRldi5pZCk7Cj4gKyNl bmRpZgo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGl4cDR4eF9ldGhfZ2V0X2h3YWRkcihzdHJ1Y3Qg ZXRoX2RldmljZSAqZXRoLCB1bnNpZ25lZCBjaGFyICphZGRyKQo+ICt7Cj4gKwlzdHJ1Y3QgcG9y dCAqcG9ydCA9IGV0aC0+cHJpdjsKPiArCW1lbWNweShhZGRyLCBwb3J0LT5waW5mby0+aHdhZGRy LCA2KTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGl4cDR4eF9ldGhfc2V0 X2h3YWRkcihzdHJ1Y3QgZXRoX2RldmljZSAqZXRoLCB1bnNpZ25lZCBjaGFyICphZGRyKQo+ICt7 Cj4gKwlzdHJ1Y3QgcG9ydCAqcG9ydCA9IGV0aC0+cHJpdjsKPiArCW1lbWNweShwb3J0LT5waW5m by0+aHdhZGRyLCBhZGRyLCA2KTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IGl4cDR4eF9ldGhfaW5pdChzdHJ1Y3QgZXRoX2RldmljZSAqZXRoKQo+ICt7Cj4gKwlzdHJ1Y3Qg cG9ydCAqcG9ydCA9IGV0aC0+cHJpdjsKPiArCj4gKwlfX3Jhd193cml0ZWwoREVGQVVMVF9DT1JF X0NOVFJMIHwgQ09SRV9SRVNFVCwKPiArCQkgICAgICZwb3J0LT5yZWdzLT5jb3JlX2NvbnRyb2wp Owo+ICsJdWRlbGF5KDUwKTsKPiArCV9fcmF3X3dyaXRlbChERUZBVUxUX0NPUkVfQ05UUkwsICZw b3J0LT5yZWdzLT5jb3JlX2NvbnRyb2wpOwo+ICsJdWRlbGF5KDUwKTsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGl4cDR4eF9ldGhfcHJvYmUoc3RydWN0IGRldmljZV9kICpk ZXYpCj4gK3sKPiArCXN0cnVjdCBucGUgKm5wZTsKPiArCXN0cnVjdCBwb3J0ICpwb3J0Owo+ICsJ c3RydWN0IGV0aF9wbGF0X2luZm8gKnBpbmZvID0gZGV2LT5wbGF0Zm9ybV9kYXRhOwo+ICsKPiAr CWlmICghcGluZm8pIHsKPiArCQlmcHJpbnRmKHN0ZGVyciwgIml4cDR4eF9ldGg6IG5vIHBsYXRm b3JtIGluZm9ybWF0aW9uXG4iKTsKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCX0KPiArCj4gKwlp ZiAoIShucGUgPSBucGVfcmVxdWVzdChwaW5mby0+bnBlKSkpIHsKPiArCQlmcHJpbnRmKHN0ZGVy ciwgIml4cDR4eF9ldGg6IHVuYWJsZSB0byBhY3F1aXJlIE5QRVxuIik7Cj4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gKwl9Cj4gKwo+ICsJcG9ydCA9IHhtZW1hbGlnbigweDIwLCBzaXplb2YoKnBvcnQp KTsKPiArCW1lbXNldChwb3J0LCAwLCBzaXplb2YoKnBvcnQpKTsKPiArCj4gKwlwb3J0LT5yZWdz ID0gcGluZm8tPnJlZ3M7Cj4gKwlwb3J0LT5ucGUgPSBucGU7Cj4gKwlwb3J0LT5waW5mbyA9IHBp bmZvOwo+ICsJcG9ydC0+ZXRoLmRldi5pZCA9IC0xOwo+ICsJcG9ydC0+ZXRoLnByaXYgPSBwb3J0 Owo+ICsJcG9ydC0+ZXRoLmluaXQgPSBpeHA0eHhfZXRoX2luaXQ7Cj4gKwlwb3J0LT5ldGgub3Bl biA9IGl4cDR4eF9ldGhfb3BlbjsKPiArCXBvcnQtPmV0aC5oYWx0ID0gaXhwNHh4X2V0aF9jbG9z ZTsKPiArCXBvcnQtPmV0aC5zZW5kID0gaXhwNHh4X2V0aF94bWl0Owo+ICsJcG9ydC0+ZXRoLnJl Y3YgPSBpeHA0eHhfZXRoX3BvbGw7Cj4gKwlwb3J0LT5ldGguZ2V0X2V0aGFkZHIgPSBpeHA0eHhf ZXRoX2dldF9od2FkZHI7Cj4gKwlwb3J0LT5ldGguc2V0X2V0aGFkZHIgPSBpeHA0eHhfZXRoX3Nl dF9od2FkZHI7Cj4gKwo+ICsJcG9ydC0+bWlpX2J1cy5kZXYuaWQgPSAtMTsKPiArCXBvcnQtPm1p aV9idXMucmVhZCA9IGl4cDR4eF9tZGlvX3JlYWQ7Cj4gKwlwb3J0LT5taWlfYnVzLndyaXRlID0g aXhwNHh4X21kaW9fd3JpdGU7Cj4gKwltZGlvYnVzX3JlZ2lzdGVyKCZwb3J0LT5taWlfYnVzKTsK PiArCWV0aF9yZWdpc3RlcigmcG9ydC0+ZXRoKTsKPiArCWRldi0+cHJpdiA9IHBvcnQ7Cj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaXhwNHh4X2V0aF9yZW1vdmUoc3RydWN0 IGRldmljZV9kICpkZXYpCj4gK3sKPiArCXN0cnVjdCBwb3J0ICpwb3J0ID0gZGV2LT5wcml2Owo+ ICsJaXhwNHh4X2V0aF9jbG9zZSgmcG9ydC0+ZXRoKTsKPiArCWV0aF91bnJlZ2lzdGVyKCZwb3J0 LT5ldGgpOwo+ICsJbWRpb2J1c191bnJlZ2lzdGVyKCZwb3J0LT5taWlfYnVzKTsKPiArCWZyZWUo cG9ydCk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJpdmVyX2QgaXhwNHh4X2V0aF9kcml2 ZXIgPSB7Cj4gKwkubmFtZSAgPSAiaXhwNHh4X2V0aCIsCj4gKwkucHJvYmUgPSBpeHA0eHhfZXRo X3Byb2JlLAo+ICsJLnJlbW92ZSA9IGl4cDR4eF9ldGhfcmVtb3ZlLAo+ICt9Owo+ICsKPiArc3Rh dGljIGludCBfX2luaXQgaXhwNHh4X2V0aF9tb2R1bGVfaW5pdCh2b2lkKQo+ICt7Cj4gKwlpZiAo Y3B1X2lzX2l4cDQzeCgpKSB7Cj4gKwkJLyogSVhQNDN4IGxhY2tzIE5QRS1CIGFuZCB1c2VzIE5Q RS1DIGZvciBNSUkgUEhZIGFjY2VzcyAqLwo+ICsJCWlmICghKGl4cDR4eF9yZWFkX2ZlYXR1cmVf Yml0cygpICYgSVhQNFhYX0ZFQVRVUkVfTlBFQ19FVEgpKQo+ICsJCQlyZXR1cm4gLUVOT1NZUzsK PiArCQltZGlvX3JlZ3MgPSAoc3RydWN0IGV0aF9yZWdzICopSVhQNFhYX0V0aENfQkFTRTsKPiAr CX0gZWxzZSB7Cj4gKwkJLyogQWxsIE1JSSBQSFkgYWNjZXNzZXMgdXNlIE5QRS1CIEV0aGVybmV0 IHJlZ2lzdGVycyAqLwo+ICsJCWlmICghKGl4cDR4eF9yZWFkX2ZlYXR1cmVfYml0cygpICYgSVhQ NFhYX0ZFQVRVUkVfTlBFQl9FVEgwKSkKPiArCQkJcmV0dXJuIC1FTk9TWVM7Cj4gKwkJbWRpb19y ZWdzID0gKHN0cnVjdCBldGhfcmVncyAqKUlYUDRYWF9FdGhCX0JBU0U7Cj4gKwl9Cj4gKwo+ICsJ X19yYXdfd3JpdGVsKERFRkFVTFRfQ09SRV9DTlRSTCwgJm1kaW9fcmVncy0+Y29yZV9jb250cm9s KTsKdGhpcyBpcyBubyB0aGUgcGxhY2Ugb2YgdGhlIGNwdSByZXN0cml0aW9uCndoZW4gSSBwb3N0 IHRoZSBpeHA0eHggSSBjbGVuYW51cCB0aGlzCj4gKwo+ICsJcGxhdGZvcm1fZHJpdmVyX3JlZ2lz dGVyKCZpeHA0eHhfZXRoX2RyaXZlcik7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArZGV2aWNl X2luaXRjYWxsKGl4cDR4eF9ldGhfbW9kdWxlX2luaXQpOwo+IAo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gYmFyZWJveCBtYWlsaW5nIGxpc3QKPiBi YXJlYm94QGxpc3RzLmluZnJhZGVhZC5vcmcKPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2JhcmVib3gKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmJhcmVib3ggbWFpbGluZyBsaXN0CmJhcmVib3hAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JhcmVi b3gK