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: [v3,3/4] drivers: edac: Add EDAC driver support for QCOM SoCs From: Venkata Narendra Kumar Gutta Message-Id: <1535503347-20507-4-git-send-email-vnkgutta@codeaurora.org> Date: Tue, 28 Aug 2018 17:42:26 -0700 To: evgreen@chromium.org, robh@kernel.org, mchehab@kernel.org, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Andy Gross , David Brown , linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, robh+dt@kernel.org, mark.rutland@arm.com, devicetree@vger.kernel.org, tsoni@codeaurora.org, ckadabi@codeaurora.org, rishabhb@codeaurora.org, bp@alien8.de, swboyd@chromium.org Cc: Venkata Narendra Kumar Gutta List-ID: RnJvbTogQ2hhbm5hZ291ZCBLYWRhYmkgPGNrYWRhYmlAY29kZWF1cm9yYS5vcmc+CgpBZGQgZXJy b3IgcmVwb3J0aW5nIGRyaXZlciBmb3IgU2luZ2xlIEJpdCBFcnJvcnMgKFNCRXMpIGFuZCBEb3Vi bGUgQml0CkVycm9ycyAoREJFcykuIEFzIG9mIG5vdywgdGhpcyBkcml2ZXIgc3VwcG9ydHMgZXJy b3IgcmVwb3J0aW5nIGZvcgpMYXN0IExldmVsIENhY2hlIENvbnRyb2xsZXIgKExMQ0MpIG9mIFRh ZyBSQU0gYW5kIERhdGEgUkFNLiBJbnRlcnJ1cHRzCmFyZSB0cmlnZ2VyZWQgd2hlbiB0aGUgZXJy b3JzIGhhcHBlbiBpbiB0aGUgY2FjaGUsIHRoZSBkcml2ZXIgaGFuZGxlcwp0aG9zZSBpbnRlcnJ1 cHRzIGFuZCBkdW1wcyB0aGUgc3luZHJvbWUgcmVnaXN0ZXJzLgoKU2lnbmVkLW9mZi1ieTogQ2hh bm5hZ291ZCBLYWRhYmkgPGNrYWRhYmlAY29kZWF1cm9yYS5vcmc+ClNpZ25lZC1vZmYtYnk6IFZl bmthdGEgTmFyZW5kcmEgS3VtYXIgR3V0dGEgPHZua2d1dHRhQGNvZGVhdXJvcmEub3JnPgpDby1k ZXZlbG9wZWQtYnk6IFZlbmthdGEgTmFyZW5kcmEgS3VtYXIgR3V0dGEgPHZua2d1dHRhQGNvZGVh dXJvcmEub3JnPgotLS0KIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDgg KwogZHJpdmVycy9lZGFjL0tjb25maWcgICAgICAgICAgICAgICB8ICAyMiArKwogZHJpdmVycy9l ZGFjL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2VkYWMvcWNvbV9lZGFj LmMgICAgICAgICAgIHwgNDIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGluY2x1ZGUvbGludXgvc29jL3Fjb20vbGxjYy1xY29tLmggfCAgMjQgKysrCiA1IGZpbGVzIGNo YW5nZWQsIDQ3NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9lZGFj L3Fjb21fZWRhYy5jCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwppbmRl eCAwYTIzNDI3Li4wYmZmNzEzIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJ TkVSUwpAQCAtNTIyNyw2ICs1MjI3LDE0IEBAIEw6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3Jn CiBTOglNYWludGFpbmVkCiBGOglkcml2ZXJzL2VkYWMvdGlfZWRhYy5jCiAKK0VEQUMtUVVBTENP TU0KK006CUNoYW5uYWdvdWQgS2FkYWJpIDxja2FkYWJpQGNvZGVhdXJvcmEub3JnPgorTToJVmVu a2F0YSBOYXJlbmRyYSBLdW1hciBHdXR0YSA8dm5rZ3V0dGFAY29kZWF1cm9yYS5vcmc+CitMOgls aW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5v cmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZWRhYy9xY29tX2VkYWMuYworCiBFRElST0wg VUEtMTAxL1VBLTEwMDAgRFJJVkVSCiBNOglDbGVtZW5zIExhZGlzY2ggPGNsZW1lbnNAbGFkaXNj aC5kZT4KIEw6CWFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZyAobW9kZXJhdGVkIGZvciBub24t c3Vic2NyaWJlcnMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvS2NvbmZpZyBiL2RyaXZlcnMv ZWRhYy9LY29uZmlnCmluZGV4IDU3MzA0YjIuLmRmNTg5NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv ZWRhYy9LY29uZmlnCisrKyBiL2RyaXZlcnMvZWRhYy9LY29uZmlnCkBAIC00NjAsNCArNDYwLDI2 IEBAIGNvbmZpZyBFREFDX1RJCiAJICBTdXBwb3J0IGZvciBlcnJvciBkZXRlY3Rpb24gYW5kIGNv cnJlY3Rpb24gb24gdGhlCiAgICAgICAgICAgVEkgU29Dcy4KIAorY29uZmlnIEVEQUNfUUNPTQor CXRyaXN0YXRlICJRQ09NIEVEQUMgQ29udHJvbGxlciIKKwlkZXBlbmRzIG9uIEVEQUMKKwloZWxw CisJICBTdXBwb3J0IGZvciBlcnJvciBkZXRlY3Rpb24gYW5kIGNvcnJlY3Rpb24gb24gdGhlCisJ ICBRQ09NIFNvQ3MuCisKKwkgIFRoaXMgZHJpdmVyIHJlcG9ydHMgU2luZ2xlIEJpdCBFcnJvcnMg KFNCRXMpIGFuZCBEb3VibGUgQml0IEVycm9ycyAoREJFcykuCisJICBBcyBvZiBub3csIGl0IHN1 cHBvcnRzIGVycm9yIHJlcG9ydGluZyBmb3IgTGFzdCBMZXZlbCBDYWNoZSBDb250cm9sbGVyIChM TENDKQorCSAgb2YgVGFnIFJBTSBhbmQgRGF0YSBSQU0uCisKK2NvbmZpZyBFREFDX1FDT01fTExD QworCXRyaXN0YXRlICJRQ09NIEVEQUMgQ29udHJvbGxlciBmb3IgTExDQyBDYWNoZSIKKwlkZXBl bmRzIG9uIEVEQUNfUUNPTSAmJiBRQ09NX0xMQ0MKKwloZWxwCisJICBTdXBwb3J0IGZvciBlcnJv ciBkZXRlY3Rpb24gYW5kIGNvcnJlY3Rpb24gb24gdGhlCisJICBRQ09NIExMQ0MgY2FjaGUuIFJl cG9ydCBlcnJvcnMgY2F1Z2h0IGJ5IExMQ0MgRUNDCisJICBtZWNoYW5pc20uCisKKwkgIEZvciBk ZWJ1Z2dpbmcgaXNzdWVzIGhhdmluZyB0byBkbyB3aXRoIHN0YWJpbGl0eSBhbmQgb3ZlcmFsbCBz eXN0ZW0KKwkgIGhlYWx0aCwgeW91IHNob3VsZCBwcm9iYWJseSBzYXkgJ1knIGhlcmUuCisKIGVu ZGlmICMgRURBQwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFjL01ha2VmaWxlIGIvZHJpdmVycy9l ZGFjL01ha2VmaWxlCmluZGV4IDAyYjQzYTcuLjcxNjA5NmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv ZWRhYy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2VkYWMvTWFrZWZpbGUKQEAgLTc3LDMgKzc3LDQg QEAgb2JqLSQoQ09ORklHX0VEQUNfQUxURVJBKQkJKz0gYWx0ZXJhX2VkYWMubwogb2JqLSQoQ09O RklHX0VEQUNfU1lOT1BTWVMpCQkrPSBzeW5vcHN5c19lZGFjLm8KIG9iai0kKENPTkZJR19FREFD X1hHRU5FKQkJKz0geGdlbmVfZWRhYy5vCiBvYmotJChDT05GSUdfRURBQ19USSkJCQkrPSB0aV9l ZGFjLm8KK29iai0kKENPTkZJR19FREFDX1FDT00pCQkJKz0gcWNvbV9lZGFjLm8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZWRhYy9xY29tX2VkYWMuYyBiL2RyaXZlcnMvZWRhYy9xY29tX2VkYWMuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzFlZDA3Ci0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9lZGFjL3Fjb21fZWRhYy5jCkBAIC0wLDAgKzEsNDIxIEBACisvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxOCwg VGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKworI2luY2x1 ZGUgPGxpbnV4L2VkYWMuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4 L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUg PGxpbnV4L3NvYy9xY29tL2xsY2MtcWNvbS5oPgorCisjaW5jbHVkZSAiZWRhY19tYy5oIgorI2lu Y2x1ZGUgImVkYWNfZGV2aWNlLmgiCisKKyNkZWZpbmUgRURBQ19MTENDICAgICAgICAgICAgICAg ICAgICAgICAicWNvbV9sbGNjIgorCisjZGVmaW5lIExMQ0NfRVJQX1BBTklDX09OX1VFICAgICAg ICAgICAgMQorCisjZGVmaW5lIFRSUF9TWU5fUkVHX0NOVCAgICAgICAgICAgICAgICAgNgorI2Rl ZmluZSBEUlBfU1lOX1JFR19DTlQgICAgICAgICAgICAgICAgIDgKKworI2RlZmluZSBMTENDX0NP TU1PTl9TVEFUVVMwICAgICAgICAgICAgIDB4MDAwMzAwMGMKKyNkZWZpbmUgTExDQ19MQl9DTlRf TUFTSyAgICAgICAgICAgICAgICBHRU5NQVNLKDMxLCAyOCkKKyNkZWZpbmUgTExDQ19MQl9DTlRf U0hJRlQgICAgICAgICAgICAgICAyOAorCisvKiBTaW5nbGUgJiBkb3VibGUgYml0IHN5bmRyb21l IHJlZ2lzdGVyIG9mZnNldHMgKi8KKyNkZWZpbmUgVFJQX0VDQ19TQl9FUlJfU1lOMCAgICAgICAg ICAgICAweDAwMDIzMDRjCisjZGVmaW5lIFRSUF9FQ0NfREJfRVJSX1NZTjAgICAgICAgICAgICAg MHgwMDAyMDM3MAorI2RlZmluZSBEUlBfRUNDX1NCX0VSUl9TWU4wICAgICAgICAgICAgIDB4MDAw NDIwNGMKKyNkZWZpbmUgRFJQX0VDQ19EQl9FUlJfU1lOMCAgICAgICAgICAgICAweDAwMDQyMDcw CisKKy8qIEVycm9yIHJlZ2lzdGVyIG9mZnNldHMgKi8KKyNkZWZpbmUgVFJQX0VDQ19FUlJPUl9T VEFUVVMxICAgICAgICAgICAweDAwMDIwMzQ4CisjZGVmaW5lIFRSUF9FQ0NfRVJST1JfU1RBVFVT MCAgICAgICAgICAgMHgwMDAyMDM0NAorI2RlZmluZSBEUlBfRUNDX0VSUk9SX1NUQVRVUzEgICAg ICAgICAgIDB4MDAwNDIwNDgKKyNkZWZpbmUgRFJQX0VDQ19FUlJPUl9TVEFUVVMwICAgICAgICAg ICAweDAwMDQyMDQ0CisKKy8qIFRSUCwgRFJQIGludGVycnVwdCByZWdpc3RlciBvZmZzZXRzICov CisjZGVmaW5lIERSUF9JTlRFUlJVUFRfU1RBVFVTICAgICAgICAgICAgMHgwMDA0MTAwMAorI2Rl ZmluZSBUUlBfSU5URVJSVVBUXzBfU1RBVFVTICAgICAgICAgIDB4MDAwMjA0ODAKKyNkZWZpbmUg RFJQX0lOVEVSUlVQVF9DTEVBUiAgICAgICAgICAgICAweDAwMDQxMDA4CisjZGVmaW5lIERSUF9F Q0NfRVJST1JfQ05UUl9DTEVBUiAgICAgICAgMHgwMDA0MDAwNAorI2RlZmluZSBUUlBfSU5URVJS VVBUXzBfQ0xFQVIgICAgICAgICAgIDB4MDAwMjA0ODQKKyNkZWZpbmUgVFJQX0VDQ19FUlJPUl9D TlRSX0NMRUFSICAgICAgICAweDAwMDIwNDQwCisKKy8qIE1hc2sgYW5kIHNoaWZ0IG1hY3JvcyAq LworI2RlZmluZSBFQ0NfREJfRVJSX0NPVU5UX01BU0sgICAgICAgICAgIEdFTk1BU0soNCwgMCkK KyNkZWZpbmUgRUNDX0RCX0VSUl9XQVlTX01BU0sgICAgICAgICAgICBHRU5NQVNLKDMxLCAxNikK KyNkZWZpbmUgRUNDX0RCX0VSUl9XQVlTX1NISUZUICAgICAgICAgICBCSVQoNCkKKworI2RlZmlu ZSBFQ0NfU0JfRVJSX0NPVU5UX01BU0sgICAgICAgICAgIEdFTk1BU0soMjMsIDE2KQorI2RlZmlu ZSBFQ0NfU0JfRVJSX0NPVU5UX1NISUZUICAgICAgICAgIEJJVCg0KQorI2RlZmluZSBFQ0NfU0Jf RVJSX1dBWVNfTUFTSyAgICAgICAgICAgIEdFTk1BU0soMTUsIDApCisKKyNkZWZpbmUgU0JfRUND X0VSUk9SICAgICAgICAgICAgICAgICAgICBCSVQoMCkKKyNkZWZpbmUgREJfRUNDX0VSUk9SICAg ICAgICAgICAgICAgICAgICBCSVQoMSkKKworI2RlZmluZSBEUlBfVFJQX0lOVF9DTEVBUiAgICAg ICAgICAgICAgIEdFTk1BU0soMSwgMCkKKyNkZWZpbmUgRFJQX1RSUF9DTlRfQ0xFQVIgICAgICAg ICAgICAgICBHRU5NQVNLKDEsIDApCisKKy8qIENvbmZpZyByZWdpc3RlcnMgb2Zmc2V0cyovCisj ZGVmaW5lIERSUF9FQ0NfRVJST1JfQ0ZHICAgICAgICAgICAgICAgMHgwMDA0MDAwMAorCisvKiBU YWcgUkFNLCBEYXRhIFJBTSBpbnRlcnJ1cHQgcmVnaXN0ZXIgb2Zmc2V0cyAqLworI2RlZmluZSBD TU5fSU5URVJSVVBUXzBfRU5BQkxFICAgICAgICAgIDB4MDAwMzAwMWMKKyNkZWZpbmUgQ01OX0lO VEVSUlVQVF8yX0VOQUJMRSAgICAgICAgICAweDAwMDMwMDNjCisjZGVmaW5lIFRSUF9JTlRFUlJV UFRfMF9FTkFCTEUgICAgICAgICAgMHgwMDAyMDQ4OAorI2RlZmluZSBEUlBfSU5URVJSVVBUX0VO QUJMRSAgICAgICAgICAgIDB4MDAwNDEwMGMKKworI2RlZmluZSBTQl9FUlJPUl9USFJFU0hPTEQg ICAgICAgICAgICAgIDB4MQorI2RlZmluZSBTQl9FUlJPUl9USFJFU0hPTERfU0hJRlQgICAgICAg IDI0CisjZGVmaW5lIFNCX0RCX1RSUF9JTlRFUlJVUFRfRU5BQkxFICAgICAgMHgzCisjZGVmaW5l IFRSUDBfSU5URVJSVVBUX0VOQUJMRSAgICAgICAgICAgMHgxCisjZGVmaW5lIERSUDBfSU5URVJS VVBUX0VOQUJMRSAgICAgICAgICAgQklUKDYpCisjZGVmaW5lIFNCX0RCX0RSUF9JTlRFUlJVUFRf RU5BQkxFICAgICAgMHgzCisKK2VudW0geworCUxMQ0NfRFJBTV9DRSA9IDAsCisJTExDQ19EUkFN X1VFLAorCUxMQ0NfVFJBTV9DRSwKKwlMTENDX1RSQU1fVUUsCit9OworCitjb25zdCBzdHJ1Y3Qg bGxjY19lZGFjX3JlZ19kYXRhIGVkYWNfcmVnX2RhdGFbXSA9IHsKKwlbTExDQ19EUkFNX0NFXSA9 IHsKKwkJLm5hbWUgPSAiRFJBTSBTaW5nbGUtYml0IiwKKwkJLnN5bmRfcmVnID0gRFJQX0VDQ19T Ql9FUlJfU1lOMCwKKwkJLmNvdW50X3N0YXR1c19yZWcgPSBEUlBfRUNDX0VSUk9SX1NUQVRVUzEs CisJCS53YXlzX3N0YXR1c19yZWcgPSBEUlBfRUNDX0VSUk9SX1NUQVRVUzAsCisJCS5yZWdfY250 ID0gRFJQX1NZTl9SRUdfQ05ULAorCQkuY291bnRfbWFzayA9IEVDQ19TQl9FUlJfQ09VTlRfTUFT SywKKwkJLndheXNfbWFzayA9IEVDQ19TQl9FUlJfV0FZU19NQVNLLAorCQkuY291bnRfc2hpZnQg PSBFQ0NfU0JfRVJSX0NPVU5UX1NISUZULAorCX0sCisJW0xMQ0NfRFJBTV9VRV0gPSB7CisJCS5u YW1lID0gIkRSQU0gRG91YmxlLWJpdCIsCisJCS5zeW5kX3JlZyA9IERSUF9FQ0NfREJfRVJSX1NZ TjAsCisJCS5jb3VudF9zdGF0dXNfcmVnID0gRFJQX0VDQ19FUlJPUl9TVEFUVVMxLAorCQkud2F5 c19zdGF0dXNfcmVnID0gRFJQX0VDQ19FUlJPUl9TVEFUVVMwLAorCQkucmVnX2NudCA9IERSUF9T WU5fUkVHX0NOVCwKKwkJLmNvdW50X21hc2sgPSBFQ0NfREJfRVJSX0NPVU5UX01BU0ssCisJCS53 YXlzX21hc2sgPSBFQ0NfREJfRVJSX1dBWVNfTUFTSywKKwkJLndheXNfc2hpZnQgPSBFQ0NfREJf RVJSX1dBWVNfU0hJRlQsCisJfSwKKwlbTExDQ19UUkFNX0NFXSA9IHsKKwkJLm5hbWUgPSAiVFJB TSBTaW5nbGUtYml0IiwKKwkJLnN5bmRfcmVnID0gVFJQX0VDQ19TQl9FUlJfU1lOMCwKKwkJLmNv dW50X3N0YXR1c19yZWcgPSBUUlBfRUNDX0VSUk9SX1NUQVRVUzEsCisJCS53YXlzX3N0YXR1c19y ZWcgPSBUUlBfRUNDX0VSUk9SX1NUQVRVUzAsCisJCS5yZWdfY250ID0gVFJQX1NZTl9SRUdfQ05U LAorCQkuY291bnRfbWFzayA9IEVDQ19TQl9FUlJfQ09VTlRfTUFTSywKKwkJLndheXNfbWFzayA9 IEVDQ19TQl9FUlJfV0FZU19NQVNLLAorCQkuY291bnRfc2hpZnQgPSBFQ0NfU0JfRVJSX0NPVU5U X1NISUZULAorCX0sCisJW0xMQ0NfVFJBTV9VRV0gPSB7CisJCS5uYW1lID0gIlRSQU0gRG91Ymxl LWJpdCIsCisJCS5zeW5kX3JlZyA9IFRSUF9FQ0NfREJfRVJSX1NZTjAsCisJCS5jb3VudF9zdGF0 dXNfcmVnID0gVFJQX0VDQ19FUlJPUl9TVEFUVVMxLAorCQkud2F5c19zdGF0dXNfcmVnID0gVFJQ X0VDQ19FUlJPUl9TVEFUVVMwLAorCQkucmVnX2NudCA9IFRSUF9TWU5fUkVHX0NOVCwKKwkJLmNv dW50X21hc2sgPSBFQ0NfREJfRVJSX0NPVU5UX01BU0ssCisJCS53YXlzX21hc2sgPSBFQ0NfREJf RVJSX1dBWVNfTUFTSywKKwkJLndheXNfc2hpZnQgPSBFQ0NfREJfRVJSX1dBWVNfU0hJRlQsCisJ fSwKK307CisKK3N0YXRpYyBpbnQgcWNvbV9sbGNjX2NvcmVfc2V0dXAoc3RydWN0IHJlZ21hcCAq bGxjY19iY2FzdF9yZWdtYXApCit7CisJdTMyIHNiX2Vycl90aHJlc2hvbGQ7CisJaW50IHJldDsK KworCS8qCisJICogQ29uZmlndXJlIGludGVycnVwdCBlbmFibGUgcmVnaXN0ZXJzIHN1Y2ggdGhh dCBUYWcsIERhdGEgUkFNIHJlbGF0ZWQKKwkgKiBpbnRlcnJ1cHRzIGFyZSBwcm9wYWdhdGVkIHRv IGludGVycnVwdCBjb250cm9sbGVyIGZvciBzZXJ2aWNpbmcKKwkgKi8KKwlyZXQgPSByZWdtYXBf dXBkYXRlX2JpdHMobGxjY19iY2FzdF9yZWdtYXAsIENNTl9JTlRFUlJVUFRfMl9FTkFCTEUsCisJ CQkJIFRSUDBfSU5URVJSVVBUX0VOQUJMRSwKKwkJCQkgVFJQMF9JTlRFUlJVUFRfRU5BQkxFKTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKGxs Y2NfYmNhc3RfcmVnbWFwLCBUUlBfSU5URVJSVVBUXzBfRU5BQkxFLAorCQkJCSBTQl9EQl9UUlBf SU5URVJSVVBUX0VOQUJMRSwKKwkJCQkgU0JfREJfVFJQX0lOVEVSUlVQVF9FTkFCTEUpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwlzYl9lcnJfdGhyZXNob2xkID0gKFNCX0VSUk9SX1RI UkVTSE9MRCA8PCBTQl9FUlJPUl9USFJFU0hPTERfU0hJRlQpOworCXJldCA9IHJlZ21hcF93cml0 ZShsbGNjX2JjYXN0X3JlZ21hcCwgRFJQX0VDQ19FUlJPUl9DRkcsCisJCQkgICBzYl9lcnJfdGhy ZXNob2xkKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gcmVnbWFwX3VwZGF0 ZV9iaXRzKGxsY2NfYmNhc3RfcmVnbWFwLCBDTU5fSU5URVJSVVBUXzJfRU5BQkxFLAorCQkJCSBE UlAwX0lOVEVSUlVQVF9FTkFCTEUsCisJCQkJIERSUDBfSU5URVJSVVBUX0VOQUJMRSk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHJlZ21hcF93cml0ZShsbGNjX2JjYXN0X3Jl Z21hcCwgRFJQX0lOVEVSUlVQVF9FTkFCTEUsCisJCQkgICBTQl9EQl9EUlBfSU5URVJSVVBUX0VO QUJMRSk7CisJcmV0dXJuIHJldDsKK30KKworLyogQ2xlYXIgdGhlIGVycm9yIGludGVycnVwdCBh bmQgY291bnRlciByZWdpc3RlcnMgKi8KK3N0YXRpYyBpbnQKK3Fjb21fbGxjY19jbGVhcl9lcnJv cl9zdGF0dXMoaW50IGVycl90eXBlLCBzdHJ1Y3QgbGxjY19kcnZfZGF0YSAqZHJ2KQoreworCWlu dCByZXQgPSAwOworCisJc3dpdGNoIChlcnJfdHlwZSkgeworCWNhc2UgTExDQ19EUkFNX0NFOgor CWNhc2UgTExDQ19EUkFNX1VFOgorCQlyZXQgPSByZWdtYXBfd3JpdGUoZHJ2LT5iY2FzdF9yZWdt YXAsIERSUF9JTlRFUlJVUFRfQ0xFQVIsCisJCQkJICAgRFJQX1RSUF9JTlRfQ0xFQVIpOworCQlp ZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlyZXQgPSByZWdtYXBfd3JpdGUoZHJ2LT5iY2Fz dF9yZWdtYXAsIERSUF9FQ0NfRVJST1JfQ05UUl9DTEVBUiwKKwkJCQkgICBEUlBfVFJQX0NOVF9D TEVBUik7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCQlicmVhazsKKwljYXNlIExMQ0Nf VFJBTV9DRToKKwljYXNlIExMQ0NfVFJBTV9VRToKKwkJcmV0ID0gcmVnbWFwX3dyaXRlKGRydi0+ YmNhc3RfcmVnbWFwLCBUUlBfSU5URVJSVVBUXzBfQ0xFQVIsCisJCQkJICAgRFJQX1RSUF9JTlRf Q0xFQVIpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlyZXQgPSByZWdtYXBfd3Jp dGUoZHJ2LT5iY2FzdF9yZWdtYXAsIFRSUF9FQ0NfRVJST1JfQ05UUl9DTEVBUiwKKwkJCQkgICBE UlBfVFJQX0NOVF9DTEVBUik7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCQlicmVhazsK KwlkZWZhdWx0OgorCQlyZXQgPSAtRUlOVkFMOworCQllZGFjX3ByaW50ayhLRVJOX0NSSVQsIEVE QUNfTExDQywgIlVuZXhwZWN0ZWQgZXJyb3IgdHlwZTogJWRcbiIsCisJCQkgICAgZXJyX3R5cGUp OworCX0KKwlyZXR1cm4gcmV0OworfQorCisvKiBEdW1wIFN5bmRyb21lIHJlZ2lzdGVycyBkYXRh IGZvciBUYWcgUkFNLCBEYXRhIFJBTSBiaXQgZXJyb3JzKi8KK3N0YXRpYyBpbnQKK2R1bXBfc3lu X3JlZ192YWx1ZXMoc3RydWN0IGxsY2NfZHJ2X2RhdGEgKmRydiwgdTMyIGJhbmssIGludCBlcnJf dHlwZSkKK3sKKwlzdHJ1Y3QgbGxjY19lZGFjX3JlZ19kYXRhIHJlZ19kYXRhID0gZWRhY19yZWdf ZGF0YVtlcnJfdHlwZV07CisJaW50IGVycl9jbnQsIGVycl93YXlzLCByZXQsIGk7CisJdTMyIHN5 bmRfcmVnLCBzeW5kX3ZhbDsKKworCWZvciAoaSA9IDA7IGkgPCByZWdfZGF0YS5yZWdfY250OyBp KyspIHsKKwkJc3luZF9yZWcgPSByZWdfZGF0YS5zeW5kX3JlZyArIChpICogNCk7CisJCXJldCA9 IHJlZ21hcF9yZWFkKGRydi0+cmVnbWFwLCBkcnYtPm9mZnNldHNbYmFua10gKyBzeW5kX3JlZywK KwkJCQkgICZzeW5kX3ZhbCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGNsZWFyOworCQllZGFjX3By aW50ayhLRVJOX0NSSVQsIEVEQUNfTExDQywgIiVzOiBFQ0NfU1lOJWQ6IDB4JTh4XG4iLAorCQkJ ICAgIHJlZ19kYXRhLm5hbWUsIGksIHN5bmRfdmFsKTsKKwl9CisKKwlyZXQgPSByZWdtYXBfcmVh ZChkcnYtPnJlZ21hcCwKKwkJCSAgZHJ2LT5vZmZzZXRzW2JhbmtdICsgcmVnX2RhdGEuY291bnRf c3RhdHVzX3JlZywKKwkJCSAgJmVycl9jbnQpOworCWlmIChyZXQpCisJCWdvdG8gY2xlYXI7CisK KwllcnJfY250ICY9IHJlZ19kYXRhLmNvdW50X21hc2s7CisJZXJyX2NudCA+Pj0gcmVnX2RhdGEu Y291bnRfc2hpZnQ7CisJZWRhY19wcmludGsoS0VSTl9DUklULCBFREFDX0xMQ0MsICIlczogZXJy b3IgY291bnQ6IDB4JTR4XG4iLAorCQkgICAgcmVnX2RhdGEubmFtZSwgZXJyX2NudCk7CisKKwly ZXQgPSByZWdtYXBfcmVhZChkcnYtPnJlZ21hcCwKKwkJCSAgZHJ2LT5vZmZzZXRzW2JhbmtdICsg cmVnX2RhdGEud2F5c19zdGF0dXNfcmVnLAorCQkJICAmZXJyX3dheXMpOworCWlmIChyZXQpCisJ CWdvdG8gY2xlYXI7CisKKwllcnJfd2F5cyAmPSByZWdfZGF0YS53YXlzX21hc2s7CisJZXJyX3dh eXMgPj49IHJlZ19kYXRhLndheXNfc2hpZnQ7CisKKwllZGFjX3ByaW50ayhLRVJOX0NSSVQsIEVE QUNfTExDQywgIiVzOiBlcnJvciB3YXlzOiAweCU0eFxuIiwKKwkJICAgIHJlZ19kYXRhLm5hbWUs IGVycl93YXlzKTsKKworY2xlYXI6CisJcmV0dXJuIHFjb21fbGxjY19jbGVhcl9lcnJvcl9zdGF0 dXMoZXJyX3R5cGUsIGRydik7Cit9CisKK3N0YXRpYyBpbnQKK2R1bXBfc3luX3JlZyhzdHJ1Y3Qg ZWRhY19kZXZpY2VfY3RsX2luZm8gKmVkZXZfY3RsLCBpbnQgZXJyX3R5cGUsIHUzMiBiYW5rKQor eworCXN0cnVjdCBsbGNjX2Rydl9kYXRhICpkcnYgPSBlZGV2X2N0bC0+cHZ0X2luZm87CisJaW50 IHJldDsKKworCXJldCA9IGR1bXBfc3luX3JlZ192YWx1ZXMoZHJ2LCBiYW5rLCBlcnJfdHlwZSk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXN3aXRjaCAoZXJyX3R5cGUpIHsKKwljYXNl IExMQ0NfRFJBTV9DRToKKwkJZWRhY19kZXZpY2VfaGFuZGxlX2NlKGVkZXZfY3RsLCAwLCBiYW5r LAorCQkJCSAgICAgICJMTENDIERhdGEgUkFNIGNvcnJlY3RhYmxlIEVycm9yIik7CisJCWJyZWFr OworCWNhc2UgTExDQ19EUkFNX1VFOgorCQllZGFjX2RldmljZV9oYW5kbGVfdWUoZWRldl9jdGws IDAsIGJhbmssCisJCQkJICAgICAgIkxMQ0MgRGF0YSBSQU0gdW5jb3JyZWN0YWJsZSBFcnJvciIp OworCQlicmVhazsKKwljYXNlIExMQ0NfVFJBTV9DRToKKwkJZWRhY19kZXZpY2VfaGFuZGxlX2Nl KGVkZXZfY3RsLCAwLCBiYW5rLAorCQkJCSAgICAgICJMTENDIFRhZyBSQU0gY29ycmVjdGFibGUg RXJyb3IiKTsKKwkJYnJlYWs7CisJY2FzZSBMTENDX1RSQU1fVUU6CisJCWVkYWNfZGV2aWNlX2hh bmRsZV91ZShlZGV2X2N0bCwgMCwgYmFuaywKKwkJCQkgICAgICAiTExDQyBUYWcgUkFNIHVuY29y cmVjdGFibGUgRXJyb3IiKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0ID0gLUVJTlZBTDsK KwkJZWRhY19wcmludGsoS0VSTl9DUklULCBFREFDX0xMQ0MsICJVbmV4cGVjdGVkIGVycm9yIHR5 cGU6ICVkXG4iLAorCQkJICAgIGVycl90eXBlKTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitz dGF0aWMgaXJxcmV0dXJuX3QKK2xsY2NfZWNjX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmVk ZXZfY3RsKQoreworCXN0cnVjdCBlZGFjX2RldmljZV9jdGxfaW5mbyAqZWRhY19kZXZfY3RsID0g ZWRldl9jdGw7CisJc3RydWN0IGxsY2NfZHJ2X2RhdGEgKmRydiA9IGVkYWNfZGV2X2N0bC0+cHZ0 X2luZm87CisJaXJxcmV0dXJuX3QgaXJxX3JjID0gSVJRX05PTkU7CisJdTMyIGRycF9lcnJvciwg dHJwX2Vycm9yLCBpOworCWJvb2wgaXJxX2hhbmRsZWQ7CisJaW50IHJldDsKKworCS8qIEl0ZXJh dGUgb3ZlciB0aGUgYmFua3MgYW5kIGxvb2sgZm9yIFRhZyBSQU0gb3IgRGF0YSBSQU0gZXJyb3Jz ICovCisJZm9yIChpID0gMDsgaSA8IGRydi0+bnVtX2JhbmtzOyBpKyspIHsKKwkJcmV0ID0gcmVn bWFwX3JlYWQoZHJ2LT5yZWdtYXAsCisJCQkJICBkcnYtPm9mZnNldHNbaV0gKyBEUlBfSU5URVJS VVBUX1NUQVRVUywKKwkJCQkgICZkcnBfZXJyb3IpOworCisJCWlmICghcmV0ICYmIChkcnBfZXJy b3IgJiBTQl9FQ0NfRVJST1IpKSB7CisJCQllZGFjX3ByaW50ayhLRVJOX0NSSVQsIEVEQUNfTExD QywKKwkJCQkgICAgIlNpbmdsZSBCaXQgRXJyb3IgZGV0ZWN0ZWQgaW4gRGF0YSBSYW1cbiIpOwor CQkJcmV0ID0gZHVtcF9zeW5fcmVnKGVkZXZfY3RsLCBMTENDX0RSQU1fQ0UsIGkpOworCQl9IGVs c2UgaWYgKCFyZXQgJiYgKGRycF9lcnJvciAmIERCX0VDQ19FUlJPUikpIHsKKwkJCWVkYWNfcHJp bnRrKEtFUk5fQ1JJVCwgRURBQ19MTENDLAorCQkJCSAgICAiRG91YmxlIEJpdCBFcnJvciBkZXRl Y3RlZCBpbiBEYXRhIFJhbVxuIik7CisJCQlyZXQgPSBkdW1wX3N5bl9yZWcoZWRldl9jdGwsIExM Q0NfRFJBTV9VRSwgaSk7CisJCX0KKwkJaWYgKCFyZXQpCisJCQlpcnFfaGFuZGxlZCA9IHRydWU7 CisKKwkJcmV0ID0gcmVnbWFwX3JlYWQoZHJ2LT5yZWdtYXAsCisJCQkJICBkcnYtPm9mZnNldHNb aV0gKyBUUlBfSU5URVJSVVBUXzBfU1RBVFVTLAorCQkJCSAgJnRycF9lcnJvcik7CisKKwkJaWYg KCFyZXQgJiYgKHRycF9lcnJvciAmIFNCX0VDQ19FUlJPUikpIHsKKwkJCWVkYWNfcHJpbnRrKEtF Uk5fQ1JJVCwgRURBQ19MTENDLAorCQkJCSAgICAiU2luZ2xlIEJpdCBFcnJvciBkZXRlY3RlZCBp biBUYWcgUmFtXG4iKTsKKwkJCXJldCA9IGR1bXBfc3luX3JlZyhlZGV2X2N0bCwgTExDQ19UUkFN X0NFLCBpKTsKKwkJfSBlbHNlIGlmICghcmV0ICYmICh0cnBfZXJyb3IgJiBEQl9FQ0NfRVJST1Ip KSB7CisJCQllZGFjX3ByaW50ayhLRVJOX0NSSVQsIEVEQUNfTExDQywKKwkJCQkgICAgIkRvdWJs ZSBCaXQgRXJyb3IgZGV0ZWN0ZWQgaW4gVGFnIFJhbVxuIik7CisJCQlyZXQgPSBkdW1wX3N5bl9y ZWcoZWRldl9jdGwsIExMQ0NfVFJBTV9VRSwgaSk7CisJCX0KKwkJaWYgKCFyZXQpCisJCQlpcnFf aGFuZGxlZCA9IHRydWU7CisJfQorCisJaWYgKGlycV9oYW5kbGVkKQorCQlpcnFfcmMgPSBJUlFf SEFORExFRDsKKworCXJldHVybiBpcnFfcmM7Cit9CisKK3N0YXRpYyBpbnQgcWNvbV9sbGNjX2Vk YWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgbGxjY19k cnZfZGF0YSAqbGxjY19kcml2X2RhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKKwlzdHJ1 Y3QgZWRhY19kZXZpY2VfY3RsX2luZm8gKmVkZXZfY3RsOworCXN0cnVjdCBkZXZpY2UgKmRldiA9 ICZwZGV2LT5kZXY7CisJaW50IGVjY19pcnE7CisJaW50IHJjOworCisJcmMgPSBxY29tX2xsY2Nf Y29yZV9zZXR1cChsbGNjX2RyaXZfZGF0YS0+YmNhc3RfcmVnbWFwKTsKKwlpZiAocmMpCisJCXJl dHVybiByYzsKKworCS8qIEFsbG9jYXRlIGVkYWMgY29udHJvbCBpbmZvICovCisJZWRldl9jdGwg PSBlZGFjX2RldmljZV9hbGxvY19jdGxfaW5mbygwLCAicWNvbS1sbGNjIiwgMSwgImJhbmsiLAor CQkJCQkgICAgICBsbGNjX2RyaXZfZGF0YS0+bnVtX2JhbmtzLCAxLAorCQkJCQkgICAgICBOVUxM LCAwLAorCQkJCQkgICAgICBlZGFjX2RldmljZV9hbGxvY19pbmRleCgpKTsKKworCWlmICghZWRl dl9jdGwpCisJCXJldHVybiAtRU5PTUVNOworCisJZWRldl9jdGwtPmRldiA9IGRldjsKKwllZGV2 X2N0bC0+bW9kX25hbWUgPSBkZXZfbmFtZShkZXYpOworCWVkZXZfY3RsLT5kZXZfbmFtZSA9IGRl dl9uYW1lKGRldik7CisJZWRldl9jdGwtPmN0bF9uYW1lID0gImxsY2MiOworCWVkZXZfY3RsLT5w YW5pY19vbl91ZSA9IExMQ0NfRVJQX1BBTklDX09OX1VFOworCWVkZXZfY3RsLT5wdnRfaW5mbyA9 IGxsY2NfZHJpdl9kYXRhOworCisJcmMgPSBlZGFjX2RldmljZV9hZGRfZGV2aWNlKGVkZXZfY3Rs KTsKKwlpZiAocmMpCisJCWdvdG8gb3V0X21lbTsKKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBk ZXYsIGVkZXZfY3RsKTsKKworCS8qIFJlcXVlc3QgZm9yIGVjYyBpcnEgKi8KKwllY2NfaXJxID0g bGxjY19kcml2X2RhdGEtPmVjY19pcnE7CisJaWYgKGVjY19pcnEgPCAwKSB7CisJCXJjID0gLUVO T0RFVjsKKwkJZ290byBvdXRfZGV2OworCX0KKwlyYyA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBl Y2NfaXJxLCBsbGNjX2VjY19pcnFfaGFuZGxlciwKKwkJCSAgICAgIElSUUZfVFJJR0dFUl9ISUdI LCAibGxjY19lY2MiLCBlZGV2X2N0bCk7CisJaWYgKHJjKQorCQlnb3RvIG91dF9kZXY7CisKKwly ZXR1cm4gcmM7CisKK291dF9kZXY6CisJZWRhY19kZXZpY2VfZGVsX2RldmljZShlZGV2X2N0bC0+ ZGV2KTsKK291dF9tZW06CisJZWRhY19kZXZpY2VfZnJlZV9jdGxfaW5mbyhlZGV2X2N0bCk7CisK KwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgcWNvbV9sbGNjX2VkYWNfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGVkYWNfZGV2aWNlX2N0bF9pbmZv ICplZGV2X2N0bCA9IGRldl9nZXRfZHJ2ZGF0YSgmcGRldi0+ZGV2KTsKKworCWVkYWNfZGV2aWNl X2RlbF9kZXZpY2UoZWRldl9jdGwtPmRldik7CisJZWRhY19kZXZpY2VfZnJlZV9jdGxfaW5mbyhl ZGV2X2N0bCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgcWNvbV9sbGNjX2VkYWNfbWF0Y2hfdGFibGVbXSA9IHsKKyNpZmRlZiBFREFDX1FDT01f TExDQworCXsgLmNvbXBhdGlibGUgPSAicWNvbSxsbGNjLWVkYWMiIH0sCisjZW5kaWYKKwl7IH0s Cit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBxY29tX2xsY2NfZWRhY19kcml2 ZXIgPSB7CisJLnByb2JlID0gcWNvbV9sbGNjX2VkYWNfcHJvYmUsCisJLnJlbW92ZSA9IHFjb21f bGxjY19lZGFjX3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJxY29tX2xsY2NfZWRh YyIsCisJCS5vZl9tYXRjaF90YWJsZSA9IHFjb21fbGxjY19lZGFjX21hdGNoX3RhYmxlLAorCX0s Cit9OworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihxY29tX2xsY2NfZWRhY19kcml2ZXIpOworCitN T0RVTEVfREVTQ1JJUFRJT04oIlFDT00gRURBQyBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJH UEwgdjIiKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc29jL3Fjb20vbGxjYy1xY29tLmgg Yi9pbmNsdWRlL2xpbnV4L3NvYy9xY29tL2xsY2MtcWNvbS5oCmluZGV4IDJlNGIzNGQuLjY5YzI4 NWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc29jL3Fjb20vbGxjYy1xY29tLmgKKysrIGIv aW5jbHVkZS9saW51eC9zb2MvcWNvbS9sbGNjLXFjb20uaApAQCAtOTMsNiArOTMsMzAgQEAgc3Ry dWN0IGxsY2NfZHJ2X2RhdGEgewogCWludCBlY2NfaXJxOwogfTsKIAorLyoqCisgKiBsbGNjX2Vk YWNfcmVnX2RhdGEgLSBsbGNjIGVkYWMgcmVnaXN0ZXJzIGRhdGEgZm9yIGVhY2ggZXJyb3IgdHlw ZQorICogQG5hbWU6IE5hbWUgb2YgdGhlIGVycm9yCisgKiBAc3luZF9yZWc6IFN5bmRyb21lIHJl Z2lzdGVyIGFkZHJlc3MKKyAqIEBjb3VudF9zdGF0dXNfcmVnOiBTdGF0dXMgcmVnaXN0ZXIgYWRk cmVzcyB0byByZWFkIHRoZSBlcnJvciBjb3VudAorICogQHdheXNfc3RhdHVzX3JlZzogU3RhdHVz IHJlZ2lzdGVyIGFkZHJlc3MgdG8gcmVhZCB0aGUgZXJyb3Igd2F5cworICogQHJlZ19jbnQ6IE51 bWJlciBvZiByZWdpc3RlcnMKKyAqIEBjb3VudF9tYXNrOiBNYXNrIHZhbHVlIHRvIGdldCB0aGUg ZXJyb3IgY291bnQKKyAqIEB3YXlzX21hc2s6IE1hc2sgdmFsdWUgdG8gZ2V0IHRoZSBlcnJvciB3 YXlzCisgKiBAY291bnRfc2hpZnQ6IFNoaWZ0IHZhbHVlIHRvIGdldCB0aGUgZXJyb3IgY291bnQK KyAqIEB3YXlzX3NoaWZ0OiBTaGlmdCB2YWx1ZSB0byBnZXQgdGhlIGVycm9yIHdheXMKKyAqLwor c3RydWN0IGxsY2NfZWRhY19yZWdfZGF0YSB7CisJY2hhciAqbmFtZTsKKwl1NjQgc3luZF9yZWc7 CisJdTY0IGNvdW50X3N0YXR1c19yZWc7CisJdTY0IHdheXNfc3RhdHVzX3JlZzsKKwl1MzIgcmVn X2NudDsKKwl1MzIgY291bnRfbWFzazsKKwl1MzIgd2F5c19tYXNrOworCXU4ICBjb3VudF9zaGlm dDsKKwl1OCAgd2F5c19zaGlmdDsKK307CisKICNpZiBJU19FTkFCTEVEKENPTkZJR19RQ09NX0xM Q0MpCiAvKioKICAqIGxsY2Nfc2xpY2VfZ2V0ZCAtIGdldCBsbGNjIHNsaWNlIGRlc2NyaXB0b3IK