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: [RFC] edac: armv8_edac: Add ARMv8 EDAC driver From: Tyler Baicar Message-Id: <1533242990-12828-1-git-send-email-tbaicar@codeaurora.org> Date: Thu, 2 Aug 2018 16:49:50 -0400 To: linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org Cc: Tyler Baicar List-ID: QWRkIEFSTXY4IEVEQUMgZHJpdmVyIHRvIGRldGVjdCBhbmQgcmVwb3J0IGVycm9ycyB0aGF0IGFy ZSByZXBvcnRlZAp0aHJvdWdoIHRoZSBBUk12OC4yIFJBUyBleHRlbnNpb25zLgoKVGhpcyBpcyBi eSBubyBtZWFucyBjb21wbGV0ZSBoZW5jZSB0aGUgUkZDLiBBdCBtaW5pbXVtLCB0aGlzIHNob3Vs ZAphbHNvIGhhdmUgc3VwcG9ydCB0byBjaGVjayB0aGUgU1JzIG9mIGVhY2ggQ1BVIGR1cmluZyBi b290IHRpbWUgdG8KY2hlY2sgZm9yIGFueXRoaW5nIHBlbmRpbmcuIEFsc28sIHRoZSBTRUkgY29k ZSBmbG93IGNvdWxkIGJlIGltcHJvdmVkCnRvIHNlcGFyYXRlIHRoZSBjaGVjayBmb3IgdW5jb250 YWluZWQgZXJyb3JzIGFuZCBwYW5pYyBBU0FQIGJlZm9yZQpkb2luZyBhbnkgb2YgdGhpcyByZXBv cnRpbmcuCgpUaGlzIGlzIGFsc28gbGltaXRlZCB0byBTUiBiYXNlZCBSQVMgZXh0ZW5zaW9uIG5v ZGVzLiBUaGVyZSBpcyBub3QKY3VycmVudGx5IGEgd2F5IHRvIGRldGVjdCBtZW1vcnkgbWFwcGVk IFJBUyBleHRlbnNpb24gbm9kZXMuIFRoZQppbml0aWFsaXphdGlvbiB3aGljaCBwcmludHMgdGhl IEZSIHJlZ2lzdGVycyBvbmx5IGRvZXMgc28gZm9yIGEKc2luZ2xlIENQVSwgc28gdGhlIGFzc3Vt cHRpb24gaXMgdGhhdCBhbGwgQ1BVcyBhcmUgaWRlbnRpY2FsIGZyb20KYSBSQVMgZXh0ZW5zaW9u IG5vZGUgcGVyc3BlY3RpdmUuCgpTaWduZWQtb2ZmLWJ5OiBUeWxlciBCYWljYXIgPHRiYWljYXJA Y29kZWF1cm9yYS5vcmc+Ci0tLQogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yYXMuaCB8IDI2ICsr KysrKysrKysrKysrKysrKysKIGFyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlICAgfCAgMSArCiBh cmNoL2FybTY0L2tlcm5lbC9yYXMuYyAgICAgIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogYXJjaC9hcm02NC9rZXJuZWwvdHJhcHMuYyAgICB8ICA0ICsrKwog YXJjaC9hcm02NC9tbS9mYXVsdC5jICAgICAgICB8ICA0ICsrKwogZHJpdmVycy9lZGFjL0tjb25m aWcgICAgICAgICB8ICA5ICsrKysrKysKIGRyaXZlcnMvZWRhYy9NYWtlZmlsZSAgICAgICAgfCAg MiArKwogZHJpdmVycy9lZGFjL2FybXY4X2VkYWMuYyAgICB8IDU5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2xpbnV4L2FybXY4X2VkYWMuaCAg IHwgMjAgKysrKysrKysrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDE3OSBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yYXMuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQva2VybmVsL3Jhcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9lZGFjL2FybXY4X2VkYWMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGlu dXgvYXJtdjhfZWRhYy5oCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9yYXMu aCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcmFzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMjliMzBlOAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vcmFzLmgKQEAgLTAsMCArMSwyNiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQK KyAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKworI2lmbmRlZiBBUk02NF9S QVNfSAorI2RlZmluZSBBUk02NF9SQVNfSAorCitib29sIGFyY2hfY3B1X2hhc19yYXNfZXh0ZW5z aW9ucyh2b2lkKTsKKwordTY0IGFyY2hfY3B1X251bV9yYXNfbm9kZXModm9pZCk7CisKK3ZvaWQg YXJjaF9yZXBvcnRfcmFzX2Vycm9yX29uX25vZGUodW5zaWduZWQgaW50IGNwdV9udW0sIHVuc2ln bmVkIGludCBpKTsKKwordm9pZCBhcmNoX3Jhc19ub2RlX3NldHVwKHVuc2lnbmVkIGludCBpKTsK KworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9NYWtlZmlsZSBiL2FyY2gv YXJtNjQva2VybmVsL01ha2VmaWxlCmluZGV4IDAwMjVmODY5Li5jNzk5OGY0IDEwMDY0NAotLS0g YS9hcmNoL2FybTY0L2tlcm5lbC9NYWtlZmlsZQorKysgYi9hcmNoL2FybTY0L2tlcm5lbC9NYWtl ZmlsZQpAQCAtNTUsNiArNTUsNyBAQCBhcm02NC1yZWxvYy10ZXN0LXkgOj0gcmVsb2NfdGVzdF9j b3JlLm8gcmVsb2NfdGVzdF9zeW1zLm8KIGFybTY0LW9iai0kKENPTkZJR19DUkFTSF9EVU1QKQkJ Kz0gY3Jhc2hfZHVtcC5vCiBhcm02NC1vYmotJChDT05GSUdfQVJNX1NERV9JTlRFUkZBQ0UpCSs9 IHNkZWkubwogYXJtNjQtb2JqLSQoQ09ORklHX0FSTTY0X1NTQkQpCQkrPSBzc2JkLm8KK2FybTY0 LW9iai0kKENPTkZJR19FREFDX0FSTVY4KQkJKz0gcmFzLm8KIAogb2JqLXkJCQkJCSs9ICQoYXJt NjQtb2JqLXkpIHZkc28vIHByb2Jlcy8KIG9iai1tCQkJCQkrPSAkKGFybTY0LW9iai1tKQpkaWZm IC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvcmFzLmMgYi9hcmNoL2FybTY0L2tlcm5lbC9yYXMu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2IwMjY1Ci0tLSAvZGV2L251 bGwKKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvcmFzLmMKQEAgLTAsMCArMSw1NCBAQAorLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgs IFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhbmQKKyAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg Ki8KKworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdS5oPgor I2luY2x1ZGUgPGxpbnV4L3NtcC5oPgorCisjaW5jbHVkZSA8YXNtL3Jhcy5oPgorCitib29sIGFy Y2hfY3B1X2hhc19yYXNfZXh0ZW5zaW9ucyh2b2lkKQoreworCXJldHVybiB0aGlzX2NwdV9oYXNf Y2FwKEFSTTY0X0hBU19SQVNfRVhUTik7Cit9CisKK3U2NCBhcmNoX2NwdV9udW1fcmFzX25vZGVz KHZvaWQpCit7CisJcmV0dXJuIHJlYWRfc3lzcmVnX3MoU1lTX0VSUklEUl9FTDEpOworfQorCit2 b2lkIGFyY2hfcmVwb3J0X3Jhc19lcnJvcl9vbl9ub2RlKHVuc2lnbmVkIGludCBjcHVfbnVtLCB1 bnNpZ25lZCBpbnQgaSkKK3sKKwl1NjQgc3RhdHVzOworCisJd3JpdGVfc3lzcmVnX3MoaSwgU1lT X0VSUlNFTFJfRUwxKTsKKwlzdGF0dXMgPSByZWFkX3N5c3JlZ19zKFNZU19FUlhTVEFUVVNfRUwx KTsKKwlpZiAoc3RhdHVzKSB7CisJCXByX2VycigiY3B1ICMldTogRVJSJXVTVEFUVVMgPSAweCVs bHhcbiIsIGNwdV9udW0sIGksIHN0YXR1cyk7CisJCXByX2VycigiY3B1ICMldTogRVJSJXVDVExS ICAgPSAweCVsbHhcbiIsCisJCQljcHVfbnVtLCBpLCByZWFkX3N5c3JlZ19zKFNZU19FUlhDVExS X0VMMSkpOworCQlwcl9lcnIoImNwdSAjJXU6IEVSUiV1QUREUiAgID0gMHglbGx4XG4iLAorCQkJ Y3B1X251bSwgaSwgcmVhZF9zeXNyZWdfcyhTWVNfRVJYQUREUl9FTDEpKTsKKwkJcHJfZXJyKCJj cHUgIyV1OiBFUlIldU1JU0MwICA9IDB4JWxseFxuIiwKKwkJCWNwdV9udW0sIGksIHJlYWRfc3lz cmVnX3MoU1lTX0VSWE1JU0MwX0VMMSkpOworCQlwcl9lcnIoImNwdSAjJXU6IEVSUiV1TUlTQzEg ID0gMHglbGx4XG4iLAorCQkJY3B1X251bSwgaSwgcmVhZF9zeXNyZWdfcyhTWVNfRVJYTUlTQzFf RUwxKSk7CisJfQorfQorCit2b2lkIGFyY2hfcmFzX25vZGVfc2V0dXAodW5zaWduZWQgaW50IGkp Cit7CisJd3JpdGVfc3lzcmVnX3MoaSwgU1lTX0VSUlNFTFJfRUwxKTsKKwlwcl9pbmZvKCJFUlIl dUZSID0gMHglbGx4XG4iLCBpLCByZWFkX3N5c3JlZ19zKFNZU19FUlhGUl9FTDEpKTsKK30KZGlm ZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL3RyYXBzLmMgYi9hcmNoL2FybTY0L2tlcm5lbC90 cmFwcy5jCmluZGV4IGQzOTlkNDUuLjUzZWQ5NzQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2Vy bmVsL3RyYXBzLmMKKysrIGIvYXJjaC9hcm02NC9rZXJuZWwvdHJhcHMuYwpAQCAtMzUsNiArMzUs NyBAQAogI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CiAjaW5jbHVkZSA8bGludXgvc3lzY2FsbHMu aD4KICNpbmNsdWRlIDxsaW51eC9tbV90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2FybXY4X2Vk YWMuaD4KIAogI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KICNpbmNsdWRlIDxhc20vYnVnLmg+CkBA IC03MzEsNiArNzMyLDkgQEAgYXNtbGlua2FnZSB2b2lkIGRvX3NlcnJvcihzdHJ1Y3QgcHRfcmVn cyAqcmVncywgdW5zaWduZWQgaW50IGVzcikKIHsKIAlubWlfZW50ZXIoKTsKIAorCWlmIChJU19F TkFCTEVEKENPTkZJR19FREFDX0FSTVY4KSkKKwkJYXJtdjhfZWRhY19yZXBvcnRfZXJyb3IoKTsK KwogCS8qIG5vbi1SQVMgZXJyb3JzIGFyZSBub3QgY29udGFpbmFibGUgKi8KIAlpZiAoIWFybTY0 X2lzX3Jhc19zZXJyb3IoZXNyKSB8fCBhcm02NF9pc19mYXRhbF9yYXNfc2Vycm9yKHJlZ3MsIGVz cikpCiAJCWFybTY0X3NlcnJvcl9wYW5pYyhyZWdzLCBlc3IpOwpkaWZmIC0tZ2l0IGEvYXJjaC9h cm02NC9tbS9mYXVsdC5jIGIvYXJjaC9hcm02NC9tbS9mYXVsdC5jCmluZGV4IGI4ZWVjYzcuLjQ5 ZGViZTcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvbW0vZmF1bHQuYworKysgYi9hcmNoL2FybTY0 L21tL2ZhdWx0LmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50 Lmg+CiAjaW5jbHVkZSA8bGludXgvcHJlZW1wdC5oPgogI2luY2x1ZGUgPGxpbnV4L2h1Z2V0bGIu aD4KKyNpbmNsdWRlIDxsaW51eC9hcm12OF9lZGFjLmg+CiAKICNpbmNsdWRlIDxhc20vYnVnLmg+ CiAjaW5jbHVkZSA8YXNtL2NtcHhjaGcuaD4KQEAgLTY0MSw2ICs2NDIsOSBAQCBzdGF0aWMgaW50 IGRvX3NlYSh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGludCBlc3IsIHN0cnVjdCBwdF9y ZWdzICpyZWdzKQogCiAJCWdoZXNfbm90aWZ5X3NlYSgpOwogCisJCWlmIChJU19FTkFCTEVEKENP TkZJR19FREFDX0FSTVY4KSkKKwkJCWFybXY4X2VkYWNfcmVwb3J0X2Vycm9yKCk7CisKIAkJaWYg KGludGVycnVwdHNfZW5hYmxlZChyZWdzKSkKIAkJCW5taV9leGl0KCk7CiAJfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9lZGFjL0tjb25maWcgYi9kcml2ZXJzL2VkYWMvS2NvbmZpZwppbmRleCA1NzMw NGIyLi5kYTAyODFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2VkYWMvS2NvbmZpZworKysgYi9kcml2 ZXJzL2VkYWMvS2NvbmZpZwpAQCAtNzQsNiArNzQsMTUgQEAgY29uZmlnIEVEQUNfR0hFUwogCiAJ ICBJbiBkb3VidCwgc2F5ICdZJy4KIAorY29uZmlnIEVEQUNfQVJNVjgKKwlib29sICJBUk12OCBS QVMgZXh0ZW5zaW9uIGJhc2VkIGVycm9yIHJlcG9ydGluZyIKKwlkZXBlbmRzIG9uIChFREFDPXkp ICYmIEFSTTY0X1JBU19FWFROCisJZGVmYXVsdCB5CisJaGVscAorCSAgU3VwcG9ydCBmb3IgZXJy b3IgcmVwb3J0aW5nIHRocm91Z2ggdGhlIEFSTXY4LjIgUkFTIGV4dGVuc2lvbi4gVGhlCisJICBB Uk12OC4yIFJBUyBleHRlbnNpb24gcHJvdmlkZXMgYW4gYXJjaGl0ZWN0ZWQgd2F5IG9mIHJlcG9y dGluZworCSAgaGFyZHdhcmUgZXJyb3JzIG9uIEFSTSBzeXN0ZW1zLgorCiBjb25maWcgRURBQ19B TUQ2NAogCXRyaXN0YXRlICJBTUQ2NCAoT3B0ZXJvbiwgQXRobG9uNjQpIgogCWRlcGVuZHMgb24g QU1EX05CICYmIEVEQUNfREVDT0RFX01DRQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL01ha2Vm aWxlIGIvZHJpdmVycy9lZGFjL01ha2VmaWxlCmluZGV4IDAyYjQzYTcuLjAwMTgyMGQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZWRhYy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2VkYWMvTWFrZWZpbGUK QEAgLTUwLDYgKzUwLDggQEAgYW1kNjRfZWRhY19tb2QtJChDT05GSUdfRURBQ19BTUQ2NF9FUlJP Ul9JTkpFQ1RJT04pICs9IGFtZDY0X2VkYWNfaW5qLm8KIAogb2JqLSQoQ09ORklHX0VEQUNfQU1E NjQpCQkrPSBhbWQ2NF9lZGFjX21vZC5vCiAKK29iai0kKENPTkZJR19FREFDX0FSTVY4KQkJKz0g YXJtdjhfZWRhYy5vCisKIG9iai0kKENPTkZJR19FREFDX1BBU0VNSSkJCSs9IHBhc2VtaV9lZGFj Lm8KIAogbXBjODV4eF9lZGFjX21vZC15CQkJOj0gZnNsX2Rkcl9lZGFjLm8gbXBjODV4eF9lZGFj Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9hcm12OF9lZGFjLmMgYi9kcml2ZXJzL2VkYWMv YXJtdjhfZWRhYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkZjNkZDgK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2VkYWMvYXJtdjhfZWRhYy5jCkBAIC0wLDAgKzEs NTkgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogQ29weXJp Z2h0IChjKSAyMDE4LCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5kCisgKiBvbmx5IHZlcnNpb24gMiBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9hcm12OF9lZGFjLmg+CisjaW5jbHVk ZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvZWRhYy5oPgorCisjaW5jbHVkZSA8 YXNtL3Jhcy5oPgorCit2b2lkIGFybXY4X2VkYWNfcmVwb3J0X2Vycm9yKHZvaWQpCit7CisJdW5z aWduZWQgaW50IGNwdV9udW0sIGk7CisJdTY0IG51bV9ub2RlczsKKworCWNwdV9udW0gPSBnZXRf Y3B1KCk7CisJaWYgKCFhcmNoX2NwdV9oYXNfcmFzX2V4dGVuc2lvbnMoKSkKKwkJcmV0dXJuOwor CisJbnVtX25vZGVzID0gYXJjaF9jcHVfbnVtX3Jhc19ub2RlcygpOworCisJZm9yIChpID0gMDsg aSA8IG51bV9ub2RlczsgaSsrKQorCQlhcmNoX3JlcG9ydF9yYXNfZXJyb3Jfb25fbm9kZShjcHVf bnVtLCBpKTsKKwlwdXRfY3B1KCk7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IGFybXY4X2VkYWNf aW5pdCh2b2lkKQoreworCXVuc2lnbmVkIGludCBpOworCXU2NCBudW1fbm9kZXM7CisKKwlnZXRf Y3B1KCk7CisJaWYgKCFhcmNoX2NwdV9oYXNfcmFzX2V4dGVuc2lvbnMoKSkgeworCQlwdXRfY3B1 KCk7CisJCXJldHVybiAtRU5PVFNVUFA7CisJfQorCisJcHJfZXJyKCJDUFUgaGFzIFJBUyBleHRl bnNpb25cbiIpOworCW51bV9ub2RlcyA9IGFyY2hfY3B1X251bV9yYXNfbm9kZXMoKTsKKworCWZv ciAoaSA9IDA7IGkgPCBudW1fbm9kZXM7IGkrKykgeworCQlhcmNoX3Jhc19ub2RlX3NldHVwKGkp OworCX0KKworCXB1dF9jcHUoKTsKKwlyZXR1cm4gMDsKK30KKworZWFybHlfaW5pdGNhbGwoYXJt djhfZWRhY19pbml0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYXJtdjhfZWRhYy5oIGIv aW5jbHVkZS9saW51eC9hcm12OF9lZGFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMjIyZjdlYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgvYXJtdjhfZWRh Yy5oCkBAIC0wLDAgKzEsMjAgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w CisvKgorICogQ29weXJpZ2h0IChjKSAyMDE4LCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5kCisgKiBvbmx5 IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpZm5kZWYgTElOVVhfQVJNVjhfRURB Q19ICisjZGVmaW5lIExJTlVYX0FSTVY4X0VEQUNfSAorCit2b2lkIGFybXY4X2VkYWNfcmVwb3J0 X2Vycm9yKHZvaWQpOworCisjZW5kaWYK