From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v8,3/3] dmaengine: fsl-edma: add ColdFire mcf5441x edma support From: Angelo Dureghello Message-Id: <20180806210110.GD6092@jerusalem> Date: Mon, 6 Aug 2018 23:01:10 +0200 To: Krzysztof Kozlowski Cc: vinod.koul@linaro.org, dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-m68k@vger.kernel.org, Stefan Agner List-ID: SGkgS3J6eXN6dG9mLAoKT24gTW9uLCBBdWcgMDYsIDIwMTggYXQgMTA6MDk6MDhBTSArMDIwMCwg S3J6eXN6dG9mIEtvemxvd3NraSB3cm90ZToKPiBPbiAzIEF1Z3VzdCAyMDE4IGF0IDIxOjMyLCBB bmdlbG8gRHVyZWdoZWxsbyA8YW5nZWxvQHN5c2FtLml0PiB3cm90ZToKPiA+IFRoaXMgcGF0Y2gg YWRkcyBzdXBwb3J0IGZvciBDb2xkRmlyZSBtY2Y1NDQxeC1mYW1pbHkgZWRtYQo+ID4gbW9kdWxl Lgo+ID4KPiA+IFRoZSBDb2xkRmlyZSBlZG1hIG1vZHVsZSBpcyBzbGlnaHRseSBkaWZmZXJlbnQg ZnJvbSBmc2wtZWRtYSwKPiA+IHNvIGEgbmV3IGRyaXZlciBpcyBhZGRlZC4gQnV0IG1vc3Qgb2Yg dGhlIGNvZGUgaXMgY29tbW9uCj4gPiBiZXR3ZWVuIGZzbC1lZG1hIGFuZCBtY2YtZWRtYSBzbyBp dCBoYXMgYmVlbiBjb2xsZWN0ZWQgaW50byBhCj4gPiBzZXBhcmF0ZSBjb21tb24gbW9kdWxlIGZz bC1lZG1hLWNvbW1vbiAocGF0Y2ggMS8zKS4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbmdlbG8g RHVyZWdoZWxsbyA8YW5nZWxvQHN5c2FtLml0Pgo+ID4gLS0tCj4gPiBDaGFuZ2VzIGZvciB2NzoK PiA+IC0gcGF0Y2ggcmV3cml0dGVuIGZyb20gc2NyYXRjaCwgdGhpcyBwYXRjaCAoMy8zKSBoYXMg anVzdCBiZWVuIGFkZGVkLgo+ID4gLS0tCj4gPiAgZHJpdmVycy9kbWEvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDExICsKPiA+ICBkcml2ZXJzL2RtYS9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvZG1hL2ZzbC1lZG1hLWNvbW1vbi5j ICAgICAgICAgICAgICB8ICAyNCArLQo+ID4gIGRyaXZlcnMvZG1hL21jZi1lZG1hLmMgICAgICAg ICAgICAgICAgICAgICB8IDMxNSArKysrKysrKysrKysrKysrKysrKysKPiA+ICBpbmNsdWRlL2xp bnV4L3BsYXRmb3JtX2RhdGEvZG1hLW1jZi1lZG1hLmggfCAgMzggKysrCj4gPiAgNSBmaWxlcyBj aGFuZ2VkLCAzODUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9kbWEvbWNmLWVkbWEuYwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvZG1hLW1jZi1lZG1hLmgKPiA+Cj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9kbWEvS2NvbmZpZyBiL2RyaXZlcnMvZG1hL0tjb25maWcKPiA+IGluZGV4 IGNhMTY4MGFmYTIwYS4uYjQ1MDA4ZTljN2U5IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9kbWEv S2NvbmZpZwo+ID4gKysrIGIvZHJpdmVycy9kbWEvS2NvbmZpZwo+ID4gQEAgLTMyMCw2ICszMjAs MTcgQEAgY29uZmlnIExQQzE4WFhfRE1BTVVYCj4gPiAgICAgICAgICAgRW5hYmxlIHN1cHBvcnQg Zm9yIERNQSBvbiBOWFAgTFBDMTh4eC80M3h4IHBsYXRmb3Jtcwo+ID4gICAgICAgICAgIHdpdGgg UEwwODAgYW5kIG11bHRpcGxleGVkIERNQSByZXF1ZXN0IGxpbmVzLgo+ID4KPiA+ICtjb25maWcg TUNGX0VETUEKPiA+ICsgICAgICAgdHJpc3RhdGUgIkZyZWVzY2FsZSBlRE1BIGVuZ2luZSBzdXBw b3J0LCBDb2xkRmlyZSBtY2Y1NDQxeCBTb0NzIgo+ID4gKyAgICAgICBkZXBlbmRzIG9uIE01NDQx eAo+ID4gKyAgICAgICBzZWxlY3QgRE1BX0VOR0lORQo+ID4gKyAgICAgICBzZWxlY3QgRE1BX1ZJ UlRVQUxfQ0hBTk5FTFMKPiA+ICsgICAgICAgaGVscAo+ID4gKyAgICAgICAgIFN1cHBvcnQgdGhl IEZyZWVzY2FsZSBDb2xkRmlyZSBlRE1BIGVuZ2luZSwgNjQtY2hhbm5lbAo+ID4gKyAgICAgICAg IGltcGxlbWVudGF0aW9uIHRoYXQgcGVyZm9ybXMgY29tcGxleCBkYXRhIHRyYW5zZmVycyB3aXRo Cj4gPiArICAgICAgICAgbWluaW1hbCBpbnRlcnZlbnRpb24gZnJvbSBhIGhvc3QgcHJvY2Vzc29y Lgo+ID4gKyAgICAgICAgIFRoaXMgbW9kdWxlIGNhbiBiZSBmb3VuZCBvbiBGcmVlc2NhbGUgQ29s ZEZpcmUgbWNmNTQ0MXggU29Dcy4KPiA+ICsKPiA+ICBjb25maWcgTU1QX1BETUEKPiA+ICAgICAg ICAgYm9vbCAiTU1QIFBETUEgc3VwcG9ydCIKPiA+ICAgICAgICAgZGVwZW5kcyBvbiBBUkNIX01N UCB8fCBBUkNIX1BYQSB8fCBDT01QSUxFX1RFU1QKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Rt YS9NYWtlZmlsZSBiL2RyaXZlcnMvZG1hL01ha2VmaWxlCj4gPiBpbmRleCA2NjAyMmY1OWZjYTQu LmQ5N2YzMTdmNGIzNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZG1hL01ha2VmaWxlCj4gPiAr KysgYi9kcml2ZXJzL2RtYS9NYWtlZmlsZQo+ID4gQEAgLTMyLDYgKzMyLDcgQEAgb2JqLSQoQ09O RklHX0RXX0RNQUNfQ09SRSkgKz0gZHcvCj4gPiAgb2JqLSQoQ09ORklHX0VQOTNYWF9ETUEpICs9 IGVwOTN4eF9kbWEubwo+ID4gIG9iai0kKENPTkZJR19GU0xfRE1BKSArPSBmc2xkbWEubwo+ID4g IG9iai0kKENPTkZJR19GU0xfRURNQSkgKz0gZnNsLWVkbWEubyBmc2wtZWRtYS1jb21tb24ubwo+ ID4gK29iai0kKENPTkZJR19NQ0ZfRURNQSkgKz0gbWNmLWVkbWEubyBmc2wtZWRtYS1jb21tb24u bwo+ID4gIG9iai0kKENPTkZJR19GU0xfUkFJRCkgKz0gZnNsX3JhaWQubwo+ID4gIG9iai0kKENP TkZJR19IU1VfRE1BKSArPSBoc3UvCj4gPiAgb2JqLSQoQ09ORklHX0lNR19NRENfRE1BKSArPSBp bWctbWRjLWRtYS5vCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZnNsLWVkbWEtY29tbW9u LmMgYi9kcml2ZXJzL2RtYS9mc2wtZWRtYS1jb21tb24uYwo+ID4gaW5kZXggOTQ4YTNlZTUxYmJi Li41YTgzMGEyMzhhMGMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2RtYS9mc2wtZWRtYS1jb21t b24uYwo+ID4gKysrIGIvZHJpdmVycy9kbWEvZnNsLWVkbWEtY29tbW9uLmMKPiA+IEBAIC0xMDIs OCArMTAyLDE2IEBAIHN0YXRpYyB2b2lkIGZzbF9lZG1hX2VuYWJsZV9yZXF1ZXN0KHN0cnVjdCBm c2xfZWRtYV9jaGFuICpmc2xfY2hhbikKPiA+ICAgICAgICAgc3RydWN0IGVkbWFfcmVncyAqcmVn cyA9ICZmc2xfY2hhbi0+ZWRtYS0+cmVnczsKPiA+ICAgICAgICAgdTMyIGNoID0gZnNsX2NoYW4t PnZjaGFuLmNoYW4uY2hhbl9pZDsKPiA+Cj4gPiAtICAgICAgIGVkbWFfd3JpdGViKGZzbF9jaGFu LT5lZG1hLCBFRE1BX1NFRUlfU0VFSShjaCksIHJlZ3MtPnNlZWkpOwo+ID4gLSAgICAgICBlZG1h X3dyaXRlYihmc2xfY2hhbi0+ZWRtYSwgY2gsIHJlZ3MtPnNlcnEpOwo+ID4gKyAgICAgICBpZiAo ZnNsX2NoYW4tPmVkbWEtPnZlcnNpb24gPT0gdjEpIHsKPiA+ICsgICAgICAgICAgICAgICBlZG1h X3dyaXRlYihmc2xfY2hhbi0+ZWRtYSwgRURNQV9TRUVJX1NFRUkoY2gpLCByZWdzLT5zZWVpKTsK PiA+ICsgICAgICAgICAgICAgICBlZG1hX3dyaXRlYihmc2xfY2hhbi0+ZWRtYSwgY2gsIHJlZ3Mt PnNlcnEpOwo+ID4gKyAgICAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgICAgICAgIC8qIENvbGRG aXJlIGlzIGJpZyBlbmRpYW4sIGFuZCBhY2Nlc3NlcyBuYXRpdmVseQo+ID4gKyAgICAgICAgICAg ICAgICAqIGJpZyBlbmRpYW4gSS9PIHBlcmlwaGVyYWxzCj4gPiArICAgICAgICAgICAgICAgICov Cj4gPiArICAgICAgICAgICAgICAgaW93cml0ZTgoRURNQV9TRUVJX1NFRUkoY2gpLCByZWdzLT5z ZWVpKTsKPiA+ICsgICAgICAgICAgICAgICBpb3dyaXRlOChjaCwgcmVncy0+c2VycSk7Cj4gPiAr ICAgICAgIH0KPiA+ICB9Cj4gPgo+ID4gIHZvaWQgZnNsX2VkbWFfZGlzYWJsZV9yZXF1ZXN0KHN0 cnVjdCBmc2xfZWRtYV9jaGFuICpmc2xfY2hhbikKPiA+IEBAIC0xMTEsOCArMTE5LDE2IEBAIHZv aWQgZnNsX2VkbWFfZGlzYWJsZV9yZXF1ZXN0KHN0cnVjdCBmc2xfZWRtYV9jaGFuICpmc2xfY2hh bikKPiA+ICAgICAgICAgc3RydWN0IGVkbWFfcmVncyAqcmVncyA9ICZmc2xfY2hhbi0+ZWRtYS0+ cmVnczsKPiA+ICAgICAgICAgdTMyIGNoID0gZnNsX2NoYW4tPnZjaGFuLmNoYW4uY2hhbl9pZDsK PiA+Cj4gPiAtICAgICAgIGVkbWFfd3JpdGViKGZzbF9jaGFuLT5lZG1hLCBjaCwgcmVncy0+Y2Vy cSk7Cj4gPiAtICAgICAgIGVkbWFfd3JpdGViKGZzbF9jaGFuLT5lZG1hLCBFRE1BX0NFRUlfQ0VF SShjaCksIHJlZ3MtPmNlZWkpOwo+ID4gKyAgICAgICBpZiAoZnNsX2NoYW4tPmVkbWEtPnZlcnNp b24gPT0gdjEpIHsKPiA+ICsgICAgICAgICAgICAgICBlZG1hX3dyaXRlYihmc2xfY2hhbi0+ZWRt YSwgY2gsIHJlZ3MtPmNlcnEpOwo+ID4gKyAgICAgICAgICAgICAgIGVkbWFfd3JpdGViKGZzbF9j aGFuLT5lZG1hLCBFRE1BX0NFRUlfQ0VFSShjaCksIHJlZ3MtPmNlZWkpOwo+ID4gKyAgICAgICB9 IGVsc2Ugewo+ID4gKyAgICAgICAgICAgICAgIC8qIENvbGRGaXJlIGlzIGJpZyBlbmRpYW4sIGFu ZCBhY2Nlc3NlcyBuYXRpdmVseQo+ID4gKyAgICAgICAgICAgICAgICAqIGJpZyBlbmRpYW4gSS9P IHBlcmlwaGVyYWxzCj4gPiArICAgICAgICAgICAgICAgICovCj4gPiArICAgICAgICAgICAgICAg aW93cml0ZTgoY2gsIHJlZ3MtPmNlcnEpOwo+ID4gKyAgICAgICAgICAgICAgIGlvd3JpdGU4KEVE TUFfQ0VFSV9DRUVJKGNoKSwgcmVncy0+Y2VlaSk7Cj4gPiArICAgICAgIH0KPiA+ICB9Cj4gPiAg RVhQT1JUX1NZTUJPTF9HUEwoZnNsX2VkbWFfZGlzYWJsZV9yZXF1ZXN0KTsKPiA+Cj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9kbWEvbWNmLWVkbWEuYyBiL2RyaXZlcnMvZG1hL21jZi1lZG1hLmMK PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjMxZTUzMTdh OGY5MAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9kbWEvbWNmLWVkbWEuYwo+ ID4gQEAgLTAsMCArMSwzMTUgQEAKPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAo+ID4gKy8vCj4gPiArLy8gQ29weXJpZ2h0IChjKSAyMDEzLTIwMTQgRnJlZXNjYWxlIFNl bWljb25kdWN0b3IsIEluYwo+IAo+IFNhbWUgY29tbWVudCBhcyB0byAxLzMgLSBpZiB0aGlzIGlz IGRlcml2YXRpdmUgd29yay4uLgo+IApXZWxsLCBpbiB0aGlzIGNhc2UgdGhlIGRyaXZlciBpcyBi cmFuZCBuZXcsIGkgbWFpbnRhaW5lZCB0aGUKRnJlZXNjYWxlIENvcHlyaWdodCB0b28sIHNpbmNl IGkgY29waWVkIHNvbWUgY29kZSBmcm9tIGZzbC1lZG1hLmMuCgoKPiA+ICsvLyBDb3B5cmlnaHQg KGMpIDIwMTcgU3lzYW0sIEFuZ2VsbyBEdXJlZ2hlbGxvICA8YW5nZWxvQHN5c2FtLml0Pgo+ID4g Kwo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvaW50 ZXJydXB0Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2RtYWVuZ2luZS5oPgo+ID4gKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGF0YS9kbWEtbWNmLWVkbWEuaD4KPiA+ICsKPiA+ICsjaW5jbHVkZSAiZnNsLWVkbWEtY29tbW9u LmgiCj4gPiArCj4gPiArI2RlZmluZSBFRE1BX0NIQU5ORUxTICAgICAgICAgIDY0Cj4gPiArI2Rl ZmluZSBFRE1BX01BU0tfQ0goeCkgICAgICAgICAgICAgICAgKCh4KSAmIEdFTk1BU0soNSwgMCkp Cj4gPiArCj4gPiArc3RhdGljIGlycXJldHVybl90IG1jZl9lZG1hX3R4X2hhbmRsZXIoaW50IGly cSwgdm9pZCAqZGV2X2lkKQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IGZzbF9lZG1hX2VuZ2lu ZSAqbWNmX2VkbWEgPSBkZXZfaWQ7Cj4gPiArICAgICAgIHN0cnVjdCBlZG1hX3JlZ3MgKnJlZ3Mg PSAmbWNmX2VkbWEtPnJlZ3M7Cj4gPiArICAgICAgIHVuc2lnbmVkIGludCBjaDsKPiA+ICsgICAg ICAgc3RydWN0IGZzbF9lZG1hX2NoYW4gKm1jZl9jaGFuOwo+ID4gKyAgICAgICB1NjQgaW50bWFw Owo+ID4gKwo+ID4gKyAgICAgICBpbnRtYXAgPSBpb3JlYWQzMihyZWdzLT5pbnRoKTsKPiA+ICsg ICAgICAgaW50bWFwIDw8PSAzMjsKPiA+ICsgICAgICAgaW50bWFwIHw9IGlvcmVhZDMyKHJlZ3Mt PmludGwpOwo+ID4gKyAgICAgICBpZiAoIWludG1hcCkKPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gSVJRX05PTkU7Cj4gPiArCj4gPiArICAgICAgIGZvciAoY2ggPSAwOyBjaCA8IG1jZl9lZG1h LT5uX2NoYW5zOyBjaCsrKSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKGludG1hcCAmIEJJVChj aCkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlvd3JpdGU4KEVETUFfTUFTS19DSChj aCksIHJlZ3MtPmNpbnQpOwo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgbWNmX2No YW4gPSAmbWNmX2VkbWEtPmNoYW5zW2NoXTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIHNwaW5fbG9jaygmbWNmX2NoYW4tPnZjaGFuLmxvY2spOwo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKCFtY2ZfY2hhbi0+ZWRlc2MtPmlzY3ljbGljKSB7Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZGVsKCZtY2ZfY2hhbi0+ZWRlc2MtPnZkZXNjLm5v ZGUpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Y2hhbl9jb29raWVfY29t cGxldGUoJm1jZl9jaGFuLT5lZGVzYy0+dmRlc2MpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtY2ZfY2hhbi0+ZWRlc2MgPSBOVUxMOwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtY2ZfY2hhbi0+c3RhdHVzID0gRE1BX0NPTVBMRVRFOwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtY2ZfY2hhbi0+aWRsZSA9IHRydWU7Cj4gPiArICAg ICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2Y2hhbl9jeWNsaWNfY2FsbGJhY2soJm1jZl9jaGFuLT5lZGVzYy0+dmRlc2MpOwo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgaWYgKCFtY2ZfY2hhbi0+ZWRlc2MpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZzbF9lZG1hX3hmZXJfZGVzYyhtY2ZfY2hhbik7Cj4gPiArCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBzcGluX3VubG9jaygmbWNmX2NoYW4tPnZjaGFuLmxvY2spOwo+ID4gKyAg ICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gSVJR X0hBTkRMRUQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpcnFyZXR1cm5fdCBtY2ZfZWRtYV9l cnJfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4gPiArewo+ID4gKyAgICAgICBzdHJ1 Y3QgZnNsX2VkbWFfZW5naW5lICptY2ZfZWRtYSA9IGRldl9pZDsKPiA+ICsgICAgICAgc3RydWN0 IGVkbWFfcmVncyAqcmVncyA9ICZtY2ZfZWRtYS0+cmVnczsKPiA+ICsgICAgICAgdW5zaWduZWQg aW50IGVyciwgY2g7Cj4gPiArCj4gPiArICAgICAgIGVyciA9IGlvcmVhZDMyKHJlZ3MtPmVycmwp Owo+ID4gKyAgICAgICBpZiAoIWVycikKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gSVJRX05P TkU7Cj4gPiArCj4gPiArICAgICAgIGZvciAoY2ggPSAwOyBjaCA8IChFRE1BX0NIQU5ORUxTIC8g Mik7IGNoKyspIHsKPiA+ICsgICAgICAgICAgICAgICBpZiAoZXJyICYgQklUKGNoKSkgewo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgZnNsX2VkbWFfZGlzYWJsZV9yZXF1ZXN0KCZtY2ZfZWRt YS0+Y2hhbnNbY2hdKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlvd3JpdGU4KEVETUFf Q0VSUl9DRVJSKGNoKSwgcmVncy0+Y2Vycik7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBt Y2ZfZWRtYS0+Y2hhbnNbY2hdLnN0YXR1cyA9IERNQV9FUlJPUjsKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIG1jZl9lZG1hLT5jaGFuc1tjaF0uaWRsZSA9IHRydWU7Cj4gPiArICAgICAgICAg ICAgICAgfQo+ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIGVyciA9IGlvcmVhZDMyKHJl Z3MtPmVycmgpOwo+ID4gKyAgICAgICBpZiAoIWVycikKPiA+ICsgICAgICAgICAgICAgICByZXR1 cm4gSVJRX05PTkU7Cj4gPiArCj4gPiArICAgICAgIGZvciAoY2ggPSAoRURNQV9DSEFOTkVMUyAv IDIpOyBjaCA8IEVETUFfQ0hBTk5FTFM7IGNoKyspIHsKPiA+ICsgICAgICAgICAgICAgICBpZiAo ZXJyICYgKEJJVChjaCAtIChFRE1BX0NIQU5ORUxTIC8gMikpKSkgewo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgZnNsX2VkbWFfZGlzYWJsZV9yZXF1ZXN0KCZtY2ZfZWRtYS0+Y2hhbnNbY2hd KTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlvd3JpdGU4KEVETUFfQ0VSUl9DRVJSKGNo KSwgcmVncy0+Y2Vycik7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBtY2ZfZWRtYS0+Y2hh bnNbY2hdLnN0YXR1cyA9IERNQV9FUlJPUjsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG1j Zl9lZG1hLT5jaGFuc1tjaF0uaWRsZSA9IHRydWU7Cj4gPiArICAgICAgICAgICAgICAgfQo+ID4g KyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIHJldHVybiBJUlFfSEFORExFRDsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIGludCBtY2ZfZWRtYV9pcnFfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnNs X2VkbWFfZW5naW5lICptY2ZfZWRtYSkKPiA+ICt7Cj4gPiArICAgICAgIGludCByZXQgPSAwLCBp Owo+ID4gKyAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKPiA+ICsKPiA+ICsgICAgICAgcmVz ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJT1JFU09VUkNFX0lSUSwgImVkbWEtdHgtMDAtMTUiKTsKPiA+ICsg ICAgICAgaWYgKCFyZXMpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC0xOwo+ID4gKwo+ID4g KyAgICAgICBmb3IgKHJldCA9IDAsIGkgPSByZXMtPnN0YXJ0OyBpIDw9IHJlcy0+ZW5kOyArK2kp Cj4gPiArICAgICAgICAgICAgICAgcmV0IHw9IHJlcXVlc3RfaXJxKGksIG1jZl9lZG1hX3R4X2hh bmRsZXIsIDAsICJlRE1BIiwgbWNmX2VkbWEpOwo+ID4gKyAgICAgICBpZiAocmV0KQo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArCj4gPiArICAgICAgIHJlcyA9IHBsYXRmb3Jt X2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIElP UkVTT1VSQ0VfSVJRLCAiZWRtYS10eC0xNi01NSIpOwo+ID4gKyAgICAgICBpZiAoIXJlcykKPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gLTE7Cj4gPiArCj4gPiArICAgICAgIGZvciAocmV0ID0g MCwgaSA9IHJlcy0+c3RhcnQ7IGkgPD0gcmVzLT5lbmQ7ICsraSkKPiA+ICsgICAgICAgICAgICAg ICByZXQgfD0gcmVxdWVzdF9pcnEoaSwgbWNmX2VkbWFfdHhfaGFuZGxlciwgMCwgImVETUEiLCBt Y2ZfZWRtYSk7Cj4gPiArICAgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPiA+ICsKPiA+ICsgICAgICAgcmV0ID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRl diwgImVkbWEtdHgtNTYtNjMiKTsKPiA+ICsgICAgICAgaWYgKHJldCAhPSAtRU5YSU8pIHsKPiA+ ICsgICAgICAgICAgICAgICByZXQgPSByZXF1ZXN0X2lycShyZXQsIG1jZl9lZG1hX3R4X2hhbmRs ZXIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgImVETUEiLCBtY2Zf ZWRtYSk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiByZXQ7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgcmV0ID0g cGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgImVkbWEtZXJyIik7Cj4gPiArICAgICAgIGlm IChyZXQgIT0gLUVOWElPKSB7Cj4gPiArICAgICAgICAgICAgICAgcmV0ID0gcmVxdWVzdF9pcnEo cmV0LCBtY2ZfZWRtYV9lcnJfaGFuZGxlciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwLCAiZURNQSIsIG1jZl9lZG1hKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0 KQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsgICAgICAgfQo+ ID4gKwo+ID4gKyAgICAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQg bWNmX2VkbWFfaXJxX2ZyZWUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZzbF9lZG1hX2VuZ2luZSAqbWNmX2Vk bWEpCj4gPiArewo+ID4gKyAgICAgICBpbnQgaXJxOwo+ID4gKyAgICAgICBzdHJ1Y3QgcmVzb3Vy Y2UgKnJlczsKPiA+ICsKPiA+ICsgICAgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5 bmFtZShwZGV2LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgSU9SRVNPVVJDRV9JUlEsICJl ZG1hLXR4LTAwLTE1Iik7Cj4gPiArICAgICAgIGlmIChyZXMpIHsKPiA+ICsgICAgICAgICAgICAg ICBmb3IgKGlycSA9IHJlcy0+c3RhcnQ7IGlycSA8PSByZXMtPmVuZDsgaXJxKyspCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBmcmVlX2lycShpcnEsIG1jZl9lZG1hKTsKPiA+ICsgICAgICAg fQo+ID4gKwo+ID4gKyAgICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBk ZXYsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBJT1JFU09VUkNFX0lSUSwgImVkbWEtdHgt MTYtNTUiKTsKPiA+ICsgICAgICAgaWYgKHJlcykgewo+ID4gKyAgICAgICAgICAgICAgIGZvciAo aXJxID0gcmVzLT5zdGFydDsgaXJxIDw9IHJlcy0+ZW5kOyBpcnErKykKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGZyZWVfaXJxKGlycSwgbWNmX2VkbWEpOwo+ID4gKyAgICAgICB9Cj4gPiAr Cj4gPiArICAgICAgIGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lKHBkZXYsICJlZG1hLXR4 LTU2LTYzIik7Cj4gPiArICAgICAgIGlmIChpcnEgIT0gLUVOWElPKQo+ID4gKyAgICAgICAgICAg ICAgIGZyZWVfaXJxKGlycSwgbWNmX2VkbWEpOwo+ID4gKwo+ID4gKyAgICAgICBpcnEgPSBwbGF0 Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCAiZWRtYS1lcnIiKTsKPiA+ICsgICAgICAgaWYgKGly cSAhPSAtRU5YSU8pCj4gPiArICAgICAgICAgICAgICAgZnJlZV9pcnEoaXJxLCBtY2ZfZWRtYSk7 Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbWNmX2VkbWFfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBtY2ZfZWRtYV9wbGF0 Zm9ybV9kYXRhICpwZGF0YTsKPiA+ICsgICAgICAgc3RydWN0IGZzbF9lZG1hX2VuZ2luZSAqbWNm X2VkbWE7Cj4gPiArICAgICAgIHN0cnVjdCBmc2xfZWRtYV9jaGFuICptY2ZfY2hhbjsKPiA+ICsg ICAgICAgc3RydWN0IGVkbWFfcmVncyAqcmVnczsKPiA+ICsgICAgICAgc3RydWN0IHJlc291cmNl ICpyZXM7Cj4gPiArICAgICAgIGludCByZXQsIGksIGxlbiwgY2hhbnM7Cj4gPiArCj4gPiArICAg ICAgIHBkYXRhID0gZGV2X2dldF9wbGF0ZGF0YSgmcGRldi0+ZGV2KTsKPiA+ICsgICAgICAgaWYg KCFwZGF0YSkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwZGF0YSk7Cj4gPiAr Cj4gPiArICAgICAgIGNoYW5zID0gcGRhdGEtPmRtYV9jaGFubmVsczsKPiA+ICsgICAgICAgbGVu ID0gc2l6ZW9mKCptY2ZfZWRtYSkgKyBzaXplb2YoKm1jZl9jaGFuKSAqIGNoYW5zOwo+ID4gKyAg ICAgICBtY2ZfZWRtYSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBsZW4sIEdGUF9LRVJORUwp Owo+ID4gKyAgICAgICBpZiAoIW1jZl9lZG1hKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAt RU5PTUVNOwo+ID4gKwo+ID4gKyAgICAgICBtY2ZfZWRtYS0+bl9jaGFucyA9IGNoYW5zOwo+ID4g Kwo+ID4gKyAgICAgICAvKiBTZXQgdXAgdmVyc2lvbiBmb3IgQ29sZEZpcmUgZWRtYSAqLwo+ID4g KyAgICAgICBtY2ZfZWRtYS0+dmVyc2lvbiA9IHYyOwo+ID4gKyAgICAgICBtY2ZfZWRtYS0+Ymln X2VuZGlhbiA9IDE7Cj4gPiArCj4gPiArICAgICAgIGlmICghbWNmX2VkbWEtPm5fY2hhbnMpIHsK PiA+ICsgICAgICAgICAgICAgICBkZXZfaW5mbygmcGRldi0+ZGV2LCAic2V0dGluZyBkZWZhdWx0 IGNoYW5uZWwgbnVtYmVyIHRvIDY0Iik7Cj4gPiArICAgICAgICAgICAgICAgbWNmX2VkbWEtPm5f Y2hhbnMgPSA2NDsKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICBtdXRleF9pbml0KCZt Y2ZfZWRtYS0+ZnNsX2VkbWFfbXV0ZXgpOwo+ID4gKwo+ID4gKyAgICAgICByZXMgPSBwbGF0Zm9y bV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+ID4gKwo+ID4gKyAgICAg ICBtY2ZfZWRtYS0+bWVtYmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCBy ZXMpOwo+ID4gKyAgICAgICBpZiAoSVNfRVJSKG1jZl9lZG1hLT5tZW1iYXNlKSkKPiA+ICsgICAg ICAgICAgICAgICByZXR1cm4gUFRSX0VSUihtY2ZfZWRtYS0+bWVtYmFzZSk7Cj4gPiArCj4gPiAr ICAgICAgIGZzbF9lZG1hX3NldHVwX3JlZ3MobWNmX2VkbWEpOwo+ID4gKyAgICAgICByZWdzID0g Jm1jZl9lZG1hLT5yZWdzOwo+ID4gKwo+ID4gKyAgICAgICBJTklUX0xJU1RfSEVBRCgmbWNmX2Vk bWEtPmRtYV9kZXYuY2hhbm5lbHMpOwo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWNmX2Vk bWEtPm5fY2hhbnM7IGkrKykgewo+ID4gKyAgICAgICAgICAgICAgIHN0cnVjdCBmc2xfZWRtYV9j aGFuICptY2ZfY2hhbiA9ICZtY2ZfZWRtYS0+Y2hhbnNbaV07Cj4gPiArCj4gPiArICAgICAgICAg ICAgICAgbWNmX2NoYW4tPmVkbWEgPSBtY2ZfZWRtYTsKPiA+ICsgICAgICAgICAgICAgICBtY2Zf Y2hhbi0+c2xhdmVfaWQgPSBpOwo+ID4gKyAgICAgICAgICAgICAgIG1jZl9jaGFuLT5pZGxlID0g dHJ1ZTsKPiA+ICsgICAgICAgICAgICAgICBtY2ZfY2hhbi0+dmNoYW4uZGVzY19mcmVlID0gZnNs X2VkbWFfZnJlZV9kZXNjOwo+ID4gKyAgICAgICAgICAgICAgIHZjaGFuX2luaXQoJm1jZl9jaGFu LT52Y2hhbiwgJm1jZl9lZG1hLT5kbWFfZGV2KTsKPiA+ICsgICAgICAgICAgICAgICBpb3dyaXRl MzIoMHgwLCAmcmVncy0+dGNkW2ldLmNzcik7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAg ICAgaW93cml0ZTMyKH4wLCByZWdzLT5pbnRoKTsKPiA+ICsgICAgICAgaW93cml0ZTMyKH4wLCBy ZWdzLT5pbnRsKTsKPiA+ICsKPiA+ICsgICAgICAgcmV0ID0gbWNmX2VkbWFfaXJxX2luaXQocGRl diwgbWNmX2VkbWEpOwo+ID4gKyAgICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4gPiArCj4gPiArICAgICAgIGRtYV9jYXBfc2V0KERNQV9QUklWQVRFLCBtY2Zf ZWRtYS0+ZG1hX2Rldi5jYXBfbWFzayk7Cj4gPiArICAgICAgIGRtYV9jYXBfc2V0KERNQV9TTEFW RSwgbWNmX2VkbWEtPmRtYV9kZXYuY2FwX21hc2spOwo+ID4gKyAgICAgICBkbWFfY2FwX3NldChE TUFfQ1lDTElDLCBtY2ZfZWRtYS0+ZG1hX2Rldi5jYXBfbWFzayk7Cj4gPiArCj4gPiArICAgICAg IG1jZl9lZG1hLT5kbWFfZGV2LmRldiA9ICZwZGV2LT5kZXY7Cj4gPiArICAgICAgIG1jZl9lZG1h LT5kbWFfZGV2LmRldmljZV9hbGxvY19jaGFuX3Jlc291cmNlcyA9Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBmc2xfZWRtYV9hbGxvY19jaGFuX3Jlc291cmNlczsKPiA+ICsgICAgICAgbWNm X2VkbWEtPmRtYV9kZXYuZGV2aWNlX2ZyZWVfY2hhbl9yZXNvdXJjZXMgPQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgZnNsX2VkbWFfZnJlZV9jaGFuX3Jlc291cmNlczsKPiA+ICsgICAgICAg bWNmX2VkbWEtPmRtYV9kZXYuZGV2aWNlX2NvbmZpZyA9IGZzbF9lZG1hX3NsYXZlX2NvbmZpZzsK PiA+ICsgICAgICAgbWNmX2VkbWEtPmRtYV9kZXYuZGV2aWNlX3ByZXBfZG1hX2N5Y2xpYyA9Cj4g PiArICAgICAgICAgICAgICAgICAgICAgICBmc2xfZWRtYV9wcmVwX2RtYV9jeWNsaWM7Cj4gPiAr ICAgICAgIG1jZl9lZG1hLT5kbWFfZGV2LmRldmljZV9wcmVwX3NsYXZlX3NnID0gZnNsX2VkbWFf cHJlcF9zbGF2ZV9zZzsKPiA+ICsgICAgICAgbWNmX2VkbWEtPmRtYV9kZXYuZGV2aWNlX3R4X3N0 YXR1cyA9IGZzbF9lZG1hX3R4X3N0YXR1czsKPiA+ICsgICAgICAgbWNmX2VkbWEtPmRtYV9kZXYu ZGV2aWNlX3BhdXNlID0gZnNsX2VkbWFfcGF1c2U7Cj4gPiArICAgICAgIG1jZl9lZG1hLT5kbWFf ZGV2LmRldmljZV9yZXN1bWUgPSBmc2xfZWRtYV9yZXN1bWU7Cj4gPiArICAgICAgIG1jZl9lZG1h LT5kbWFfZGV2LmRldmljZV90ZXJtaW5hdGVfYWxsID0gZnNsX2VkbWFfdGVybWluYXRlX2FsbDsK PiA+ICsgICAgICAgbWNmX2VkbWEtPmRtYV9kZXYuZGV2aWNlX2lzc3VlX3BlbmRpbmcgPSBmc2xf ZWRtYV9pc3N1ZV9wZW5kaW5nOwo+ID4gKwo+ID4gKyAgICAgICBtY2ZfZWRtYS0+ZG1hX2Rldi5z cmNfYWRkcl93aWR0aHMgPSBGU0xfRURNQV9CVVNXSURUSFM7Cj4gPiArICAgICAgIG1jZl9lZG1h LT5kbWFfZGV2LmRzdF9hZGRyX3dpZHRocyA9IEZTTF9FRE1BX0JVU1dJRFRIUzsKPiA+ICsgICAg ICAgbWNmX2VkbWEtPmRtYV9kZXYuZGlyZWN0aW9ucyA9Cj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBCSVQoRE1BX0RFVl9UT19NRU0pIHwgQklUKERNQV9NRU1fVE9fREVWKTsKPiA+ICsKPiA+ ICsgICAgICAgbWNmX2VkbWEtPmRtYV9kZXYuZmlsdGVyLmZuID0gbWNmX2VkbWFfZmlsdGVyX2Zu Owo+ID4gKyAgICAgICBtY2ZfZWRtYS0+ZG1hX2Rldi5maWx0ZXIubWFwID0gcGRhdGEtPnNsYXZl X21hcDsKPiA+ICsgICAgICAgbWNmX2VkbWEtPmRtYV9kZXYuZmlsdGVyLm1hcGNudCA9IHBkYXRh LT5zbGF2ZWNudDsKPiA+ICsKPiA+ICsgICAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwg bWNmX2VkbWEpOwo+ID4gKwo+ID4gKyAgICAgICByZXQgPSBkbWFfYXN5bmNfZGV2aWNlX3JlZ2lz dGVyKCZtY2ZfZWRtYS0+ZG1hX2Rldik7Cj4gPiArICAgICAgIGlmIChyZXQpIHsKPiA+ICsgICAg ICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAiQ2FuJ3QgcmVnaXN0ZXIgRnJlZXNjYWxlIGVETUEgZW5naW5lLiAoJWQpXG4iLCByZXQpOwo+ ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsg ICAgICAgLyogRW5hYmxlIHJvdW5kIHJvYmluIGFyYml0cmF0aW9uICovCj4gPiArICAgICAgIGlv d3JpdGUzMihFRE1BX0NSX0VSR0EgfCBFRE1BX0NSX0VSQ0EsIHJlZ3MtPmNyKTsKPiA+ICsKPiA+ ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbWNmX2VkbWFf cmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiArewo+ID4gKyAgICAgICBz dHJ1Y3QgZnNsX2VkbWFfZW5naW5lICptY2ZfZWRtYSA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBk ZXYpOwo+ID4gKwo+ID4gKyAgICAgICBtY2ZfZWRtYV9pcnFfZnJlZShwZGV2LCBtY2ZfZWRtYSk7 Cj4gPiArICAgICAgIGZzbF9lZG1hX2NsZWFudXBfdmNoYW4oJm1jZl9lZG1hLT5kbWFfZGV2KTsK PiA+ICsgICAgICAgZG1hX2FzeW5jX2RldmljZV91bnJlZ2lzdGVyKCZtY2ZfZWRtYS0+ZG1hX2Rl dik7Cj4gPiArCj4gPiArICAgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtY2ZfZWRtYV9kcml2ZXIgPSB7Cj4gPiArICAgICAgIC5k cml2ZXIgICAgICAgICA9IHsKPiA+ICsgICAgICAgICAgICAgICAubmFtZSAgID0gIm1jZi1lZG1h IiwKPiA+ICsgICAgICAgfSwKPiA+ICsgICAgICAgLnByb2JlICAgICAgICAgID0gbWNmX2VkbWFf cHJvYmUsCj4gPiArICAgICAgIC5yZW1vdmUgICAgICAgICA9IG1jZl9lZG1hX3JlbW92ZSwKPiA+ ICt9Owo+ID4gKwo+ID4gK2Jvb2wgbWNmX2VkbWFfZmlsdGVyX2ZuKHN0cnVjdCBkbWFfY2hhbiAq Y2hhbiwgdm9pZCAqcGFyYW0pCj4gPiArewo+ID4gKyAgICAgICBpZiAoY2hhbi0+ZGV2aWNlLT5k ZXYtPmRyaXZlciA9PSAmbWNmX2VkbWFfZHJpdmVyLmRyaXZlcikgewo+ID4gKyAgICAgICAgICAg ICAgIHN0cnVjdCBmc2xfZWRtYV9jaGFuICptY2ZfY2hhbiA9IHRvX2ZzbF9lZG1hX2NoYW4oY2hh bik7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIChtY2ZfY2hhbi0+c2xhdmVfaWQg PT0gKGludClwYXJhbSk7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIGZh bHNlOwo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MKG1jZl9lZG1hX2ZpbHRlcl9mbik7Cj4gPiAr Cj4gPiArc3RhdGljIGludCBfX2luaXQgbWNmX2VkbWFfaW5pdCh2b2lkKQo+ID4gK3sKPiA+ICsg ICAgICAgcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmbWNmX2VkbWFfZHJpdmVyKTsK PiA+ICt9Cj4gPiArc3Vic3lzX2luaXRjYWxsKG1jZl9lZG1hX2luaXQpOwo+ID4gKwo+ID4gK3N0 YXRpYyB2b2lkIF9fZXhpdCBtY2ZfZWRtYV9leGl0KHZvaWQpCj4gPiArewo+ID4gKyAgICAgICBw bGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmbWNmX2VkbWFfZHJpdmVyKTsKPiA+ICt9Cj4gPiAr bW9kdWxlX2V4aXQobWNmX2VkbWFfZXhpdCk7Cj4gPiArCj4gPiArTU9EVUxFX0FMSUFTKCJwbGF0 Zm9ybTptY2YtZWRtYSIpOwo+ID4gK01PRFVMRV9ERVNDUklQVElPTigiRnJlZXNjYWxlIGVETUEg ZW5naW5lIGRyaXZlciwgQ29sZEZpcmUgZmFtaWx5Iik7Cj4gPiArTU9EVUxFX0xJQ0VOU0UoIkdQ TCB2MiIpOwo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEt bWNmLWVkbWEuaCBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtbWNmLWVkbWEuaAo+ ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uOWExODE5YWNi MjhmCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2Rh dGEvZG1hLW1jZi1lZG1hLmgKPiA+IEBAIC0wLDAgKzEsMzggQEAKPiA+ICsvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ID4gKy8qCj4gPiArICogRnJlZXNjYWxlIGVETUEg cGxhdGZvcm0gZGF0YSwgQ29sZEZpcmUgU29DJ3MgZmFtaWx5Lgo+ID4gKyAqCj4gPiArICogQ29w eXJpZ2h0IChjKSAyMDE3IEFuZ2VsbyBEdXJlZ2hlbGxvIDxhbmdlbG9Ac3lzYW0uaXQ+Cj4gPiAr ICoKPiA+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ID4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCj4gPiArICogcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gPiArICoKPiA+ICsgKiBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK PiA+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgo+ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiA+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpZm5kZWYgX19NQUNI X01DRl9FRE1BX0hfXwo+ID4gKyNkZWZpbmUgX19NQUNIX01DRl9FRE1BX0hfXwo+IAo+IFRoZSBn dWFyZCBzaG91bGQgcmF0aGVyIG1hdGNoIGN1cnJlbnQgbG9jYXRpb24sIGUuZy4KPiBfX0xJTlVY X1BMQVRGT1JNX0RBVEFfTUNGX0VETUFfSF9fCj4gCkFjay4KCj4gVGVzdGVkLWJ5OiBLcnp5c3p0 b2YgS296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+Cj4gCj4gQmVzdCByZWdhcmRzLAo+IEtyenlz enRvZgo+IC0tCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUg InVuc3Vic2NyaWJlIGRtYWVuZ2luZSIgaW4KPiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFq b3Jkb21vQHZnZXIua2VybmVsLm9yZwo+IE1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92 Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAoKUmVnYXJkcywKQW5nZWxvCi0tLQpU byB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUg ZG1hZW5naW5lIiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2Vy bmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21h am9yZG9tby1pbmZvLmh0bWwK