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: <20180924201613.14070-5-tony.luck@intel.com> Date: Mon, 24 Sep 2018 13:16:12 -0700 To: Borislav Petkov Cc: Qiuxu Zhuo , Tony Luck , Aristeu Rozanski , Mauro Carvalho Chehab , linux-edac@vger.kernel.org List-ID: RnJvbTogUWl1eHUgWmh1byA8cWl1eHUuemh1b0BpbnRlbC5jb20+CgpTb21lIG1hY2hpbmVzIHBy b3ZpZGUgQklPUyBBQ1BJIERTTSAoRGV2aWNlIFNwZWNpZmljIE1ldGhvZCkKdG8gdHJhbnNsYXRl IG1lbW9yeSBzeXN0ZW0gYWRkcmVzcyB0byBEUkFNIGFkZHJlc3MgKHNvY2tldCwgbWVtb3J5CmNv bnRyb2xsZXIsIGNoYW5uZWwsIHJhbmssIGJhbmssIHJvdywgY29sdW1uKS4gVGhpcyBwYXRjaCB3 cmFwcwp0aGUgRFNNIG1ldGhvZHMsIGFuZCByZWdpc3RlcnMgdGhlbSB0byBFREFDIGNvcmUuCgpT cGVjaWZpY2F0aW9uIGZvciB0aGlzIHRyYW5zbGF0aW9uIG1ldGhvZCBpcyBhdDoKCglodHRwczov L2NkcmR2Mi5pbnRlbC5jb20vdjEvZGwvZ2V0Q29udGVudC82MDMzNTQKClNpZ25lZC1vZmYtYnk6 IFFpdXh1IFpodW8gPHFpdXh1LnpodW9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUb255IEx1 Y2sgPHRvbnkubHVja0BpbnRlbC5jb20+Ci0tLQoKVGhlIHNwZWNpZmljYXRpb24gaXMgY3VycmVu dGx5IGJlaGluZCBhIGNsaWNrLXRocm91Z2ggbGljZW5zZS4gSSdsbCBzZWUKaWYgSSBjYW4gZ2V0 IHRoYXQgZml4ZWQuCgogZHJpdmVycy9lZGFjL0tjb25maWcgICAgfCAgIDkgKysKIGRyaXZlcnMv ZWRhYy9NYWtlZmlsZSAgIHwgICAxICsKIGRyaXZlcnMvZWRhYy9kc21fZWRhYy5jIHwgMjIzICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZWRhYy9lZGFj X21jLmMgIHwgIDM2ICsrKysrKysKIGRyaXZlcnMvZWRhYy9lZGFjX21jLmggIHwgIDY0ICsrKysr KysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAzMzMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZWRhYy9kc21fZWRhYy5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFj L0tjb25maWcgYi9kcml2ZXJzL2VkYWMvS2NvbmZpZwppbmRleCA1NzMwNGIyZTk4OWYuLjFiMmUw YWU2MTU4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL0tjb25maWcKKysrIGIvZHJpdmVycy9l ZGFjL0tjb25maWcKQEAgLTIyMiw2ICsyMjIsMTUgQEAgY29uZmlnIEVEQUNfSTczMDAKIAkgIFN1 cHBvcnQgZm9yIGVycm9yIGRldGVjdGlvbiBhbmQgY29ycmVjdGlvbiB0aGUgSW50ZWwKIAkgIENs YXJrc2Jvcm8gTUNIIChJbnRlbCA3MzAwIGNoaXBzZXQpLgogCitjb25maWcgRURBQ19EU00KKwl0 cmlzdGF0ZSAiQWRkcmVzcyB0cmFuc2xhdGlvbiBpbnRlcmZhY2UgdmlhIEFDUEkgRFNNIgorCWRl cGVuZHMgb24gWDg2XzY0ICYmIEFDUEkKKwloZWxwCisJICBTb21lIG9mIG1hY2hpbmVzIHByb3Zp ZGUgQklPUyBBQ1BJIERTTSAoRGV2aWNlIFNwZWNpZmljIE1ldGhvZCkKKwkgIHRvIHRyYW5zbGF0 ZSBtZW1vcnkgc3lzdGVtIGFkZHJlc3MgdG8gRFJBTSBhZGRyZXNzIChzb2NrZXQsIG1lbW9yeQor CSAgY29udHJvbGxlciwgY2hhbm5lbCwgcmFuaywgYmFuaywgcm93LCBjb2x1bW4pLiBCeSBlbmFi bGluZyB0aGlzCisJICBvcHRpb24sIHRoZSB3cmFwcGVkIERTTSBtZXRob2RzIGFyZSByZWdpc3Rl cmVkIHRvIEVEQUMgY29yZS4KKwogY29uZmlnIEVEQUNfU0JSSURHRQogCXRyaXN0YXRlICJJbnRl bCBTYW5keS1CcmlkZ2UvSXZ5LUJyaWRnZS9IYXN3ZWxsIEludGVncmF0ZWQgTUMiCiAJZGVwZW5k cyBvbiBQQ0kgJiYgWDg2XzY0ICYmIFg4Nl9NQ0VfSU5URUwgJiYgUENJX01NQ09ORklHCmRpZmYg LS1naXQgYS9kcml2ZXJzL2VkYWMvTWFrZWZpbGUgYi9kcml2ZXJzL2VkYWMvTWFrZWZpbGUKaW5k ZXggMDJiNDNhN2Q4YzNlLi4wMjM4YzkxMjc3MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9N YWtlZmlsZQorKysgYi9kcml2ZXJzL2VkYWMvTWFrZWZpbGUKQEAgLTI5LDYgKzI5LDcgQEAgb2Jq LSQoQ09ORklHX0VEQUNfSTUxMDApCQkrPSBpNTEwMF9lZGFjLm8KIG9iai0kKENPTkZJR19FREFD X0k1NDAwKQkJKz0gaTU0MDBfZWRhYy5vCiBvYmotJChDT05GSUdfRURBQ19JNzMwMCkJCSs9IGk3 MzAwX2VkYWMubwogb2JqLSQoQ09ORklHX0VEQUNfSTdDT1JFKQkJKz0gaTdjb3JlX2VkYWMubwor b2JqLSQoQ09ORklHX0VEQUNfRFNNKQkJCSs9IGRzbV9lZGFjLm8KIG9iai0kKENPTkZJR19FREFD X1NCUklER0UpCQkrPSBzYl9lZGFjLm8KIG9iai0kKENPTkZJR19FREFDX1NLWCkJCQkrPSBza3hf ZWRhYy5vCiBvYmotJChDT05GSUdfRURBQ19QTkQyKQkJCSs9IHBuZDJfZWRhYy5vCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2VkYWMvZHNtX2VkYWMuYyBiL2RyaXZlcnMvZWRhYy9kc21fZWRhYy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWUxOGQzZDFjNDM4Ci0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9lZGFjL2RzbV9lZGFjLmMKQEAgLTAsMCArMSwyMjMgQEAK Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogQWRkcmVzcyB0cmFu c2xhdGlvbiBpbnRlcmZhY2UgdmlhIEFDUEkgRFNNLgorICogQ29weXJpZ2h0IChDKSAyMDE4IElu dGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KKyNpbmNsdWRl ICJlZGFjX21vZHVsZS5oIgorI2luY2x1ZGUgImVkYWNfbWMuaCIKKworI2RlZmluZSBEU01fUkVW CQkJCTB4MQorI2RlZmluZSBEU01fSURYX0dFVF9BRERSX1BBUkFNUwkJMHgxCisjZGVmaW5lIERT TV9JRFhfRk9SV0FSRF9UUkFOU0xBVEUJMHgyCisjZGVmaW5lIEFDUElfQURYTF9QQVRICQkJIlxc X1NCLkFEWEwiCisjZGVmaW5lIE1BWF9QQVJBTVMJCQkzMQorCisjZGVmaW5lIGRzbV9wcmludGso bGV2ZWwsIGZtdCwgYXJnLi4uKQlcCisJZWRhY19wcmludGsobGV2ZWwsICJkc20iLCBmbXQsICMj YXJnKQorCitzdGF0aWMgYWNwaV9oYW5kbGUgaGFuZGxlOworc3RhdGljIHVuaW9uIGFjcGlfb2Jq ZWN0ICpwYXJhbXM7CitzdGF0aWMgY29uc3QgZ3VpZF90IGRzbV9ndWlkID0gR1VJRF9JTklUKDB4 QUEzQzA1MEEsIDB4N0VBNCwgMHg0QzFGLCAweEFGLCAweERBLAorCQkJCQkgMHgxMiwgMHg2Nywg MHhERiwgMHhEMywgMHhENCwgMHg4RCk7CisKK3N0YXRpYyBpbnQgZHNtX2FkeGxfY2hlY2tfb2Jq KHVuaW9uIGFjcGlfb2JqZWN0ICpvYmopCit7CisJdW5pb24gYWNwaV9vYmplY3QgKm87CisKKwlp ZiAoIW9iaikgeworCQlkc21fcHJpbnRrKEtFUk5fRVJSLCAiRW1wdHkgb2JqXG4iKTsKKwkJcmV0 dXJuIC1FTk9ERVY7CisJfQorCisJaWYgKG9iai0+cGFja2FnZS5jb3VudCAhPSAyKSB7CisJCWRz bV9wcmludGsoS0VSTl9FUlIsICJCYWQgcGtnIGNudCAlZFxuIiwgb2JqLT5wYWNrYWdlLmNvdW50 KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJbyA9IG9iai0+cGFja2FnZS5lbGVtZW50czsK KwlpZiAoby0+dHlwZSAhPSBBQ1BJX1RZUEVfSU5URUdFUikgeworCQlkc21fcHJpbnRrKEtFUk5f RVJSLCAiQmFkIDFzdCBlbGVtZW50IHR5cGUgJWRcbiIsIG8tPnR5cGUpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisJaWYgKG8tPmludGVnZXIudmFsdWUpIHsKKwkJZHNtX3ByaW50ayhLRVJOX0VS UiwgIkJhZCByZXQgdmFsICVsbHVcbiIsIG8tPmludGVnZXIudmFsdWUpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwlvID0gb2JqLT5wYWNrYWdlLmVsZW1lbnRzICsgMTsKKwlpZiAoby0+dHlw ZSAhPSBBQ1BJX1RZUEVfUEFDS0FHRSkgeworCQlkc21fcHJpbnRrKEtFUk5fRVJSLCAiQmFkIDJu ZCBlbGVtZW50IHR5cGUgJWRcbiIsIG8tPnR5cGUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVuaW9uIGFjcGlfb2JqZWN0ICpfZHNtX2FkeGxfZ2V0 X3BhcmFtcyh2b2lkKQoreworCXVuaW9uIGFjcGlfb2JqZWN0ICpvYmo7CisKKwlvYmogPSBhY3Bp X2V2YWx1YXRlX2RzbV90eXBlZChoYW5kbGUsICZkc21fZ3VpZCwgRFNNX1JFViwKKwkJCQkgICAg ICBEU01fSURYX0dFVF9BRERSX1BBUkFNUywKKwkJCQkgICAgICBOVUxMLCBBQ1BJX1RZUEVfUEFD S0FHRSk7CisKKwlpZiAoZHNtX2FkeGxfY2hlY2tfb2JqKG9iaikpIHsKKwkJQUNQSV9GUkVFKG9i aik7CisJCXJldHVybiBOVUxMOworCX0KKworCXJldHVybiBvYmo7Cit9CisKK3N0YXRpYyBpbnQg ZHNtX2FkeGxfY2hlY2soY2hhciBjb21wb25lbnRfbmFtZXNbXVszMl0sCisJCQkgIGludCBjb21w b25lbnRfaW5kaWNlc1tdKQoreworCXVuaW9uIGFjcGlfb2JqZWN0ICpwOworCWludCBpLCBqLCBj bnQ7CisKKwlwID0gcGFyYW1zLT5wYWNrYWdlLmVsZW1lbnRzICsgMTsKKwljbnQgPSBtaW5fdCh1 MzIsIHAtPnBhY2thZ2UuY291bnQsIE1BWF9QQVJBTVMpOworCXAgPSBwLT5wYWNrYWdlLmVsZW1l bnRzOworCisJZm9yIChpID0gMDsgaSA8IE1BWF9QQVJBTVMgJiYgY29tcG9uZW50X25hbWVzW2ld WzBdOyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IGNudDsgaisrKSB7CisJCQlpZiAoIXN0cmNt cChjb21wb25lbnRfbmFtZXNbaV0sIHBbal0uc3RyaW5nLnBvaW50ZXIpKSB7CisJCQkJY29tcG9u ZW50X2luZGljZXNbaV0gPSBqOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmIChqID09IGNu dCkKKwkJCWdvdG8gZXJyOworCX0KKwljb21wb25lbnRfaW5kaWNlc1tpXSA9IC0xOworCisJcmV0 dXJuIDA7CitlcnI6CisJZHNtX3ByaW50ayhLRVJOX0VSUiwgIiclcycgaXMgbm90IG1hdGNoZWQg ZnJvbSBEU00gcGFyYW1ldGVyczoiLAorCQkgICBjb21wb25lbnRfbmFtZXNbaV0pOworCWZvciAo aiA9IDA7IGogPCBjbnQ7IGorKykKKwkJZHNtX3ByaW50ayhLRVJOX0NPTlQsICIgJXMiLCBwW2pd LnN0cmluZy5wb2ludGVyKTsKKwlkc21fcHJpbnRrKEtFUk5fQ09OVCwgIlxuIik7CisKKwlyZXR1 cm4gLUVOT0RFVjsKK30KKworc3RhdGljIGludCBkc21fYWR4bF9kZWNvZGUodTY0IGFkZHIsIGNo YXIgKm1zZywgaW50IG1zZ2xlbiwKKwkJCSAgIGludCBjb21wb25lbnRfaW5kaWNlc1tdLCAuLi4p CisKK3sKKwl1bmlvbiBhY3BpX29iamVjdCBhcmd2NFsyXSwgKnJlc3VsdHMsICpyLCAqcDsKKwlp bnQgaSwgcmMsIGNudCwgbGVuID0gMDsKKwl2YV9saXN0IGFwOworCXU2NCAqdmFscDsKKworCXZh X3N0YXJ0KGFwLCBjb21wb25lbnRfaW5kaWNlcyk7CisJYXJndjRbMF0udHlwZSA9IEFDUElfVFlQ RV9QQUNLQUdFOworCWFyZ3Y0WzBdLnBhY2thZ2UuY291bnQgPSAxOworCWFyZ3Y0WzBdLnBhY2th Z2UuZWxlbWVudHMgPSAmYXJndjRbMV07CisJYXJndjRbMV0uaW50ZWdlci50eXBlID0gQUNQSV9U WVBFX0lOVEVHRVI7CisJYXJndjRbMV0uaW50ZWdlci52YWx1ZSA9IGFkZHI7CisKKwlyZXN1bHRz ID0gYWNwaV9ldmFsdWF0ZV9kc21fdHlwZWQoaGFuZGxlLCAmZHNtX2d1aWQsIERTTV9SRVYsCisJ CQkJCSAgRFNNX0lEWF9GT1JXQVJEX1RSQU5TTEFURSwgYXJndjQsCisJCQkJCSAgQUNQSV9UWVBF X1BBQ0tBR0UpOworCisJcmMgPSBkc21fYWR4bF9jaGVja19vYmoocmVzdWx0cyk7CisJaWYgKHJj KQorCQlnb3RvIGVuZDsKKworCXIgPSByZXN1bHRzLT5wYWNrYWdlLmVsZW1lbnRzICsgMTsKKwlw ID0gcGFyYW1zLT5wYWNrYWdlLmVsZW1lbnRzICsgMTsKKwljbnQgPSBtaW5fdCh1MzIsIG1pbihw LT5wYWNrYWdlLmNvdW50LCByLT5wYWNrYWdlLmNvdW50KSwgTUFYX1BBUkFNUyk7CisJciA9IHIt PnBhY2thZ2UuZWxlbWVudHM7CisJcCA9IHAtPnBhY2thZ2UuZWxlbWVudHM7CisKKwlmb3IgKGkg PSAwOyBpIDwgTUFYX1BBUkFNUyAmJiBjb21wb25lbnRfaW5kaWNlc1tpXSAhPSAtMTsgaSsrKSB7 CisJCXZhbHAgPSB2YV9hcmcoYXAsIHU2NCAqKTsKKwkJKnZhbHAgPSByW2NvbXBvbmVudF9pbmRp Y2VzW2ldXS5pbnRlZ2VyLnZhbHVlOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykg eworCQlpZiAocltpXS5pbnRlZ2VyLnZhbHVlID09IC0xKQorCQkJY29udGludWU7CisKKwkJbGVu ICs9IHNucHJpbnRmKG1zZyArIGxlbiwgbXNnbGVuIC0gbGVuLCAiICVzOjB4JWxseCIsCisJCQkJ cFtpXS5zdHJpbmcucG9pbnRlciwgcltpXS5pbnRlZ2VyLnZhbHVlKTsKKworCQlpZiAobXNnbGVu IC0gbGVuIDw9IDApCisJCQlicmVhazsKKwl9CisKK2VuZDoKKwlBQ1BJX0ZSRUUocmVzdWx0cyk7 CisJdmFfZW5kKGFwKTsKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBib29sIGRzbV9hZHhsX2Rl dGVjdCh2b2lkKQoreworCWNoYXIgKnBhdGggPSBBQ1BJX0FEWExfUEFUSDsKKwlhY3BpX3N0YXR1 cyBzdGF0dXM7CisKKwlzdGF0dXMgPSBhY3BpX2dldF9oYW5kbGUoTlVMTCwgcGF0aCwgJmhhbmRs ZSk7CisJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJCWRzbV9wcmludGsoS0VSTl9FUlIs ICJObyBBQ1BJIGhhbmRsZSBmb3IgcGF0aCAlc1xuIiwgcGF0aCk7CisJCXJldHVybiBmYWxzZTsK Kwl9CisKKwlpZiAoIWFjcGlfaGFzX21ldGhvZChoYW5kbGUsICJfRFNNIikpIHsKKwkJZHNtX3By aW50ayhLRVJOX0VSUiwgIk5vIERTTSBtZXRob2RcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQor CisJaWYgKCFhY3BpX2NoZWNrX2RzbShoYW5kbGUsICZkc21fZ3VpZCwgRFNNX1JFViwKKwkJCSAg ICBEU01fSURYX0dFVF9BRERSX1BBUkFNUyB8CisJCQkgICAgRFNNX0lEWF9GT1JXQVJEX1RSQU5T TEFURSkpIHsKKwkJZHNtX3ByaW50ayhLRVJOX0VSUiwgIk5vIEFEWEwgRFNNIG1ldGhvZHNcbiIp OworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcGFyYW1zID0gX2RzbV9hZHhsX2dldF9wYXJhbXMo KTsKKwlpZiAoIXBhcmFtcykgeworCQlkc21fcHJpbnRrKEtFUk5fRVJSLCAiRmFpbGVkIHRvIGdl dCBwYXJhbXNcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWRhY19kc21fb3BlcmF0aW9ucyBkc21fb3BzID0geworCS5j aGVjawk9IGRzbV9hZHhsX2NoZWNrLAorCS5kZWNvZGUJPSBkc21fYWR4bF9kZWNvZGUsCisJLm93 bmVyCT0gVEhJU19NT0RVTEUsCit9OworCitzdGF0aWMgaW50IF9faW5pdCBkc21faW5pdCh2b2lk KQoreworCWVkYWNfZGJnKDIsICJcbiIpOworCisJaWYgKCFkc21fYWR4bF9kZXRlY3QoKSkKKwkJ cmV0dXJuIC1FTk9ERVY7CisKKwllZGFjX2RzbV9yZWdpc3Rlcl9vcHMoJmRzbV9vcHMpOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBkc21fZXhpdCh2b2lkKQoreworCWVk YWNfZGJnKDIsICJcbiIpOworCisJZWRhY19kc21fdW5yZWdpc3Rlcl9vcHMoJmRzbV9vcHMpOwor CisJQUNQSV9GUkVFKHBhcmFtcyk7Cit9CisKK21vZHVsZV9pbml0KGRzbV9pbml0KTsKK21vZHVs ZV9leGl0KGRzbV9leGl0KTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOworTU9EVUxFX0FV VEhPUigiUWl1eHUgWmh1byIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJBZGRyZXNzIHRyYW5zbGF0 aW9uIGludGVyZmFjZSB2aWEgQUNQSSBEU00iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9l ZGFjX21jLmMgYi9kcml2ZXJzL2VkYWMvZWRhY19tYy5jCmluZGV4IDdkM2VkZDcxMzkzMi4uYmEy N2ZlYWZjOTc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvZWRhY19tYy5jCisrKyBiL2RyaXZl cnMvZWRhYy9lZGFjX21jLmMKQEAgLTU3LDYgKzU3LDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKmVk YWNfbWNfb3duZXI7CiAKIHN0YXRpYyBzdHJ1Y3QgYnVzX3R5cGUgbWNfYnVzW0VEQUNfTUFYX01D U107CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZWRhY19kc21fb3BlcmF0aW9ucyAqZWRhY19kc21f b3BzOworCiBpbnQgZWRhY19nZXRfcmVwb3J0X3N0YXR1cyh2b2lkKQogewogCXJldHVybiBlZGFj X3JlcG9ydDsKQEAgLTEyNTksMyArMTI2MSwzNyBAQCB2b2lkIGVkYWNfbWNfaGFuZGxlX2Vycm9y KGNvbnN0IGVudW0gaHdfZXZlbnRfbWNfZXJyX3R5cGUgdHlwZSwKIAllZGFjX3Jhd19tY19oYW5k bGVfZXJyb3IodHlwZSwgbWNpLCBlKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGVkYWNfbWNfaGFu ZGxlX2Vycm9yKTsKKworY29uc3Qgc3RydWN0IGVkYWNfZHNtX29wZXJhdGlvbnMgKmVkYWNfZHNt X2dldF9vcHModm9pZCkKK3sKKwlpZiAoZWRhY19kc21fb3BzICYmIHRyeV9tb2R1bGVfZ2V0KGVk YWNfZHNtX29wcy0+b3duZXIpKQorCQlyZXR1cm4gZWRhY19kc21fb3BzOworCisJcmV0dXJuIE5V TEw7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChlZGFjX2RzbV9nZXRfb3BzKTsKKwordm9pZCBlZGFj X2RzbV9wdXRfb3BzKGNvbnN0IHN0cnVjdCBlZGFjX2RzbV9vcGVyYXRpb25zICpvcHMpCit7CisJ aWYgKG9wcykKKwkJbW9kdWxlX3B1dChvcHMtPm93bmVyKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BM KGVkYWNfZHNtX3B1dF9vcHMpOworCitpbnQgZWRhY19kc21fcmVnaXN0ZXJfb3BzKGNvbnN0IHN0 cnVjdCBlZGFjX2RzbV9vcGVyYXRpb25zICpvcHMpCit7CisJaWYgKGVkYWNfZHNtX29wcykKKwkJ cmV0dXJuIC1FRVhJU1Q7CisKKwllZGFjX2RzbV9vcHMgPSBvcHM7CisKKwlyZXR1cm4gMDsKK30K K0VYUE9SVF9TWU1CT0xfR1BMKGVkYWNfZHNtX3JlZ2lzdGVyX29wcyk7CisKK3ZvaWQgZWRhY19k c21fdW5yZWdpc3Rlcl9vcHMoY29uc3Qgc3RydWN0IGVkYWNfZHNtX29wZXJhdGlvbnMgKm9wcykK K3sKKwlpZiAoZWRhY19kc21fb3BzID09IG9wcykKKwkJZWRhY19kc21fb3BzID0gTlVMTDsKK30K K0VYUE9SVF9TWU1CT0xfR1BMKGVkYWNfZHNtX3VucmVnaXN0ZXJfb3BzKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZWRhYy9lZGFjX21jLmggYi9kcml2ZXJzL2VkYWMvZWRhY19tYy5oCmluZGV4IDQx NjVlMTU5OTVhZC4uZjIxODNkMDZkZTc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvZWRhY19t Yy5oCisrKyBiL2RyaXZlcnMvZWRhYy9lZGFjX21jLmgKQEAgLTI1NCw2ICsyNTQsNzAgQEAgdm9p ZCBlZGFjX21jX2hhbmRsZV9lcnJvcihjb25zdCBlbnVtIGh3X2V2ZW50X21jX2Vycl90eXBlIHR5 cGUsCiAJCQkgIGNvbnN0IGNoYXIgKm1zZywKIAkJCSAgY29uc3QgY2hhciAqb3RoZXJfZGV0YWls KTsKIAorLyoKKyAqIGVkYWMgRFNNIEFQSXMKKyAqLworCitzdHJ1Y3QgZWRhY19kc21fb3BlcmF0 aW9ucyB7CisJc3RydWN0IG1vZHVsZSAqb3duZXI7CisJLyoKKwkgKiBjaGVjaygpIC0gQ2hlY2sg d2hldGhlciB0aGUgc3BlZmljaWZpZWQgYWRkcmVzcyBjb21wb25lbnQgbmFtZXMKKwkgKiAgICAg ICAgICAgYXJlIHN1cHBvcnRlZC4KKwkgKgorCSAqIEBjb21wb25lbnRfbmFtZXM6CUxpc3Qgb2Yg YWRkcmVzcyBjb21wb25lbnQgbmFtZQorCSAqCQkJc3RyaW5ncyB0byBiZSBjaGVja2VkLgorCSAq IEBjb21wb25lbnRfaW5kaWNlczogIEFycmF5IG9mIGFkZHJlc3MgY29tcG9uZW50IG5hbWUgaW5k aWNlcworCSAqCQkJdG8gYmUgZmlsbGVkLgorCSAqCisJICogUmV0dXJuczogMCBvbiBzdWNjZXNz LCBvciBhbiBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCisJICovCisJaW50ICgqY2hlY2spKGNoYXIg Y29tcG9uZW50X25hbWVzW11bMzJdLCBpbnQgY29tcG9uZW50X2luZGljZXNbXSk7CisJLyoKKwkg KiBkZWNvZGUoKSAtIERlY29kZSBtZW1vcnkgc3lzdGVtIGFkZHJlc3MgdG8gRFJBTSBhZGRyZXNz CisJICoJICAgICAgKHNvY2tldCwgTUMsIGNoYW5uZWwsIHJhbmssIGJhbmssIHJvdywgY29sdW1u KS4KKwkgKiBAYWRkcjoJCU1lbW9yeSBzeXN0ZW0gYWRkcmVzcworCSAqIEBjb21wb25lbnRfaW5k aWNlczoJQXJyYXkgb2YgYWRkcmVzcyBjb21wb25lbnQgbmFtZQorCSAqCQkJaW5kaWNlcyBmcm9t IGNoZWNrKCkKKwkgKiBAbXNnOgkJU3RyaW5nIGhvbGRzIGRldGFpbCBvZiBkZWNvZGVkIERSQU0g YWRkcmVzc2VzCisJICogQG1zZ2xlbjoJCUxlbmd0aCBvZiB0aGUgc3RyaW5nCisJICoKKwkgKiBS ZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKwkgKi8K KwlpbnQgKCpkZWNvZGUpKHU2NCBhZGRyLCBjaGFyICptc2csIGludCBtc2dsZW4sCisJCSAgICAg IGludCBjb21wb25lbnRfaW5kaWNlc1tdLCAuLi4pOworfTsKKworLyoqCisgKiBlZGFjX2RzbV9n ZXRfb3BzKCkgLSBHZXQgRURBQyBEU00gb3BlcmF0aW9ucyBhbmQgaW5jcmVhc2UgdGhlCisgKgkJ CXJlZmNvdW50IG9mIG1vZHVsZS4KKyAqCisgKiBSZXR1cm5zOiBPbiBzdWNjZXNzLCByZXR1cm4g YSBwb2ludGVyIHRvIHN0cnVjdCBlZGFjX2RzbV9vcGVyYXRpb25zLAorICoJJU5VTEwgb3RoZXJ3 aXNlCisgKi8KK2NvbnN0IHN0cnVjdCBlZGFjX2RzbV9vcGVyYXRpb25zICplZGFjX2RzbV9nZXRf b3BzKHZvaWQpOworCisvKioKKyAqIGVkYWNfZHNtX3B1dF9vcHMoKSAtIFB1dCBFREFDIERTTSBv cGVyYXRpb25zIGFuZCBkZWNyZWFzZSB0aGUKKyAqCQkJcmVmY291bnQgb2YgbW9kdWxlLgorICov Cit2b2lkIGVkYWNfZHNtX3B1dF9vcHMoY29uc3Qgc3RydWN0IGVkYWNfZHNtX29wZXJhdGlvbnMg Km9wcyk7CisKKy8qKgorICogZWRhY19kc21fcmVnaXN0ZXJfb3BzKCkgLSBSZWdpc3RlciBFREFD IERTTSBvcGVyYXRpb25zIHRvIEVEQUMgY29yZS4KKyAqCisgKiBAb3BzOiBBIHN0cnVjdCBlZGFj X2RzbV9vcGVyYXRpb25zIHBvaW50ZXIKKyAqCisgKiBSZXR1cm5zOiBPbiBzdWNjZXNzLCByZXR1 cm4gMCwgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UKKyAqLworaW50IGVkYWNfZHNtX3JlZ2lzdGVy X29wcyhjb25zdCBzdHJ1Y3QgZWRhY19kc21fb3BlcmF0aW9ucyAqb3BzKTsKKworLyoqCisgKiBl ZGFjX2RzbV91bnJlZ2lzdGVyX29wcygpIC0gVW5yZWdpc3RlciBFREFDIERTTSBvcGVyYXRpb25z IGZyb20gRURBQyBjb3JlLgorICoKKyAqIEBvcHM6IEEgc3RydWN0IGVkYWNfZHNtX29wZXJhdGlv bnMgcG9pbnRlcgorICovCit2b2lkIGVkYWNfZHNtX3VucmVnaXN0ZXJfb3BzKGNvbnN0IHN0cnVj dCBlZGFjX2RzbV9vcGVyYXRpb25zICpvcHMpOworCiAvKgogICogZWRhYyBtaXNjIEFQSXMKICAq Lwo=