From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v6 3/5] IOMMU: Make the pcidevs_lock a recursive one Date: Wed, 2 Mar 2016 22:31:27 +0800 Message-ID: <1456929089-17414-4-git-send-email-quan.xu@intel.com> References: <1456929089-17414-1-git-send-email-quan.xu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1456929089-17414-1-git-send-email-quan.xu@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: jbeulich@suse.com, kevin.tian@intel.com Cc: feng.wu@intel.com, ian.campbell@citrix.com, george.dunlap@eu.citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, tim@xen.org, xen-devel@lists.xen.org, stefano.stabellini@citrix.com, Aravind.Gopalakrishnan@amd.com, jun.nakajima@intel.com, jinsong.liu@alibaba-inc.com, Quan Xu , keir@xen.org, suravee.suthikulpanit@amd.com List-Id: xen-devel@lists.xenproject.org U2lnbmVkLW9mZi1ieTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+Ci0tLQogeGVuL2FyY2gv eDg2L2RvbWN0bC5jICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICstLQogeGVuL2FyY2gveDg2 L2h2bS92bXNpLmMgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiB4ZW4vYXJjaC94ODYvaXJx LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKy0tCiB4ZW4vYXJjaC94ODYvbXNpLmMg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKystLS0KIHhlbi9hcmNoL3g4Ni9wY2kuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQogeGVuL2FyY2gveDg2L3BoeXNkZXYuYyAg ICAgICAgICAgICAgICAgICAgICB8IDE2ICsrLS0tCiB4ZW4vY29tbW9uL3N5c2N0bC5jICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9p b21tdV9pbml0LmMgICAgfCAgOSArKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21t dV9tYXAuYyAgICAgfCAgMiArLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRf aW9tbXUuYyB8ICA0ICstCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYyAgICAgICAgICAg ICAgIHwgOTMgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC9pb21tdS5jICAgICAgICAgfCAxNCArKy0tLQogeGVuL2RyaXZlcnMvdmlkZW8v dmdhLmMgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiB4ZW4vaW5jbHVkZS94ZW4vcGNpLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNl cnRpb25zKCspLCA4OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9t Y3RsLmMgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKaW5kZXggYmY2MmE4OC4uMjFjYzE2MSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWN0bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwu YwpAQCAtNDI3LDkgKzQyNyw5IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCiAgICAgICAgIHJldCA9 IC1FU1JDSDsKICAgICAgICAgaWYgKCBpb21tdV9lbmFibGVkICkKICAgICAgICAgewotICAgICAg ICAgICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICAgICAgcGNpZGV2c19sb2Nr KCk7CiAgICAgICAgICAgICByZXQgPSBwdF9pcnFfY3JlYXRlX2JpbmQoZCwgYmluZCk7Ci0gICAg ICAgICAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICAgICAgICAgIHBjaWRldnNf dW5sb2NrKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCByZXQgPCAwICkKICAgICAgICAgICAg IHByaW50ayhYRU5MT0dfR19FUlIgInB0X2lycV9jcmVhdGVfYmluZCBmYWlsZWQgKCVsZCkgZm9y IGRvbSVkXG4iLApAQCAtNDUyLDkgKzQ1Miw5IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCiAKICAg ICAgICAgaWYgKCBpb21tdV9lbmFibGVkICkKICAgICAgICAgewotICAgICAgICAgICAgc3Bpbl9s b2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICAgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgICAg ICAgICByZXQgPSBwdF9pcnFfZGVzdHJveV9iaW5kKGQsIGJpbmQpOwotICAgICAgICAgICAgc3Bp bl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgICAgICAgICBwY2lkZXZzX3VubG9jaygpOwog ICAgICAgICB9CiAgICAgICAgIGlmICggcmV0IDwgMCApCiAgICAgICAgICAgICBwcmludGsoWEVO TE9HX0dfRVJSICJwdF9pcnFfZGVzdHJveV9iaW5kIGZhaWxlZCAoJWxkKSBmb3IgZG9tJWRcbiIs CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3Ztc2kuYyBiL3hlbi9hcmNoL3g4Ni9odm0v dm1zaS5jCmluZGV4IGFjODM4YTkuLjhlMDgxN2IgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vdm1zaS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm1zaS5jCkBAIC0zODgsNyArMzg4LDcg QEAgaW50IG1zaXh0YmxfcHRfcmVnaXN0ZXIoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHBpcnEg KnBpcnEsIHVpbnQ2NF90IGd0YWJsZSkKICAgICBzdHJ1Y3QgbXNpeHRibF9lbnRyeSAqZW50cnks ICpuZXdfZW50cnk7CiAgICAgaW50IHIgPSAtRUlOVkFMOwogCi0gICAgQVNTRVJUKHNwaW5faXNf bG9ja2VkKCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7 CiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZkLT5ldmVudF9sb2NrKSk7CiAKICAgICAvKgpA QCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgbXNpeHRibF9wdF91bnJlZ2lzdGVyKHN0cnVjdCBkb21h aW4gKmQsIHN0cnVjdCBwaXJxICpwaXJxKQogICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2OwogICAg IHN0cnVjdCBtc2l4dGJsX2VudHJ5ICplbnRyeTsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tl ZCgmcGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogICAg IEFTU0VSVChzcGluX2lzX2xvY2tlZCgmZC0+ZXZlbnRfbG9jaykpOwogCiAgICAgaXJxX2Rlc2Mg PSBwaXJxX3NwaW5fbG9ja19pcnFfZGVzYyhwaXJxLCBOVUxMKTsKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9pcnEuYyBiL3hlbi9hcmNoL3g4Ni9pcnEuYwppbmRleCBiZjJlODIyLi42OGJkZjE5 IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaXJxLmMKKysrIGIveGVuL2FyY2gveDg2L2lycS5j CkBAIC0xOTU1LDcgKzE5NTUsNyBAQCBpbnQgbWFwX2RvbWFpbl9waXJxKAogICAgICAgICBzdHJ1 Y3QgcGNpX2RldiAqcGRldjsKICAgICAgICAgdW5zaWduZWQgaW50IG5yID0gMDsKIAotICAgICAg ICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykpOworICAgICAgICBBU1NFUlQo cGNpZGV2c19pc19sb2NrZWQoKSk7CiAKICAgICAgICAgcmV0ID0gLUVOT0RFVjsKICAgICAgICAg aWYgKCAhY3B1X2hhc19hcGljICkKQEAgLTIxMDAsNyArMjEwMCw3IEBAIGludCB1bm1hcF9kb21h aW5fcGlycShzdHJ1Y3QgZG9tYWluICpkLCBpbnQgcGlycSkKICAgICBpZiAoIChwaXJxIDwgMCkg fHwgKHBpcnEgPj0gZC0+bnJfcGlycXMpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAg ICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykpOworICAgIEFTU0VSVChwY2lk ZXZzX2lzX2xvY2tlZCgpKTsKICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmQtPmV2ZW50X2xv Y2spKTsKIAogICAgIGluZm8gPSBwaXJxX2luZm8oZCwgcGlycSk7CkBAIC0yMjI2LDcgKzIyMjYs NyBAQCB2b2lkIGZyZWVfZG9tYWluX3BpcnFzKHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgaW50 IGk7CiAKLSAgICBzcGluX2xvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c19sb2NrKCk7 CiAgICAgc3Bpbl9sb2NrKCZkLT5ldmVudF9sb2NrKTsKIAogICAgIGZvciAoIGkgPSAwOyBpIDwg ZC0+bnJfcGlycXM7IGkrKyApCkBAIC0yMjM0LDcgKzIyMzQsNyBAQCB2b2lkIGZyZWVfZG9tYWlu X3BpcnFzKHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgICAgICB1bm1hcF9kb21haW5fcGlycShk LCBpKTsKIAogICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKLSAgICBzcGluX3VubG9j aygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX3VubG9jaygpOwogfQogCiBzdGF0aWMgdm9p ZCBkdW1wX2lycXModW5zaWduZWQgY2hhciBrZXkpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv bXNpLmMgYi94ZW4vYXJjaC94ODYvbXNpLmMKaW5kZXggM2RiYjg0ZC4uNmU1ZTMzZSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L21zaS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tc2kuYwpAQCAtNjk0 LDcgKzY5NCw3IEBAIHN0YXRpYyBpbnQgbXNpX2NhcGFiaWxpdHlfaW5pdChzdHJ1Y3QgcGNpX2Rl diAqZGV2LAogICAgIHU4IHNsb3QgPSBQQ0lfU0xPVChkZXYtPmRldmZuKTsKICAgICB1OCBmdW5j ID0gUENJX0ZVTkMoZGV2LT5kZXZmbik7CiAKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBj aWRldnNfbG9jaykpOworICAgIEFTU0VSVChwY2lkZXZzX2lzX2xvY2tlZCgpKTsKICAgICBwb3Mg PSBwY2lfZmluZF9jYXBfb2Zmc2V0KHNlZywgYnVzLCBzbG90LCBmdW5jLCBQQ0lfQ0FQX0lEX01T SSk7CiAgICAgaWYgKCAhcG9zICkKICAgICAgICAgcmV0dXJuIC1FTk9ERVY7CkBAIC04NTIsNyAr ODUyLDcgQEAgc3RhdGljIGludCBtc2l4X2NhcGFiaWxpdHlfaW5pdChzdHJ1Y3QgcGNpX2RldiAq ZGV2LAogICAgIHU4IGZ1bmMgPSBQQ0lfRlVOQyhkZXYtPmRldmZuKTsKICAgICBib29sX3QgbWFz a2FsbCA9IG1zaXgtPmhvc3RfbWFza2FsbDsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgm cGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogCiAgICAg Y29udHJvbCA9IHBjaV9jb25mX3JlYWQxNihzZWcsIGJ1cywgc2xvdCwgZnVuYywgbXNpeF9jb250 cm9sX3JlZyhwb3MpKTsKICAgICAvKgpAQCAtMTA0Miw3ICsxMDQyLDcgQEAgc3RhdGljIGludCBf X3BjaV9lbmFibGVfbXNpKHN0cnVjdCBtc2lfaW5mbyAqbXNpLCBzdHJ1Y3QgbXNpX2Rlc2MgKipk ZXNjKQogICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2OwogICAgIHN0cnVjdCBtc2lfZGVzYyAqb2xk X2Rlc2M7CiAKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykpOworICAg IEFTU0VSVChwY2lkZXZzX2lzX2xvY2tlZCgpKTsKICAgICBwZGV2ID0gcGNpX2dldF9wZGV2KG1z aS0+c2VnLCBtc2ktPmJ1cywgbXNpLT5kZXZmbik7CiAgICAgaWYgKCAhcGRldiApCiAgICAgICAg IHJldHVybiAtRU5PREVWOwpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgc3RhdGljIGludCBfX3BjaV9l bmFibGVfbXNpeChzdHJ1Y3QgbXNpX2luZm8gKm1zaSwgc3RydWN0IG1zaV9kZXNjICoqZGVzYykK ICAgICB1OCBmdW5jID0gUENJX0ZVTkMobXNpLT5kZXZmbik7CiAgICAgc3RydWN0IG1zaV9kZXNj ICpvbGRfZGVzYzsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7 CisgICAgQVNTRVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogICAgIHBkZXYgPSBwY2lfZ2V0X3Bk ZXYobXNpLT5zZWcsIG1zaS0+YnVzLCBtc2ktPmRldmZuKTsKICAgICBwb3MgPSBwY2lfZmluZF9j YXBfb2Zmc2V0KG1zaS0+c2VnLCBtc2ktPmJ1cywgc2xvdCwgZnVuYywgUENJX0NBUF9JRF9NU0lY KTsKICAgICBpZiAoICFwZGV2IHx8ICFwb3MgKQpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgaW50IHBj aV9wcmVwYXJlX21zaXgodTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbiwgYm9vbF90IG9mZikKICAg ICBpZiAoICFwb3MgKQogICAgICAgICByZXR1cm4gLUVOT0RFVjsKIAotICAgIHNwaW5fbG9jaygm cGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX2xvY2soKTsKICAgICBwZGV2ID0gcGNpX2dldF9w ZGV2KHNlZywgYnVzLCBkZXZmbik7CiAgICAgaWYgKCAhcGRldiApCiAgICAgICAgIHJjID0gLUVO T0RFVjsKQEAgLTEyMjQsNyArMTIyNCw3IEBAIGludCBwY2lfcHJlcGFyZV9tc2l4KHUxNiBzZWcs IHU4IGJ1cywgdTggZGV2Zm4sIGJvb2xfdCBvZmYpCiAgICAgICAgIHJjID0gbXNpeF9jYXBhYmls aXR5X2luaXQocGRldiwgcG9zLCBOVUxMLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG11bHRpX21zaXhfY2FwYWJsZShjb250cm9sKSk7CiAgICAgfQotICAgIHNwaW5f dW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAKICAgICByZXR1 cm4gcmM7CiB9CkBAIC0xMjM1LDcgKzEyMzUsNyBAQCBpbnQgcGNpX3ByZXBhcmVfbXNpeCh1MTYg c2VnLCB1OCBidXMsIHU4IGRldmZuLCBib29sX3Qgb2ZmKQogICovCiBpbnQgcGNpX2VuYWJsZV9t c2koc3RydWN0IG1zaV9pbmZvICptc2ksIHN0cnVjdCBtc2lfZGVzYyAqKmRlc2MpCiB7Ci0gICAg QVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2 c19pc19sb2NrZWQoKSk7CiAKICAgICBpZiAoICF1c2VfbXNpICkKICAgICAgICAgcmV0dXJuIC1F UEVSTTsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIGludCBwY2lfcmVzdG9yZV9tc2lfc3RhdGUoc3Ry dWN0IHBjaV9kZXYgKnBkZXYpCiAgICAgdW5zaWduZWQgaW50IHR5cGUgPSAwLCBwb3MgPSAwOwog ICAgIHUxNiBjb250cm9sID0gMDsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2 c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogCiAgICAgaWYgKCAh dXNlX21zaSApCiAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9wY2kuYyBiL3hlbi9hcmNoL3g4Ni9wY2kuYwppbmRleCA1YmNlY2JiLi44OTIyNzhk IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcGNpLmMKKysrIGIveGVuL2FyY2gveDg2L3BjaS5j CkBAIC04MiwxMyArODIsMTMgQEAgaW50IHBjaV9jb25mX3dyaXRlX2ludGVyY2VwdCh1bnNpZ25l ZCBpbnQgc2VnLCB1bnNpZ25lZCBpbnQgYmRmLAogICAgIGlmICggcmVnIDwgNjQgfHwgcmVnID49 IDI1NiApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2sp OworICAgIHBjaWRldnNfbG9jaygpOwogCiAgICAgcGRldiA9IHBjaV9nZXRfcGRldihzZWcsIFBD SV9CVVMoYmRmKSwgUENJX0RFVkZOMihiZGYpKTsKICAgICBpZiAoIHBkZXYgKQogICAgICAgICBy YyA9IHBjaV9tc2lfY29uZl93cml0ZV9pbnRlcmNlcHQocGRldiwgcmVnLCBzaXplLCBkYXRhKTsK IAotICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7 CiAKICAgICByZXR1cm4gcmM7CiB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcGh5c2Rldi5j IGIveGVuL2FyY2gveDg2L3BoeXNkZXYuYwppbmRleCA1N2I3ODAwLi4xY2I5YjU4IDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvcGh5c2Rldi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMK QEAgLTE2Nyw3ICsxNjcsNyBAQCBpbnQgcGh5c2Rldl9tYXBfcGlycShkb21pZF90IGRvbWlkLCBp bnQgdHlwZSwgaW50ICppbmRleCwgaW50ICpwaXJxX3AsCiAgICAgICAgIGdvdG8gZnJlZV9kb21h aW47CiAgICAgfQogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNf bG9jaygpOwogICAgIC8qIFZlcmlmeSBvciBnZXQgcGlycS4gKi8KICAgICBzcGluX2xvY2soJmQt PmV2ZW50X2xvY2spOwogICAgIHBpcnEgPSBkb21haW5faXJxX3RvX3BpcnEoZCwgaXJxKTsKQEAg LTIzNyw3ICsyMzcsNyBAQCBpbnQgcGh5c2Rldl9tYXBfcGlycShkb21pZF90IGRvbWlkLCBpbnQg dHlwZSwgaW50ICppbmRleCwgaW50ICpwaXJxX3AsCiAKICBkb25lOgogICAgIHNwaW5fdW5sb2Nr KCZkLT5ldmVudF9sb2NrKTsKLSAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBw Y2lkZXZzX3VubG9jaygpOwogICAgIGlmICggcmV0ICE9IDAgKQogICAgICAgICBzd2l0Y2ggKCB0 eXBlICkKICAgICAgICAgewpAQCAtMjc1LDExICsyNzUsMTEgQEAgaW50IHBoeXNkZXZfdW5tYXBf cGlycShkb21pZF90IGRvbWlkLCBpbnQgcGlycSkKICAgICAgICAgICAgIGdvdG8gZnJlZV9kb21h aW47CiAgICAgfQogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNf bG9jaygpOwogICAgIHNwaW5fbG9jaygmZC0+ZXZlbnRfbG9jayk7CiAgICAgcmV0ID0gdW5tYXBf ZG9tYWluX3BpcnEoZCwgcGlycSk7CiAgICAgc3Bpbl91bmxvY2soJmQtPmV2ZW50X2xvY2spOwot ICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAK ICBmcmVlX2RvbWFpbjoKICAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKQEAgLTY4OSwxMCArNjg5 LDEwIEBAIHJldF90IGRvX3BoeXNkZXZfb3AoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJB TSh2b2lkKSBhcmcpCiAgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZyZXN0b3JlX21zaSwg YXJnLCAxKSAhPSAwICkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHNwaW5fbG9jaygm cGNpZGV2c19sb2NrKTsKKyAgICAgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgICAgIHBkZXYgPSBw Y2lfZ2V0X3BkZXYoMCwgcmVzdG9yZV9tc2kuYnVzLCByZXN0b3JlX21zaS5kZXZmbik7CiAgICAg ICAgIHJldCA9IHBkZXYgPyBwY2lfcmVzdG9yZV9tc2lfc3RhdGUocGRldikgOiAtRU5PREVWOwot ICAgICAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICAgICAgcGNpZGV2c191bmxv Y2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC03MDQsMTAgKzcwNCwxMCBAQCByZXRf dCBkb19waHlzZGV2X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJn KQogICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmZGV2LCBhcmcsIDEpICE9IDAgKQogICAg ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAg ICAgICBwY2lkZXZzX2xvY2soKTsKICAgICAgICAgcGRldiA9IHBjaV9nZXRfcGRldihkZXYuc2Vn LCBkZXYuYnVzLCBkZXYuZGV2Zm4pOwogICAgICAgICByZXQgPSBwZGV2ID8gcGNpX3Jlc3RvcmVf bXNpX3N0YXRlKHBkZXYpIDogLUVOT0RFVjsKLSAgICAgICAgc3Bpbl91bmxvY2soJnBjaWRldnNf bG9jayk7CisgICAgICAgIHBjaWRldnNfdW5sb2NrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K IApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zeXNjdGwuYyBiL3hlbi9jb21tb24vc3lzY3RsLmMK aW5kZXggODVlODUzZi4uNDAxZWRiOSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zeXNjdGwuYwor KysgYi94ZW4vY29tbW9uL3N5c2N0bC5jCkBAIC00MjYsNyArNDI2LDcgQEAgbG9uZyBkb19zeXNj dGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzcGluX2xvY2so JnBjaWRldnNfbG9jayk7CisgICAgICAgICAgICBwY2lkZXZzX2xvY2soKTsKICAgICAgICAgICAg IHBkZXYgPSBwY2lfZ2V0X3BkZXYoZGV2LnNlZywgZGV2LmJ1cywgZGV2LmRldmZuKTsKICAgICAg ICAgICAgIGlmICggIXBkZXYgKQogICAgICAgICAgICAgICAgIG5vZGUgPSBYRU5fSU5WQUxJRF9E RVY7CkBAIC00MzQsNyArNDM0LDcgQEAgbG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogICAgICAgICAgICAgICAgIG5vZGUgPSBYRU5f SU5WQUxJRF9OT0RFX0lEOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG5vZGUg PSBwZGV2LT5ub2RlOwotICAgICAgICAgICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7Cisg ICAgICAgICAgICBwY2lkZXZzX3VubG9jaygpOwogCiAgICAgICAgICAgICBpZiAoIGNvcHlfdG9f Z3Vlc3Rfb2Zmc2V0KHRpLT5ub2RlcywgaSwgJm5vZGUsIDEpICkKICAgICAgICAgICAgIHsKZGlm ZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMgYi94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfaW5pdC5jCmluZGV4IDU2MzU2NTAuLjhiYjQ3 YjIgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMK KysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2luaXQuYwpAQCAtNjczLDkg KzY3Myw5IEBAIHZvaWQgcGFyc2VfcHByX2xvZ19lbnRyeShzdHJ1Y3QgYW1kX2lvbW11ICppb21t dSwgdTMyIGVudHJ5W10pCiAgICAgYnVzID0gUENJX0JVUyhkZXZpY2VfaWQpOwogICAgIGRldmZu ID0gUENJX0RFVkZOMihkZXZpY2VfaWQpOwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2sp OworICAgIHBjaWRldnNfbG9jaygpOwogICAgIHBkZXYgPSBwY2lfZ2V0X3JlYWxfcGRldihpb21t dS0+c2VnLCBidXMsIGRldmZuKTsKLSAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAg ICBwY2lkZXZzX3VubG9jaygpOwogCiAgICAgaWYgKCBwZGV2ICkKICAgICAgICAgZ3Vlc3RfaW9t bXVfYWRkX3Bwcl9sb2cocGRldi0+ZG9tYWluLCBlbnRyeSk7CkBAIC03NzgsNyArNzc4LDYgQEAg c3RhdGljIGJvb2xfdCBfX2luaXQgc2V0X2lvbW11X2ludGVycnVwdF9oYW5kbGVyKHN0cnVjdCBh bWRfaW9tbXUgKmlvbW11KQogewogICAgIGludCBpcnEsIHJldDsKICAgICBod19pcnFfY29udHJv bGxlciAqaGFuZGxlcjsKLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIHUxNiBjb250cm9s OwogCiAgICAgaXJxID0gY3JlYXRlX2lycShOVU1BX05PX05PREUpOwpAQCAtNzg4LDEwICs3ODcs MTAgQEAgc3RhdGljIGJvb2xfdCBfX2luaXQgc2V0X2lvbW11X2ludGVycnVwdF9oYW5kbGVyKHN0 cnVjdCBhbWRfaW9tbXUgKmlvbW11KQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBz cGluX2xvY2tfaXJxc2F2ZSgmcGNpZGV2c19sb2NrLCBmbGFncyk7CisgICAgcGNpZGV2c19sb2Nr KCk7CiAgICAgaW9tbXUtPm1zaS5kZXYgPSBwY2lfZ2V0X3BkZXYoaW9tbXUtPnNlZywgUENJX0JV Uyhpb21tdS0+YmRmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfREVW Rk4yKGlvbW11LT5iZGYpKTsKLSAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY2lkZXZzX2xv Y2ssIGZsYWdzKTsKKyAgICBwY2lkZXZzX3VubG9jaygpOwogICAgIGlmICggIWlvbW11LT5tc2ku ZGV2ICkKICAgICB7CiAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiSU9NTVU6IG5vIHBkZXYgZm9y ICUwNHg6JTAyeDolMDJ4LiV1XG4iLApkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvYW1kL2lvbW11X21hcC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21h cC5jCmluZGV4IDc4ODYyYzkuLjlkOTFkZmMgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL2FtZC9pb21tdV9tYXAuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQv aW9tbXVfbWFwLmMKQEAgLTU5Myw3ICs1OTMsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdf bW9kZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICAgICAgaGQtPmFy Y2gucGFnaW5nX21vZGUgPSBsZXZlbDsKICAgICAgICAgaGQtPmFyY2gucm9vdF90YWJsZSA9IG5l d19yb290OwogCi0gICAgICAgIGlmICggIXNwaW5faXNfbG9ja2VkKCZwY2lkZXZzX2xvY2spICkK KyAgICAgICAgaWYgKCAhcGNpZGV2c19pc19sb2NrZWQoKSApCiAgICAgICAgICAgICBBTURfSU9N TVVfREVCVUcoIiVzIFRyeSB0byBhY2Nlc3MgcGRldl9saXN0ICIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAid2l0aG91dCBhcXVpcmluZyBwY2lkZXZzX2xvY2suXG4iLCBfX2Z1bmNfXyk7 CiAKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11 LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCmluZGV4IDhk OWYzNTguLjFhNzJjODcgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9w Y2lfYW1kX2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRf aW9tbXUuYwpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyB2b2lkIGFtZF9pb21tdV9zZXR1cF9k b21haW5fZGV2aWNlKAogCiAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9tbXUtPmxvY2ss IGZsYWdzKTsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7Cisg ICAgQVNTRVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogCiAgICAgaWYgKCBwY2lfYXRzX2Rldmlj ZShpb21tdS0+c2VnLCBidXMsIHBkZXYtPmRldmZuKSAmJgogICAgICAgICAgIXBjaV9hdHNfZW5h YmxlZChpb21tdS0+c2VnLCBidXMsIHBkZXYtPmRldmZuKSApCkBAIC0zNDUsNyArMzQ1LDcgQEAg dm9pZCBhbWRfaW9tbXVfZGlzYWJsZV9kb21haW5fZGV2aWNlKHN0cnVjdCBkb21haW4gKmRvbWFp biwKICAgICB9CiAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9tbXUtPmxvY2ssIGZsYWdz KTsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CisgICAgQVNT RVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogCiAgICAgaWYgKCBkZXZmbiA9PSBwZGV2LT5kZXZm biAmJgogICAgICAgICAgcGNpX2F0c19kZXZpY2UoaW9tbXUtPnNlZywgYnVzLCBkZXZmbikgJiYK ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvcGNpLmMKaW5kZXggMjdiM2NhNy4uZDdlOTRlMSAxMDA2NDQKLS0tIGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv cGNpLmMKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IHBjaV9zZWcgewogICAgIH0gYnVzMmJyaWRn ZVtNQVhfQlVTRVNdOwogfTsKIAotc3BpbmxvY2tfdCBwY2lkZXZzX2xvY2sgPSBTUElOX0xPQ0tf VU5MT0NLRUQ7CitzdGF0aWMgc3BpbmxvY2tfdCBfcGNpZGV2c19sb2NrID0gU1BJTl9MT0NLX1VO TE9DS0VEOwogc3RhdGljIHN0cnVjdCByYWRpeF90cmVlX3Jvb3QgcGNpX3NlZ21lbnRzOwogCiBz dGF0aWMgaW5saW5lIHN0cnVjdCBwY2lfc2VnICpnZXRfcHNlZyh1MTYgc2VnKQpAQCAtMTAzLDYg KzEwMywyMSBAQCBzdGF0aWMgaW50IHBjaV9zZWdtZW50c19pdGVyYXRlKAogICAgIHJldHVybiBy YzsKIH0KIAordm9pZCBwY2lkZXZzX2xvY2sodm9pZCkKK3sKKyAgICBzcGluX2xvY2tfcmVjdXJz aXZlKCZfcGNpZGV2c19sb2NrKTsKK30KKwordm9pZCBwY2lkZXZzX3VubG9jayh2b2lkKQorewor ICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmX3BjaWRldnNfbG9jayk7Cit9CisKK2ludCBwY2lk ZXZzX2lzX2xvY2tlZCh2b2lkKQoreworICAgIHJldHVybiBzcGluX2lzX2xvY2tlZCgmX3BjaWRl dnNfbG9jayk7Cit9CisKIHZvaWQgX19pbml0IHB0X3BjaV9pbml0KHZvaWQpCiB7CiAgICAgcmFk aXhfdHJlZV9pbml0KCZwY2lfc2VnbWVudHMpOwpAQCAtNDEyLDE0ICs0MjcsMTQgQEAgaW50IF9f aW5pdCBwY2lfaGlkZV9kZXZpY2UoaW50IGJ1cywgaW50IGRldmZuKQogICAgIHN0cnVjdCBwY2lf ZGV2ICpwZGV2OwogICAgIGludCByYyA9IC1FTk9NRU07CiAKLSAgICBzcGluX2xvY2soJnBjaWRl dnNfbG9jayk7CisgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgcGRldiA9IGFsbG9jX3BkZXYoZ2V0 X3BzZWcoMCksIGJ1cywgZGV2Zm4pOwogICAgIGlmICggcGRldiApCiAgICAgewogICAgICAgICBf cGNpX2hpZGVfZGV2aWNlKHBkZXYpOwogICAgICAgICByYyA9IDA7CiAgICAgfQotICAgIHNwaW5f dW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAKICAgICByZXR1 cm4gcmM7CiB9CkBAIC00NTYsNyArNDcxLDcgQEAgc3RydWN0IHBjaV9kZXYgKnBjaV9nZXRfcGRl dihpbnQgc2VnLCBpbnQgYnVzLCBpbnQgZGV2Zm4pCiAgICAgc3RydWN0IHBjaV9zZWcgKnBzZWcg PSBnZXRfcHNlZyhzZWcpOwogICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gTlVMTDsKIAotICAg IEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRl dnNfaXNfbG9ja2VkKCkpOwogICAgIEFTU0VSVChzZWcgIT0gLTEgfHwgYnVzID09IC0xKTsKICAg ICBBU1NFUlQoYnVzICE9IC0xIHx8IGRldmZuID09IC0xKTsKIApAQCAtNTgxLDkgKzU5Niw5IEBA IGludCBwY2lfYWRkX2RldmljZSh1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuLAogICAgICAgICBw ZGV2X3R5cGUgPSAiZXh0ZW5kZWQgZnVuY3Rpb24iOwogICAgIGVsc2UgaWYgKGluZm8tPmlzX3Zp cnRmbikKICAgICB7Ci0gICAgICAgIHNwaW5fbG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICAgICAg cGNpZGV2c19sb2NrKCk7CiAgICAgICAgIHBkZXYgPSBwY2lfZ2V0X3BkZXYoc2VnLCBpbmZvLT5w aHlzZm4uYnVzLCBpbmZvLT5waHlzZm4uZGV2Zm4pOwotICAgICAgICBzcGluX3VubG9jaygmcGNp ZGV2c19sb2NrKTsKKyAgICAgICAgcGNpZGV2c191bmxvY2soKTsKICAgICAgICAgaWYgKCAhcGRl diApCiAgICAgICAgICAgICBwY2lfYWRkX2RldmljZShzZWcsIGluZm8tPnBoeXNmbi5idXMsIGlu Zm8tPnBoeXNmbi5kZXZmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIG5vZGUp OwpAQCAtNjAxLDcgKzYxNiw3IEBAIGludCBwY2lfYWRkX2RldmljZSh1MTYgc2VnLCB1OCBidXMs IHU4IGRldmZuLAogCiAgICAgcmV0ID0gLUVOT01FTTsKIAotICAgIHNwaW5fbG9jaygmcGNpZGV2 c19sb2NrKTsKKyAgICBwY2lkZXZzX2xvY2soKTsKICAgICBwc2VnID0gYWxsb2NfcHNlZyhzZWcp OwogICAgIGlmICggIXBzZWcgKQogICAgICAgICBnb3RvIG91dDsKQEAgLTcwMyw3ICs3MTgsNyBA QCBpbnQgcGNpX2FkZF9kZXZpY2UodTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbiwKICAgICBwY2lf ZW5hYmxlX2FjcyhwZGV2KTsKIAogb3V0OgotICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xvY2sp OworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAgICAgaWYgKCAhcmV0ICkKICAgICB7CiAgICAgICAg IHByaW50ayhYRU5MT0dfREVCVUcgIlBDSSBhZGQgJXMgJTA0eDolMDJ4OiUwMnguJXVcbiIsIHBk ZXZfdHlwZSwKQEAgLTczNSw3ICs3NTAsNyBAQCBpbnQgcGNpX3JlbW92ZV9kZXZpY2UodTE2IHNl ZywgdTggYnVzLCB1OCBkZXZmbikKICAgICBpZiAoICFwc2VnICkKICAgICAgICAgcmV0dXJuIC1F Tk9ERVY7CiAKLSAgICBzcGluX2xvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c19sb2Nr KCk7CiAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHBkZXYsICZwc2VnLT5hbGxkZXZzX2xpc3Qs IGFsbGRldnNfbGlzdCApCiAgICAgICAgIGlmICggcGRldi0+YnVzID09IGJ1cyAmJiBwZGV2LT5k ZXZmbiA9PSBkZXZmbiApCiAgICAgICAgIHsKQEAgLTc0OSw3ICs3NjQsNyBAQCBpbnQgcGNpX3Jl bW92ZV9kZXZpY2UodTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbikKICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICB9CiAKLSAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lk ZXZzX3VubG9jaygpOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTgwNywxMSArODIyLDExIEBA IGludCBwY2lfcmVsZWFzZV9kZXZpY2VzKHN0cnVjdCBkb21haW4gKmQpCiAgICAgdTggYnVzLCBk ZXZmbjsKICAgICBpbnQgcmV0OwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAg IHBjaWRldnNfbG9jaygpOwogICAgIHJldCA9IHBjaV9jbGVhbl9kcGNpX2lycXMoZCk7CiAgICAg aWYgKCByZXQgKQogICAgIHsKLSAgICAgICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7Cisg ICAgICAgIHBjaWRldnNfdW5sb2NrKCk7CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogICAg IHdoaWxlICggKHBkZXYgPSBwY2lfZ2V0X3BkZXZfYnlfZG9tYWluKGQsIC0xLCAtMSwgLTEpKSAp CkBAIC04MjMsNyArODM4LDcgQEAgaW50IHBjaV9yZWxlYXNlX2RldmljZXMoc3RydWN0IGRvbWFp biAqZCkKICAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHBkZXYtPnNlZywgYnVzLAog ICAgICAgICAgICAgICAgICAgIFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMoZGV2Zm4pKTsKICAg ICB9Ci0gICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c191bmxvY2so KTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtOTIwLDcgKzkzNSw3IEBAIHZvaWQgcGNpX2NoZWNr X2Rpc2FibGVfZGV2aWNlKHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4pCiAgICAgc190aW1lX3Qg bm93ID0gTk9XKCk7CiAgICAgdTE2IGN3b3JkOwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xv Y2spOworICAgIHBjaWRldnNfbG9jaygpOwogICAgIHBkZXYgPSBwY2lfZ2V0X3JlYWxfcGRldihz ZWcsIGJ1cywgZGV2Zm4pOwogICAgIGlmICggcGRldiApCiAgICAgewpAQCAtOTMxLDcgKzk0Niw3 IEBAIHZvaWQgcGNpX2NoZWNrX2Rpc2FibGVfZGV2aWNlKHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2 Zm4pCiAgICAgICAgIGlmICggKytwZGV2LT5mYXVsdC5jb3VudCA8IFBUX0ZBVUxUX1RIUkVTSE9M RCApCiAgICAgICAgICAgICBwZGV2ID0gTlVMTDsKICAgICB9Ci0gICAgc3Bpbl91bmxvY2soJnBj aWRldnNfbG9jayk7CisgICAgcGNpZGV2c191bmxvY2soKTsKIAogICAgIGlmICggIXBkZXYgKQog ICAgICAgICByZXR1cm47CkBAIC05ODgsOSArMTAwMyw5IEBAIGludCBfX2luaXQgc2Nhbl9wY2lf ZGV2aWNlcyh2b2lkKQogewogICAgIGludCByZXQ7CiAKLSAgICBzcGluX2xvY2soJnBjaWRldnNf bG9jayk7CisgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgcmV0ID0gcGNpX3NlZ21lbnRzX2l0ZXJh dGUoX3NjYW5fcGNpX2RldmljZXMsIE5VTEwpOwotICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xv Y2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMTA1 NCwxNyArMTA2OSwxNyBAQCBzdGF0aWMgaW50IF9faHdkb21faW5pdCBfc2V0dXBfaHdkb21fcGNp X2RldmljZXMoc3RydWN0IHBjaV9zZWcgKnBzZWcsIHZvaWQgKmFyZwogCiAgICAgICAgICAgICBp ZiAoIGlvbW11X3ZlcmJvc2UgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNwaW5f dW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICAgICAgICAgIHBjaWRldnNfdW5sb2NrKCk7 CiAgICAgICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7Ci0gICAgICAgICAg ICAgICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICAgICAgICAgIHBjaWRldnNf bG9jaygpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCAhaW9tbXVf dmVyYm9zZSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xv Y2spOworICAgICAgICAgICAgcGNpZGV2c191bmxvY2soKTsKICAgICAgICAgICAgIHByb2Nlc3Nf cGVuZGluZ19zb2Z0aXJxcygpOwotICAgICAgICAgICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2sp OworICAgICAgICAgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEw NzYsOSArMTA5MSw5IEBAIHZvaWQgX19od2RvbV9pbml0IHNldHVwX2h3ZG9tX3BjaV9kZXZpY2Vz KAogewogICAgIHN0cnVjdCBzZXR1cF9od2RvbSBjdHh0ID0geyAuZCA9IGQsIC5oYW5kbGVyID0g aGFuZGxlciB9OwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNf bG9jaygpOwogICAgIHBjaV9zZWdtZW50c19pdGVyYXRlKF9zZXR1cF9od2RvbV9wY2lfZGV2aWNl cywgJmN0eHQpOwotICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNf dW5sb2NrKCk7CiB9CiAKICNpZmRlZiBDT05GSUdfQUNQSQpAQCAtMTIwNiw5ICsxMjIxLDkgQEAg c3RhdGljIGludCBfZHVtcF9wY2lfZGV2aWNlcyhzdHJ1Y3QgcGNpX3NlZyAqcHNlZywgdm9pZCAq YXJnKQogc3RhdGljIHZvaWQgZHVtcF9wY2lfZGV2aWNlcyh1bnNpZ25lZCBjaGFyIGNoKQogewog ICAgIHByaW50aygiPT09PSBQQ0kgZGV2aWNlcyA9PT09XG4iKTsKLSAgICBzcGluX2xvY2soJnBj aWRldnNfbG9jayk7CisgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgcGNpX3NlZ21lbnRzX2l0ZXJh dGUoX2R1bXBfcGNpX2RldmljZXMsIE5VTEwpOwotICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xv Y2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiB9CiAKIHN0cnVjdCBrZXloYW5kbGVyIGR1bXBf cGNpX2RldmljZXNfa2V5aGFuZGxlciA9IHsKQEAgLTEyNDgsNyArMTI2Myw3IEBAIGludCBpb21t dV9hZGRfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogICAgIGlmICggIXBkZXYtPmRvbWFp biApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgQVNTRVJUKHNwaW5faXNfbG9ja2Vk KCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7CiAKICAg ICBoZCA9IGRvbWFpbl9odm1faW9tbXUocGRldi0+ZG9tYWluKTsKICAgICBpZiAoICFpb21tdV9l bmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzICkKQEAgLTEyNzcsNyArMTI5Miw3IEBAIGludCBp b21tdV9lbmFibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogICAgIGlmICggIXBkZXYt PmRvbWFpbiApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgQVNTRVJUKHNwaW5faXNf bG9ja2VkKCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7 CiAKICAgICBoZCA9IGRvbWFpbl9odm1faW9tbXUocGRldi0+ZG9tYWluKTsKICAgICBpZiAoICFp b21tdV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzIHx8CkBAIC0xMzI2LDkgKzEzNDEsOSBA QCBzdGF0aWMgaW50IGRldmljZV9hc3NpZ25lZCh1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuKQog ewogICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2OwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xv Y2spOworICAgIHBjaWRldnNfbG9jaygpOwogICAgIHBkZXYgPSBwY2lfZ2V0X3BkZXZfYnlfZG9t YWluKGhhcmR3YXJlX2RvbWFpbiwgc2VnLCBidXMsIGRldmZuKTsKLSAgICBzcGluX3VubG9jaygm cGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX3VubG9jaygpOwogCiAgICAgcmV0dXJuIHBkZXYg PyAwIDogLUVCVVNZOwogfQpAQCAtMTM1MCwxMyArMTM2NSwxMSBAQCBzdGF0aWMgaW50IGFzc2ln bl9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgdTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbiwgdTMy IGZsYWcpCiAgICAgICAgICAgICAgcDJtX2dldF9ob3N0cDJtKGQpLT5nbG9iYWxfbG9nZGlydHkp KSApCiAgICAgICAgIHJldHVybiAtRVhERVY7CiAKLSAgICBpZiAoICFzcGluX3RyeWxvY2soJnBj aWRldnNfbG9jaykgKQotICAgICAgICByZXR1cm4gLUVSRVNUQVJUOwotCisgICAgcGNpZGV2c19s b2NrKCk7CiAgICAgcmMgPSBpb21tdV9jb25zdHJ1Y3QoZCk7CiAgICAgaWYgKCByYyApCiAgICAg ewotICAgICAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICAgICAgcGNpZGV2c191 bmxvY2soKTsKICAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KIApAQCAtMTM4Nyw3ICsxNDAwLDcg QEAgc3RhdGljIGludCBhc3NpZ25fZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsIHUxNiBzZWcsIHU4 IGJ1cywgdTggZGV2Zm4sIHUzMiBmbGFnKQogIGRvbmU6CiAgICAgaWYgKCAhaGFzX2FyY2hfcGRl dnMoZCkgJiYgbmVlZF9pb21tdShkKSApCiAgICAgICAgIGlvbW11X3RlYXJkb3duKGQpOwotICAg IHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAKICAg ICByZXR1cm4gcmM7CiB9CkBAIC0xNDAyLDcgKzE0MTUsNyBAQCBpbnQgZGVhc3NpZ25fZGV2aWNl KHN0cnVjdCBkb21haW4gKmQsIHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4pCiAgICAgaWYgKCAh aW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29wcyApCiAgICAgICAgIHJldHVybiAtRUlO VkFMOwogCi0gICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwY2lkZXZzX2xvY2spKTsKKyAgICBB U1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7CiAgICAgcGRldiA9IHBjaV9nZXRfcGRldl9ieV9k b21haW4oZCwgc2VnLCBidXMsIGRldmZuKTsKICAgICBpZiAoICFwZGV2ICkKICAgICAgICAgcmV0 dXJuIC1FTk9ERVY7CkBAIC0xNDU3LDcgKzE0NzAsNyBAQCBzdGF0aWMgaW50IGlvbW11X2dldF9k ZXZpY2VfZ3JvdXAoCiAKICAgICBncm91cF9pZCA9IG9wcy0+Z2V0X2RldmljZV9ncm91cF9pZChz ZWcsIGJ1cywgZGV2Zm4pOwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBj aWRldnNfbG9jaygpOwogICAgIGZvcl9lYWNoX3BkZXYoIGQsIHBkZXYgKQogICAgIHsKICAgICAg ICAgaWYgKCAocGRldi0+c2VnICE9IHNlZykgfHwKQEAgLTE0NzYsMTQgKzE0ODksMTQgQEAgc3Rh dGljIGludCBpb21tdV9nZXRfZGV2aWNlX2dyb3VwKAogCiAgICAgICAgICAgICBpZiAoIHVubGlr ZWx5KGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGJ1ZiwgaSwgJmJkZiwgMSkpICkKICAgICAgICAgICAg IHsKLSAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICAgICAg ICAgICAgICBwY2lkZXZzX3VubG9jaygpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAg ICAgICAgICAgIH0KICAgICAgICAgICAgIGkrKzsKICAgICAgICAgfQogICAgIH0KIAotICAgIHNw aW5fdW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAKICAgICBy ZXR1cm4gaTsKIH0KQEAgLTE2MTEsOSArMTYyNCw5IEBAIGludCBpb21tdV9kb19wY2lfZG9tY3Rs KAogICAgICAgICBidXMgPSBQQ0lfQlVTKG1hY2hpbmVfc2JkZik7CiAgICAgICAgIGRldmZuID0g UENJX0RFVkZOMihtYWNoaW5lX3NiZGYpOwogCi0gICAgICAgIHNwaW5fbG9jaygmcGNpZGV2c19s b2NrKTsKKyAgICAgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgICAgIHJldCA9IGRlYXNzaWduX2Rl dmljZShkLCBzZWcsIGJ1cywgZGV2Zm4pOwotICAgICAgICBzcGluX3VubG9jaygmcGNpZGV2c19s b2NrKTsKKyAgICAgICAgcGNpZGV2c191bmxvY2soKTsKICAgICAgICAgaWYgKCByZXQgKQogICAg ICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUgogICAgICAgICAgICAgICAgICAgICJkZWFzc2ln biAlMDR4OiUwMng6JTAyeC4ldSBmcm9tIGRvbSVkIGZhaWxlZCAoJWQpXG4iLApkaWZmIC0tZ2l0 IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvaW9tbXUuYwppbmRleCA2ZTYyYTQyLi5hMGUzOTIyIDEwMDY0NAotLS0gYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvaW9tbXUuYwpAQCAtMTMwNyw3ICsxMzA3LDcgQEAgaW50IGRvbWFpbl9jb250 ZXh0X21hcHBpbmdfb25lKAogICAgIGludCBhZ2F3OwogICAgIGludCByYyA9IDA7CiAKLSAgICBB U1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykpOworICAgIEFTU0VSVChwY2lkZXZz X2lzX2xvY2tlZCgpKTsKICAgICBzcGluX2xvY2soJmlvbW11LT5sb2NrKTsKICAgICBtYWRkciA9 IGJ1c190b19jb250ZXh0X21hZGRyKGlvbW11LCBidXMpOwogICAgIGNvbnRleHRfZW50cmllcyA9 IChzdHJ1Y3QgY29udGV4dF9lbnRyeSAqKW1hcF92dGRfZG9tYWluX3BhZ2UobWFkZHIpOwpAQCAt MTQ1Niw3ICsxNDU2LDcgQEAgc3RhdGljIGludCBkb21haW5fY29udGV4dF9tYXBwaW5nKAogICAg IGlmICggIWRyaGQgKQogICAgICAgICByZXR1cm4gLUVOT0RFVjsKIAotICAgIEFTU0VSVChzcGlu X2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRldnNfaXNfbG9ja2Vk KCkpOwogCiAgICAgc3dpdGNoICggcGRldi0+dHlwZSApCiAgICAgewpAQCAtMTUzOSw3ICsxNTM5 LDcgQEAgaW50IGRvbWFpbl9jb250ZXh0X3VubWFwX29uZSgKICAgICBpbnQgaW9tbXVfZG9taWQ7 CiAgICAgaW50IHJjID0gMDsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19s b2NrKSk7CisgICAgQVNTRVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogICAgIHNwaW5fbG9jaygm aW9tbXUtPmxvY2spOwogCiAgICAgbWFkZHIgPSBidXNfdG9fY29udGV4dF9tYWRkcihpb21tdSwg YnVzKTsKQEAgLTE4NjEsNyArMTg2MSw3IEBAIHN0YXRpYyBpbnQgcm1ycl9pZGVudGl0eV9tYXBw aW5nKHN0cnVjdCBkb21haW4gKmQsIGJvb2xfdCBtYXAsCiAgICAgc3RydWN0IG1hcHBlZF9ybXJy ICptcm1ycjsKICAgICBzdHJ1Y3QgaHZtX2lvbW11ICpoZCA9IGRvbWFpbl9odm1faW9tbXUoZCk7 CiAKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykpOworICAgIEFTU0VS VChwY2lkZXZzX2lzX2xvY2tlZCgpKTsKICAgICBBU1NFUlQocm1yci0+YmFzZV9hZGRyZXNzIDwg cm1yci0+ZW5kX2FkZHJlc3MpOwogCiAgICAgLyoKQEAgLTE5MjYsNyArMTkyNiw3IEBAIHN0YXRp YyBpbnQgaW50ZWxfaW9tbXVfYWRkX2RldmljZSh1OCBkZXZmbiwgc3RydWN0IHBjaV9kZXYgKnBk ZXYpCiAgICAgdTE2IGJkZjsKICAgICBpbnQgcmV0LCBpOwogCi0gICAgQVNTRVJUKHNwaW5faXNf bG9ja2VkKCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7 CiAKICAgICBpZiAoICFwZGV2LT5kb21haW4gKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKQEAg LTIxNTQsNyArMjE1NCw3IEBAIHN0YXRpYyB2b2lkIF9faHdkb21faW5pdCBzZXR1cF9od2RvbV9y bXJyKHN0cnVjdCBkb21haW4gKmQpCiAgICAgdTE2IGJkZjsKICAgICBpbnQgcmV0LCBpOwogCi0g ICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfbG9jaygpOwogICAgIGZv cl9lYWNoX3JtcnJfZGV2aWNlICggcm1yciwgYmRmLCBpICkKICAgICB7CiAgICAgICAgIC8qCkBA IC0yMTY4LDcgKzIxNjgsNyBAQCBzdGF0aWMgdm9pZCBfX2h3ZG9tX2luaXQgc2V0dXBfaHdkb21f cm1ycihzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSIFZU RFBSRUZJWCwKICAgICAgICAgICAgICAgICAgICAgICJJT01NVTogbWFwcGluZyByZXNlcnZlZCBy ZWdpb24gZmFpbGVkXG4iKTsKICAgICB9Ci0gICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7 CisgICAgcGNpZGV2c191bmxvY2soKTsKIH0KIAogaW50IF9faW5pdCBpbnRlbF92dGRfc2V0dXAo dm9pZCkKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3ZpZGVvL3ZnYS5jIGIveGVuL2RyaXZlcnMv dmlkZW8vdmdhLmMKaW5kZXggNDBlNTk2My4uNjFjNmIxMyAxMDA2NDQKLS0tIGEveGVuL2RyaXZl cnMvdmlkZW8vdmdhLmMKKysrIGIveGVuL2RyaXZlcnMvdmlkZW8vdmdhLmMKQEAgLTExNyw5ICsx MTcsOSBAQCB2b2lkIF9faW5pdCB2aWRlb19lbmRib290KHZvaWQpCiAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IHBjaV9kZXYgKnBkZXY7CiAgICAgICAgICAgICAgICAgdTggYiA9IGJ1cywg ZGYgPSBkZXZmbiwgc2I7CiAKLSAgICAgICAgICAgICAgICBzcGluX2xvY2soJnBjaWRldnNfbG9j ayk7CisgICAgICAgICAgICAgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgICAgICAgICAgICAgcGRl diA9IHBjaV9nZXRfcGRldigwLCBidXMsIGRldmZuKTsKLSAgICAgICAgICAgICAgICBzcGluX3Vu bG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICAgICAgICAgICAgICBwY2lkZXZzX3VubG9jaygpOwog CiAgICAgICAgICAgICAgICAgaWYgKCAhcGRldiB8fAogICAgICAgICAgICAgICAgICAgICAgcGNp X2NvbmZfcmVhZDE2KDAsIGJ1cywgUENJX1NMT1QoZGV2Zm4pLCBQQ0lfRlVOQyhkZXZmbiksCmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcGNpLmggYi94ZW4vaW5jbHVkZS94ZW4vcGNpLmgK aW5kZXggYTVhZWY1NS4uMDE3YWEwYiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3BjaS5o CisrKyBiL3hlbi9pbmNsdWRlL3hlbi9wY2kuaApAQCAtOTQsNyArOTQsOSBAQCBzdHJ1Y3QgcGNp X2RldiB7CiAgKiBpbnRlcnJ1cHQgaGFuZGxpbmcgcmVsYXRlZCAodGhlIG1hc2sgYml0IHJlZ2lz dGVyKS4KICAqLwogCi1leHRlcm4gc3BpbmxvY2tfdCBwY2lkZXZzX2xvY2s7Cit2b2lkIHBjaWRl dnNfbG9jayh2b2lkKTsKK3ZvaWQgcGNpZGV2c191bmxvY2sodm9pZCk7CitpbnQgcGNpZGV2c19p c19sb2NrZWQodm9pZCk7CiAKIGJvb2xfdCBwY2lfa25vd25fc2VnbWVudCh1MTYgc2VnKTsKIGJv b2xfdCBwY2lfZGV2aWNlX2RldGVjdCh1MTYgc2VnLCB1OCBidXMsIHU4IGRldiwgdTggZnVuYyk7 Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==