From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Chen, Guchun" Subject: RE: [PATCH 2/4] drm/amd/powerplay: Add EEPROM I2C read/write support to Arcturus. Date: Mon, 21 Oct 2019 01:44:48 +0000 Message-ID: References: <1571431711-30149-1-git-send-email-andrey.grodzovsky@amd.com> <1571431711-30149-3-git-send-email-andrey.grodzovsky@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1571431711-30149-3-git-send-email-andrey.grodzovsky-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Deucher, Alexander" , "Grodzovsky, Andrey" , "Zhou1, Tao" , "Quan, Evan" , "noreply-confluence-5C7GfCeVMHo@public.gmane.org" Q29tbWVudCBpbmxpbmUuCgoKUmVnYXJkcywKR3VjaHVuCgotLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQpGcm9tOiBBbmRyZXkgR3JvZHpvdnNreSA8YW5kcmV5Lmdyb2R6b3Zza3lAYW1kLmNvbT4g ClNlbnQ6IFNhdHVyZGF5LCBPY3RvYmVyIDE5LCAyMDE5IDQ6NDggQU0KVG86IGFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCkNjOiBDaGVuLCBHdWNodW4gPEd1Y2h1bi5DaGVuQGFtZC5jb20+ OyBaaG91MSwgVGFvIDxUYW8uWmhvdTFAYW1kLmNvbT47IERldWNoZXIsIEFsZXhhbmRlciA8QWxl eGFuZGVyLkRldWNoZXJAYW1kLmNvbT47IG5vcmVwbHktY29uZmx1ZW5jZUBhbWQuY29tOyBRdWFu LCBFdmFuIDxFdmFuLlF1YW5AYW1kLmNvbT47IEdyb2R6b3Zza3ksIEFuZHJleSA8QW5kcmV5Lkdy b2R6b3Zza3lAYW1kLmNvbT4KU3ViamVjdDogW1BBVENIIDIvNF0gZHJtL2FtZC9wb3dlcnBsYXk6 IEFkZCBFRVBST00gSTJDIHJlYWQvd3JpdGUgc3VwcG9ydCB0byBBcmN0dXJ1cy4KClRoZSBjb21t dW5pY2F0aW9uIGlzIGRvbmUgdGhyb3VnaCBTTVUgdGFibGUgYW5kIGhlbmNlIHRoZSBjb2RlIGlz IGluIHBvd2VycGxheS4KClNpZ25lZC1vZmYtYnk6IEFuZHJleSBHcm9kem92c2t5IDxhbmRyZXku Z3JvZHpvdnNreUBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2Fy Y3R1cnVzX3BwdC5jIHwgMjI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNo YW5nZWQsIDIyOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvYXJjdHVydXNfcHB0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxh eS9hcmN0dXJ1c19wcHQuYwppbmRleCA5MGQ4NzFhLi41M2QwOGRlNSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYXJjdHVydXNfcHB0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9wb3dlcnBsYXkvYXJjdHVydXNfcHB0LmMKQEAgLTM2LDYgKzM2LDExIEBACiAj aW5jbHVkZSAic211X3YxMV8wX3BwdGFibGUuaCIKICNpbmNsdWRlICJhcmN0dXJ1c19wcHNtYy5o IgogI2luY2x1ZGUgIm5iaW8vbmJpb183XzRfc2hfbWFzay5oIgorI2luY2x1ZGUgPGxpbnV4L2ky Yy5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgImFtZGdwdV9yYXMuaCIKKwor I2RlZmluZSB0b19hbWRncHVfZGV2aWNlKHgpIChjb250YWluZXJfb2YoeCwgc3RydWN0IGFtZGdw dV9yYXMsIAorZWVwcm9tX2NvbnRyb2wuZWVwcm9tX2FjY2Vzc29yKSktPmFkZXYKIAogI2RlZmlu ZSBDVEZfT0ZGU0VUX0VER0UJCQk1CiAjZGVmaW5lIENURl9PRkZTRVRfSE9UU1BPVAkJNQpAQCAt MTcxLDYgKzE3Niw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc211XzExXzBfY21uMmFpc2NfbWFwcGluZyBh cmN0dXJ1c190YWJsZV9tYXBbU01VX1RBQkxFX0NPVU5UXSA9IHsKIAlUQUJfTUFQKFNNVV9NRVRS SUNTKSwKIAlUQUJfTUFQKERSSVZFUl9TTVVfQ09ORklHKSwKIAlUQUJfTUFQKE9WRVJEUklWRSks CisJVEFCX01BUChJMkNfQ09NTUFORFMpLAogfTsKIAogc3RhdGljIHN0cnVjdCBzbXVfMTFfMF9j bW4yYWlzY19tYXBwaW5nIGFyY3R1cnVzX3B3cl9zcmNfbWFwW1NNVV9QT1dFUl9TT1VSQ0VfQ09V TlRdID0geyBAQCAtMjkzLDYgKzI5OSw5IEBAIHN0YXRpYyBpbnQgYXJjdHVydXNfdGFibGVzX2lu aXQoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsIHN0cnVjdCBzbXVfdGFibGUgKnRhYmxlCiAJU01V X1RBQkxFX0lOSVQodGFibGVzLCBTTVVfVEFCTEVfU01VX01FVFJJQ1MsIHNpemVvZihTbXVNZXRy aWNzX3QpLAogCQkgICAgICAgUEFHRV9TSVpFLCBBTURHUFVfR0VNX0RPTUFJTl9WUkFNKTsKIAor CVNNVV9UQUJMRV9JTklUKHRhYmxlcywgU01VX1RBQkxFX0kyQ19DT01NQU5EUywgc2l6ZW9mKFN3 STJjUmVxdWVzdF90KSwKKwkJCSAgICAgICBQQUdFX1NJWkUsIEFNREdQVV9HRU1fRE9NQUlOX1ZS QU0pOworCiAJc211X3RhYmxlLT5tZXRyaWNzX3RhYmxlID0ga3phbGxvYyhzaXplb2YoU211TWV0 cmljc190KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFzbXVfdGFibGUtPm1ldHJpY3NfdGFibGUpCiAJ CXJldHVybiAtRU5PTUVNOwpAQCAtMTkyNyw2ICsxOTM2LDIyNCBAQCBzdGF0aWMgaW50IGFyY3R1 cnVzX2RwbV9zZXRfdXZkX2VuYWJsZShzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSwgYm9vbCBlbmFi bGUpCiAJcmV0dXJuIHJldDsKIH0KIAorCitzdGF0aWMgdm9pZCBhcmN0dXJ1c19maWxsX2VlcHJv bV9pMmNfcmVxKFN3STJjUmVxdWVzdF90ICAqcmVxLCBib29sIHdyaXRlLAorCQkJCSAgdWludDhf dCBhZGRyZXNzLCB1aW50MzJfdCBudW1ieXRlcywKKwkJCQkgIHVpbnQ4X3QgKmRhdGEpCit7CisJ aW50IGk7CisKKwlCVUdfT04obnVtYnl0ZXMgPiBNQVhfU1dfSTJDX0NPTU1BTkRTKTsKKworCXJl cS0+STJDY29udHJvbGxlclBvcnQgPSAwOworCXJlcS0+STJDU3BlZWQgPSAyOworCXJlcS0+U2xh dmVBZGRyZXNzID0gYWRkcmVzczsKKwlyZXEtPk51bUNtZHMgPSBudW1ieXRlczsKKworCWZvciAo aSA9IDA7IGkgPCBudW1ieXRlczsgaSsrKSB7CisJCVN3STJjQ21kX3QgKmNtZCA9ICAmcmVxLT5T d0kyY0NtZHNbaV07CisKKwkJLyogRmlyc3QgMiBieXRlcyBhcmUgYWx3YXlzIHdyaXRlIGZvciBs b3dlciAyYiBFRVBST00gYWRkcmVzcyAqLworCQlpZiAoaSA8IDIpCisJCQljbWQtPkNtZCA9IDE7 CisJCWVsc2UKKwkJCWNtZC0+Q21kID0gd3JpdGU7CisKKworCQkvKiBBZGQgUkVTVEFSVCBmb3Ig cmVhZCAgYWZ0ZXIgYWRkcmVzcyBmaWxsZWQgKi8KKwkJY21kLT5DbWRDb25maWcgfD0gKGkgPT0g MiAmJiAhd3JpdGUpID8gQ01EQ09ORklHX1JFU1RBUlRfTUFTSyA6IDA7CisKKwkJLyogQWRkIFNU T1AgaW4gdGhlIGVuZCAqLworCQljbWQtPkNtZENvbmZpZyB8PSAoaSA9PSAobnVtYnl0ZXMgLSAx KSkgPyBDTURDT05GSUdfU1RPUF9NQVNLIDogMDsKKworCQkvKiBGaWxsIHdpdGggZGF0YSByZWdh cmRsZXNzIGlmIHJlYWQgb3Igd3JpdGUgdG8gc2ltcGxpZnkgY29kZSAqLworCQljbWQtPlJlZ2lz dGVyQWRkciA9IGRhdGFbaV07CisJfQorfQorCitzdGF0aWMgaW50IGFyY3R1cnVzX2kyY19lZXBy b21fcmVhZF9kYXRhKHN0cnVjdCBpMmNfYWRhcHRlciAqY29udHJvbCwKKwkJCQkJICAgICAgIHVp bnQ4X3QgYWRkcmVzcywKKwkJCQkJICAgICAgIHVpbnQ4X3QgKmRhdGEsCisJCQkJCSAgICAgICB1 aW50MzJfdCBudW1ieXRlcykKK3sKKwl1aW50MzJfdCAgaSwgcmV0ID0gMDsKKwlTd0kyY1JlcXVl c3RfdCByZXE7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSB0b19hbWRncHVfZGV2aWNl KGNvbnRyb2wpOworCXN0cnVjdCBzbXVfdGFibGVfY29udGV4dCAqc211X3RhYmxlID0gJmFkZXYt PnNtdS5zbXVfdGFibGU7CisJc3RydWN0IHNtdV90YWJsZSAqdGFibGUgPSAmc211X3RhYmxlLT50 YWJsZXNbU01VX1RBQkxFX0kyQ19DT01NQU5EU107CisKKwltZW1zZXQoJnJlcSwgMCwgc2l6ZW9m KHJlcSkpOworCWFyY3R1cnVzX2ZpbGxfZWVwcm9tX2kyY19yZXEoJnJlcSwgZmFsc2UsIGFkZHJl c3MsIG51bWJ5dGVzLCBkYXRhKTsKKworCW11dGV4X2xvY2soJmFkZXYtPnNtdS5tdXRleCk7CisJ LyogTm93IHJlYWQgZGF0YSBzdGFydGluZyB3aXRoIHRoYXQgYWRkcmVzcyAqLworCXJldCA9IHNt dV91cGRhdGVfdGFibGUoJmFkZXYtPnNtdSwgU01VX1RBQkxFX0kyQ19DT01NQU5EUywgMCwgJnJl cSwKKwkJCQkJdHJ1ZSk7CisJbXV0ZXhfdW5sb2NrKCZhZGV2LT5zbXUubXV0ZXgpOworCisJaWYg KCFyZXQpIHsKKwkJU3dJMmNSZXF1ZXN0X3QgKnJlcyA9IChTd0kyY1JlcXVlc3RfdCAqKXRhYmxl LT5jcHVfYWRkcjsKKworCQkvKiBBc3N1bWUgU01VICBmaWxscyByZXMuU3dJMmNDbWRzW2ldLkRh dGEgd2l0aCByZWFkIGJ5dGVzICovCisJCWZvciAoaSA9IDA7IGkgPCBudW1ieXRlczsgaSsrKQor CQkJZGF0YVtpXSA9IHJlcy0+U3dJMmNDbWRzW2ldLkRhdGE7CisKKwkJcHJfZGVidWcoImFyY3R1 cnVzX2kyY19lZXByb21fcmVhZF9kYXRhLCBhZGRyZXNzID0gJXgsIGJ5dGVzID0gJWQsIGRhdGEg OiIsCisJCQkJICAodWludDE2X3QpYWRkcmVzcywgbnVtYnl0ZXMpOworCisJCXByaW50X2hleF9k dW1wKEtFUk5fREVCVUcsICJkYXRhOiAiLCBEVU1QX1BSRUZJWF9OT05FLAorCQkJICAgICAgIDgs IDEsIGRhdGEsIG51bWJ5dGVzLCBmYWxzZSk7CisJfSBlbHNlCisJCXByX2VycigiYXJjdHVydXNf aTJjX2VlcHJvbV9yZWFkX2RhdGEgLSBlcnJvciBvY2N1cnJlZCA6JXgiLCByZXQpOworCisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCBhcmN0dXJ1c19pMmNfZWVwcm9tX3dyaXRlX2RhdGEo c3RydWN0IGkyY19hZGFwdGVyICpjb250cm9sLAorCQkJCQkJdWludDhfdCBhZGRyZXNzLAorCQkJ CQkJdWludDhfdCAqZGF0YSwKKwkJCQkJCXVpbnQzMl90IG51bWJ5dGVzKQoreworCXVpbnQzMl90 IHJldDsKKwlTd0kyY1JlcXVlc3RfdCByZXE7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYg PSB0b19hbWRncHVfZGV2aWNlKGNvbnRyb2wpOworCisJbWVtc2V0KCZyZXEsIDAsIHNpemVvZihy ZXEpKTsKKwlhcmN0dXJ1c19maWxsX2VlcHJvbV9pMmNfcmVxKCZyZXEsIHRydWUsIGFkZHJlc3Ms IG51bWJ5dGVzLCBkYXRhKTsKKworCW11dGV4X2xvY2soJmFkZXYtPnNtdS5tdXRleCk7CisJcmV0 ID0gc211X3VwZGF0ZV90YWJsZSgmYWRldi0+c211LCBTTVVfVEFCTEVfSTJDX0NPTU1BTkRTLCAw LCAmcmVxLCB0cnVlKTsKKwltdXRleF91bmxvY2soJmFkZXYtPnNtdS5tdXRleCk7CisKKwlpZiAo IXJldCkgeworCQlwcl9kZWJ1ZygiYXJjdHVydXNfaTJjX3dyaXRlKCksIGFkZHJlc3MgPSAleCwg Ynl0ZXMgPSAlZCAsIGRhdGE6ICIsCisJCQkJCSAodWludDE2X3QpYWRkcmVzcywgbnVtYnl0ZXMp OworCisJCXByaW50X2hleF9kdW1wKEtFUk5fREVCVUcsICJkYXRhOiAiLCBEVU1QX1BSRUZJWF9O T05FLAorCQkJICAgICAgIDgsIDEsIGRhdGEsIG51bWJ5dGVzLCBmYWxzZSk7CisJCS8qCisJCSAq IEFjY29yZGluZyB0byBFRVBST00gc3BlYyB0aGVyZSBpcyBhIE1BWCBvZiAxMCBtcyByZXF1aXJl ZCBmb3IKKwkJICogRUVQUk9NIHRvIGZsdXNoIGludGVybmFsIFJYIGJ1ZmZlciBhZnRlciBTVE9Q IHdhcyBpc3N1ZWQgYXQgdGhlCisJCSAqIGVuZCBvZiB3cml0ZSB0cmFuc2FjdGlvbi4gRHVyaW5n IHRoaXMgdGltZSB0aGUgRUVQUk9NIHdpbGwgbm90IGJlCisJCSAqIHJlc3BvbnNpdmUgdG8gYW55 IG1vcmUgY29tbWFuZHMgLSBzbyB3YWl0IGEgYml0IG1vcmUuCisJCSAqLworCQltc2xlZXAoMTAp OworCisJfSBlbHNlCisJCXByX2VycigiYXJjdHVydXNfaTJjX3dyaXRlLSBlcnJvciBvY2N1cnJl ZCA6JXgiLCByZXQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhcmN0dXJ1c19p MmNfZWVwcm9tX2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqaTJjX2FkYXAsCisJCQkgICAg ICBzdHJ1Y3QgaTJjX21zZyAqbXNncywgaW50IG51bSkgeworCXVpbnQzMl90ICBpLCBqLCByZXQs IGRhdGFfc2l6ZSwgZGF0YV9jaHVua19zaXplLCBuZXh0X2VlcHJvbV9hZGRyID0gMDsKKwl1aW50 OF90ICpkYXRhX3B0ciwgZGF0YV9jaHVua1tNQVhfU1dfSTJDX0NPTU1BTkRTXSA9IHsgMCB9Owor CisJZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKSB7CisJCS8qCisJCSAqIFNNVSBpbnRlcmZhY2Ug YWxsb3dzIGF0IG1vc3QgTUFYX1NXX0kyQ19DT01NQU5EUyBieXRlcyBvZiBkYXRhIGF0CisJCSAq IG9uY2UgYW5kIGhlbmNlIHRoZSBkYXRhIG5lZWRzIHRvIGJlIHNwbGljZWQgaW50byBjaHVua3Mg YW5kIHNlbnQgZWFjaAorCQkgKiBjaHVuayBzZXBhcmF0ZWx5CisJCSAqLworCQlkYXRhX3NpemUg PSBtc2dzW2ldLmxlbiAtIDI7CisJCWRhdGFfY2h1bmtfc2l6ZSA9IE1BWF9TV19JMkNfQ09NTUFO RFMgLSAyOworCQluZXh0X2VlcHJvbV9hZGRyID0gKG1zZ3NbaV0uYnVmWzBdIDw8IDggJiAweGZm MDApIHwgKG1zZ3NbaV0uYnVmWzFdICYgMHhmZik7CisJCWRhdGFfcHRyID0gbXNnc1tpXS5idWYg KyAyOworCisJCWZvciAoaiA9IDA7IGogPCBkYXRhX3NpemUgLyBkYXRhX2NodW5rX3NpemU7IGor KykgeworCQkJLyogSW5zZXJ0IHRoZSBFRVBST00gZGVzdCBhZGRlc3MsIGJpdHMgMC0xNSAqLwor CQkJZGF0YV9jaHVua1swXSA9ICgobmV4dF9lZXByb21fYWRkciA+PiA4KSAmIDB4ZmYpOworCQkJ ZGF0YV9jaHVua1sxXSA9IChuZXh0X2VlcHJvbV9hZGRyICYgMHhmZik7CisKKwkJCWlmIChtc2dz W2ldLmZsYWdzICYgSTJDX01fUkQpIHsKKwkJCQlyZXQgPSBhcmN0dXJ1c19pMmNfZWVwcm9tX3Jl YWRfZGF0YShpMmNfYWRhcCwKKwkJCQkJCQkJKHVpbnQ4X3QpbXNnc1tpXS5hZGRyLAorCQkJCQkJ CQlkYXRhX2NodW5rLCBNQVhfU1dfSTJDX0NPTU1BTkRTKTsKKworCQkJCW1lbWNweShkYXRhX3B0 ciwgZGF0YV9jaHVuayArIDIsIGRhdGFfY2h1bmtfc2l6ZSk7CisJCQl9IGVsc2UgeworCisJCQkJ bWVtY3B5KGRhdGFfY2h1bmsgKyAyLCBkYXRhX3B0ciwgZGF0YV9jaHVua19zaXplKTsKKworCQkJ CXJldCA9IGFyY3R1cnVzX2kyY19lZXByb21fd3JpdGVfZGF0YShpMmNfYWRhcCwKKwkJCQkJCQkJ ICh1aW50OF90KW1zZ3NbaV0uYWRkciwKKwkJCQkJCQkJIGRhdGFfY2h1bmssIE1BWF9TV19JMkNf Q09NTUFORFMpOworCQkJfQorCisJCQlpZiAocmV0KSB7CisJCQkJbnVtID0gLUVJTzsKKwkJCQln b3RvIGZhaWw7CisJCQl9CisKKwkJCW5leHRfZWVwcm9tX2FkZHIgKz0gZGF0YV9jaHVua19zaXpl OworCQkJZGF0YV9wdHIgKz0gZGF0YV9jaHVua19zaXplOworCQl9CisKKwkJaWYgKGRhdGFfc2l6 ZSAlIGRhdGFfY2h1bmtfc2l6ZSkgeworCQkJZGF0YV9jaHVua1swXSA9ICgobmV4dF9lZXByb21f YWRkciA+PiA4KSAmIDB4ZmYpOworCQkJZGF0YV9jaHVua1sxXSA9IChuZXh0X2VlcHJvbV9hZGRy ICYgMHhmZik7CisKKwkJCWlmIChtc2dzW2ldLmZsYWdzICYgSTJDX01fUkQpIHsKKwkJCQlyZXQg PSBhcmN0dXJ1c19pMmNfZWVwcm9tX3JlYWRfZGF0YShpMmNfYWRhcCwKKwkJCQkJCQkJKHVpbnQ4 X3QpbXNnc1tpXS5hZGRyLAorCQkJCQkJCQlkYXRhX2NodW5rLCAoZGF0YV9zaXplICUgZGF0YV9j aHVua19zaXplKSArIDIpOworCisJCQkJbWVtY3B5KGRhdGFfcHRyLCBkYXRhX2NodW5rICsgMiwg ZGF0YV9zaXplICUgZGF0YV9jaHVua19zaXplKTsKKwkJCX0gZWxzZSB7CisJCQkJbWVtY3B5KGRh dGFfY2h1bmsgKyAyLCBkYXRhX3B0ciwgZGF0YV9zaXplICUgZGF0YV9jaHVua19zaXplKTsKKwor CQkJCXJldCA9IGFyY3R1cnVzX2kyY19lZXByb21fd3JpdGVfZGF0YShpMmNfYWRhcCwKKwkJCQkJ CQkJICh1aW50OF90KW1zZ3NbaV0uYWRkciwKKwkJCQkJCQkJIGRhdGFfY2h1bmssIChkYXRhX3Np emUgJSBkYXRhX2NodW5rX3NpemUpICsgMik7CisJCQl9CisKKwkJCWlmIChyZXQpIHsKKwkJCQlu dW0gPSAtRUlPOworCQkJCWdvdG8gZmFpbDsKKwkJCX0KKwkJfQorCX0KKworZmFpbDoKKwlyZXR1 cm4gbnVtOworfQorCitzdGF0aWMgdTMyIGFyY3R1cnVzX2kyY19lZXByb21faTJjX2Z1bmMoc3Ry dWN0IGkyY19hZGFwdGVyICphZGFwKSB7CisJcmV0dXJuIEkyQ19GVU5DX0kyQyB8IEkyQ19GVU5D X1NNQlVTX0VNVUw7IH0KKworCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19hbGdvcml0aG0gYXJj dHVydXNfaTJjX2VlcHJvbV9pMmNfYWxnbyA9IHsKKwkubWFzdGVyX3hmZXIgPSBhcmN0dXJ1c19p MmNfZWVwcm9tX2kyY194ZmVyLAorCS5mdW5jdGlvbmFsaXR5ID0gYXJjdHVydXNfaTJjX2VlcHJv bV9pMmNfZnVuYywKK307CisKK2ludCBhcmN0dXJ1c19pMmNfZWVwcm9tX2NvbnRyb2xfaW5pdChz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmNvbnRyb2wpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYgPSB0b19hbWRncHVfZGV2aWNlKGNvbnRyb2wpOworCWludCByZXM7CisKKwljb250cm9sLT5v d25lciA9IFRISVNfTU9EVUxFOworCWNvbnRyb2wtPmNsYXNzID0gSTJDX0NMQVNTX1NQRDsKKwlj b250cm9sLT5kZXYucGFyZW50ID0gJmFkZXYtPnBkZXYtPmRldjsKKwljb250cm9sLT5hbGdvID0g JmFyY3R1cnVzX2kyY19lZXByb21faTJjX2FsZ287CisJc25wcmludGYoY29udHJvbC0+bmFtZSwg c2l6ZW9mKGNvbnRyb2wtPm5hbWUpLCAiUkFTIEVFUFJPTSIpOworCisJcmVzID0gaTJjX2FkZF9h ZGFwdGVyKGNvbnRyb2wpOworCWlmIChyZXMpCisJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlZ2lz dGVyIGh3IGkyYywgZXJyOiAlZFxuIiwgcmVzKTsKKyAKKwlyZXR1cm4gcmVzOworfQpbR3VjaHVu XUNhbiB3ZSBtb3ZlIHRoaXMgcmVnaXN0ZXIgY29kZSB0byBvbmUgY29tbW9uIGZpbGU/IEFzIEkg c2F3IG9uIHZlZ2EyMCwgd2UgaGF2ZSB0aGUgc2FtZSBjb2RlIHNtdV92MTFfMF9pMmNfZWVwcm9t X2NvbnRyb2xfaW5pdCB0byByZWdpc3RlciBpMmMgZGV2aWNlLgpJZiB3ZSBjYW4gbW92ZSBzdWNo IGNvZGUgdG8gYSBjb21tb24gZmlsZSwgdGhlbiBpbiBlYWNoIGFzaWMncyBpMmMgY29kZSwgd2hh dCB3ZSBzaG91bGQgZG8gaXMgdG8gcGFzcyBuZWNlc3NhcnkgcHRycy9uYW1lL29wcyB0byB0aGF0 IGNvbW1vbiBmaWxlLCBhbmQgZnJvbSB0aGVyZSwgd2Ugd2lsbCByZWdpc3RlciBpMmMgZGV2aWNl LgpUaGlzIGNhbiBoZWxwIGNsZWFuIHNvbWUgY29kZSwgd2hhdGV2ZXIsIG1heWJlIGNvbnZlbmll bnQgdG8gb3RoZXIgYXNpY3MgaWYgd2Ugd2FudCB0byBkbyB0aGUgc2FtZSBpMmMgYWRkaW5nIGpv Yi4KCit2b2lkIGFyY3R1cnVzX2kyY19lZXByb21fY29udHJvbF9maW5pKHN0cnVjdCBpMmNfYWRh cHRlciAqY29udHJvbCkKK3sKKwlpMmNfZGVsX2FkYXB0ZXIoY29udHJvbCk7Cit9CisKW0d1Y2h1 bl1UaGUgc2FtZSBhcyBhYm92ZS4KCiBzdGF0aWMgY29uc3Qgc3RydWN0IHBwdGFibGVfZnVuY3Mg YXJjdHVydXNfcHB0X2Z1bmNzID0gewogCS8qIHRyYW5zbGF0ZSBzbXUgaW5kZXggaW50byBhcmN0 dXJ1cyBzcGVjaWZpYyBpbmRleCAqLwogCS5nZXRfc211X21zZ19pbmRleCA9IGFyY3R1cnVzX2dl dF9zbXVfbXNnX2luZGV4LApAQCAtMTk2Niw2ICsyMTkzLDggQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBwcHRhYmxlX2Z1bmNzIGFyY3R1cnVzX3BwdF9mdW5jcyA9IHsKIAkuZ2V0X3Bvd2VyX2xpbWl0 ID0gYXJjdHVydXNfZ2V0X3Bvd2VyX2xpbWl0LAogCS5pc19kcG1fcnVubmluZyA9IGFyY3R1cnVz X2lzX2RwbV9ydW5uaW5nLAogCS5kcG1fc2V0X3V2ZF9lbmFibGUgPSBhcmN0dXJ1c19kcG1fc2V0 X3V2ZF9lbmFibGUsCisJLmkyY19lZXByb21faW5pdCA9IGFyY3R1cnVzX2kyY19lZXByb21fY29u dHJvbF9pbml0LAorCS5pMmNfZWVwcm9tX2ZpbmkgPSBhcmN0dXJ1c19pMmNfZWVwcm9tX2NvbnRy b2xfZmluaSwKIH07CiAKIHZvaWQgYXJjdHVydXNfc2V0X3BwdF9mdW5jcyhzdHJ1Y3Qgc211X2Nv bnRleHQgKnNtdSkKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ft ZC1nZng=