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: "Luck, Tony" Message-Id: <20181005222557.GA23762@agluck-desk> Date: Fri, 5 Oct 2018 15:25:57 -0700 To: Borislav Petkov , "Rafael J. Wysocki" Cc: Qiuxu Zhuo , Aristeu Rozanski , Mauro Carvalho Chehab , linux-edac@vger.kernel.org List-ID: UmFmYWVsOiBZb3UnZCBiZWNvbWUgdGhlIGRlY2lkaW5nIG1haW50YWluZXIgaWYgd2UgZm9sbG93 IHRoaXMKbmV3IGRpcmVjdGlvbi4KCk9uIFRodSwgT2N0IDA0LCAyMDE4IGF0IDExOjMxOjAxQU0g KzAyMDAsIEJvcmlzbGF2IFBldGtvdiB3cm90ZToKPiBTbyB0aGlzIHNvdW5kcyBsaWtlIGRyaXZl cnMvYWNwaS9hY3BpX2V4dGxvZy5jIHdoaWNoIHlvdSBndXlzIGRpZC4gSXMKPiB0aGF0IHRoaW5n IGJlaW5nIGFiYW5kb25lZCBub3cgdG9vLCBmb3IgeWV0IGFub3RoZXIgdGhpbmc/CgpJdCdzIGxp a2UgYWNwaV9leHRsb2cuYyBpbiB0aGF0IGl0IHVzZXMgYW4gQUNQSSBEU00uIEFsc28gcmVsYXRl ZAp0byBlcnJvciByZXBvcnRpbmcuICBObywgd2UgYXJlbid0IGFiYW5kb25pbmcgZXh0bG9nLCBi dXQgaXQgc2VlbXMKdGhhdCBmZXdlciBPRU1zIHRoYW4gd2UgaG9wZWQgYXJlIGFkb3B0aW5nIGVN Q0EgYW5kIGltcGxlbWVudGluZwp0aGUgZXh0ZW5kZWQgbG9nIGluIHRoZWlyIEJJT1MuCgo+IEFu ZCB0aGF0IGV4dGxvZyB0aGluZyBpcyB1bmRlciBkcml2ZXJzL2FjcGkvLiBTbyBldmVuIGlmIHRo ZSBEU00gc3R1ZmYKPiBpcyAqbWF5YmUqIGdvaW5nIHRvIGJlIHBhcnQgb2YgdGhlIEFDUEkgc3Bl YywgSSBiZWxpZXZlIGRyaXZlcnMvYWNwaS8gaXMKPiB3aGVyZSBpdCBzaG91bGQgZ28uIEFzIGlu OiBwcmVwYXJpbmcgdG8gYmVjb21lIHBhcnQgb2YgQUNQSSA6LSkKClRoYXQncyBhIGdvb2QgYXJn bWVudCBmb3IgbW92aW5nIGl0IHRoZXJlLgoKPiBCdXQsIHRoZXJlJ3MgYW5vdGhlciBhc3BlY3Q6 IGlzIHRoaXMgRFNNIGludGVyZmFjZSBnb2luZyB0byBiZSB1c2VkIG9ubHkKPiBieSBFREFDIG9y IHNvbWUgb3RoZXIgc3Vic3lzdGVtcz8gKEl0IHNlZW1zIHNvLikKClVuY2xlYXIgd2hvIGVsc2Ug bWlnaHQgd2FudCB0byB1c2UgdGhpcy4gIEkgc3Bva2UgdG8gYW4gaW50ZXJuYWwKdmFsaWRhdGlv biBndXkgKHdobyBpcyB0aGUgcGVyc29uIHdobyBtb3N0bHkgY2FtZSB1cCB3aXRoIHRoaXMKRFNN IGlkZWEpLiBIZSBoYXMgc29tZSBvdXQtb2YtdHJlZSBkcml2ZXIgdGhhdCBjYW4gY2FsbCBpbnRv IGFueQpEU00uIFNvIGl0IGlzIHVuY2xlYXIgd2hldGhlciBoZSdkIHdhbnQgdG8gdXNlIHdoYXRl dmVyIHdlIHdyaXRlLgpCdXQgaWYgdGhlcmUgYXJlIGdvaW5nIHRvIGJlIG90aGVyIHVzZXJzIHNv bWVkYXksIHRoZW4gdGhlIGludGVyZmFjZQpzaG91bGQgYmUgbGVzcyBFREFDIGZvY3Vzc2VkLgoK PiBCZWNhdXNlIGlmIGl0IGlzIGdvaW5nIHRvIGJlIHVzZWQgYnkgRURBQyBvbmx5IGFuZCBFREFD IGRyaXZlcnMgd2lsbAo+IHJlZy91bnJlZyB3aXRoIGl0LCB0aGVuIEkgZ3Vlc3MgbWFraW5nIGl0 IHBhcnQgb2YgdGhlIEVEQUMgY29yZSwgd291bGQKPiBwcm9iYWJseSBiZSBtb3JlIGZpdHRpbmcu IFNvbWV0aGluZyBsaWtlIGRyaXZlcnMvZWRhYy9kc20uYyBhbmQgdGhlbiB5b3UKPiBkb24ndCBo YXZlIHRvIGhhdmUgYW5vdGhlciBtb2R1bGUgd2hpY2ggbmVlZHMgdG8gc3luYyB3aXRoIHRoZSAq YWN0dWFsKgo+IEVEQUMgbW9kdWxlLi4uCgpUaGUgbW9kdWxlIHN5bmluZyBwYXJ0IGlzIHBhaW5m dWwvdWdseS4gIE1ha2luZyB0aGlzIGJ1aWx0LWluIHdvdWxkCmJlIGZhciBwcmV0dGllciAobW9y ZSBtYWludGFpbmFibGUpLgoKPiBQcmFjdGljYWxseSwgdGhpcyBpcyBnb2luZyB0byBiZSBlbmFi bGVkIG9uIDk5LjklIG9mIHRoZSBib3hlcyBzbyBtYWtpbmcKPiBpdCBwYXJ0IG9mIHRoZSBjb3Jl IGlzLCBJIGd1ZXNzLCBqdXN0IGFzIHdlbGwuCgpTbyBJIGRyb3BwZWQgUWl1eHUncyBjb2RlIGlu dG8gYSBibGVuZGVyIGFuZCByYW4gaXQgb24gaGlnaApmb3IgYSBmZXcgbWludXRlcy4gIEJlbG93 IGlzIGFuIFJGQyBwYXRjaCAoY29tcGlsZXMsIGJ1dApvdGhlcndpc2UgdW50ZXN0ZWQpIHRvIHNl ZSB3aGF0IHRoaW5ncyB3b3VsZCBsb29rcyBsaWtlIHdpdGgKYSBidWlsdCBpbiBBQ1BJIGJsb2Nr IHdpdGggbm8gcmVnaXN0cmF0aW9ucyB0byBFREFDIGNvcmUsIG9yCm90aGVyIHN0dWZmIHRoYXQg aXMgc3BlY2lmaWMgdG8gdGhlIEVEQUMgdXNhZ2UgbW9kZWwuCgpXaGVuIGl0IGZpbmRzIHRoZSBC SU9TIHN1cHBvcnQgdGhpcywgaXQgcHJvdmlkZXMgdGhyZWUgRVhQT1JUCm9iamVjdHM6CgoxKSBB IGNvdW50IG9mIGhvdyBtYW55IGFkZHJlc3MgY29tcG9uZW50cyBhcmUgcHJvdmlkZWQuCjIpIEEg ImNoYXIgKioiIHBvaW50ZXIgdG8gdGhlIHN0cmluZ3MgZm9yIHRob3NlIGNvbXBvbmVudHMKMykg QSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgc3lzdGVtIGFkZHJlc3MsIGFuZCBmaWxscyBpbiBhbgog ICBhcnJheSBvZiBjb21wb25lbnQgdmFsdWVzLgoKVGhlIGZpbmFsIHBhdGNoIHRvIHVwZGF0ZSBz a3hfZWRhYy5jIHdvdWxkIGhhdmUgdG8gYmUgdXBkYXRlZApmb3IgdGhlc2UgbmV3IGludGVyZmFj ZSBvcHRpb25zLiBCdXQgdGhhdCBzaG91bGRuJ3QgYmUgdG9vIGhhcmQuCgpIZXJlJ3MgdGhlIHBh dGNoIGZvciB0aGUgbmV3IEFDUEkgQURYTCBjb2RlOgotLS0KCiBkcml2ZXJzL2FjcGkvS2NvbmZp ZyAgICAgfCAgMTAgKysrCiBkcml2ZXJzL2FjcGkvTWFrZWZpbGUgICAgfCAgIDMgKwogZHJpdmVy cy9hY3BpL2FjcGlfYWR4bC5jIHwgMTU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogaW5jbHVkZS9saW51eC9hZHhsLmggICAgIHwgIDE4ICsrKysrCiA0IGZpbGVzIGNo YW5nZWQsIDE4NyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hY3Bp L2FjcGlfYWR4bC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9hZHhsLmgKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvS2NvbmZpZyBiL2RyaXZlcnMvYWNwaS9LY29uZmlnCmlu ZGV4IGRkMWVlYTkwZjY3Zi4uMzI3YzkzYjUxY2I3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkv S2NvbmZpZworKysgYi9kcml2ZXJzL2FjcGkvS2NvbmZpZwpAQCAtNDk4LDYgKzQ5OCwxNiBAQCBj b25maWcgQUNQSV9FWFRMT0cKIAkgIGRyaXZlciBhZGRzIHN1cHBvcnQgZm9yIHRoYXQgZnVuY3Rp b25hbGl0eSB3aXRoIGNvcnJlc3BvbmRpbmcKIAkgIHRyYWNlcG9pbnQgd2hpY2ggY2FycmllcyB0 aGF0IGluZm9ybWF0aW9uIHRvIHVzZXJzcGFjZS4KIAorY29uZmlnIEFDUElfQURYTAorCWJvb2wg IlBoeXNpY2FsIGFkZHJlc3MgdG8gRElNTSBhZGRyZXNzIHRyYW5zbGF0aW9uIgorCWRlZl9ib29s IG4KKwloZWxwCisJICBFbmFibGUgaW50ZXJmYWNlIHRoYXQgY2FsbHMgaW50byBCSU9TIHVzaW5n IGEgRFNNIChkZXZpY2UKKwkgIHNwZWNpZmljIG1ldGhvZCkgdG8gY29udmVydCBzeXN0ZW0gcGh5 c2ljYWwgYWRkcmVzc2VzCisJICB0byBESU1NIChzb2NrZXQsIGNoYW5uZWwsIHJhbmssIGRpbW0s IGV0Yy4pLgorCSAgT25seSBhdmFpbGFibGUgb24gc29tZSBzZXJ2ZXJzLgorCSAgVXNlZCBieSBu ZXdlciBFREFDIGRyaXZlcnMuCisKIG1lbnVjb25maWcgUE1JQ19PUFJFR0lPTgogCWJvb2wgIlBN SUMgKFBvd2VyIE1hbmFnZW1lbnQgSW50ZWdyYXRlZCBDaXJjdWl0KSBvcGVyYXRpb24gcmVnaW9u IHN1cHBvcnQiCiAJaGVscApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL01ha2VmaWxlIGIvZHJp dmVycy9hY3BpL01ha2VmaWxlCmluZGV4IDZkNTlhYTEwOWE5MS4uZWRjMDM5MzEzY2Q2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2FjcGkvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9hY3BpL01ha2VmaWxl CkBAIC02MSw2ICs2MSw5IEBAIGFjcGktJChDT05GSUdfQUNQSV9MUElUKQkrPSBhY3BpX2xwaXQu bwogYWNwaS0kKENPTkZJR19BQ1BJX0dFTkVSSUNfR1NJKSArPSBpcnEubwogYWNwaS0kKENPTkZJ R19BQ1BJX1dBVENIRE9HKQkrPSBhY3BpX3dhdGNoZG9nLm8KIAorIyBBZGRyZXNzIHRyYW5zbGF0 aW9uCithY3BpLSQoQ09ORklHX0FDUElfQURYTCkJKz0gYWNwaV9hZHhsLm8KKwogIyBUaGVzZSBh cmUgKHBvdGVudGlhbGx5KSBzZXBhcmF0ZSBtb2R1bGVzCiAKICMgSVBNSSBtYXkgYmUgdXNlZCBi eSBvdGhlciBkcml2ZXJzLCBzbyBpdCBoYXMgdG8gaW5pdGlhbGlzZSBiZWZvcmUgdGhlbQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9hY3BpL2FjcGlfYWR4bC5jIGIvZHJpdmVycy9hY3BpL2FjcGlfYWR4 bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTBlMDI2NjgwYzNk Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9hY3BpL2FjcGlfYWR4bC5jCkBAIC0wLDAgKzEs MTU2IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIEFkZHJl c3MgdHJhbnNsYXRpb24gaW50ZXJmYWNlIHZpYSBBQ1BJIERTTS4KKyAqIENvcHlyaWdodCAoQykg MjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZmRlZiBDT05GSUdfQUNQSV9BRFhMCisj aW5jbHVkZSA8bGludXgvYWNwaS5oPgorI2luY2x1ZGUgPGxpbnV4L2FkeGwuaD4KKworI2RlZmlu ZSBBRFhMX1JFVgkJCQkweDEKKyNkZWZpbmUgQURYTF9JRFhfR0VUX0FERFJfUEFSQU1TCQkweDEK KyNkZWZpbmUgQURYTF9JRFhfRk9SV0FSRF9UUkFOU0xBVEUJMHgyCisjZGVmaW5lIEFDUElfQURY TF9QQVRICQkJIlxcX1NCLkFEWEwiCisKKyN1bmRlZiBwcl9mbXQKKyNkZWZpbmUgcHJfZm10KGZt dCkgIkFEWEw6ICIgZm10CisKK3N0YXRpYyBhY3BpX2hhbmRsZSBoYW5kbGU7CitzdGF0aWMgdW5p b24gYWNwaV9vYmplY3QgKnBhcmFtczsKK3N0YXRpYyBjb25zdCBndWlkX3QgYWR4bF9ndWlkID0K KwlHVUlEX0lOSVQoMHhBQTNDMDUwQSwgMHg3RUE0LCAweDRDMUYsCisJCSAgMHhBRiwgMHhEQSwg MHgxMiwgMHg2NywgMHhERiwgMHhEMywgMHhENCwgMHg4RCk7CisKK2ludCBhZHhsX2NvdW50Owor RVhQT1JUX1NZTUJPTF9HUEwoYWR4bF9jb3VudCk7CisKK2NoYXIgKiphZHhsX2NvbXBvbmVudF9u YW1lczsKK0VYUE9SVF9TWU1CT0xfR1BMKGFkeGxfY29tcG9uZW50X25hbWVzKTsKKworc3RhdGlj IHVuaW9uIGFjcGlfb2JqZWN0ICphZHhsX2RzbShpbnQgY21kLCB1bmlvbiBhY3BpX29iamVjdCBh cmd2W10pCit7CisJdW5pb24gYWNwaV9vYmplY3QgKm9iaiwgKm87CisKKwlvYmogPSBhY3BpX2V2 YWx1YXRlX2RzbV90eXBlZChoYW5kbGUsICZhZHhsX2d1aWQsIEFEWExfUkVWLAorCQkJCSAgICAg IGNtZCwgYXJndiwgQUNQSV9UWVBFX1BBQ0tBR0UpOworCWlmICghb2JqKSB7CisJCXByX2RlYnVn KCJFbXB0eSBvYmpcbiIpOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAob2JqLT5wYWNrYWdlLmNv dW50ICE9IDIpIHsKKwkJcHJfZGVidWcoIkJhZCBwa2cgY250ICVkXG4iLCBvYmotPnBhY2thZ2Uu Y291bnQpOworCQlnb3RvIGVycjsKKwl9CisKKwlvID0gb2JqLT5wYWNrYWdlLmVsZW1lbnRzOwor CWlmIChvLT50eXBlICE9IEFDUElfVFlQRV9JTlRFR0VSKSB7CisJCXByX2RlYnVnKCJCYWQgMXN0 IGVsZW1lbnQgdHlwZSAlZFxuIiwgby0+dHlwZSk7CisJCWdvdG8gZXJyOworCX0KKwlpZiAoby0+ aW50ZWdlci52YWx1ZSkgeworCQlwcl9kZWJ1ZygiQmFkIHJldCB2YWwgJWxsdVxuIiwgby0+aW50 ZWdlci52YWx1ZSk7CisJCWdvdG8gZXJyOworCX0KKworCW8gPSBvYmotPnBhY2thZ2UuZWxlbWVu dHMgKyAxOworCWlmIChvLT50eXBlICE9IEFDUElfVFlQRV9QQUNLQUdFKSB7CisJCXByX2RlYnVn KCJCYWQgMm5kIGVsZW1lbnQgdHlwZSAlZFxuIiwgby0+dHlwZSk7CisJCWdvdG8gZXJyOworCX0K KwlyZXR1cm4gb2JqOworCitlcnI6CisJQUNQSV9GUkVFKG9iaik7CitvdXQ6CisJcmV0dXJuIG9i ajsKK30KKworaW50IGFkeGxfZGVjb2RlKHU2NCBhZGRyLCB1NjQgY29tcG9uZW50X3ZhbHVlc1td KQoreworCXVuaW9uIGFjcGlfb2JqZWN0IGFyZ3Y0WzJdLCAqcmVzdWx0cywgKnI7CisJaW50IGks IGNudDsKKworCWFyZ3Y0WzBdLnR5cGUgPSBBQ1BJX1RZUEVfUEFDS0FHRTsKKwlhcmd2NFswXS5w YWNrYWdlLmNvdW50ID0gMTsKKwlhcmd2NFswXS5wYWNrYWdlLmVsZW1lbnRzID0gJmFyZ3Y0WzFd OworCWFyZ3Y0WzFdLmludGVnZXIudHlwZSA9IEFDUElfVFlQRV9JTlRFR0VSOworCWFyZ3Y0WzFd LmludGVnZXIudmFsdWUgPSBhZGRyOworCisJcmVzdWx0cyA9IGFkeGxfZHNtKEFEWExfSURYX0ZP UldBUkRfVFJBTlNMQVRFLCBhcmd2NCk7CisKKwlpZiAoIXJlc3VsdHMpCisJCXJldHVybiAtRUlO VkFMOworCisJciA9IHJlc3VsdHMtPnBhY2thZ2UuZWxlbWVudHMgKyAxOworCWNudCA9IHItPnBh Y2thZ2UuY291bnQ7CisJciA9IHItPnBhY2thZ2UuZWxlbWVudHM7CisKKwlmb3IgKGkgPSAwOyBp IDwgY250OyBpKyspCisJCWNvbXBvbmVudF92YWx1ZXNbaV0gPSByW2ldLmludGVnZXIudmFsdWU7 CisKKwlBQ1BJX0ZSRUUocmVzdWx0cyk7CisKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0xf R1BMKGFkeGxfZGVjb2RlKTsKKworc3RhdGljIGJvb2wgYWR4bF9kZXRlY3Qodm9pZCkKK3sKKwlj aGFyICpwYXRoID0gQUNQSV9BRFhMX1BBVEg7CisJdW5pb24gYWNwaV9vYmplY3QgKnA7CisJYWNw aV9zdGF0dXMgc3RhdHVzOworCWludCBpLCBjbnQ7CisKKwlzdGF0dXMgPSBhY3BpX2dldF9oYW5k bGUoTlVMTCwgcGF0aCwgJmhhbmRsZSk7CisJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJ CXByX2RlYnVnKCJObyBBQ1BJIGhhbmRsZSBmb3IgcGF0aCAlc1xuIiwgcGF0aCk7CisJCXJldHVy biBmYWxzZTsKKwl9CisKKwlpZiAoIWFjcGlfaGFzX21ldGhvZChoYW5kbGUsICJfRFNNIikpIHsK KwkJcHJfZGVidWcoIk5vIERTTSBtZXRob2RcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJ aWYgKCFhY3BpX2NoZWNrX2RzbShoYW5kbGUsICZhZHhsX2d1aWQsIEFEWExfUkVWLAorCQkJICAg IEFEWExfSURYX0dFVF9BRERSX1BBUkFNUyB8CisJCQkgICAgQURYTF9JRFhfRk9SV0FSRF9UUkFO U0xBVEUpKSB7CisJCXByX2RlYnVnKCJObyBBRFhMIERTTSBtZXRob2RzXG4iKTsKKwkJcmV0dXJu IGZhbHNlOworCX0KKworCXBhcmFtcyA9IGFkeGxfZHNtKEFEWExfSURYX0dFVF9BRERSX1BBUkFN UywgTlVMTCk7CisJaWYgKCFwYXJhbXMpIHsKKwkJcHJfZGVidWcoIkZhaWxlZCB0byBnZXQgcGFy YW1zXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXAgPSBwYXJhbXMtPnBhY2thZ2UuZWxl bWVudHMgKyAxOworCWNudCA9IHAtPnBhY2thZ2UuY291bnQ7CisJcCA9IHAtPnBhY2thZ2UuZWxl bWVudHM7CisKKwlhZHhsX2NvbXBvbmVudF9uYW1lcyA9IGttYWxsb2NfYXJyYXkoY250LCBzaXpl b2YoY2hhciAqKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFhZHhsX2NvbXBvbmVudF9uYW1lcykgewor CQlBQ1BJX0ZSRUUocGFyYW1zKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWZvciAoaSA9IDA7 IGkgPCBjbnQ7IGkrKykKKwkJYWR4bF9jb21wb25lbnRfbmFtZXNbaV0gPSBwW2ldLnN0cmluZy5w b2ludGVyOworCisJYWR4bF9jb3VudCA9IGNudDsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0 aWMgaW50IF9faW5pdCBhZHhsX2luaXQodm9pZCkKK3sKKwlpZiAoIWFkeGxfZGV0ZWN0KCkpCisJ CXJldHVybiAtRU5PREVWOworCXJldHVybiAwOworfQorc3Vic3lzX2luaXRjYWxsKGFkeGxfaW5p dCk7CisKKyNlbmRpZiAvKiBDT05GSUdfQUNQSV9BRFhMICovCmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L2FkeGwuaCBiL2luY2x1ZGUvbGludXgvYWR4bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMTFkNjJiZDljYTNjCi0tLSAvZGV2L251bGwKKysrIGIvaW5j bHVkZS9saW51eC9hZHhsLmgKQEAgLTAsMCArMSwxOCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAgKi8KKy8qCisgKiBBZGRyZXNzIHRyYW5zbGF0aW9uIGludGVyZmFjZSB2 aWEgQUNQSSBEU00uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KKyAq LworCisjaWZkZWYgQ09ORklHX0FDUElfQURYTAoraW50IGFkeGxfY291bnQ7CitjaGFyICoqYWR4 bF9jb21wb25lbnRfbmFtZXM7CitpbnQgYWR4bF9kZWNvZGUodTY0IGFkZHIsIHU2NCBjb21wb25l bnRfdmFsdWVzW10pOworI2Vsc2UKKyNkZWZpbmUgYWR4bF9jb3VudCAwCisjZGVmaW5lIGFkeGxf Y29tcG9uZW50X25hbWVzIE5VTEwKK3N0YXRpYyBpbmxpbmUgaW50IGFkeGxfZGVjb2RlKHU2NCBh ZGRyLCB1NjQgY29tcG9uZW50X3ZhbHVlc1tdKQoreworCXJldHVybiAtRU9QTk9UU1VQUDsKK30K KyNlbmRpZgo=