From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH i-g-t] Add a link training test Date: Tue, 8 Sep 2015 16:11:46 +0300 Message-ID: <20150908131146.GF29811@intel.com> References: <1441715280-11623-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1441715280-11623-10-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 752B16E907 for ; Tue, 8 Sep 2015 06:11:52 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1441715280-11623-10-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira Cc: jani.nikula@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBTZXAgMDgsIDIwMTUgYXQgMDM6Mjg6MDBQTSArMDMwMCwgQW5kZXIgQ29uc2VsdmFu IGRlIE9saXZlaXJhIHdyb3RlOgo+IFRoaXMgYWRkcyBhIHRlc3QgdGhhdCBjb21waWxlcyB0aGUg bGluayB0cmFpbmluZyBjb2RlIGZyb20gaTkxNSBpbnRvIGEKPiBzZXBhcmF0ZSBleGVjdXRhYmxl IGFuZCB1c2VzIGl0IHRvIHRyYWluIGEgZmFrZSBzaW5rIGRldmljZS4gVGhlIHRlc3QKPiBhbHNv IHVzZXMgZGV2aWNlIGluZm9ybWF0aW9uIGZyb20gaTkxNSB0byBleGVyY2lzZSB0aGUgZGlmZmVy ZW50IGNvZGUKPiBwYXRocyBmb3IgZGlmZmVyZW50IGhhcmR3ZGFyZSBnZW5lcmF0aW9ucy4KPiAK PiBJbiBvcmRlciB0byBnZXQgdGhlIGNvZGUgdG8gY29tcGlsZSBhIGxvdCBvZiBzdHViYmluZyB3 YXMgbmVjZXNzYXJ5LiBJdAo+IHdhcyBhbHNvIGVhc2llciB0byBjb3B5IGEgZmV3IGZ1bmN0aW9u cyBmcm9tIHRoZSBkcm1fZHBfaGVscGVycyBpbnN0ZWFkCj4gb2YgZ2V0dGluZyB0aGUgd2hvbGUg dGhpbmcgdG8gY29tcGlsZSBhcyBwYXJ0IG9mIHRoZSB0ZXN0LgoKSG1tLiBTbyB0aGUgb25seSBk ZXZpY2Ugc3BlZmljIGluZm9ybWF0aW9uIHlvdSByZWFsbHkgbmVlZCBpczoKLSBzdXBwb3J0ZWQg bGluayByYXRlcwotIG1heCB2c3dpbmcvcHJlLWVtcGggc2V0dGluZ3MKLSBEREkgdnMuIG5vdAoK Q29va2luZyB1cCBhIGZldyBjb25maWd1cmF0aW9ucyB3aXRoIHZhcnlpbmcgb3B0aW9ucyB3b3Vs ZCBzZWVtIGZhaXJseQplYXN5IHdpdGhvdXQgaGF2aW5nIHRvIHB1bGwgaW4gdGhlIHdob2xlIGRl dmljZSBpbmZvLCBhbmQgdGhlIGh3CnNwZWNpZmljIG1heCB2c3dpbmcvcHJlLWVtcGhhc2lzIHN0 dWZmLgoKPiAtLS0KPiAgbGluay10cmFpbmluZy10ZXN0L01ha2VmaWxlICAgICAgICAgICAgIHwg IDQwICsrKwo+ICBsaW5rLXRyYWluaW5nLXRlc3QvZHJtX2RwX2hlbHBlci5jICAgICAgfCAxMTUg KysrKysrKysrCj4gIGxpbmstdHJhaW5pbmctdGVzdC9pbnRlbF9kcnYuaCAgICAgICAgICB8IDE0 OCArKysrKysrKysrKysKPiAgbGluay10cmFpbmluZy10ZXN0L2xpbmtfdHJhaW5pbmdfdGVzdC5j IHwgNDE0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDQgZmlsZXMgY2hhbmdl ZCwgNzE3IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpbmstdHJhaW5pbmct dGVzdC9NYWtlZmlsZQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGluay10cmFpbmluZy10ZXN0L2Ry bV9kcF9oZWxwZXIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGluay10cmFpbmluZy10ZXN0L2lu dGVsX2Rydi5oCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaW5rLXRyYWluaW5nLXRlc3QvbGlua190 cmFpbmluZ190ZXN0LmMKPiAKPiBkaWZmIC0tZ2l0IGEvbGluay10cmFpbmluZy10ZXN0L01ha2Vm aWxlIGIvbGluay10cmFpbmluZy10ZXN0L01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwLi4wN2E5OTE0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpbmstdHJh aW5pbmctdGVzdC9NYWtlZmlsZQo+IEBAIC0wLDAgKzEsNDAgQEAKPiArS0VSTkVMX1NSQ19ESVI9 L2hvbWUvYWNvbnNlbHYvbGludXgKPiArCj4gKyMgRmlsZXMgY29waWVkIGZyb20gaTkxNSBzb3Vy Y2UgdHJlZQo+ICtDT1BJRURfU09VUkNFUyA9IFwKPiArCWludGVsX2RwX2xpbmtfdHJhaW5pbmcu YyBcCj4gKwlpbnRlbF9kZXZfaW5mby5jIFwKPiArCWludGVsX2Rldl9pbmZvLmggXAo+ICsJaTkx NV9yZWcuaAo+ICsKPiArSU5URUxfRFBfTElOS19UUkFJTklOR19DID0gJChLRVJORUxfU1JDX0RJ UikvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gKwo+ICtJ TkNMVURFRElSID0gXAo+ICsJLUkkKEtFUk5FTF9TUkNfRElSKS9pbmNsdWRlL2RybSBcCj4gKwkt SSQoS0VSTkVMX1NSQ19ESVIpLyBcCj4gKwktSS4KPiArCj4gK0RFRklORVMgPSBcCj4gKwktRF9f S0VSTkVMX18KPiArCj4gK0hFQURFUl9GSUxFUyA9IFwKPiArCWludGVsX2Rydi5oCj4gKwo+ICtT T1VSQ0VfRklMRVMgPSBcCj4gKwlpbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgXAo+ICsJbGlua190 cmFpbmluZ190ZXN0LmMgXAo+ICsJZHJtX2RwX2hlbHBlci5jCj4gKwo+ICthbGw6IGxpbmtfdHJh aW5pbmdfdGVzdAo+ICsKPiArI2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYzogJChJTlRFTF9EUF9M SU5LX1RSQUlOSU5HX0MpCj4gKyMJY3AgJChJTlRFTF9EUF9MSU5LX1RSQUlOSU5HX0MpIC4KPiAr Cj4gKyQoQ09QSUVEX1NPVVJDRVMpOiAlOiAkKEtFUk5FTF9TUkNfRElSKS9kcml2ZXJzL2dwdS9k cm0vaTkxNS8lCj4gKwljcCAkPCAkQAo+ICsKPiArbGlua190cmFpbmluZ190ZXN0OiAkKENPUElF RF9TT1VSQ0VTKSAkKFNPVVJDRV9GSUxFUykgJChIRUFERVJfRklMRVMpCj4gKwlnY2MgLWczIC1P MCAtc3RkPWdudTk5IC1vIGxpbmtfdHJhaW5pbmdfdGVzdCAkKFNPVVJDRV9GSUxFUykgJChJTkNM VURFRElSKSAkKERFRklORVMpCj4gKwo+ICtjbGVhbjoKPiArCXJtIGxpbmtfdHJhaW5pbmdfdGVz dCAkKENPUElFRF9TT1VSQ0VTKQo+IGRpZmYgLS1naXQgYS9saW5rLXRyYWluaW5nLXRlc3QvZHJt X2RwX2hlbHBlci5jIGIvbGluay10cmFpbmluZy10ZXN0L2RybV9kcF9oZWxwZXIuYwo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYThkYjdmOQo+IC0tLSAvZGV2L251bGwK PiArKysgYi9saW5rLXRyYWluaW5nLXRlc3QvZHJtX2RwX2hlbHBlci5jCj4gQEAgLTAsMCArMSwx MTUgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMDkgS2VpdGggUGFja2FyZAo+ICsgKgo+ ICsgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQgc2Vs bCB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKPiArICogZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBv c2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKPiArICogdGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90 aCB0aGF0IGNvcHlyaWdodAo+ICsgKiBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug YXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kCj4gKyAqIHRoYXQgdGhlIG5h bWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXJzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9y Cj4gKyAqIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdh cmUgd2l0aG91dCBzcGVjaWZpYywKPiArICogd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgVGhl IGNvcHlyaWdodCBob2xkZXJzIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zCj4gKyAqIGFib3V0IHRo ZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHBy b3ZpZGVkICJhcwo+ICsgKiBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHku Cj4gKyAqCj4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSUyBESVNDTEFJTSBBTEwgV0FSUkFOVElF UyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAo+ICsgKiBJTkNMVURJTkcgQUxMIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MsIElOIE5PCj4gKyAq IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBTUEVD SUFMLCBJTkRJUkVDVCBPUgo+ICsgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFH RVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwKPiArICogREFUQSBPUiBQ Uk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBP VEhFUgo+ICsgKiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFCj4gKyAqIE9GIFRISVMgU09GVFdBUkUuCj4g KyAqLwo+ICsKPiArI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICsKPiArLyogVE9ETzogR2V0IHJp ZCBvZiB0aGlzIGNvcHkgb2YgZHJtX2RwX2hlbHBlciBmdW5jdGlvbnMuICovCj4gKwo+ICtzdGF0 aWMgdTggZHBfbGlua19zdGF0dXMoY29uc3QgdTggbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNf U0laRV0sIGludCByKQo+ICt7Cj4gKyAgICAgICAgcmV0dXJuIGxpbmtfc3RhdHVzW3IgLSBEUF9M QU5FMF8xX1NUQVRVU107Cj4gK30KPiArCj4gK3N0YXRpYyB1OCBkcF9nZXRfbGFuZV9zdGF0dXMo Y29uc3QgdTggbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0sCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGxhbmUpCj4gK3sKPiArICAgICAgICBpbnQgaSA9IERQX0xB TkUwXzFfU1RBVFVTICsgKGxhbmUgPj4gMSk7Cj4gKyAgICAgICAgaW50IHMgPSAobGFuZSAmIDEp ICogNDsKPiArICAgICAgICB1OCBsID0gZHBfbGlua19zdGF0dXMobGlua19zdGF0dXMsIGkpOwo+ ICsgICAgICAgIHJldHVybiAobCA+PiBzKSAmIDB4ZjsKPiArfQo+ICsKPiArYm9vbCBkcm1fZHBf Y2hhbm5lbF9lcV9vayhjb25zdCB1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGFuZV9jb3VudCkKPiArewo+ICsgICAg ICAgIHU4IGxhbmVfYWxpZ247Cj4gKyAgICAgICAgdTggbGFuZV9zdGF0dXM7Cj4gKyAgICAgICAg aW50IGxhbmU7Cj4gKwo+ICsgICAgICAgIGxhbmVfYWxpZ24gPSBkcF9saW5rX3N0YXR1cyhsaW5r X3N0YXR1cywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFBfTEFORV9B TElHTl9TVEFUVVNfVVBEQVRFRCk7Cj4gKyAgICAgICAgaWYgKChsYW5lX2FsaWduICYgRFBfSU5U RVJMQU5FX0FMSUdOX0RPTkUpID09IDApCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 IAo+ICsgICAgICAgIGZvciAobGFuZSA9IDA7IGxhbmUgPCBsYW5lX2NvdW50OyBsYW5lKyspIHsK PiArICAgICAgICAgICAgICAgIGxhbmVfc3RhdHVzID0gZHBfZ2V0X2xhbmVfc3RhdHVzKGxpbmtf c3RhdHVzLCBsYW5lKTsKPiArICAgICAgICAgICAgICAgIGlmICgobGFuZV9zdGF0dXMgJiBEUF9D SEFOTkVMX0VRX0JJVFMpICE9IERQX0NIQU5ORUxfRVFfQklUUykKPiArICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ICsgICAgICAgIH0KPiArICAgICAgICByZXR1cm4gdHJ1 ZTsKPiArfQo+ICsKPiArYm9vbCBkcm1fZHBfY2xvY2tfcmVjb3Zlcnlfb2soY29uc3QgdTggbGlu a19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0sCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBsYW5lX2NvdW50KQo+ICt7Cj4gKyAgICAgICAgaW50IGxhbmU7Cj4gKyAgICAg ICAgdTggbGFuZV9zdGF0dXM7Cj4gKwo+ICsgICAgICAgIGZvciAobGFuZSA9IDA7IGxhbmUgPCBs YW5lX2NvdW50OyBsYW5lKyspIHsKPiArICAgICAgICAgICAgICAgIGxhbmVfc3RhdHVzID0gZHBf Z2V0X2xhbmVfc3RhdHVzKGxpbmtfc3RhdHVzLCBsYW5lKTsKPiArICAgICAgICAgICAgICAgIGlm ICgobGFuZV9zdGF0dXMgJiBEUF9MQU5FX0NSX0RPTkUpID09IDApCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgcmV0dXJuIHRy dWU7Cj4gK30KPiArCj4gK3U4IGRybV9kcF9nZXRfYWRqdXN0X3JlcXVlc3Rfdm9sdGFnZShjb25z dCB1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBsYW5lKQo+ICt7Cj4gKyAgICAgICAgaW50IGkgPSBE UF9BREpVU1RfUkVRVUVTVF9MQU5FMF8xICsgKGxhbmUgPj4gMSk7Cj4gKyAgICAgICAgaW50IHMg PSAoKGxhbmUgJiAxKSA/Cj4gKyAgICAgICAgICAgICAgICAgRFBfQURKVVNUX1ZPTFRBR0VfU1dJ TkdfTEFORTFfU0hJRlQgOgo+ICsgICAgICAgICAgICAgICAgIERQX0FESlVTVF9WT0xUQUdFX1NX SU5HX0xBTkUwX1NISUZUKTsKPiArICAgICAgICB1OCBsID0gZHBfbGlua19zdGF0dXMobGlua19z dGF0dXMsIGkpOwo+ICsKPiArICAgICAgICByZXR1cm4gKChsID4+IHMpICYgMHgzKSA8PCBEUF9U UkFJTl9WT0xUQUdFX1NXSU5HX1NISUZUOwo+ICt9Cj4gKwo+ICt1OCBkcm1fZHBfZ2V0X2FkanVz dF9yZXF1ZXN0X3ByZV9lbXBoYXNpcyhjb25zdCB1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRV U19TSVpFXSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGxhbmUpCj4gK3sKPiArICAgICAgICBpbnQgaSA9IERQX0FESlVTVF9SRVFVRVNUX0xBTkUwXzEg KyAobGFuZSA+PiAxKTsKPiArICAgICAgICBpbnQgcyA9ICgobGFuZSAmIDEpID8KPiArICAgICAg ICAgICAgICAgICBEUF9BREpVU1RfUFJFX0VNUEhBU0lTX0xBTkUxX1NISUZUIDoKPiArICAgICAg ICAgICAgICAgICBEUF9BREpVU1RfUFJFX0VNUEhBU0lTX0xBTkUwX1NISUZUKTsKPiArICAgICAg ICB1OCBsID0gZHBfbGlua19zdGF0dXMobGlua19zdGF0dXMsIGkpOwo+ICsKPiArICAgICAgICBy ZXR1cm4gKChsID4+IHMpICYgMHgzKSA8PCBEUF9UUkFJTl9QUkVfRU1QSEFTSVNfU0hJRlQ7Cj4g K30KPiArCj4gKy8qIEZJWE1FOiAqLwo+ICtzdGF0aWMgdm9pZCB1ZGVsYXkoKSB7fQo+ICtzdGF0 aWMgdm9pZCBtZGVsYXkoKSB7fQo+ICsKPiArdm9pZCBkcm1fZHBfbGlua190cmFpbl9jbG9ja19y ZWNvdmVyeV9kZWxheShjb25zdCB1OCBkcGNkW0RQX1JFQ0VJVkVSX0NBUF9TSVpFXSkgewo+ICsg ICAgICAgIGlmIChkcGNkW0RQX1RSQUlOSU5HX0FVWF9SRF9JTlRFUlZBTF0gPT0gMCkKPiArICAg ICAgICAgICAgICAgIHVkZWxheSgxMDApOwo+ICsgICAgICAgIGVsc2UKPiArICAgICAgICAgICAg ICAgIG1kZWxheShkcGNkW0RQX1RSQUlOSU5HX0FVWF9SRF9JTlRFUlZBTF0gKiA0KTsKPiArfQo+ ICsKPiArdm9pZCBkcm1fZHBfbGlua190cmFpbl9jaGFubmVsX2VxX2RlbGF5KGNvbnN0IHU4IGRw Y2RbRFBfUkVDRUlWRVJfQ0FQX1NJWkVdKSB7Cj4gKyAgICAgICAgaWYgKGRwY2RbRFBfVFJBSU5J TkdfQVVYX1JEX0lOVEVSVkFMXSA9PSAwKQo+ICsgICAgICAgICAgICAgICAgdWRlbGF5KDQwMCk7 Cj4gKyAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgbWRlbGF5KGRwY2RbRFBfVFJBSU5J TkdfQVVYX1JEX0lOVEVSVkFMXSAqIDQpOwo+ICt9Cj4gKwo+IGRpZmYgLS1naXQgYS9saW5rLXRy YWluaW5nLXRlc3QvaW50ZWxfZHJ2LmggYi9saW5rLXRyYWluaW5nLXRlc3QvaW50ZWxfZHJ2LmgK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmY3YTZhNmMKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvbGluay10cmFpbmluZy10ZXN0L2ludGVsX2Rydi5oCj4gQEAgLTAsMCAr MSwxNDggQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDA2IERhdmUgQWlybGllIDxhaXJs aWVkQGxpbnV4LmllPgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNSBJbnRlbCBDb3Jwb3Jh dGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgRkFL RV9JTlRFTF9EUlZfSAo+ICsjZGVmaW5lIEZBS0VfSU5URUxfRFJWX0gKPiArCj4gKyNpbmNsdWRl IDxzdGRpby5oPgo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gKyNpbmNsdWRlIDxzdGRib29sLmg+ Cj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArI2luY2x1ZGUgPHRvb2xzL2luY2x1ZGUvbGludXgv Y29tcGlsZXIuaD4KPiArCj4gK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKPiArdHlwZWRlZiB1 bnNpZ25lZCBzaG9ydCB1MTY7Cj4gK3R5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKPiArdHlwZWRl ZiB1bnNpZ25lZCBsb25nIHNpemVfdDsKPiArdHlwZWRlZiBsb25nIHNzaXplX3Q7Cj4gKwo+ICtz dHJ1Y3QgZHJtX2RldmljZSB7Cj4gKwl2b2lkICpkZXZfcHJpdmF0ZTsKPiArfTsKPiArCj4gK3N0 YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKnRvX2k5MTUoY29uc3Qgc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJcmV0dXJuIGRldi0+ZGV2X3ByaXZhdGU7Cj4gK30K PiArCj4gKyNkZWZpbmUgQlVJTERfQlVHKCkKPiArCj4gKyNpbmNsdWRlICJpbnRlbF9kZXZfaW5m by5oIgo+ICsKPiArc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICsJc3RydWN0IGludGVsX2Rl dmljZV9pbmZvIGluZm87Cj4gKwlib29sIGVkcF9sb3dfdnN3aW5nOwo+ICsJZW51bSBpbnRlbF9w Y2ggcGNoX3R5cGU7Cj4gK307Cj4gKwo+ICsKPiArc3RydWN0IGkyY19hZGFwdGVyIHsKPiArfTsK PiArCj4gK3N0cnVjdCBtdXRleCB7Cj4gK307Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtX2RwX2hlbHBl ci5oPgo+ICsKPiArI2RlZmluZSBEUk1fRVJST1IgcHJpbnRmCj4gKyNkZWZpbmUgRFJNX0RFQlVH X0tNUyBwcmludGYKPiArCj4gK2VudW0gcG9ydCB7Cj4gKyAgICAgICAgUE9SVF9BID0gMCwKPiAr ICAgICAgICBQT1JUX0IsCj4gKyAgICAgICAgUE9SVF9DLAo+ICsgICAgICAgIFBPUlRfRCwKPiAr ICAgICAgICBQT1JUX0UsCj4gKyAgICAgICAgSTkxNV9NQVhfUE9SVFMKPiArfTsKPiArI2RlZmlu ZSBwb3J0X25hbWUocCkgKChwKSArICdBJykKPiArCj4gK3N0cnVjdCBkcm1fZW5jb2RlciB7Cj4g Kwl2b2lkICpkZXY7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZW5jb2RlciB7Cj4gKwlzdHJ1 Y3QgZHJtX2VuY29kZXIgYmFzZTsKPiArfTsKPiArCj4gK3N0cnVjdCBpbnRlbF9kcCB7Cj4gKwlp bnQgbGlua19yYXRlOwo+ICsJaW50IGxhbmVfY291bnQ7Cj4gKwl1aW50OF90IGxpbmtfYnc7Cj4g Kwl1aW50OF90IG51bV9zaW5rX3JhdGVzOwo+ICsJdWludDhfdCB0cmFpbl9zZXRbNF07Cj4gKwli b29sIHRyYWluX3NldF92YWxpZDsKPiArCXN0cnVjdCBkcm1fZHBfYXV4IGF1eDsKPiArCXVpbnQ4 X3QgZHBjZFtEUF9SRUNFSVZFUl9DQVBfU0laRV07Cj4gKwl1aW50MzJfdCBEUDsKPiArCWJvb2wg dXNlX3RwczM7Cj4gKwo+ICsJLyogSG9sZCB0ZXN0IHByaXZhdGUgZGF0YSAqLwo+ICsJdm9pZCAq cHJpdjsKPiArfTsKPiArCj4gK3N0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgewo+ICsJc3RydWN0 IGludGVsX2VuY29kZXIgYmFzZTsKPiArCXN0cnVjdCBpbnRlbF9kcCBkcDsKPiArCWVudW0gcG9y dCBwb3J0Owo+ICt9Owo+ICsKPiArI2RlZmluZSBvZmZzZXRvZih0eXBlLCBtZW1iZXIpICBfX2J1 aWx0aW5fb2Zmc2V0b2YgKHR5cGUsIG1lbWJlcikKPiArI2RlZmluZSBjb250YWluZXJfb2YocHRy LCB0eXBlLCBtZW1iZXIpICh7CQkJXAo+ICsJY29uc3QgdHlwZW9mKCAoKHR5cGUgKikwKS0+bWVt YmVyICkgKl9fbXB0ciA9IChwdHIpOwlcCj4gKwkodHlwZSAqKSggKGNoYXIgKilfX21wdHIgLSBv ZmZzZXRvZih0eXBlLG1lbWJlcikgKTt9KQo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICoKPiArZHBfdG9fZGlnX3BvcnQoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihpbnRlbF9kcCwgc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCwgZHApOwo+ICt9Cj4gKwo+ICt2b2lkCj4gK2ludGVsX2RwX3Byb2dyYW1f bGlua190cmFpbmluZ19wYXR0ZXJuKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBkcF90cmFpbl9wYXQpOwo+ ICt2b2lkCj4gK2ludGVsX2RwX3VwZGF0ZV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApOwo+ICt2b2lkIGludGVsX2RwX3NldF9pZGxlX2xpbmtfdHJhaW4oc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCk7Cj4gK3ZvaWQgaW50ZWxfZHBfY29tcHV0ZV9yYXRlKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIGludCBwb3J0X2Nsb2NrLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ4X3QgKmxpbmtfYncsIHVpbnQ4X3QgKnJhdGVfc2VsZWN0KTsKPiArYm9vbAo+ ICtpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdWlu dDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSk7Cj4gK3ZvaWQgaW50ZWxfZGRp X3ByZXBhcmVfbGlua19yZXRyYWluKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4gK3Zv aWQKPiAraW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KTsKPiArdm9pZAo+ICtpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCk7Cj4gK2Jvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fZGV2aWNlICpp bnRlbF9kcF90b19kZXYoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiArewo+ICsJc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRl bF9kcCk7Cj4gKwo+ICsJcmV0dXJuIGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+ICt9 Cj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9yZWcuaCIKPiArCj4gKyNlbmRpZiAvKiBGQUtFX0lOVEVM X0RSVl9IICovCj4gZGlmZiAtLWdpdCBhL2xpbmstdHJhaW5pbmctdGVzdC9saW5rX3RyYWluaW5n X3Rlc3QuYyBiL2xpbmstdHJhaW5pbmctdGVzdC9saW5rX3RyYWluaW5nX3Rlc3QuYwo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYWE3M2I5ZQo+IC0tLSAvZGV2L251bGwK PiArKysgYi9saW5rLXRyYWluaW5nLXRlc3QvbGlua190cmFpbmluZ190ZXN0LmMKPiBAQCAtMCww ICsxLDQxNCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNSBJbnRlbCBDb3Jwb3JhdGlv bgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiAg ICBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWly YUBpbnRlbC5jb20+Cj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHN0ZGxpYi5oPgo+ICsj aW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gKyNpbmNs dWRlICJpOTE1X3JlZy5oIgo+ICsKPiArc3RydWN0IHNpbmtfZGV2aWNlIHsKPiArCXNzaXplX3Qg KCpkcGNkX3dyaXRlKShzdHJ1Y3Qgc2lua19kZXZpY2UgKnNpbmssIHVuc2lnbmVkIGludCBvZmZz ZXQsCj4gKwkJCSAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOwo+ICsJYm9vbCAoKmdl dF9saW5rX3N0YXR1cykoc3RydWN0IHNpbmtfZGV2aWNlICpzaW5rLAo+ICsJCQkJdWludDhfdCBs aW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSk7Cj4gKwo+ICsJc3RydWN0IHsKPiArCQli b29sIGxhbmVfY291bnRfYW5kX2J3X3NldDsKPiArCQlib29sIHRyYWluaW5nX3BhdHRlcm5fMV9z ZXQ7Cj4gKwkJYm9vbCBzdGFydGVkX3dpdGhfbm9uX3plcm9fbGV2ZWxzOwo+ICsJCWJvb2wgY3Jf ZG9uZTsKPiArCQlib29sIGNoYW5uZWxfZXFfZG9uZTsKPiArCj4gKwkJdWludDhfdCBkcGNkWzB4 MzAwMF07Cj4gKwl9IGRhdGE7Cj4gK307Cj4gKwo+ICsvKiBGYWtlIHNpbmsgZGV2aWNlIGltcGxl bWVudGF0aW9uICovCj4gKwo+ICtzdGF0aWMgdWludDhfdAo+ICtzaW5rX2RldmljZV9sYW5lX2Nv dW50KHN0cnVjdCBzaW5rX2RldmljZSAqc2luaykKPiArewo+ICsJcmV0dXJuIHNpbmstPmRhdGEu ZHBjZFtEUF9MQU5FX0NPVU5UX1NFVF07Cj4gK30KPiArCj4gK3N0YXRpYyB1aW50OF90Cj4gK3Np bmtfZGV2aWNlX2dldF90cmFpbmluZ19wYXR0ZXJuKHN0cnVjdCBzaW5rX2RldmljZSAqc2luaykK PiArewo+ICsJcmV0dXJuIHNpbmstPmRhdGEuZHBjZFtEUF9UUkFJTklOR19QQVRURVJOX1NFVF0g JiBEUF9UUkFJTklOR19QQVRURVJOX01BU0s7Cj4gK30KPiArCj4gK3N0YXRpYyB1aW50OF90Cj4g K3NpbmtfZGV2aWNlX2dldF92b2x0YWdlX3N3aW5nKHN0cnVjdCBzaW5rX2RldmljZSAqc2luaywg aW50IGxhbmUpCj4gK3sKPiArCXJldHVybiBzaW5rLT5kYXRhLmRwY2RbRFBfVFJBSU5JTkdfTEFO RTBfU0VUICsgbGFuZV0gJgo+ICsJCURQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSzsKPiArfQo+ ICsKPiArc3RhdGljIHVpbnQ4X3QKPiArc2lua19kZXZpY2VfZ2V0X3ByZV9lbXBoYXNpc19sZXZl bChzdHJ1Y3Qgc2lua19kZXZpY2UgKnNpbmssIGludCBsYW5lKQo+ICt7Cj4gKwlyZXR1cm4gc2lu ay0+ZGF0YS5kcGNkW0RQX1RSQUlOSU5HX0xBTkUwX1NFVCArIGxhbmVdICYKPiArCQkgRFBfVFJB SU5fUFJFX0VNUEhBU0lTX01BU0s7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3NpbmtfZGV2 aWNlX2NoZWNrX2xhbmVfY291bnRfYW5kX2J3KHN0cnVjdCBzaW5rX2RldmljZSAqc2luaykKPiAr ewo+ICsJaWYgKHNpbmstPmRhdGEubGFuZV9jb3VudF9hbmRfYndfc2V0KQo+ICsJCXJldHVybjsK PiArCj4gKwlhc3NlcnQoc2luay0+ZGF0YS5kcGNkW0RQX1RSQUlOSU5HX1BBVFRFUk5fU0VUXSA9 PSAwKTsKPiArCj4gKwlpZiAoc2luay0+ZGF0YS5kcGNkW0RQX0xJTktfQldfU0VUXSAhPSAwICYm Cj4gKwkgICAgc2luay0+ZGF0YS5kcGNkW0RQX0xBTkVfQ09VTlRfU0VUXSAhPSAwKQo+ICsJCXNp bmstPmRhdGEubGFuZV9jb3VudF9hbmRfYndfc2V0ID0gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQKPiArc2lua19kZXZpY2VfY2hlY2tfcGF0dGVybl8xX3NldChzdHJ1Y3Qgc2lua19kZXZp Y2UgKnNpbmspCj4gK3sKPiArCWlmICghc2luay0+ZGF0YS5sYW5lX2NvdW50X2FuZF9id19zZXQg fHwKPiArCSAgICBzaW5rLT5kYXRhLnRyYWluaW5nX3BhdHRlcm5fMV9zZXQpCj4gKwkJcmV0dXJu Owo+ICsKPiArCWFzc2VydChzaW5rX2RldmljZV9nZXRfdHJhaW5pbmdfcGF0dGVybihzaW5rKSA8 PSBEUF9UUkFJTklOR19QQVRURVJOXzEpOwo+ICsKPiArCWlmIChzaW5rX2RldmljZV9nZXRfdHJh aW5pbmdfcGF0dGVybihzaW5rKSAhPSBEUF9UUkFJTklOR19QQVRURVJOXzEpCj4gKwkJcmV0dXJu Owo+ICsKPiArCWFzc2VydChzaW5rLT5kYXRhLmRwY2RbRFBfTElOS19CV19TRVRdID09IERQX0xJ TktfQldfMV82MiB8fAo+ICsJICAgICAgIHNpbmstPmRhdGEuZHBjZFtEUF9MSU5LX0JXX1NFVF0g PT0gRFBfTElOS19CV18yXzcpOwo+ICsKPiArCWFzc2VydChzaW5rLT5kYXRhLmRwY2RbRFBfTEFO RV9DT1VOVF9TRVRdID09IDEgfHwKPiArCSAgICAgICBzaW5rLT5kYXRhLmRwY2RbRFBfTEFORV9D T1VOVF9TRVRdID09IDIgfHwKPiArCSAgICAgICBzaW5rLT5kYXRhLmRwY2RbRFBfTEFORV9DT1VO VF9TRVRdID09IDQpOwo+ICsKPiArCWZvciAoaW50IGxhbmUgPSAwOyBsYW5lIDwgc2lua19kZXZp Y2VfbGFuZV9jb3VudChzaW5rKTsgbGFuZSsrKSB7Cj4gKwkJaWYgKHNpbmtfZGV2aWNlX2dldF92 b2x0YWdlX3N3aW5nKHNpbmssIGxhbmUpICE9IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxf MCB8fAo+ICsJCSAgICBzaW5rX2RldmljZV9nZXRfcHJlX2VtcGhhc2lzX2xldmVsKHNpbmssIGxh bmUpICE9IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzApCj4gKwkJCXNpbmstPmRhdGEuc3RhcnRl ZF93aXRoX25vbl96ZXJvX2xldmVscyA9IHRydWU7Cj4gKwl9Cj4gKwo+ICsJc2luay0+ZGF0YS50 cmFpbmluZ19wYXR0ZXJuXzFfc2V0ID0gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiAr c2lua19kZXZpY2VfY2hlY2tfcGF0dGVybl8yX3NldChzdHJ1Y3Qgc2lua19kZXZpY2UgKnNpbmsp Cj4gK3sKPiArCWlmICghc2luay0+ZGF0YS5jcl9kb25lKQo+ICsJCXJldHVybjsKPiArCj4gKwlh c3NlcnQoc2lua19kZXZpY2VfZ2V0X3RyYWluaW5nX3BhdHRlcm4oc2luaykgPT0gRFBfVFJBSU5J TkdfUEFUVEVSTl8yKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArc2lua19kZXZpY2VfY2hl Y2tfcGF0dGVybl9kaXNhYmxlKHN0cnVjdCBzaW5rX2RldmljZSAqc2luaykKPiArewo+ICsJaWYg KCFzaW5rLT5kYXRhLmNyX2RvbmUgfHwgISBzaW5rLT5kYXRhLmNoYW5uZWxfZXFfZG9uZSkKPiAr CQlyZXR1cm47Cj4gKwo+ICsJYXNzZXJ0KHNpbmtfZGV2aWNlX2dldF90cmFpbmluZ19wYXR0ZXJu KHNpbmspID09IERQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSk7Cj4gK30KPiArCj4gK3N0YXRp YyBzc2l6ZV90Cj4gK3NpbmtfZGV2aWNlX2RwY2Rfd3JpdGUoc3RydWN0IHNpbmtfZGV2aWNlICpz aW5rLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICsJCSAgICAgICB2b2lkICpidWZmZXIsIHNpemVf dCBzaXplKQo+ICt7Cj4gKwltZW1jcHkoc2luay0+ZGF0YS5kcGNkICsgb2Zmc2V0LCBidWZmZXIs IHNpemUpOwo+ICsKPiArCXNpbmtfZGV2aWNlX2NoZWNrX2xhbmVfY291bnRfYW5kX2J3KHNpbmsp Owo+ICsKPiArCWlmICghc2luay0+ZGF0YS5jcl9kb25lKQo+ICsJCXNpbmtfZGV2aWNlX2NoZWNr X3BhdHRlcm5fMV9zZXQoc2luayk7Cj4gKwllbHNlIGlmICghc2luay0+ZGF0YS5jaGFubmVsX2Vx X2RvbmUpCj4gKwkJc2lua19kZXZpY2VfY2hlY2tfcGF0dGVybl8yX3NldChzaW5rKTsKPiArCWVs c2UKPiArCQlzaW5rX2RldmljZV9jaGVja19wYXR0ZXJuX2Rpc2FibGUoc2luayk7Cj4gKwo+ICsJ cmV0dXJuIHNpemU7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sCj4gK3NpbmtfZGV2aWNlX21heF92 b2x0YWdlX3JlYWNoZWQoc3RydWN0IHNpbmtfZGV2aWNlICpzaW5rLCBpbnQgbGFuZSkKPiArewo+ ICsJcmV0dXJuIChzaW5rLT5kYXRhLmRwY2RbRFBfVFJBSU5JTkdfTEFORTBfU0VUICsgbGFuZV0g JiBEUF9UUkFJTl9NQVhfU1dJTkdfUkVBQ0hFRCkgPT0KPiArCQlEUF9UUkFJTl9NQVhfU1dJTkdf UkVBQ0hFRDsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wKPiArc2lua19kZXZpY2VfbWF4X3ByZV9l bXBoYXNpc19yZWFjaGVkKHN0cnVjdCBzaW5rX2RldmljZSAqc2luaywgaW50IGxhbmUpCj4gK3sK PiArCXJldHVybiAoc2luay0+ZGF0YS5kcGNkW0RQX1RSQUlOSU5HX0xBTkUwX1NFVCArIGxhbmVd ICYgRFBfVFJBSU5fTUFYX1BSRV9FTVBIQVNJU19SRUFDSEVEKSA9PQo+ICsJCURQX1RSQUlOX01B WF9QUkVfRU1QSEFTSVNfUkVBQ0hFRDsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wKPiArc2lua19k ZXZpY2VfcmVxdWVzdF9oaWdoZXJfdm9sdGFnZV9zd2luZyhzdHJ1Y3Qgc2lua19kZXZpY2UgKnNp bmspCj4gK3sKPiArCWJvb2wgbWF4X3JlYWNoZWQ7Cj4gKwo+ICsJZm9yIChpbnQgbGFuZSA9IDA7 IGxhbmUgPCBzaW5rX2RldmljZV9sYW5lX2NvdW50KHNpbmspOyBsYW5lKyspIHsKPiArCQlpZiAo c2lua19kZXZpY2VfbWF4X3ZvbHRhZ2VfcmVhY2hlZChzaW5rLCBsYW5lKSkgewo+ICsJCQltYXhf cmVhY2hlZCA9IHRydWU7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAobWF4 X3JlYWNoZWQpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWZvciAoaW50IGxhbmUgPSAwOyBs YW5lIDwgc2lua19kZXZpY2VfbGFuZV9jb3VudChzaW5rKTsgbGFuZSsrKSB7Cj4gKwkJc2luay0+ ZGF0YS5kcGNkW0RQX0FESlVTVF9SRVFVRVNUX0xBTkUwXzEgKyAobGFuZSA+PiAxKV0gfD0KPiAr CQkJKHNpbmtfZGV2aWNlX2dldF92b2x0YWdlX3N3aW5nKHNpbmssIGxhbmUpICsgMSkgPDwKPiAr CQkJCShEUF9BREpVU1RfVk9MVEFHRV9TV0lOR19MQU5FMV9TSElGVCAqIChsYW5lICYgMSkpOwo+ ICsJfQo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbAo+ICtzaW5r X2RldmljZV9yZXF1ZXN0X2hpZ2hlcl9wcmVfZW1waGFzaXMoc3RydWN0IHNpbmtfZGV2aWNlICpz aW5rKQo+ICt7Cj4gKwlib29sIG1heF9yZWFjaGVkOwo+ICsKPiArCWZvciAoaW50IGxhbmUgPSAw OyBsYW5lIDwgc2lua19kZXZpY2VfbGFuZV9jb3VudChzaW5rKTsgbGFuZSsrKSB7Cj4gKwkJaWYg KHNpbmtfZGV2aWNlX21heF9wcmVfZW1waGFzaXNfcmVhY2hlZChzaW5rLCBsYW5lKSkgewo+ICsJ CQltYXhfcmVhY2hlZCA9IHRydWU7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gKwlp ZiAobWF4X3JlYWNoZWQpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWZvciAoaW50IGxhbmUg PSAwOyBsYW5lIDwgc2lua19kZXZpY2VfbGFuZV9jb3VudChzaW5rKTsgbGFuZSsrKSB7Cj4gKwkJ c2luay0+ZGF0YS5kcGNkW0RQX0FESlVTVF9SRVFVRVNUX0xBTkUwXzEgKyAobGFuZSA+PiAxKV0g fD0KPiArCQkJKHNpbmtfZGV2aWNlX2dldF9wcmVfZW1waGFzaXNfbGV2ZWwoc2luaywgbGFuZSkg KyAxKSA8PAo+ICsJCQkJKERQX0FESlVTVF9QUkVfRU1QSEFTSVNfTEFORTBfU0hJRlQgKwo+ICsJ CQkJIChEUF9BREpVU1RfVk9MVEFHRV9TV0lOR19MQU5FMV9TSElGVCAqIChsYW5lICYgMSkpKTsK PiArCX0KPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArc2lu a19kZXZpY2VfbWFya19jcl9kb25lKHN0cnVjdCBzaW5rX2RldmljZSAqc2luaykKPiArewo+ICsJ Zm9yIChpbnQgbGFuZSA9IDA7IGxhbmUgPCBzaW5rX2RldmljZV9sYW5lX2NvdW50KHNpbmspOyBs YW5lKyspCj4gKwkJc2luay0+ZGF0YS5kcGNkW0RQX0xBTkUwXzFfU1RBVFVTICsgKGxhbmUgPj4g MSldIHw9Cj4gKwkJCURQX0xBTkVfQ1JfRE9ORSA8PCAoNCAqIChsYW5lICYgMSkpOwo+ICsKPiAr CXNpbmstPmRhdGEuY3JfZG9uZSA9IHRydWU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3Np bmtfZGV2aWNlX21hcmtfY2hhbm5lbF9lcV9kb25lKHN0cnVjdCBzaW5rX2RldmljZSAqc2luaykK PiArewo+ICsJZm9yIChpbnQgbGFuZSA9IDA7IGxhbmUgPCBzaW5rX2RldmljZV9sYW5lX2NvdW50 KHNpbmspOyBsYW5lKyspIHsKPiArCQl1aW50OF90IG1hc2sgPSAoRFBfTEFORV9DSEFOTkVMX0VR X0RPTkUgfCBEUF9MQU5FX1NZTUJPTF9MT0NLRUQpOwo+ICsJCXNpbmstPmRhdGEuZHBjZFtEUF9M QU5FMF8xX1NUQVRVUyArIChsYW5lID4+IDEpXSB8PQo+ICsJCQltYXNrIDw8ICg0ICogKGxhbmUg JiAxKSk7Cj4gKwl9Cj4gKwo+ICsJc2luay0+ZGF0YS5kcGNkW0RQX0xBTkVfQUxJR05fU1RBVFVT X1VQREFURURdIHw9IERQX0lOVEVSTEFORV9BTElHTl9ET05FOwo+ICsKPiArCXNpbmstPmRhdGEu Y2hhbm5lbF9lcV9kb25lID0gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wKPiArc2lua19k ZXZpY2VfZ2V0X2xpbmtfc3RhdHVzKHN0cnVjdCBzaW5rX2RldmljZSAqc2luaywKPiArCQkJICAg IHVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0pCj4gK3sKPiArCWlmICgh c2luay0+ZGF0YS5jcl9kb25lKSB7Cj4gKwkJaWYgKCFzaW5rX2RldmljZV9yZXF1ZXN0X2hpZ2hl cl92b2x0YWdlX3N3aW5nKHNpbmspKQo+ICsJCQlzaW5rX2RldmljZV9tYXJrX2NyX2RvbmUoc2lu ayk7Cj4gKwl9IGVsc2UgaWYgKCFzaW5rLT5kYXRhLmNoYW5uZWxfZXFfZG9uZSkgewo+ICsJCWlm ICghc2lua19kZXZpY2VfcmVxdWVzdF9oaWdoZXJfcHJlX2VtcGhhc2lzKHNpbmspKQo+ICsJCQlz aW5rX2RldmljZV9tYXJrX2NoYW5uZWxfZXFfZG9uZShzaW5rKTsKPiArCX0KPiArCj4gKwltZW1j cHkobGlua19zdGF0dXMsIHNpbmstPmRhdGEuZHBjZCArIERQX0xBTkUwXzFfU1RBVFVTLAo+ICsJ ICAgICAgIERQX0xJTktfU1RBVFVTX1NJWkUpOwo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IHNpbmtfZGV2aWNlIHNpbXBsZV9zaW5rID0gewo+ICsJLmdldF9s aW5rX3N0YXR1cyA9IHNpbmtfZGV2aWNlX2dldF9saW5rX3N0YXR1cywKPiArCS5kcGNkX3dyaXRl ID0gc2lua19kZXZpY2VfZHBjZF93cml0ZSwKPiArfTsKPiArCj4gKy8qIEdsdWUgY29kZSAqLwo+ ICsKPiArdm9pZCBpbnRlbF9kZGlfcHJlcGFyZV9saW5rX3JldHJhaW4oc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyKQo+ICt7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZHBfc2V0X2lkbGVfbGlu a190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICt7Cj4gK30KPiArCj4gK2Jvb2wg aW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAr ewo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtib29sCj4gK2ludGVsX2RwX2dldF9saW5r X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90IGxpbmtfc3RhdHVzW0RQ X0xJTktfU1RBVFVTX1NJWkVdKQo+ICt7Cj4gKwlzdHJ1Y3Qgc2lua19kZXZpY2UgKnNpbmsgPSBp bnRlbF9kcC0+cHJpdjsKPiArCXJldHVybiBzaW5rLT5nZXRfbGlua19zdGF0dXMoc2luaywgbGlu a19zdGF0dXMpOwo+ICt9Cj4gKwo+ICt2b2lkCj4gK2ludGVsX2RwX3VwZGF0ZV9zaWduYWxfbGV2 ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gK3sKPiArfQo+ICsKPiArdm9pZCBpbnRl bF9kcF9jb21wdXRlX3JhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IHBvcnRfY2xv Y2ssCj4gKwkJCSAgIHVpbnQ4X3QgKmxpbmtfYncsIHVpbnQ4X3QgKnJhdGVfc2VsZWN0KQo+ICt7 Cj4gKwkqbGlua19idyA9IGludGVsX2RwLT5saW5rX2J3Owo+ICsJKnJhdGVfc2VsZWN0ID0gMDsK PiArfQo+ICsKPiArdm9pZAo+ICtpbnRlbF9kcF9wcm9ncmFtX2xpbmtfdHJhaW5pbmdfcGF0dGVy bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJCQkJICAgICAgIHVpbnQ4X3QgZHBfdHJh aW5fcGF0KQo+ICt7Cj4gK30KPiArCj4gK3NzaXplX3QgZHJtX2RwX2RwY2Rfd3JpdGUoc3RydWN0 IGRybV9kcF9hdXggKmF1eCwgdW5zaWduZWQgaW50IG9mZnNldCwKPiArCQkJICB2b2lkICpidWZm ZXIsIHNpemVfdCBzaXplKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0KPiAr CQljb250YWluZXJfb2YoYXV4LCBzdHJ1Y3QgaW50ZWxfZHAsIGF1eCk7Cj4gKwlzdHJ1Y3Qgc2lu a19kZXZpY2UgKnNpbmsgPSBpbnRlbF9kcC0+cHJpdjsKPiArCj4gKwlyZXR1cm4gc2luay0+ZHBj ZF93cml0ZShzaW5rLCBvZmZzZXQsIGJ1ZmZlciwgc2l6ZSk7Cj4gK30KPiArCj4gKy8qIC0tLSAq Lwo+ICsKPiArc3RhdGljIHN0cnVjdCBpbnRlbF9kcCAqCj4gK2ludGVsX2RwX2NyZWF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgbGFuZXMsIHVpbnQ4X3QgbGlua19idykKPiArewo+ICsJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQ7Cj4gKwo+ICsJZGlnX3BvcnQgPSBj YWxsb2MoMSwgc2l6ZW9mICpkaWdfcG9ydCk7Cj4gKwlkaWdfcG9ydC0+YmFzZS5iYXNlLmRldiA9 IGRldjsKPiArCWRpZ19wb3J0LT5kcC5sYW5lX2NvdW50ID0gbGFuZXM7Cj4gKwlkaWdfcG9ydC0+ ZHAubGlua19idyA9IGxpbmtfYnc7Cj4gKwo+ICsJcmV0dXJuICZkaWdfcG9ydC0+ZHA7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkCj4gK2ludGVsX2RwX2Rlc3Ryb3koc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiArewo+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBk cF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gKwlmcmVlKGRpZ19wb3J0KTsKPiArfQo+ICsKPiAr LyogRklYTUU6IFlpa2VzISAqLwo+ICsjZGVmaW5lIEJJVFNfUEVSX0xPTkcgNjQKPiArI2luY2x1 ZGUgPGluY2x1ZGUvbGludXgvbW9kX2RldmljZXRhYmxlLmg+Cj4gKyNpbmNsdWRlIDxpOTE1X3Bj aWlkcy5oPgo+ICsjaW5jbHVkZSAiaW50ZWxfZGV2X2luZm8uYyIKPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwY2lpZGxpc3RbXSA9IHsKPiArCUlOVEVMX1BDSV9JRFMs Cj4gKwl7MCwgMCwgMH0KPiArfTsKPiArCj4gK3N0cnVjdCBkcm1fZGV2aWNlICoKPiArZHJtX2Rl dmljZV9mb3JfcGNpX2lkKGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZCkKPiArewo+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdjsKPiArCj4gKwlkZXYgPSBjYWxsb2MoMSwgc2l6ZW9mICpkZXYpOwo+ICsJZGV2X3ByaXYg PSBjYWxsb2MoMSwgc2l6ZW9mICpkZXZfcHJpdik7Cj4gKwlhc3NlcnQoZGV2ICYmIGRldl9wcml2 KTsKPiArCj4gKwlkZXYtPmRldl9wcml2YXRlID0gZGV2X3ByaXY7Cj4gKwo+ICsJbWVtY3B5KCZk ZXZfcHJpdi0+aW5mbywgKHZvaWQgKikgaWQtPmRyaXZlcl9kYXRhLCBzaXplb2YgZGV2X3ByaXYt PmluZm8pOwo+ICsJZGV2X3ByaXYtPmluZm8uZGV2aWNlX2lkID0gaWQtPmRldmljZTsKPiArCj4g KwkvKiBUT0RPOiBzZXQgZGV2X3ByaXYtPnBjaF90eXBlIHdpdGggYW4gYXBwcm9wcmlhdGUgdmFs dWUgKi8KPiArCWRldl9wcml2LT5wY2hfdHlwZSA9IFBDSF9OT05FOwo+ICsKPiArCXJldHVybiBk ZXY7Cj4gK30KPiArCj4gK3ZvaWQKPiArZHJtX2RldmljZV9kZXN0cm95KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gK3sKPiArCWZyZWUoZGV2LT5kZXZfcHJpdmF0ZSk7Cj4gKwlmcmVlKGRldik7 Cj4gK30KPiArCj4gK2ludAo+ICttYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gK3sKPiAr CWNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZDsKPiArCj4gKwlmb3IgKGlkID0gJnBjaWlk bGlzdFswXTsKPiArCSAgICAgaWQtPnZlbmRvciAhPSAwICYmIGlkLT5kZXZpY2UgIT0gMDsKPiAr CSAgICAgaWQrKykgewo+ICsJCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkcm1fZGV2aWNlX2Zv cl9wY2lfaWQoaWQpOwo+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQo+ICsJCQlpbnRl bF9kcF9jcmVhdGUoZGV2LCA0LCBEUF9MSU5LX0JXXzJfNyk7Cj4gKwo+ICsJCWlmIChJU19HRU4y KGRldikgfHwgSVNfUElORVZJRVcoZGV2KSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXByaW50 ZigiVGVzdGluZyB3aXRoIGRldmljZSBpZCAlMDR4LCBnZW4gJWRcbiIsCj4gKwkJICAgICAgIElO VEVMX0RFVklEKGRldiksIElOVEVMX0lORk8oZGV2KS0+Z2VuKTsKPiArCj4gKwkJaW50ZWxfZHAt PnByaXYgPSAmc2ltcGxlX3Npbms7Cj4gKwkJbWVtc2V0KCZzaW1wbGVfc2luay5kYXRhLCAwLCBz aXplb2Ygc2ltcGxlX3NpbmsuZGF0YSk7Cj4gKwkJc2ltcGxlX3NpbmsuZGF0YS5kcGNkW0RQX01B WF9MSU5LX1JBVEVdID0gMHgwQTsKPiArCQlzaW1wbGVfc2luay5kYXRhLmRwY2RbRFBfTUFYX0xB TkVfQ09VTlRdID0gMHgwNDsKPiArCj4gKwkJaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRl bF9kcCk7Cj4gKwkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKPiArCj4gKwkJ Zm9yIChpbnQgbGFuZSA9IDA7IGxhbmUgPCBpbnRlbF9kcC0+bGFuZV9jb3VudDsgbGFuZSsrKQo+ ICsJCQlwcmludGYoImxhbmUgJWk6IHZzd2luZzogJWQsIHByZS1lbXBoOiAlZFxuIiwgbGFuZSwK PiArCQkJICAgICAgIHNpbmtfZGV2aWNlX2dldF92b2x0YWdlX3N3aW5nKCZzaW1wbGVfc2luaywg bGFuZSksCj4gKwkJCSAgICAgICBzaW5rX2RldmljZV9nZXRfcHJlX2VtcGhhc2lzX2xldmVsKCZz aW1wbGVfc2luaywgbGFuZSkpOwo+ICsJCXByaW50ZigiXG4iKTsKPiArCj4gKwkJaW50ZWxfZHBf ZGVzdHJveShpbnRlbF9kcCk7Cj4gKwkJZHJtX2RldmljZV9kZXN0cm95KGRldik7Cj4gKwl9Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAtLSAKPiAyLjQuMwoKLS0gClZpbGxlIFN5cmrDpGzDpApJ bnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK