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: [4/5] EDAC, dsm_edac: Wrap ACPI DSM methods for address translation From: "Rafael J. Wysocki" Message-Id: <1726357.kDa32Ds1Sc@aspire.rjw.lan> Date: Tue, 09 Oct 2018 12:28:54 +0200 To: "Luck, Tony" Cc: Borislav Petkov , Qiuxu Zhuo , Aristeu Rozanski , Mauro Carvalho Chehab , linux-edac@vger.kernel.org, linux-acpi@vger.kernel.org List-ID: T24gTW9uZGF5LCBPY3RvYmVyIDgsIDIwMTggNjo1NzowNiBQTSBDRVNUIEx1Y2ssIFRvbnkgd3Jv dGU6Cj4gQWRkZWQgbGludXgtYWNwaSBsaXN0IHRvIENjOgo+IAo+IE9uIFNhdCwgT2N0IDA2LCAy MDE4IGF0IDEwOjQ0OjU2UE0gKzAyMDAsIEJvcmlzbGF2IFBldGtvdiB3cm90ZToKPiA+IE9uIEZy aSwgT2N0IDA1LCAyMDE4IGF0IDAzOjI1OjU3UE0gLTA3MDAsIEx1Y2ssIFRvbnkgd3JvdGU6Cj4g PiA+IEl0J3MgbGlrZSBhY3BpX2V4dGxvZy5jIGluIHRoYXQgaXQgdXNlcyBhbiBBQ1BJIERTTS4g QWxzbyByZWxhdGVkCj4gPiA+IHRvIGVycm9yIHJlcG9ydGluZy4gIE5vLCB3ZSBhcmVuJ3QgYWJh bmRvbmluZyBleHRsb2csIGJ1dCBpdCBzZWVtcwo+ID4gPiB0aGF0IGZld2VyIE9FTXMgdGhhbiB3 ZSBob3BlZCBhcmUgYWRvcHRpbmcgZU1DQSBhbmQgaW1wbGVtZW50aW5nCj4gPiA+IHRoZSBleHRl bmRlZCBsb2cgaW4gdGhlaXIgQklPUy4KPiA+IAo+ID4gT2ssIGJ1dCB3aGF0IGlzIHRoZSBkaWZm ZXJlbmNlIHdpdGggdGhpcyBEU00gdGhpbmcgYW5kIHdoeSB3b3VsZCBPRU1zCj4gPiB1c2UgdGhh dD8gVGhleSBnZXQgaXQgZm9yIGZyZWUgZnJvbSB5b3U/IE9yPwo+IAo+IFRoaXMgc2hvdWxkbid0 IGNvbmZsaWN0IHdpdGggb3RoZXIgQklPUyAidmFsdWUgYWRkIiBjb2RlIGZvciBmaXJtd2FyZQo+ IGZpcnN0IG1vZGUsIGV0Yy4gCj4gCj4gWWVzLCB0aGV5IGdldCBpdCBmb3IgZnJlZSB3aXRoIHRo ZSByZWZlcmVuY2UvZXhhbXBsZSBCSU9TIGNvZGUuCj4gCj4gPiA+IFNvIEkgZHJvcHBlZCBRaXV4 dSdzIGNvZGUgaW50byBhIGJsZW5kZXIgYW5kIHJhbiBpdCBvbiBoaWdoCj4gPiA+IGZvciBhIGZl dyBtaW51dGVzLiAgQmVsb3cgaXMgYW4gUkZDIHBhdGNoIChjb21waWxlcywgYnV0Cj4gPiA+IG90 aGVyd2lzZSB1bnRlc3RlZCkgdG8gc2VlIHdoYXQgdGhpbmdzIHdvdWxkIGxvb2tzIGxpa2Ugd2l0 aAo+ID4gPiBhIGJ1aWx0IGluIEFDUEkgYmxvY2sgd2l0aCBubyByZWdpc3RyYXRpb25zIHRvIEVE QUMgY29yZSwgb3IKPiA+ID4gb3RoZXIgc3R1ZmYgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGUgRURB QyB1c2FnZSBtb2RlbC4KPiA+IAo+ID4gTG9va3MgbmljZSBhbmQgY2xlYW4gdG8gbWUuCj4gCj4g VGhhbmtzIQo+IAo+ID4gPiAraW50IGFkeGxfY291bnQ7Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQ TChhZHhsX2NvdW50KTsKPiA+IAo+ID4gVGhhdCdzIHRoZSBsZW5ndGggb2YgdGhlIGFkZHJlc3Mg Y29tcG9uZW50cyBhZHhsX2NvbXBvbmVudF9uYW1lcyBhcnJheT8KPiAKPiBZZXMuIEJ1dCBzZWUg YmVsb3cuCj4gCj4gPiA+ICtjaGFyICoqYWR4bF9jb21wb25lbnRfbmFtZXM7Cj4gPiA+ICtFWFBP UlRfU1lNQk9MX0dQTChhZHhsX2NvbXBvbmVudF9uYW1lcyk7Cj4gPiAKPiA+IEkgZ3Vlc3MgSSdt IHN0aWxsIHVuY2xlYXIgb24gaG93IHRoaXMgaXMgZ29pbmcgdG8gYmUgdXNlZC4uLgo+IAo+IENv bW1lbnRzIGFkZGVkIGluIG5ldyB2ZXJzaW9uIHRvIHNhdmUgcGVvcGxlIGZyb20gbWFpbGluZyBs aXN0Cj4gYXJjaGVvbG9neS4KPiAKPiA+IGFoYSwgdGhlIERTTSByZXBsaWVzIHdpdGggYSBidW5j aCBvZiBjb21wb25lbnRzIHdoaWNoIG1hcCB0byB0aGUgbmFtZXMKPiA+IGFuZCB0aGV5J2xsIGdl dCBmaWxsZWQgdXAgYnkgQklPUyBhbmQgdGhlIGRyaXZlciBzaW1wbHkgZHVtcHMgdGhlbS4KPiA+ IFNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcyBhdCBsZWFzdC4KPiA+IAo+ID4gU28geW91IGRv bid0IG5lZWQgY291bnQgaWYgeW91IE5VTEwtdGVybWluYXRlIHRoZSBuYW1lcyBhcnJheSwgcmln aHQ/Cj4gPiAKPiA+IFNvIHlvdSBjYW4gc2ltcGx5IGRvCj4gPiAKPiA+IAlrY2FsbG9jKGNudCAr IDEsIC4uLgo+ID4gCj4gPiBhbmQgdGhlIGxhc3QgZWxlbWVudCB3aWxsIGJlIE5VTEwuCj4gCj4g R29vZCBpZGVhLiBEb25lIGluIG5ldyB2ZXJzaW9uLCBhbmQgdGhlIEVYUE9SVF9TWU1CT0xfR1BM KGFkeGxfY291bnQpIGlzCj4gZ29uZS4KPiAKPiBTdGlsbCB1bnRlc3RlZCAuLi4gUWl1eHUsIGNh biB5b3UgdHJ5IHRoaXMgb3V0IHBsZWFzZS4KPiAKPiBSYWZhZWw6IERvZXMgdGhpcyBsb29rIGxp a2Ugc29tZXRoaW5nIHlvdSBjYW4gbWVyZ2UgKG9uY2Ugd2UKPiBjbGVhbiB1cCBhbnkgbWlub3Ig c3R5bGUgc3R1ZmYgeW91IGZpbmQpLgoKV2VsbCwgaXQgbG9va3MgcmVhc29uYWJsZSwgb25lIHF1 ZXN0aW9uIHRob3VnaCAoYmVsb3cpLgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL0tjb25m aWcgYi9kcml2ZXJzL2FjcGkvS2NvbmZpZwo+IGluZGV4IGRkMWVlYTkwZjY3Zi4uMzI3YzkzYjUx Y2I3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvYWNwaS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9h Y3BpL0tjb25maWcKPiBAQCAtNDk4LDYgKzQ5OCwxNiBAQCBjb25maWcgQUNQSV9FWFRMT0cKPiAg CSAgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdGhhdCBmdW5jdGlvbmFsaXR5IHdpdGggY29ycmVz cG9uZGluZwo+ICAJICB0cmFjZXBvaW50IHdoaWNoIGNhcnJpZXMgdGhhdCBpbmZvcm1hdGlvbiB0 byB1c2Vyc3BhY2UuCj4gIAo+ICtjb25maWcgQUNQSV9BRFhMCj4gKwlib29sICJQaHlzaWNhbCBh ZGRyZXNzIHRvIERJTU0gYWRkcmVzcyB0cmFuc2xhdGlvbiIKPiArCWRlZl9ib29sIG4KPiArCWhl bHAKPiArCSAgRW5hYmxlIGludGVyZmFjZSB0aGF0IGNhbGxzIGludG8gQklPUyB1c2luZyBhIERT TSAoZGV2aWNlCj4gKwkgIHNwZWNpZmljIG1ldGhvZCkgdG8gY29udmVydCBzeXN0ZW0gcGh5c2lj YWwgYWRkcmVzc2VzCj4gKwkgIHRvIERJTU0gKHNvY2tldCwgY2hhbm5lbCwgcmFuaywgZGltbSwg ZXRjLikuCj4gKwkgIE9ubHkgYXZhaWxhYmxlIG9uIHNvbWUgc2VydmVycy4KPiArCSAgVXNlZCBi eSBuZXdlciBFREFDIGRyaXZlcnMuCj4gKwoKSSB3b25kZXIgaWYgdGhlIGV4dHJhIGNvbmZpZyBv cHRpb24gaXMgcmVhbGx5IG5lZWRlZC4gIEkgZ3Vlc3MgaXQgaXMgdXNlZnVsCmZvciB0aGUgInRp bmlmaWNhdGlvbiIgcGVvcGxlLCBidXQgdGhlbiBjYW4gaXQgc2ltcGx5IGRlcGVuZCBvbiBzb21l dGhpbmcKZWxzZSB3ZSBhbHJlYWR5IGhhdmU/CgpEaXN0cm9zIHdpbGwgc2V0IGl0IHRvICJZIiBh bnl3YXkuCgo+ICBtZW51Y29uZmlnIFBNSUNfT1BSRUdJT04KPiAgCWJvb2wgIlBNSUMgKFBvd2Vy IE1hbmFnZW1lbnQgSW50ZWdyYXRlZCBDaXJjdWl0KSBvcGVyYXRpb24gcmVnaW9uIHN1cHBvcnQi Cj4gIAloZWxwCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9NYWtlZmlsZSBiL2RyaXZlcnMv YWNwaS9NYWtlZmlsZQo+IGluZGV4IDZkNTlhYTEwOWE5MS4uZWRjMDM5MzEzY2Q2IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvYWNwaS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvYWNwaS9NYWtlZmls ZQo+IEBAIC02MSw2ICs2MSw5IEBAIGFjcGktJChDT05GSUdfQUNQSV9MUElUKQkrPSBhY3BpX2xw aXQubwo+ICBhY3BpLSQoQ09ORklHX0FDUElfR0VORVJJQ19HU0kpICs9IGlycS5vCj4gIGFjcGkt JChDT05GSUdfQUNQSV9XQVRDSERPRykJKz0gYWNwaV93YXRjaGRvZy5vCj4gIAo+ICsjIEFkZHJl c3MgdHJhbnNsYXRpb24KPiArYWNwaS0kKENPTkZJR19BQ1BJX0FEWEwpCSs9IGFjcGlfYWR4bC5v Cj4gKwo+ICAjIFRoZXNlIGFyZSAocG90ZW50aWFsbHkpIHNlcGFyYXRlIG1vZHVsZXMKPiAgCj4g ICMgSVBNSSBtYXkgYmUgdXNlZCBieSBvdGhlciBkcml2ZXJzLCBzbyBpdCBoYXMgdG8gaW5pdGlh bGlzZSBiZWZvcmUgdGhlbQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYWNwaV9hZHhsLmMg Yi9kcml2ZXJzL2FjcGkvYWNwaV9hZHhsLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAwMDAwMC4uMDFkMmI0ZDA2NDMwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZl cnMvYWNwaS9hY3BpX2FkeGwuYwo+IEBAIC0wLDAgKzEsMTc5IEBACj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAqIEFkZHJlc3MgdHJhbnNsYXRpb24gaW50 ZXJmYWNlIHZpYSBBQ1BJIERTTS4KPiArICogQ29weXJpZ2h0IChDKSAyMDE4IEludGVsIENvcnBv cmF0aW9uCj4gKyAqLwo+ICsKPiArI2lmZGVmIENPTkZJR19BQ1BJX0FEWEwKPiArI2luY2x1ZGUg PGxpbnV4L2FjcGkuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2FkeGwuaD4KPiArCj4gKyNkZWZpbmUg QURYTF9SRVZJU0lPTgkJCTB4MQo+ICsjZGVmaW5lIEFEWExfSURYX0dFVF9BRERSX1BBUkFNUwkw eDEKPiArI2RlZmluZSBBRFhMX0lEWF9GT1JXQVJEX1RSQU5TTEFURQkweDIKPiArI2RlZmluZSBB Q1BJX0FEWExfUEFUSAkJCSJcXF9TQi5BRFhMIgoKSXQgd291bGQgYmUgZ29vZCB0byBhZGQgYSBj b21tZW50IHRvIHNheSB3aGVyZSB0aGUgQURYTCBvYmplY3QgaXMKZGVmaW5lZC4KCj4gKwo+ICsj dW5kZWYgcHJfZm10Cj4gKyNkZWZpbmUgcHJfZm10KGZtdCkgIkFEWEw6ICIgZm10Cj4gKwo+ICtz dGF0aWMgYWNwaV9oYW5kbGUgaGFuZGxlOwo+ICtzdGF0aWMgdW5pb24gYWNwaV9vYmplY3QgKnBh cmFtczsKPiArc3RhdGljIGNvbnN0IGd1aWRfdCBhZHhsX2d1aWQgPQo+ICsJR1VJRF9JTklUKDB4 QUEzQzA1MEEsIDB4N0VBNCwgMHg0QzFGLAo+ICsJCSAgMHhBRiwgMHhEQSwgMHgxMiwgMHg2Nywg MHhERiwgMHhEMywgMHhENCwgMHg4RCk7Cj4gKwo+ICtzdGF0aWMgY2hhciAqKmFkeGxfY29tcG9u ZW50X25hbWVzOwo+ICsKPiArc3RhdGljIHVuaW9uIGFjcGlfb2JqZWN0ICphZHhsX2RzbShpbnQg Y21kLCB1bmlvbiBhY3BpX29iamVjdCBhcmd2W10pCj4gK3sKPiArCXVuaW9uIGFjcGlfb2JqZWN0 ICpvYmosICpvOwo+ICsKPiArCW9iaiA9IGFjcGlfZXZhbHVhdGVfZHNtX3R5cGVkKGhhbmRsZSwg JmFkeGxfZ3VpZCwgQURYTF9SRVZJU0lPTiwKPiArCQkJCSAgICAgIGNtZCwgYXJndiwgQUNQSV9U WVBFX1BBQ0tBR0UpOwo+ICsJaWYgKCFvYmopIHsKPiArCQlwcl9kZWJ1ZygiRW1wdHkgb2JqXG4i KTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwlpZiAob2JqLT5wYWNrYWdlLmNvdW50ICE9 IDIpIHsKPiArCQlwcl9kZWJ1ZygiQmFkIHBrZyBjbnQgJWRcbiIsIG9iai0+cGFja2FnZS5jb3Vu dCk7Cj4gKwkJZ290byBlcnI7Cj4gKwl9Cj4gKwo+ICsJbyA9IG9iai0+cGFja2FnZS5lbGVtZW50 czsKPiArCWlmIChvLT50eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKSB7Cj4gKwkJcHJfZGVidWco IkJhZCAxc3QgZWxlbWVudCB0eXBlICVkXG4iLCBvLT50eXBlKTsKPiArCQlnb3RvIGVycjsKPiAr CX0KPiArCWlmIChvLT5pbnRlZ2VyLnZhbHVlKSB7Cj4gKwkJcHJfZGVidWcoIkJhZCByZXQgdmFs ICVsbHVcbiIsIG8tPmludGVnZXIudmFsdWUpOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsKPiAr CW8gPSBvYmotPnBhY2thZ2UuZWxlbWVudHMgKyAxOwo+ICsJaWYgKG8tPnR5cGUgIT0gQUNQSV9U WVBFX1BBQ0tBR0UpIHsKPiArCQlwcl9kZWJ1ZygiQmFkIDJuZCBlbGVtZW50IHR5cGUgJWRcbiIs IG8tPnR5cGUpOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ICsJcmV0dXJuIG9iajsKPiArCj4gK2Vy cjoKPiArCUFDUElfRlJFRShvYmopOwo+ICtvdXQ6Cj4gKwlyZXR1cm4gb2JqOwo+ICt9Cj4gKwo+ ICsvKioKPiArICogYWR4bF9nZXRfY29tcG9uZW50X25hbWVzIC0gZ2V0IGxpc3Qgb2YgbWVtb3J5 IGNvbXBvbmVudCBuYW1lcwo+ICsgKiBSZXR1cm5zIE5VTEwgdGVybWluYXRlZCBsaXN0IG9mIHN0 cmluZyBuYW1lcwo+ICsgKgo+ICsgKiBHaXZlIHRoZSBjYWxsZXIgYSBwb2ludGVyIHRvIHRoZSBs aXN0IG9mIG1lbW9yeSBjb21wb25lbnQgbmFtZXMKPiArICogZS5nLiB7ICJTeXN0ZW1BZGRyZXNz IiwgIlByb2Nlc3NvclNvY2tldElkIiwgIkNoYW5uZWxJZCIsIC4uLiBOVUxMIH0KPiArICogQ2Fs bGVyIHNob3VsZCBjb3VudCBob3cgbWFueSBzdHJpbmdzIGluIG9yZGVyIHRvIGFsbG9jYXRlIGEg YnVmZmVyCj4gKyAqIGZvciB0aGUgcmV0dXJuIGZyb20gYWR4bF9kZWNvZGUoKQo+ICsgKi8KPiAr Y2hhciAqKmFkeGxfZ2V0X2NvbXBvbmVudF9uYW1lcyh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gYWR4 bF9jb21wb25lbnRfbmFtZXM7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoYWR4bF9nZXRfY29t cG9uZW50X25hbWVzKTsKPiArCj4gKy8qKgo+ICsgKiBhZHhsX2RlY29kZSAtIGFzayBCSU9TIHRv IGRlY29kZSBhIHN5c3RlbSBhZGRyZXNzIHRvIG1lbW9yeSBhZGRyZXNzCj4gKyAqIEBhZGRyOiB0 aGUgYWRkcmVzcyB0byBkZWNvZGUKPiArICogQGNvbXBvbmVudF92YWx1ZXM6IHBvaW50ZXIgdG8g YXJyYXkgb2YgdmFsdWVzIGZvciBlYWNoIGNvbXBvbmVudAo+ICsgKiBSZXR1cm5zIDAgb24gc3Vj Y2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UKPiArICoKPiArICogVGhlIGluZGV4 IG9mIGVhY2ggdmFsdWUgcmV0dXJuZWQgaW4gdGhlIGFycmF5IG1hdGNoZXMgdGhlIGluZGV4IG9m Cj4gKyAqIGVhY2ggY29tcG9uZW50IG5hbWUgcmV0dXJuZWQgYnkgYWR4bF9nZXRfY29tcG9uZW50 X25hbWVzKCkuCj4gKyAqIENvbXBvbmVudHMgdGhhdCBhcmUgbm90IGRlZmluZWQgZm9yIHRoaXMg YWRkcmVzcyB0cmFuc2xhdGlvbiAoZS5nLgo+ICsgKiBtaXJyb3IgY2hhbm5lbCBudW1iZXIgZm9y IGEgbm9uLW1pcnJvcmVkIGFkZHJlc3MpIGFyZSBzZXQgdG8gfjB1bGwKPiArICovCj4gK2ludCBh ZHhsX2RlY29kZSh1NjQgYWRkciwgdTY0IGNvbXBvbmVudF92YWx1ZXNbXSkKPiArewo+ICsJdW5p b24gYWNwaV9vYmplY3QgYXJndjRbMl0sICpyZXN1bHRzLCAqcjsKPiArCWludCBpLCBjbnQ7Cj4g Kwo+ICsJaWYgKCFhZHhsX2NvbXBvbmVudF9uYW1lcykKPiArCQlyZXR1cm4gLUVPUE5PVFNVUFA7 Cj4gKwo+ICsJYXJndjRbMF0udHlwZSA9IEFDUElfVFlQRV9QQUNLQUdFOwo+ICsJYXJndjRbMF0u cGFja2FnZS5jb3VudCA9IDE7Cj4gKwlhcmd2NFswXS5wYWNrYWdlLmVsZW1lbnRzID0gJmFyZ3Y0 WzFdOwo+ICsJYXJndjRbMV0uaW50ZWdlci50eXBlID0gQUNQSV9UWVBFX0lOVEVHRVI7Cj4gKwlh cmd2NFsxXS5pbnRlZ2VyLnZhbHVlID0gYWRkcjsKPiArCj4gKwlyZXN1bHRzID0gYWR4bF9kc20o QURYTF9JRFhfRk9SV0FSRF9UUkFOU0xBVEUsIGFyZ3Y0KTsKPiArCj4gKwlpZiAoIXJlc3VsdHMp Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJciA9IHJlc3VsdHMtPnBhY2thZ2UuZWxlbWVu dHMgKyAxOwo+ICsJY250ID0gci0+cGFja2FnZS5jb3VudDsKPiArCXIgPSByLT5wYWNrYWdlLmVs ZW1lbnRzOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykKPiArCQljb21wb25lbnRf dmFsdWVzW2ldID0gcltpXS5pbnRlZ2VyLnZhbHVlOwo+ICsKPiArCUFDUElfRlJFRShyZXN1bHRz KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChhZHhsX2RlY29k ZSk7Cj4gKwo+ICtzdGF0aWMgYm9vbCBhZHhsX2RldGVjdCh2b2lkKQo+ICt7Cj4gKwljaGFyICpw YXRoID0gQUNQSV9BRFhMX1BBVEg7Cj4gKwl1bmlvbiBhY3BpX29iamVjdCAqcDsKPiArCWFjcGlf c3RhdHVzIHN0YXR1czsKPiArCWludCBpLCBjbnQ7Cj4gKwo+ICsJc3RhdHVzID0gYWNwaV9nZXRf aGFuZGxlKE5VTEwsIHBhdGgsICZoYW5kbGUpOwo+ICsJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMp KSB7Cj4gKwkJcHJfZGVidWcoIk5vIEFDUEkgaGFuZGxlIGZvciBwYXRoICVzXG4iLCBwYXRoKTsK PiArCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFhY3BpX2hhc19tZXRob2QoaGFu ZGxlLCAiX0RTTSIpKSB7Cj4gKwkJcHJfZGVidWcoIk5vIERTTSBtZXRob2RcbiIpOwo+ICsJCXJl dHVybiBmYWxzZTsKPiArCX0KPiArCj4gKwlpZiAoIWFjcGlfY2hlY2tfZHNtKGhhbmRsZSwgJmFk eGxfZ3VpZCwgQURYTF9SRVZJU0lPTiwKPiArCQkJICAgIEFEWExfSURYX0dFVF9BRERSX1BBUkFN UyB8Cj4gKwkJCSAgICBBRFhMX0lEWF9GT1JXQVJEX1RSQU5TTEFURSkpIHsKPiArCQlwcl9kZWJ1 ZygiTm8gQURYTCBEU00gbWV0aG9kc1xuIik7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsK PiArCXBhcmFtcyA9IGFkeGxfZHNtKEFEWExfSURYX0dFVF9BRERSX1BBUkFNUywgTlVMTCk7Cj4g KwlpZiAoIXBhcmFtcykgewo+ICsJCXByX2RlYnVnKCJGYWlsZWQgdG8gZ2V0IHBhcmFtc1xuIik7 Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCXAgPSBwYXJhbXMtPnBhY2thZ2UuZWxl bWVudHMgKyAxOwo+ICsJY250ID0gcC0+cGFja2FnZS5jb3VudDsKPiArCXAgPSBwLT5wYWNrYWdl LmVsZW1lbnRzOwo+ICsKPiArCWFkeGxfY29tcG9uZW50X25hbWVzID0ga2NhbGxvYyhjbnQgKyAx LCBzaXplb2YoY2hhciAqKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWFkeGxfY29tcG9uZW50X25h bWVzKSB7Cj4gKwkJQUNQSV9GUkVFKHBhcmFtcyk7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ ICsKPiArCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykKPiArCQlhZHhsX2NvbXBvbmVudF9uYW1l c1tpXSA9IHBbaV0uc3RyaW5nLnBvaW50ZXI7Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgX19pbml0IGFkeGxfaW5pdCh2b2lkKQo+ICt7Cj4gKwlpZiAoIWFkeGxf ZGV0ZWN0KCkpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICtzdWJz eXNfaW5pdGNhbGwoYWR4bF9pbml0KTsKPiArCj4gKyNlbmRpZiAvKiBDT05GSUdfQUNQSV9BRFhM ICovCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYWR4bC5oIGIvaW5jbHVkZS9saW51eC9h ZHhsLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTZkMzU2 YTA2ZThiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvbGludXgvYWR4bC5oCj4gQEAg LTAsMCArMSwyNSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ ICsvKgo+ICsgKiBBZGRyZXNzIHRyYW5zbGF0aW9uIGludGVyZmFjZSB2aWEgQUNQSSBEU00uCj4g KyAqIENvcHlyaWdodCAoQykgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNp Zm5kZWYgX0xJTlVYX0FEWExfSAo+ICsjZGVmaW5lIF9MSU5VWF9BRFhMX0gKPiArCj4gKyNpZmRl ZiBDT05GSUdfQUNQSV9BRFhMCj4gK2NoYXIgKiphZHhsX2dldF9jb21wb25lbnRfbmFtZXModm9p ZCk7Cj4gK2ludCBhZHhsX2RlY29kZSh1NjQgYWRkciwgdTY0IGNvbXBvbmVudF92YWx1ZXNbXSk7 Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxpbmUgY2hhciAqKmFkeGxfZ2V0X2NvbXBvbmVudF9uYW1l cyh2b2lkKQo+ICt7Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBp bnQgYWR4bF9kZWNvZGUodTY0IGFkZHIsIHU2NCBjb21wb25lbnRfdmFsdWVzW10pCj4gK3sKPiAr CXJldHVybiAtRU9QTk9UU1VQUDsKPiArfQo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZiAvKiBfTElO VVhfQURYTF9IICovCj4K