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: [v6,3/7] EDAC, sb_edac: Assign EDAC memory controller per h/w controller From: Qiuxu Zhuo Message-Id: <20170523000731.87793-1-qiuxu.zhuo@intel.com> Date: Tue, 23 May 2017 08:07:31 +0800 To: bp@alien8.de, mchehab@osg.samsung.com Cc: tony.luck@intel.com, arozansk@redhat.com, patrickg@supermicro.com, linux-edac@vger.kernel.org, Qiuxu Zhuo List-ID: VG9ueSBwb2ludGVkIG91dCB0aGF0ICJjdXJyZW50bHkgdGhlIGRyaXZlciBwcmV0ZW5kcyB0aGVy ZSBpcwpvbmUgYmlnIDgtY2hhbm5lbCBtZW1vcnkgY29udHJvbGxlciBwZXIgc29ja2V0IGluc3Rl YWQgb2YgMgo0LWNoYW5uZWwgY29udHJvbGxlcnMuIFRoaXMgaXMgZmluZSB3aXRoIGFsbCBtZW1v cnkgY29udHJvbGxlcgpwb3B1bGF0ZWQgd2l0aCBzeW1tZXRyaWNhbCBESU1NIGNvbmZpZ3VyYXRp b25zLCBidXQgcnVucyBpbnRvCmRpZmZpY3VsdGllcyBvbiBhc3ltbWV0cmljYWwgc2V0dXBzIi4K ClJlc3RydWN0dXJlIHRoZSBkcml2ZXIgdG8gYXNzaWduIGFuIEVEQUMgbWVtb3J5IGNvbnRyb2xs ZXIgdG8KZWFjaCByZWFsIGgvdyBtZW1vcnkgY29udHJvbGxlciB0byByZXNvbHZlIHRoZSBpc3N1 ZS4KClNpZ25lZC1vZmYtYnk6IFFpdXh1IFpodW8gPHFpdXh1LnpodW9AaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZWRhYy9zYl9lZGFjLmMgfCAxNDEgKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyks IDczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9zYl9lZGFjLmMgYi9k cml2ZXJzL2VkYWMvc2JfZWRhYy5jCmluZGV4IDE2MTdiNjkuLmNlOWMyMTMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZWRhYy9zYl9lZGFjLmMKKysrIGIvZHJpdmVycy9lZGFjL3NiX2VkYWMuYwpAQCAt MzQ4LDYgKzM0OCw3IEBAIHN0cnVjdCBzYnJpZGdlX2RldiB7CiAJc3RydWN0IHBjaV9kZXYJCSoq cGRldjsKIAllbnVtIGRvbWFpbgkJZG9tOwogCWludAkJCW5fZGV2czsKKwlpbnQJCQlpX2RldnM7 CiAJc3RydWN0IG1lbV9jdGxfaW5mbwkqbWNpOwogfTsKIApAQCAtMzYyLDExICszNjMsMTIgQEAg c3RydWN0IGtubF9wdnQgewogfTsKIAogc3RydWN0IHNicmlkZ2VfcHZ0IHsKLQlzdHJ1Y3QgcGNp X2RldgkJKnBjaV90YSwgKnBjaV9kZHJpbywgKnBjaV9yYXM7CisJLyogRGV2aWNlcyBwZXIgc29j a2V0ICovCisJc3RydWN0IHBjaV9kZXYJCSpwY2lfZGRyaW87CiAJc3RydWN0IHBjaV9kZXYJCSpw Y2lfc2FkMCwgKnBjaV9zYWQxOwotCXN0cnVjdCBwY2lfZGV2CQkqcGNpX2hhMCwgKnBjaV9oYTE7 CiAJc3RydWN0IHBjaV9kZXYJCSpwY2lfYnIwLCAqcGNpX2JyMTsKLQlzdHJ1Y3QgcGNpX2RldgkJ KnBjaV9oYTFfdGE7CisJLyogRGV2aWNlcyBwZXIgbWVtb3J5IGNvbnRyb2xsZXIgKi8KKwlzdHJ1 Y3QgcGNpX2RldgkJKnBjaV9oYSwgKnBjaV90YSwgKnBjaV9yYXM7CiAJc3RydWN0IHBjaV9kZXYJ CSpwY2lfdGFkW05VTV9DSEFOTkVMU107CiAKIAlzdHJ1Y3Qgc2JyaWRnZV9kZXYJKnNicmlkZ2Vf ZGV2OwpAQCAtNzE3LDcgKzcxOSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG51bWNvbCh1MzIgbXRy KQogCXJldHVybiAxIDw8IGNvbHM7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc2JyaWRnZV9kZXYgKmdl dF9zYnJpZGdlX2Rldih1OCBidXMsIGludCBtdWx0aV9idXMpCitzdGF0aWMgc3RydWN0IHNicmlk Z2VfZGV2ICpnZXRfc2JyaWRnZV9kZXYodTggYnVzLCBlbnVtIGRvbWFpbiBkb20sIGludCBtdWx0 aV9idXMsIHN0cnVjdCBzYnJpZGdlX2RldiAqcHJldikKIHsKIAlzdHJ1Y3Qgc2JyaWRnZV9kZXYg KnNicmlkZ2VfZGV2OwogCkBAIC03MzAsOCArNzMyLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2JyaWRn ZV9kZXYgKmdldF9zYnJpZGdlX2Rldih1OCBidXMsIGludCBtdWx0aV9idXMpCiAJCQkJc3RydWN0 IHNicmlkZ2VfZGV2LCBsaXN0KTsKIAl9CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHNicmlkZ2Vf ZGV2LCAmc2JyaWRnZV9lZGFjX2xpc3QsIGxpc3QpIHsKLQkJaWYgKHNicmlkZ2VfZGV2LT5idXMg PT0gYnVzKQorCXNicmlkZ2VfZGV2ID0gbGlzdF9lbnRyeShwcmV2ID8gcHJldi0+bGlzdC5uZXh0 IDogc2JyaWRnZV9lZGFjX2xpc3QubmV4dCwgc3RydWN0IHNicmlkZ2VfZGV2LCBsaXN0KTsKKwor CWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbShzYnJpZGdlX2RldiwgJnNicmlkZ2VfZWRhY19saXN0 LCBsaXN0KSB7CisJCWlmIChzYnJpZGdlX2Rldi0+YnVzID09IGJ1cyAmJiAoZG9tID09IFNPQ0sg fHwgZG9tID09IHNicmlkZ2VfZGV2LT5kb20pKQogCQkJcmV0dXJuIHNicmlkZ2VfZGV2OwogCX0K IApAQCAtNzQ2LDcgKzc1MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2JyaWRnZV9kZXYgKmFsbG9jX3Ni cmlkZ2VfZGV2KHU4IGJ1cywgZW51bSBkb21haW4gZG9tLCBjb25zdCBzdHJ1CiAJaWYgKCFzYnJp ZGdlX2RldikKIAkJcmV0dXJuIE5VTEw7CiAKLQlzYnJpZGdlX2Rldi0+cGRldiA9IGtjYWxsb2Mo dGFibGUtPm5fZGV2c19wZXJfc29jaywgc2l6ZW9mKCpzYnJpZGdlX2Rldi0+cGRldiksIEdGUF9L RVJORUwpOworCXNicmlkZ2VfZGV2LT5wZGV2ID0ga2NhbGxvYyh0YWJsZS0+bl9kZXZzX3Blcl9p bWMsIHNpemVvZigqc2JyaWRnZV9kZXYtPnBkZXYpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXNicmlk Z2VfZGV2LT5wZGV2KSB7CiAJCWtmcmVlKHNicmlkZ2VfZGV2KTsKIAkJcmV0dXJuIE5VTEw7CkBA IC03NTQsNyArNzU4LDcgQEAgc3RhdGljIHN0cnVjdCBzYnJpZGdlX2RldiAqYWxsb2Nfc2JyaWRn ZV9kZXYodTggYnVzLCBlbnVtIGRvbWFpbiBkb20sIGNvbnN0IHN0cnUKIAogCXNicmlkZ2VfZGV2 LT5idXMgPSBidXM7CiAJc2JyaWRnZV9kZXYtPmRvbSA9IGRvbTsKLQlzYnJpZGdlX2Rldi0+bl9k ZXZzID0gdGFibGUtPm5fZGV2c19wZXJfc29jazsKKwlzYnJpZGdlX2Rldi0+bl9kZXZzID0gdGFi bGUtPm5fZGV2c19wZXJfaW1jOwogCWxpc3RfYWRkX3RhaWwoJnNicmlkZ2VfZGV2LT5saXN0LCAm c2JyaWRnZV9lZGFjX2xpc3QpOwogCiAJcmV0dXJuIHNicmlkZ2VfZGV2OwpAQCAtMTYyNSw3ICsx NjI5LDcgQEAgc3RhdGljIGludCBnZXRfZGltbV9jb25maWcoc3RydWN0IG1lbV9jdGxfaW5mbyAq bWNpKQogCXU2NCBrbmxfbWNfc2l6ZXNbS05MX01BWF9DSEFOTkVMU107CiAKIAlpZiAocHZ0LT5p bmZvLnR5cGUgPT0gSEFTV0VMTCB8fCBwdnQtPmluZm8udHlwZSA9PSBCUk9BRFdFTEwpIHsKLQkJ cGNpX3JlYWRfY29uZmlnX2R3b3JkKHB2dC0+cGNpX2hhMCwgSEFTV0VMTF9IQVNZU0RFRkVBVFVS RTIsICZyZWcpOworCQlwY2lfcmVhZF9jb25maWdfZHdvcmQocHZ0LT5wY2lfaGEsIEhBU1dFTExf SEFTWVNERUZFQVRVUkUyLCAmcmVnKTsKIAkJcHZ0LT5pc19jaGFuX2hhc2ggPSBHRVRfQklURklF TEQocmVnLCAyMSwgMjEpOwogCX0KIAlwdnQtPnNicmlkZ2VfZGV2LT5ub2RlX2lkID0gcHZ0LT5p bmZvLmdldF9ub2RlX2lkKHB2dCk7CkBAIC0xNzMwLDcgKzE3MzQsNyBAQCBzdGF0aWMgaW50IGdl dF9kaW1tX2NvbmZpZyhzdHJ1Y3QgbWVtX2N0bF9pbmZvICptY2kpCiAJCQkJbnBhZ2VzID0gTWlC X1RPX1BBR0VTKHNpemUpOwogCiAJCQkJZWRhY19kYmcoMCwgIm1jIyVkOiBoYSAlZCBjaGFubmVs ICVkLCBkaW1tICVkLCAlbGxkIE1iICglZCBwYWdlcykgYmFuazogJWQsIHJhbms6ICVkLCByb3c6 ICUjeCwgY29sOiAlI3hcbiIsCi0JCQkJCSBwdnQtPnNicmlkZ2VfZGV2LT5tYywgaS80LCBpJTQs IGosCisJCQkJCSBwdnQtPnNicmlkZ2VfZGV2LT5tYywgcHZ0LT5zYnJpZGdlX2Rldi0+ZG9tLCBp LCBqLAogCQkJCQkgc2l6ZSwgbnBhZ2VzLAogCQkJCQkgYmFua3MsIHJhbmtzLCByb3dzLCBjb2xz KTsKIApAQCAtMTc0MCw4ICsxNzQ0LDggQEAgc3RhdGljIGludCBnZXRfZGltbV9jb25maWcoc3Ry dWN0IG1lbV9jdGxfaW5mbyAqbWNpKQogCQkJCWRpbW0tPm10eXBlID0gbXR5cGU7CiAJCQkJZGlt bS0+ZWRhY19tb2RlID0gbW9kZTsKIAkJCQlzbnByaW50ZihkaW1tLT5sYWJlbCwgc2l6ZW9mKGRp bW0tPmxhYmVsKSwKLQkJCQkJICJDUFVfU3JjSUQjJXVfSGEjJXVfQ2hhbiMldV9ESU1NIyV1IiwK LQkJCQkJIHB2dC0+c2JyaWRnZV9kZXYtPnNvdXJjZV9pZCwgaS80LCBpJTQsIGopOworCQkJCQkJ ICJDUFVfU3JjSUQjJXVfSGEjJXVfQ2hhbiMldV9ESU1NIyV1IiwKKwkJCQkJCSBwdnQtPnNicmlk Z2VfZGV2LT5zb3VyY2VfaWQsIHB2dC0+c2JyaWRnZV9kZXYtPmRvbSwgaSwgaik7CiAJCQl9CiAJ CX0KIAl9CkBAIC0xODI5LDggKzE4MzMsNyBAQCBzdGF0aWMgdm9pZCBnZXRfbWVtb3J5X2xheW91 dChjb25zdCBzdHJ1Y3QgbWVtX2N0bF9pbmZvICptY2kpCiAJICovCiAJcHJ2ID0gMDsKIAlmb3Ig KG5fdGFkcyA9IDA7IG5fdGFkcyA8IE1BWF9UQUQ7IG5fdGFkcysrKSB7Ci0JCXBjaV9yZWFkX2Nv bmZpZ19kd29yZChwdnQtPnBjaV9oYTAsIHRhZF9kcmFtX3J1bGVbbl90YWRzXSwKLQkJCQkgICAg ICAmcmVnKTsKKwkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHB2dC0+cGNpX2hhLCB0YWRfZHJhbV9y dWxlW25fdGFkc10sICZyZWcpOwogCQlsaW1pdCA9IFRBRF9MSU1JVChyZWcpOwogCQlpZiAobGlt aXQgPD0gcHJ2KQogCQkJYnJlYWs7CkBAIC0xOTEyLDEyICsxOTE1LDEyIEBAIHN0YXRpYyB2b2lk IGdldF9tZW1vcnlfbGF5b3V0KGNvbnN0IHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSkKIAl9CiB9 CiAKLXN0YXRpYyBzdHJ1Y3QgbWVtX2N0bF9pbmZvICpnZXRfbWNpX2Zvcl9ub2RlX2lkKHU4IG5v ZGVfaWQpCitzdGF0aWMgc3RydWN0IG1lbV9jdGxfaW5mbyAqZ2V0X21jaV9mb3Jfbm9kZV9pZCh1 OCBub2RlX2lkLCB1OCBoYSkKIHsKIAlzdHJ1Y3Qgc2JyaWRnZV9kZXYgKnNicmlkZ2VfZGV2Owog CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShzYnJpZGdlX2RldiwgJnNicmlkZ2VfZWRhY19saXN0LCBs aXN0KSB7Ci0JCWlmIChzYnJpZGdlX2Rldi0+bm9kZV9pZCA9PSBub2RlX2lkKQorCQlpZiAoc2Jy aWRnZV9kZXYtPm5vZGVfaWQgPT0gbm9kZV9pZCAmJiBzYnJpZGdlX2Rldi0+ZG9tID09IGhhKQog CQkJcmV0dXJuIHNicmlkZ2VfZGV2LT5tY2k7CiAJfQogCXJldHVybiBOVUxMOwpAQCAtMTkzOCw3 ICsxOTQxLDcgQEAgc3RhdGljIGludCBnZXRfbWVtb3J5X2Vycm9yX2RhdGEoc3RydWN0IG1lbV9j dGxfaW5mbyAqbWNpLAogCWludAkJCWludGVybGVhdmVfbW9kZSwgc2hpZnR1cCA9IDA7CiAJdW5z aWduZWQJCXNhZF9pbnRlcmxlYXZlW3B2dC0+aW5mby5tYXhfaW50ZXJsZWF2ZV07CiAJdTMyCQkJ cmVnLCBkcmFtX3J1bGU7Ci0JdTgJCQljaF93YXksIHNja193YXksIHBrZywgc2FkX2hhID0gMCwg Y2hfYWRkID0gMDsKKwl1OAkJCWNoX3dheSwgc2NrX3dheSwgcGtnLCBzYWRfaGEgPSAwOwogCXUz MgkJCXRhZF9vZmZzZXQ7CiAJdTMyCQkJcmlyX3dheTsKIAl1MzIJCQltYiwgZ2I7CkBAIC0yMDUx LDEzICsyMDU0LDEwIEBAIHN0YXRpYyBpbnQgZ2V0X21lbW9yeV9lcnJvcl9kYXRhKHN0cnVjdCBt ZW1fY3RsX2luZm8gKm1jaSwKIAkJcGtnID0gc2FkX3BrZyhwdnQtPmluZm8uaW50ZXJsZWF2ZV9w a2csIHJlZywgaWR4KTsKIAkJKnNvY2tldCA9IHNhZF9wa2dfc29ja2V0KHBrZyk7CiAJCXNhZF9o YSA9IHNhZF9wa2dfaGEocGtnKTsKLQkJaWYgKHNhZF9oYSkKLQkJCWNoX2FkZCA9IDQ7CiAKIAkJ aWYgKGE3bW9kZSkgewogCQkJLyogTUNDaGFuU2hpZnRVcEVuYWJsZSAqLwotCQkJcGNpX3JlYWRf Y29uZmlnX2R3b3JkKHB2dC0+cGNpX2hhMCwKLQkJCQkJICAgICAgSEFTV0VMTF9IQVNZU0RFRkVB VFVSRTIsICZyZWcpOworCQkJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHB2dC0+cGNpX2hhLCBIQVNX RUxMX0hBU1lTREVGRUFUVVJFMiwgJnJlZyk7CiAJCQlzaGlmdHVwID0gR0VUX0JJVEZJRUxEKHJl ZywgMjIsIDIyKTsKIAkJfQogCkBAIC0yMDY5LDggKzIwNjksNiBAQCBzdGF0aWMgaW50IGdldF9t ZW1vcnlfZXJyb3JfZGF0YShzdHJ1Y3QgbWVtX2N0bF9pbmZvICptY2ksCiAJCXBrZyA9IHNhZF9w a2cocHZ0LT5pbmZvLmludGVybGVhdmVfcGtnLCByZWcsIGlkeCk7CiAJCSpzb2NrZXQgPSBzYWRf cGtnX3NvY2tldChwa2cpOwogCQlzYWRfaGEgPSBzYWRfcGtnX2hhKHBrZyk7Ci0JCWlmIChzYWRf aGEpCi0JCQljaF9hZGQgPSA0OwogCQllZGFjX2RiZygwLCAiU0FEIGludGVybGVhdmUgcGFja2Fn ZTogJWQgPSBDUFUgc29ja2V0ICVkLCBIQSAlZFxuIiwKIAkJCSBpZHgsICpzb2NrZXQsIHNhZF9o YSk7CiAJfQpAQCAtMjA4MSw3ICsyMDc5LDcgQEAgc3RhdGljIGludCBnZXRfbWVtb3J5X2Vycm9y X2RhdGEoc3RydWN0IG1lbV9jdGxfaW5mbyAqbWNpLAogCSAqIE1vdmUgdG8gdGhlIHByb3BlciBu b2RlIHN0cnVjdHVyZSwgaW4gb3JkZXIgdG8gYWNjZXNzIHRoZQogCSAqIHJpZ2h0IFBDSSByZWdp c3RlcnMKIAkgKi8KLQluZXdfbWNpID0gZ2V0X21jaV9mb3Jfbm9kZV9pZCgqc29ja2V0KTsKKwlu ZXdfbWNpID0gZ2V0X21jaV9mb3Jfbm9kZV9pZCgqc29ja2V0LCBzYWRfaGEpOwogCWlmICghbmV3 X21jaSkgewogCQlzcHJpbnRmKG1zZywgIlN0cnVjdCBmb3Igc29ja2V0ICMldSB3YXNuJ3QgaW5p dGlhbGl6ZWQiLAogCQkJKnNvY2tldCk7CkBAIC0yMDk0LDE0ICsyMDkyLDcgQEAgc3RhdGljIGlu dCBnZXRfbWVtb3J5X2Vycm9yX2RhdGEoc3RydWN0IG1lbV9jdGxfaW5mbyAqbWNpLAogCSAqIFN0 ZXAgMikgR2V0IG1lbW9yeSBjaGFubmVsCiAJICovCiAJcHJ2ID0gMDsKLQlpZiAocHZ0LT5pbmZv LnR5cGUgPT0gU0FORFlfQlJJREdFKQotCQlwY2lfaGEgPSBwdnQtPnBjaV9oYTA7Ci0JZWxzZSB7 Ci0JCWlmIChzYWRfaGEpCi0JCQlwY2lfaGEgPSBwdnQtPnBjaV9oYTE7Ci0JCWVsc2UKLQkJCXBj aV9oYSA9IHB2dC0+cGNpX2hhMDsKLQl9CisJcGNpX2hhID0gcHZ0LT5wY2lfaGE7CiAJZm9yIChu X3RhZHMgPSAwOyBuX3RhZHMgPCBNQVhfVEFEOyBuX3RhZHMrKykgewogCQlwY2lfcmVhZF9jb25m aWdfZHdvcmQocGNpX2hhLCB0YWRfZHJhbV9ydWxlW25fdGFkc10sICZyZWcpOwogCQlsaW1pdCA9 IFRBRF9MSU1JVChyZWcpOwpAQCAtMjE1Miw5ICsyMTQzLDcgQEAgc3RhdGljIGludCBnZXRfbWVt b3J5X2Vycm9yX2RhdGEoc3RydWN0IG1lbV9jdGxfaW5mbyAqbWNpLAogCX0KIAkqY2hhbm5lbF9t YXNrID0gMSA8PCBiYXNlX2NoOwogCi0JcGNpX3JlYWRfY29uZmlnX2R3b3JkKHB2dC0+cGNpX3Rh ZFtjaF9hZGQgKyBiYXNlX2NoXSwKLQkJCQl0YWRfY2hfbmlsdl9vZmZzZXRbbl90YWRzXSwKLQkJ CQkmdGFkX29mZnNldCk7CisJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHB2dC0+cGNpX3RhZFtiYXNl X2NoXSwgdGFkX2NoX25pbHZfb2Zmc2V0W25fdGFkc10sICZ0YWRfb2Zmc2V0KTsKIAogCWlmIChw dnQtPmlzX21pcnJvcmVkKSB7CiAJCSpjaGFubmVsX21hc2sgfD0gMSA8PCAoKGJhc2VfY2ggKyAy KSAlIDQpOwpAQCAtMjIwNSw5ICsyMTk0LDcgQEAgc3RhdGljIGludCBnZXRfbWVtb3J5X2Vycm9y X2RhdGEoc3RydWN0IG1lbV9jdGxfaW5mbyAqbWNpLAogCSAqIFN0ZXAgMykgRGVjb2RlIHJhbmsK IAkgKi8KIAlmb3IgKG5fcmlyID0gMDsgbl9yaXIgPCBNQVhfUklSX1JBTkdFUzsgbl9yaXIrKykg ewotCQlwY2lfcmVhZF9jb25maWdfZHdvcmQocHZ0LT5wY2lfdGFkW2NoX2FkZCArIGJhc2VfY2hd LAotCQkJCSAgICAgIHJpcl93YXlfbGltaXRbbl9yaXJdLAotCQkJCSAgICAgICZyZWcpOworCQlw Y2lfcmVhZF9jb25maWdfZHdvcmQocHZ0LT5wY2lfdGFkW2Jhc2VfY2hdLCByaXJfd2F5X2xpbWl0 W25fcmlyXSwgJnJlZyk7CiAKIAkJaWYgKCFJU19SSVJfVkFMSUQocmVnKSkKIAkJCWNvbnRpbnVl OwpAQCAtMjIzNSw5ICsyMjIyLDcgQEAgc3RhdGljIGludCBnZXRfbWVtb3J5X2Vycm9yX2RhdGEo c3RydWN0IG1lbV9jdGxfaW5mbyAqbWNpLAogCQlpZHggPSAoY2hfYWRkciA+PiAxMyk7CS8qIEZJ WE1FOiBEYXRhc2hlZXQgc2F5cyB0byBzaGlmdCBieSAxNSAqLwogCWlkeCAlPSAxIDw8IHJpcl93 YXk7CiAKLQlwY2lfcmVhZF9jb25maWdfZHdvcmQocHZ0LT5wY2lfdGFkW2NoX2FkZCArIGJhc2Vf Y2hdLAotCQkJICAgICAgcmlyX29mZnNldFtuX3Jpcl1baWR4XSwKLQkJCSAgICAgICZyZWcpOwor CXBjaV9yZWFkX2NvbmZpZ19kd29yZChwdnQtPnBjaV90YWRbYmFzZV9jaF0sIHJpcl9vZmZzZXRb bl9yaXJdW2lkeF0sICZyZWcpOwogCSpyYW5rID0gUklSX1JOS19UR1QocHZ0LT5pbmZvLnR5cGUs IHJlZyk7CiAKIAllZGFjX2RiZygwLCAiUklSIyVkOiBjaGFubmVsIGFkZHJlc3MgMHglMDhMeCA8 IDB4JTA4THgsIFJJUiBpbnRlcmxlYXZlICVkLCBpbmRleCAlZFxuIiwKQEAgLTIyOTAsMTAgKzIy NzUsMTEgQEAgc3RhdGljIGludCBzYnJpZGdlX2dldF9vbmVkZXZpY2Uoc3RydWN0IHBjaV9kZXYg KipwcmV2LAogCQkJCSBjb25zdCB1bnNpZ25lZCBkZXZubywKIAkJCQkgY29uc3QgaW50IG11bHRp X2J1cykKIHsKLQlzdHJ1Y3Qgc2JyaWRnZV9kZXYgKnNicmlkZ2VfZGV2OworCXN0cnVjdCBzYnJp ZGdlX2RldiAqc2JyaWRnZV9kZXYgPSBOVUxMOwogCWNvbnN0IHN0cnVjdCBwY2lfaWRfZGVzY3Ig KmRldl9kZXNjciA9ICZ0YWJsZS0+ZGVzY3JbZGV2bm9dOwogCXN0cnVjdCBwY2lfZGV2ICpwZGV2 ID0gTlVMTDsKIAl1OCBidXMgPSAwOworCWludCBpID0gMDsKIAogCXNicmlkZ2VfcHJpbnRrKEtF Uk5fREVCVUcsCiAJCSJTZWVraW5nIGZvcjogUENJIElEICUwNHg6JTA0eFxuIiwKQEAgLTIzMjQs NyArMjMxMCw4IEBAIHN0YXRpYyBpbnQgc2JyaWRnZV9nZXRfb25lZGV2aWNlKHN0cnVjdCBwY2lf ZGV2ICoqcHJldiwKIAl9CiAJYnVzID0gcGRldi0+YnVzLT5udW1iZXI7CiAKLQlzYnJpZGdlX2Rl diA9IGdldF9zYnJpZGdlX2RldihidXMsIG11bHRpX2J1cyk7CituZXh0X2ltYzoKKwlzYnJpZGdl X2RldiA9IGdldF9zYnJpZGdlX2RldihidXMsIGRldl9kZXNjci0+ZG9tLCBtdWx0aV9idXMsIHNi cmlkZ2VfZGV2KTsKIAlpZiAoIXNicmlkZ2VfZGV2KSB7CiAJCXNicmlkZ2VfZGV2ID0gYWxsb2Nf c2JyaWRnZV9kZXYoYnVzLCBkZXZfZGVzY3ItPmRvbSwgdGFibGUpOwogCQlpZiAoIXNicmlkZ2Vf ZGV2KSB7CkBAIC0yMzM0LDcgKzIzMjEsNyBAQCBzdGF0aWMgaW50IHNicmlkZ2VfZ2V0X29uZWRl dmljZShzdHJ1Y3QgcGNpX2RldiAqKnByZXYsCiAJCSgqbnVtX21jKSsrOwogCX0KIAotCWlmIChz YnJpZGdlX2Rldi0+cGRldltkZXZub10pIHsKKwlpZiAoc2JyaWRnZV9kZXYtPnBkZXZbc2JyaWRn ZV9kZXYtPmlfZGV2c10pIHsKIAkJc2JyaWRnZV9wcmludGsoS0VSTl9FUlIsCiAJCQkiRHVwbGlj YXRlZCBkZXZpY2UgZm9yICUwNHg6JTA0eFxuIiwKIAkJCVBDSV9WRU5ET1JfSURfSU5URUwsIGRl dl9kZXNjci0+ZGV2X2lkKTsKQEAgLTIzNDIsNyArMjMyOSwxNCBAQCBzdGF0aWMgaW50IHNicmlk Z2VfZ2V0X29uZWRldmljZShzdHJ1Y3QgcGNpX2RldiAqKnByZXYsCiAJCXJldHVybiAtRU5PREVW OwogCX0KIAotCXNicmlkZ2VfZGV2LT5wZGV2W2Rldm5vXSA9IHBkZXY7CisJc2JyaWRnZV9kZXYt PnBkZXZbc2JyaWRnZV9kZXYtPmlfZGV2cysrXSA9IHBkZXY7CisKKwkvKiBwZGV2IGJlbG9uZ3Mg dG8gbW9yZSB0aGFuIG9uZSBJTUMsIGRvIGV4dHJhIGdldHMgKi8KKwlpZiAoKytpID4gMSkKKwkJ cGNpX2Rldl9nZXQocGRldik7CisKKwlpZiAoZGV2X2Rlc2NyLT5kb20gPT0gU09DSyAmJiBpIDwg dGFibGUtPm5faW1jc19wZXJfc29jaykKKwkJZ290byBuZXh0X2ltYzsKIAogCS8qIEJlIHN1cmUg dGhhdCB0aGUgZGV2aWNlIGlzIGVuYWJsZWQgKi8KIAlpZiAodW5saWtlbHkocGNpX2VuYWJsZV9k ZXZpY2UocGRldikgPCAwKSkgewpAQCAtMjQzNiw3ICsyNDMwLDcgQEAgc3RhdGljIGludCBzYnJp ZGdlX21jaV9iaW5kX2RldnMoc3RydWN0IG1lbV9jdGxfaW5mbyAqbWNpLAogCQkJcHZ0LT5wY2lf YnIwID0gcGRldjsKIAkJCWJyZWFrOwogCQljYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfU0JSSURH RV9JTUNfSEEwOgotCQkJcHZ0LT5wY2lfaGEwID0gcGRldjsKKwkJCXB2dC0+cGNpX2hhID0gcGRl djsKIAkJCWJyZWFrOwogCQljYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfU0JSSURHRV9JTUNfVEE6 CiAJCQlwdnQtPnBjaV90YSA9IHBkZXY7CkBAIC0yNDY4LDcgKzI0NjIsNyBAQCBzdGF0aWMgaW50 IHNicmlkZ2VfbWNpX2JpbmRfZGV2cyhzdHJ1Y3QgbWVtX2N0bF9pbmZvICptY2ksCiAJfQogCiAJ LyogQ2hlY2sgaWYgZXZlcnl0aGluZyB3ZXJlIHJlZ2lzdGVyZWQgKi8KLQlpZiAoIXB2dC0+cGNp X3NhZDAgfHwgIXB2dC0+cGNpX3NhZDEgfHwgIXB2dC0+cGNpX2hhMCB8fAorCWlmICghcHZ0LT5w Y2lfc2FkMCB8fCAhcHZ0LT5wY2lfc2FkMSB8fCAhcHZ0LT5wY2lfaGEgfHwKIAkgICAgIXB2dC0+ cGNpX3JhcyB8fCAhcHZ0LT5wY2lfdGEpCiAJCWdvdG8gZW5vZGV2OwogCkBAIC0yNTAxLDExICsy NDk1LDEzIEBAIHN0YXRpYyBpbnQgaWJyaWRnZV9tY2lfYmluZF9kZXZzKHN0cnVjdCBtZW1fY3Rs X2luZm8gKm1jaSwKIAogCQlzd2l0Y2ggKHBkZXYtPmRldmljZSkgewogCQljYXNlIFBDSV9ERVZJ Q0VfSURfSU5URUxfSUJSSURHRV9JTUNfSEEwOgotCQkJcHZ0LT5wY2lfaGEwID0gcGRldjsKKwkJ CXB2dC0+cGNpX2hhID0gcGRldjsKIAkJCWJyZWFrOwogCQljYXNlIFBDSV9ERVZJQ0VfSURfSU5U RUxfSUJSSURHRV9JTUNfSEEwX1RBOgorCQljYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfSUJSSURH RV9JTUNfSEExX1RBOgogCQkJcHZ0LT5wY2lfdGEgPSBwZGV2OwogCQljYXNlIFBDSV9ERVZJQ0Vf SURfSU5URUxfSUJSSURHRV9JTUNfSEEwX1JBUzoKKwkJY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVM X0lCUklER0VfSU1DX0hBMV9SQVM6CiAJCQlwdnQtPnBjaV9yYXMgPSBwZGV2OwogCQkJYnJlYWs7 CiAJCWNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9JQlJJREdFX0lNQ19IQTBfVEFEMDoKQEAgLTI1 MzQsMTQgKzI1MzAsMTQgQEAgc3RhdGljIGludCBpYnJpZGdlX21jaV9iaW5kX2RldnMoc3RydWN0 IG1lbV9jdGxfaW5mbyAqbWNpLAogCQkJcHZ0LT5wY2lfYnIxID0gcGRldjsKIAkJCWJyZWFrOwog CQljYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfSUJSSURHRV9JTUNfSEExOgotCQkJcHZ0LT5wY2lf aGExID0gcGRldjsKKwkJCXB2dC0+cGNpX2hhID0gcGRldjsKIAkJCWJyZWFrOwogCQljYXNlIFBD SV9ERVZJQ0VfSURfSU5URUxfSUJSSURHRV9JTUNfSEExX1RBRDA6CiAJCWNhc2UgUENJX0RFVklD RV9JRF9JTlRFTF9JQlJJREdFX0lNQ19IQTFfVEFEMToKIAkJY2FzZSBQQ0lfREVWSUNFX0lEX0lO VEVMX0lCUklER0VfSU1DX0hBMV9UQUQyOgogCQljYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfSUJS SURHRV9JTUNfSEExX1RBRDM6CiAJCXsKLQkJCWludCBpZCA9IHBkZXYtPmRldmljZSAtIFBDSV9E RVZJQ0VfSURfSU5URUxfSUJSSURHRV9JTUNfSEExX1RBRDAgKyA0OworCQkJaW50IGlkID0gcGRl di0+ZGV2aWNlIC0gUENJX0RFVklDRV9JRF9JTlRFTF9JQlJJREdFX0lNQ19IQTFfVEFEMDsKIAkJ CXB2dC0+cGNpX3RhZFtpZF0gPSBwZGV2OwogCQkJc2F3X2NoYW5fbWFzayB8PSAxIDw8IGlkOwog CQl9CkBAIC0yNTU3LDEzICsyNTUzLDEyIEBAIHN0YXRpYyBpbnQgaWJyaWRnZV9tY2lfYmluZF9k ZXZzKHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwKIAl9CiAKIAkvKiBDaGVjayBpZiBldmVyeXRo aW5nIHdlcmUgcmVnaXN0ZXJlZCAqLwotCWlmICghcHZ0LT5wY2lfc2FkMCB8fCAhcHZ0LT5wY2lf aGEwIHx8ICFwdnQtPnBjaV9icjAgfHwKKwlpZiAoIXB2dC0+cGNpX3NhZDAgfHwgIXB2dC0+cGNp X2hhIHx8ICFwdnQtPnBjaV9icjAgfHwKIAkgICAgIXB2dC0+cGNpX2JyMSB8fCAhcHZ0LT5wY2lf cmFzIHx8ICFwdnQtPnBjaV90YSkKIAkJZ290byBlbm9kZXY7CiAKLQlpZiAoc2F3X2NoYW5fbWFz ayAhPSAweDBmICYmIC8qIC1FTiAqLwotCSAgICBzYXdfY2hhbl9tYXNrICE9IDB4MzMgJiYgLyog LUVQICovCi0JICAgIHNhd19jaGFuX21hc2sgIT0gMHhmZikgICAvKiAtRVggKi8KKwlpZiAoc2F3 X2NoYW5fbWFzayAhPSAweDBmICYmIC8qIC1FTi8tRVggKi8KKwkgICAgc2F3X2NoYW5fbWFzayAh PSAweDAzKSAgIC8qIC1FUCAqLwogCQlnb3RvIGVub2RldjsKIAlyZXR1cm4gMDsKIApAQCAtMjYw NiwxMiArMjYwMSwxMyBAQCBzdGF0aWMgaW50IGhhc3dlbGxfbWNpX2JpbmRfZGV2cyhzdHJ1Y3Qg bWVtX2N0bF9pbmZvICptY2ksCiAJCQlwdnQtPnBjaV9zYWQxID0gcGRldjsKIAkJCWJyZWFrOwog CQljYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxfSEFTV0VMTF9JTUNfSEEwOgotCQkJcHZ0LT5wY2lf aGEwID0gcGRldjsKKwkJCXB2dC0+cGNpX2hhID0gcGRldjsKIAkJCWJyZWFrOwogCQljYXNlIFBD SV9ERVZJQ0VfSURfSU5URUxfSEFTV0VMTF9JTUNfSEEwX1RBOgogCQkJcHZ0LT5wY2lfdGEgPSBw ZGV2OwogCQkJYnJlYWs7CiAJCWNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9IQVNXRUxMX0lNQ19I QTBfVE06CisJCWNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9IQVNXRUxMX0lNQ19IQTFfVE06CiAJ CQlwdnQtPnBjaV9yYXMgPSBwZGV2OwogCQkJYnJlYWs7CiAJCWNhc2UgUENJX0RFVklDRV9JRF9J TlRFTF9IQVNXRUxMX0lNQ19IQTBfVEFEMDoKQEAgLTI2MzAsNyArMjYyNiw3IEBAIHN0YXRpYyBp bnQgaGFzd2VsbF9tY2lfYmluZF9kZXZzKHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwKIAkJY2Fz ZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0hBU1dFTExfSU1DX0hBMV9UQUQyOgogCQljYXNlIFBDSV9E RVZJQ0VfSURfSU5URUxfSEFTV0VMTF9JTUNfSEExX1RBRDM6CiAJCXsKLQkJCWludCBpZCA9IHBk ZXYtPmRldmljZSAtIFBDSV9ERVZJQ0VfSURfSU5URUxfSEFTV0VMTF9JTUNfSEExX1RBRDAgKyA0 OworCQkJaW50IGlkID0gcGRldi0+ZGV2aWNlIC0gUENJX0RFVklDRV9JRF9JTlRFTF9IQVNXRUxM X0lNQ19IQTFfVEFEMDsKIAogCQkJcHZ0LT5wY2lfdGFkW2lkXSA9IHBkZXY7CiAJCQlzYXdfY2hh bl9tYXNrIHw9IDEgPDwgaWQ7CkBAIC0yNjQ0LDEwICsyNjQwLDEwIEBAIHN0YXRpYyBpbnQgaGFz d2VsbF9tY2lfYmluZF9kZXZzKHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwKIAkJCQlwdnQtPnBj aV9kZHJpbyA9IHBkZXY7CiAJCQlicmVhazsKIAkJY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0hB U1dFTExfSU1DX0hBMToKLQkJCXB2dC0+cGNpX2hhMSA9IHBkZXY7CisJCQlwdnQtPnBjaV9oYSA9 IHBkZXY7CiAJCQlicmVhazsKIAkJY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0hBU1dFTExfSU1D X0hBMV9UQToKLQkJCXB2dC0+cGNpX2hhMV90YSA9IHBkZXY7CisJCQlwdnQtPnBjaV90YSA9IHBk ZXY7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWJyZWFrOwpAQCAtMjY2MCwxMyArMjY1Niwx MiBAQCBzdGF0aWMgaW50IGhhc3dlbGxfbWNpX2JpbmRfZGV2cyhzdHJ1Y3QgbWVtX2N0bF9pbmZv ICptY2ksCiAJfQogCiAJLyogQ2hlY2sgaWYgZXZlcnl0aGluZyB3ZXJlIHJlZ2lzdGVyZWQgKi8K LQlpZiAoIXB2dC0+cGNpX3NhZDAgfHwgIXB2dC0+cGNpX2hhMCB8fCAhcHZ0LT5wY2lfc2FkMSB8 fAorCWlmICghcHZ0LT5wY2lfc2FkMCB8fCAhcHZ0LT5wY2lfaGEgfHwgIXB2dC0+cGNpX3NhZDEg fHwKIAkgICAgIXB2dC0+cGNpX3JhcyAgfHwgIXB2dC0+cGNpX3RhIHx8ICFwdnQtPmluZm8ucGNp X3Z0ZCkKIAkJZ290byBlbm9kZXY7CiAKLQlpZiAoc2F3X2NoYW5fbWFzayAhPSAweDBmICYmIC8q IC1FTiAqLwotCSAgICBzYXdfY2hhbl9tYXNrICE9IDB4MzMgJiYgLyogLUVQICovCi0JICAgIHNh d19jaGFuX21hc2sgIT0gMHhmZikgICAvKiAtRVggKi8KKwlpZiAoc2F3X2NoYW5fbWFzayAhPSAw eDBmICYmIC8qIC1FTi8tRVggKi8KKwkgICAgc2F3X2NoYW5fbWFzayAhPSAweDAzKSAgIC8qIC1F UCAqLwogCQlnb3RvIGVub2RldjsKIAlyZXR1cm4gMDsKIApAQCAtMjcwMywxMiArMjY5OCwxMyBA QCBzdGF0aWMgaW50IGJyb2Fkd2VsbF9tY2lfYmluZF9kZXZzKHN0cnVjdCBtZW1fY3RsX2luZm8g Km1jaSwKIAkJCXB2dC0+cGNpX3NhZDEgPSBwZGV2OwogCQkJYnJlYWs7CiAJCWNhc2UgUENJX0RF VklDRV9JRF9JTlRFTF9CUk9BRFdFTExfSU1DX0hBMDoKLQkJCXB2dC0+cGNpX2hhMCA9IHBkZXY7 CisJCQlwdnQtPnBjaV9oYSA9IHBkZXY7CiAJCQlicmVhazsKIAkJY2FzZSBQQ0lfREVWSUNFX0lE X0lOVEVMX0JST0FEV0VMTF9JTUNfSEEwX1RBOgogCQkJcHZ0LT5wY2lfdGEgPSBwZGV2OwogCQkJ YnJlYWs7CiAJCWNhc2UgUENJX0RFVklDRV9JRF9JTlRFTF9CUk9BRFdFTExfSU1DX0hBMF9UTToK KwkJY2FzZSBQQ0lfREVWSUNFX0lEX0lOVEVMX0JST0FEV0VMTF9JTUNfSEExX1RNOgogCQkJcHZ0 LT5wY2lfcmFzID0gcGRldjsKIAkJCWJyZWFrOwogCQljYXNlIFBDSV9ERVZJQ0VfSURfSU5URUxf QlJPQURXRUxMX0lNQ19IQTBfVEFEMDoKQEAgLTI3MjYsNyArMjcyMiw3IEBAIHN0YXRpYyBpbnQg YnJvYWR3ZWxsX21jaV9iaW5kX2RldnMoc3RydWN0IG1lbV9jdGxfaW5mbyAqbWNpLAogCQljYXNl IFBDSV9ERVZJQ0VfSURfSU5URUxfQlJPQURXRUxMX0lNQ19IQTFfVEFEMjoKIAkJY2FzZSBQQ0lf REVWSUNFX0lEX0lOVEVMX0JST0FEV0VMTF9JTUNfSEExX1RBRDM6CiAJCXsKLQkJCWludCBpZCA9 IHBkZXYtPmRldmljZSAtIFBDSV9ERVZJQ0VfSURfSU5URUxfQlJPQURXRUxMX0lNQ19IQTFfVEFE MCArIDQ7CisJCQlpbnQgaWQgPSBwZGV2LT5kZXZpY2UgLSBQQ0lfREVWSUNFX0lEX0lOVEVMX0JS T0FEV0VMTF9JTUNfSEExX1RBRDA7CiAJCQlwdnQtPnBjaV90YWRbaWRdID0gcGRldjsKIAkJCXNh d19jaGFuX21hc2sgfD0gMSA8PCBpZDsKIAkJfQpAQCAtMjczNSwxMCArMjczMSwxMCBAQCBzdGF0 aWMgaW50IGJyb2Fkd2VsbF9tY2lfYmluZF9kZXZzKHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwK IAkJCXB2dC0+cGNpX2RkcmlvID0gcGRldjsKIAkJCWJyZWFrOwogCQljYXNlIFBDSV9ERVZJQ0Vf SURfSU5URUxfQlJPQURXRUxMX0lNQ19IQTE6Ci0JCQlwdnQtPnBjaV9oYTEgPSBwZGV2OworCQkJ cHZ0LT5wY2lfaGEgPSBwZGV2OwogCQkJYnJlYWs7CiAJCWNhc2UgUENJX0RFVklDRV9JRF9JTlRF TF9CUk9BRFdFTExfSU1DX0hBMV9UQToKLQkJCXB2dC0+cGNpX2hhMV90YSA9IHBkZXY7CisJCQlw dnQtPnBjaV90YSA9IHBkZXY7CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWJyZWFrOwpAQCAt Mjc1MSwxMyArMjc0NywxMiBAQCBzdGF0aWMgaW50IGJyb2Fkd2VsbF9tY2lfYmluZF9kZXZzKHN0 cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwKIAl9CiAKIAkvKiBDaGVjayBpZiBldmVyeXRoaW5nIHdl cmUgcmVnaXN0ZXJlZCAqLwotCWlmICghcHZ0LT5wY2lfc2FkMCB8fCAhcHZ0LT5wY2lfaGEwIHx8 ICFwdnQtPnBjaV9zYWQxIHx8CisJaWYgKCFwdnQtPnBjaV9zYWQwIHx8ICFwdnQtPnBjaV9oYSB8 fCAhcHZ0LT5wY2lfc2FkMSB8fAogCSAgICAhcHZ0LT5wY2lfcmFzICB8fCAhcHZ0LT5wY2lfdGEg fHwgIXB2dC0+aW5mby5wY2lfdnRkKQogCQlnb3RvIGVub2RldjsKIAotCWlmIChzYXdfY2hhbl9t YXNrICE9IDB4MGYgJiYgLyogLUVOICovCi0JICAgIHNhd19jaGFuX21hc2sgIT0gMHgzMyAmJiAv KiAtRVAgKi8KLQkgICAgc2F3X2NoYW5fbWFzayAhPSAweGZmKSAgIC8qIC1FWCAqLworCWlmIChz YXdfY2hhbl9tYXNrICE9IDB4MGYgJiYgLyogLUVOLy1FWCAqLworCSAgICBzYXdfY2hhbl9tYXNr ICE9IDB4MDMpICAgLyogLUVQICovCiAJCWdvdG8gZW5vZGV2OwogCXJldHVybiAwOwogCkBAIC0z MDE5LDcgKzMwMTQsNyBAQCBzdGF0aWMgdm9pZCBzYnJpZGdlX21jZV9vdXRwdXRfZXJyb3Ioc3Ry dWN0IG1lbV9jdGxfaW5mbyAqbWNpLAogCiAJaWYgKHJjIDwgMCkKIAkJZ290byBlcnJfcGFyc2lu ZzsKLQluZXdfbWNpID0gZ2V0X21jaV9mb3Jfbm9kZV9pZChzb2NrZXQpOworCW5ld19tY2kgPSBn ZXRfbWNpX2Zvcl9ub2RlX2lkKHNvY2tldCwgaGEpOwogCWlmICghbmV3X21jaSkgewogCQlzdHJj cHkobXNnLCAiRXJyb3I6IHNvY2tldCBnb3QgY29ycnVwdGVkISIpOwogCQlnb3RvIGVycl9wYXJz aW5nOwpAQCAtMzA2Niw3ICszMDYxLDcgQEAgc3RhdGljIHZvaWQgc2JyaWRnZV9tY2Vfb3V0cHV0 X2Vycm9yKHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwKIAkvKiBDYWxsIHRoZSBoZWxwZXIgdG8g b3V0cHV0IG1lc3NhZ2UgKi8KIAllZGFjX21jX2hhbmRsZV9lcnJvcih0cF9ldmVudCwgbWNpLCBj b3JlX2Vycl9jbnQsCiAJCQkgICAgIG0tPmFkZHIgPj4gUEFHRV9TSElGVCwgbS0+YWRkciAmIH5Q QUdFX01BU0ssIDAsCi0JCQkgICAgIDQqaGErY2hhbm5lbCwgZGltbSwgLTEsCisJCQkgICAgIGNo YW5uZWwsIGRpbW0sIC0xLAogCQkJICAgICBvcHR5cGUsIG1zZyk7CiAJcmV0dXJuOwogZXJyX3Bh cnNpbmc6CkBAIC0zMDkxLDcgKzMwODYsNyBAQCBzdGF0aWMgaW50IHNicmlkZ2VfbWNlX2NoZWNr X2Vycm9yKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgdmFsLAogCWlm IChlZGFjX2dldF9yZXBvcnRfc3RhdHVzKCkgPT0gRURBQ19SRVBPUlRJTkdfRElTQUJMRUQpCiAJ CXJldHVybiBOT1RJRllfRE9ORTsKIAotCW1jaSA9IGdldF9tY2lfZm9yX25vZGVfaWQobWNlLT5z b2NrZXRpZCk7CisJbWNpID0gZ2V0X21jaV9mb3Jfbm9kZV9pZChtY2UtPnNvY2tldGlkLCBJTUMw KTsKIAlpZiAoIW1jaSkKIAkJcmV0dXJuIE5PVElGWV9ET05FOwogCXB2dCA9IG1jaS0+cHZ0X2lu Zm87Cg==