From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v3 2/2] IOMMU/spinlock: Make the pcidevs_lock a recursive one Date: Wed, 9 Mar 2016 21:17:35 +0800 Message-ID: <1457529455-38314-3-git-send-email-quan.xu@intel.com> References: <1457529455-38314-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: <1457529455-38314-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: xen-devel@lists.xen.org Cc: Kevin Tian , Feng Wu , Jan Beulich , Andrew Cooper , Dario Faggioli , Suravee Suthikulpanit , Quan Xu , Keir Fraser List-Id: xen-devel@lists.xenproject.org U2lnbmVkLW9mZi1ieTogUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+CkFja2VkLWJ5OiBLZXZp biBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ0M6IEtlaXIgRnJhc2VyIDxrZWlyQHhlbi5v cmc+CkNDOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNDOiBBbmRyZXcgQ29vcGVy IDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDQzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxz dXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ0M6IEZlbmcgV3UgPGZlbmcud3VAaW50ZWwu Y29tPgpDQzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+CkNDOiBEYXJpbyBGYWdn aW9saSA8ZGFyaW8uZmFnZ2lvbGlAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvZG9tY3Rs LmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKy0tCiB4ZW4vYXJjaC94ODYvaHZtL3Ztc2ku YyAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHhlbi9hcmNoL3g4Ni9pcnEuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgOCArLS0KIHhlbi9hcmNoL3g4Ni9tc2kuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAxNiArKy0tLQogeGVuL2FyY2gveDg2L3BjaS5jICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICA0ICstCiB4ZW4vYXJjaC94ODYvcGh5c2Rldi5jICAgICAgICAgICAg ICAgICAgICAgIHwgMTYgKystLS0KIHhlbi9jb21tb24vc3lzY3RsLmMgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNCArLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2luaXQu YyAgICB8ICA4ICstLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jICAg ICB8ICAyICstCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jIHwg IDQgKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jICAgICAgICAgICAgICAgfCA5NiAr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRk L2ludHJlbWFwLmMgICAgICB8ICAyICstCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9t bXUuYyAgICAgICAgIHwgMTQgKystLS0KIHhlbi9kcml2ZXJzL3ZpZGVvL3ZnYS5jICAgICAgICAg ICAgICAgICAgICAgfCAgNCArLQogeGVuL2luY2x1ZGUveGVuL3BjaS5oICAgICAgICAgICAgICAg ICAgICAgICB8ICA1ICstCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKSwgODYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2Fy Y2gveDg2L2RvbWN0bC5jCmluZGV4IDU1YWVjZGMuLmIzNGEyOTUgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9kb21jdGwuYworKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKQEAgLTQ3Miw5ICs0 NzIsOSBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKAogICAgICAgICByZXQgPSAtRVNSQ0g7CiAgICAg ICAgIGlmICggaW9tbXVfZW5hYmxlZCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNwaW5fbG9j aygmcGNpZGV2c19sb2NrKTsKKyAgICAgICAgICAgIHBjaWRldnNfbG9jaygpOwogICAgICAgICAg ICAgcmV0ID0gcHRfaXJxX2NyZWF0ZV9iaW5kKGQsIGJpbmQpOwotICAgICAgICAgICAgc3Bpbl91 bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgICAgICAgICBwY2lkZXZzX3VubG9jaygpOwogICAg ICAgICB9CiAgICAgICAgIGlmICggcmV0IDwgMCApCiAgICAgICAgICAgICBwcmludGsoWEVOTE9H X0dfRVJSICJwdF9pcnFfY3JlYXRlX2JpbmQgZmFpbGVkICglbGQpIGZvciBkb20lZFxuIiwKQEAg LTQ5Nyw5ICs0OTcsOSBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKAogCiAgICAgICAgIGlmICggaW9t bXVfZW5hYmxlZCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNwaW5fbG9jaygmcGNpZGV2c19s b2NrKTsKKyAgICAgICAgICAgIHBjaWRldnNfbG9jaygpOwogICAgICAgICAgICAgcmV0ID0gcHRf aXJxX2Rlc3Ryb3lfYmluZChkLCBiaW5kKTsKLSAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZwY2lk ZXZzX2xvY2spOworICAgICAgICAgICAgcGNpZGV2c191bmxvY2soKTsKICAgICAgICAgfQogICAg ICAgICBpZiAoIHJldCA8IDAgKQogICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19HX0VSUiAicHRf aXJxX2Rlc3Ryb3lfYmluZCBmYWlsZWQgKCVsZCkgZm9yIGRvbSVkXG4iLApkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS92bXNpLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Ztc2kuYwppbmRleCA0 OTkxNTFlLi5iNDFhYmE1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3Ztc2kuYworKysg Yi94ZW4vYXJjaC94ODYvaHZtL3Ztc2kuYwpAQCAtMzg4LDcgKzM4OCw3IEBAIGludCBtc2l4dGJs X3B0X3JlZ2lzdGVyKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwaXJxICpwaXJxLCB1aW50NjRf dCBndGFibGUpCiAgICAgc3RydWN0IG1zaXh0YmxfZW50cnkgKmVudHJ5LCAqbmV3X2VudHJ5Owog ICAgIGludCByID0gLUVJTlZBTDsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2 c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogICAgIEFTU0VSVChz cGluX2lzX2xvY2tlZCgmZC0+ZXZlbnRfbG9jaykpOwogCiAgICAgaWYgKCAhaGFzX3ZsYXBpYyhk KSApCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBtc2l4dGJsX3B0X3VucmVnaXN0ZXIoc3RydWN0 IGRvbWFpbiAqZCwgc3RydWN0IHBpcnEgKnBpcnEpCiAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXY7 CiAgICAgc3RydWN0IG1zaXh0YmxfZW50cnkgKmVudHJ5OwogCi0gICAgQVNTRVJUKHNwaW5faXNf bG9ja2VkKCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7 CiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZkLT5ldmVudF9sb2NrKSk7CiAKICAgICBpZiAo ICFoYXNfdmxhcGljKGQpICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9pcnEuYyBiL3hlbi9h cmNoL3g4Ni9pcnEuYwppbmRleCAxMjI4NTY4Li43OGU0MjYzIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvaXJxLmMKKysrIGIveGVuL2FyY2gveDg2L2lycS5jCkBAIC0xOTYwLDcgKzE5NjAsNyBA QCBpbnQgbWFwX2RvbWFpbl9waXJxKAogICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldjsKICAg ICAgICAgdW5zaWduZWQgaW50IG5yID0gMDsKIAotICAgICAgICBBU1NFUlQoc3Bpbl9pc19sb2Nr ZWQoJnBjaWRldnNfbG9jaykpOworICAgICAgICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7 CiAKICAgICAgICAgcmV0ID0gLUVOT0RFVjsKICAgICAgICAgaWYgKCAhY3B1X2hhc19hcGljICkK QEAgLTIxMDUsNyArMjEwNSw3IEBAIGludCB1bm1hcF9kb21haW5fcGlycShzdHJ1Y3QgZG9tYWlu ICpkLCBpbnQgcGlycSkKICAgICBpZiAoIChwaXJxIDwgMCkgfHwgKHBpcnEgPj0gZC0+bnJfcGly cXMpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2Nr ZWQoJnBjaWRldnNfbG9jaykpOworICAgIEFTU0VSVChwY2lkZXZzX2lzX2xvY2tlZCgpKTsKICAg ICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmQtPmV2ZW50X2xvY2spKTsKIAogICAgIGluZm8gPSBw aXJxX2luZm8oZCwgcGlycSk7CkBAIC0yMjMxLDcgKzIyMzEsNyBAQCB2b2lkIGZyZWVfZG9tYWlu X3BpcnFzKHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgaW50IGk7CiAKLSAgICBzcGluX2xvY2so JnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgc3Bpbl9sb2NrKCZkLT5l dmVudF9sb2NrKTsKIAogICAgIGZvciAoIGkgPSAwOyBpIDwgZC0+bnJfcGlycXM7IGkrKyApCkBA IC0yMjM5LDcgKzIyMzksNyBAQCB2b2lkIGZyZWVfZG9tYWluX3BpcnFzKHN0cnVjdCBkb21haW4g KmQpCiAgICAgICAgICAgICB1bm1hcF9kb21haW5fcGlycShkLCBpKTsKIAogICAgIHNwaW5fdW5s b2NrKCZkLT5ldmVudF9sb2NrKTsKLSAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAg ICBwY2lkZXZzX3VubG9jaygpOwogfQogCiBzdGF0aWMgdm9pZCBkdW1wX2lycXModW5zaWduZWQg Y2hhciBrZXkpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbXNpLmMgYi94ZW4vYXJjaC94ODYv bXNpLmMKaW5kZXggNWE0ODFmNi4uYTYwMThhMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21z aS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tc2kuYwpAQCAtNjk0LDcgKzY5NCw3IEBAIHN0YXRpYyBp bnQgbXNpX2NhcGFiaWxpdHlfaW5pdChzdHJ1Y3QgcGNpX2RldiAqZGV2LAogICAgIHU4IHNsb3Qg PSBQQ0lfU0xPVChkZXYtPmRldmZuKTsKICAgICB1OCBmdW5jID0gUENJX0ZVTkMoZGV2LT5kZXZm bik7CiAKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykpOworICAgIEFT U0VSVChwY2lkZXZzX2lzX2xvY2tlZCgpKTsKICAgICBwb3MgPSBwY2lfZmluZF9jYXBfb2Zmc2V0 KHNlZywgYnVzLCBzbG90LCBmdW5jLCBQQ0lfQ0FQX0lEX01TSSk7CiAgICAgaWYgKCAhcG9zICkK ICAgICAgICAgcmV0dXJuIC1FTk9ERVY7CkBAIC04NTIsNyArODUyLDcgQEAgc3RhdGljIGludCBt c2l4X2NhcGFiaWxpdHlfaW5pdChzdHJ1Y3QgcGNpX2RldiAqZGV2LAogICAgIHU4IGZ1bmMgPSBQ Q0lfRlVOQyhkZXYtPmRldmZuKTsKICAgICBib29sX3QgbWFza2FsbCA9IG1zaXgtPmhvc3RfbWFz a2FsbDsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CisgICAg QVNTRVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogCiAgICAgY29udHJvbCA9IHBjaV9jb25mX3Jl YWQxNihzZWcsIGJ1cywgc2xvdCwgZnVuYywgbXNpeF9jb250cm9sX3JlZyhwb3MpKTsKICAgICAv KgpAQCAtMTA0Miw3ICsxMDQyLDcgQEAgc3RhdGljIGludCBfX3BjaV9lbmFibGVfbXNpKHN0cnVj dCBtc2lfaW5mbyAqbXNpLCBzdHJ1Y3QgbXNpX2Rlc2MgKipkZXNjKQogICAgIHN0cnVjdCBwY2lf ZGV2ICpwZGV2OwogICAgIHN0cnVjdCBtc2lfZGVzYyAqb2xkX2Rlc2M7CiAKLSAgICBBU1NFUlQo c3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykpOworICAgIEFTU0VSVChwY2lkZXZzX2lzX2xv Y2tlZCgpKTsKICAgICBwZGV2ID0gcGNpX2dldF9wZGV2KG1zaS0+c2VnLCBtc2ktPmJ1cywgbXNp LT5kZXZmbik7CiAgICAgaWYgKCAhcGRldiApCiAgICAgICAgIHJldHVybiAtRU5PREVWOwpAQCAt MTEwMyw3ICsxMTAzLDcgQEAgc3RhdGljIGludCBfX3BjaV9lbmFibGVfbXNpeChzdHJ1Y3QgbXNp X2luZm8gKm1zaSwgc3RydWN0IG1zaV9kZXNjICoqZGVzYykKICAgICB1OCBmdW5jID0gUENJX0ZV TkMobXNpLT5kZXZmbik7CiAgICAgc3RydWN0IG1zaV9kZXNjICpvbGRfZGVzYzsKIAotICAgIEFT U0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRldnNf aXNfbG9ja2VkKCkpOwogICAgIHBkZXYgPSBwY2lfZ2V0X3BkZXYobXNpLT5zZWcsIG1zaS0+YnVz LCBtc2ktPmRldmZuKTsKICAgICBwb3MgPSBwY2lfZmluZF9jYXBfb2Zmc2V0KG1zaS0+c2VnLCBt c2ktPmJ1cywgc2xvdCwgZnVuYywgUENJX0NBUF9JRF9NU0lYKTsKICAgICBpZiAoICFwZGV2IHx8 ICFwb3MgKQpAQCAtMTIwNSw3ICsxMjA1LDcgQEAgaW50IHBjaV9wcmVwYXJlX21zaXgodTE2IHNl ZywgdTggYnVzLCB1OCBkZXZmbiwgYm9vbF90IG9mZikKICAgICBpZiAoICFwb3MgKQogICAgICAg ICByZXR1cm4gLUVOT0RFVjsKIAotICAgIHNwaW5fbG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBw Y2lkZXZzX2xvY2soKTsKICAgICBwZGV2ID0gcGNpX2dldF9wZGV2KHNlZywgYnVzLCBkZXZmbik7 CiAgICAgaWYgKCAhcGRldiApCiAgICAgICAgIHJjID0gLUVOT0RFVjsKQEAgLTEyMjQsNyArMTIy NCw3IEBAIGludCBwY2lfcHJlcGFyZV9tc2l4KHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4sIGJv b2xfdCBvZmYpCiAgICAgICAgIHJjID0gbXNpeF9jYXBhYmlsaXR5X2luaXQocGRldiwgcG9zLCBO VUxMLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpX21zaXhf Y2FwYWJsZShjb250cm9sKSk7CiAgICAgfQotICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xvY2sp OworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAKICAgICByZXR1cm4gcmM7CiB9CkBAIC0xMjM1LDcg KzEyMzUsNyBAQCBpbnQgcGNpX3ByZXBhcmVfbXNpeCh1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZu LCBib29sX3Qgb2ZmKQogICovCiBpbnQgcGNpX2VuYWJsZV9tc2koc3RydWN0IG1zaV9pbmZvICpt c2ksIHN0cnVjdCBtc2lfZGVzYyAqKmRlc2MpCiB7Ci0gICAgQVNTRVJUKHNwaW5faXNfbG9ja2Vk KCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7CiAKICAg ICBpZiAoICF1c2VfbXNpICkKICAgICAgICAgcmV0dXJuIC1FUEVSTTsKQEAgLTEzNTEsNyArMTM1 MSw3IEBAIGludCBwY2lfcmVzdG9yZV9tc2lfc3RhdGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAg ICAgdW5zaWduZWQgaW50IHR5cGUgPSAwLCBwb3MgPSAwOwogICAgIHUxNiBjb250cm9sID0gMDsK IAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJU KHBjaWRldnNfaXNfbG9ja2VkKCkpOwogCiAgICAgaWYgKCAhdXNlX21zaSApCiAgICAgICAgIHJl dHVybiAtRU9QTk9UU1VQUDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wY2kuYyBiL3hlbi9h cmNoL3g4Ni9wY2kuYwppbmRleCA0Yjg3Y2FiLi5hOWRlY2Q0IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvcGNpLmMKKysrIGIveGVuL2FyY2gveDg2L3BjaS5jCkBAIC04OCwxMyArODgsMTMgQEAg aW50IHBjaV9jb25mX3dyaXRlX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgc2VnLCB1bnNpZ25lZCBp bnQgYmRmLAogICAgIGlmICggcmVnIDwgNjQgfHwgcmVnID49IDI1NiApCiAgICAgICAgIHJldHVy biAwOwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfbG9jaygp OwogCiAgICAgcGRldiA9IHBjaV9nZXRfcGRldihzZWcsIFBDSV9CVVMoYmRmKSwgUENJX0RFVkZO MihiZGYpKTsKICAgICBpZiAoIHBkZXYgKQogICAgICAgICByYyA9IHBjaV9tc2lfY29uZl93cml0 ZV9pbnRlcmNlcHQocGRldiwgcmVnLCBzaXplLCBkYXRhKTsKIAotICAgIHNwaW5fdW5sb2NrKCZw Y2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAKICAgICByZXR1cm4gcmM7CiB9 CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcGh5c2Rldi5jIGIveGVuL2FyY2gveDg2L3BoeXNk ZXYuYwppbmRleCA1N2I3ODAwLi4xY2I5YjU4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcGh5 c2Rldi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMKQEAgLTE2Nyw3ICsxNjcsNyBAQCBp bnQgcGh5c2Rldl9tYXBfcGlycShkb21pZF90IGRvbWlkLCBpbnQgdHlwZSwgaW50ICppbmRleCwg aW50ICpwaXJxX3AsCiAgICAgICAgIGdvdG8gZnJlZV9kb21haW47CiAgICAgfQogCi0gICAgc3Bp bl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfbG9jaygpOwogICAgIC8qIFZlcmlm eSBvciBnZXQgcGlycS4gKi8KICAgICBzcGluX2xvY2soJmQtPmV2ZW50X2xvY2spOwogICAgIHBp cnEgPSBkb21haW5faXJxX3RvX3BpcnEoZCwgaXJxKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBpbnQg cGh5c2Rldl9tYXBfcGlycShkb21pZF90IGRvbWlkLCBpbnQgdHlwZSwgaW50ICppbmRleCwgaW50 ICpwaXJxX3AsCiAKICBkb25lOgogICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKLSAg ICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX3VubG9jaygpOwogICAg IGlmICggcmV0ICE9IDAgKQogICAgICAgICBzd2l0Y2ggKCB0eXBlICkKICAgICAgICAgewpAQCAt Mjc1LDExICsyNzUsMTEgQEAgaW50IHBoeXNkZXZfdW5tYXBfcGlycShkb21pZF90IGRvbWlkLCBp bnQgcGlycSkKICAgICAgICAgICAgIGdvdG8gZnJlZV9kb21haW47CiAgICAgfQogCi0gICAgc3Bp bl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfbG9jaygpOwogICAgIHNwaW5fbG9j aygmZC0+ZXZlbnRfbG9jayk7CiAgICAgcmV0ID0gdW5tYXBfZG9tYWluX3BpcnEoZCwgcGlycSk7 CiAgICAgc3Bpbl91bmxvY2soJmQtPmV2ZW50X2xvY2spOwotICAgIHNwaW5fdW5sb2NrKCZwY2lk ZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAKICBmcmVlX2RvbWFpbjoKICAgICBy Y3VfdW5sb2NrX2RvbWFpbihkKTsKQEAgLTY4OSwxMCArNjg5LDEwIEBAIHJldF90IGRvX3BoeXNk ZXZfb3AoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgICAg IGlmICggY29weV9mcm9tX2d1ZXN0KCZyZXN0b3JlX21zaSwgYXJnLCAxKSAhPSAwICkKICAgICAg ICAgICAgIGJyZWFrOwogCi0gICAgICAgIHNwaW5fbG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICAg ICAgcGNpZGV2c19sb2NrKCk7CiAgICAgICAgIHBkZXYgPSBwY2lfZ2V0X3BkZXYoMCwgcmVzdG9y ZV9tc2kuYnVzLCByZXN0b3JlX21zaS5kZXZmbik7CiAgICAgICAgIHJldCA9IHBkZXYgPyBwY2lf cmVzdG9yZV9tc2lfc3RhdGUocGRldikgOiAtRU5PREVWOwotICAgICAgICBzcGluX3VubG9jaygm cGNpZGV2c19sb2NrKTsKKyAgICAgICAgcGNpZGV2c191bmxvY2soKTsKICAgICAgICAgYnJlYWs7 CiAgICAgfQogCkBAIC03MDQsMTAgKzcwNCwxMCBAQCByZXRfdCBkb19waHlzZGV2X29wKGludCBj bWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQogICAgICAgICBpZiAoIGNvcHlf ZnJvbV9ndWVzdCgmZGV2LCBhcmcsIDEpICE9IDAgKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg ICAgICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICBwY2lkZXZzX2xvY2soKTsK ICAgICAgICAgcGRldiA9IHBjaV9nZXRfcGRldihkZXYuc2VnLCBkZXYuYnVzLCBkZXYuZGV2Zm4p OwogICAgICAgICByZXQgPSBwZGV2ID8gcGNpX3Jlc3RvcmVfbXNpX3N0YXRlKHBkZXYpIDogLUVO T0RFVjsKLSAgICAgICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgICAgIHBjaWRl dnNfdW5sb2NrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9zeXNjdGwuYyBiL3hlbi9jb21tb24vc3lzY3RsLmMKaW5kZXggNTgxNjJmNS4uMjUzYjdj OCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zeXNjdGwuYworKysgYi94ZW4vY29tbW9uL3N5c2N0 bC5jCkBAIC00MjYsNyArNDI2LDcgQEAgbG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICAgfQogCi0gICAgICAgICAgICBzcGluX2xvY2soJnBjaWRldnNfbG9jayk7CisgICAg ICAgICAgICBwY2lkZXZzX2xvY2soKTsKICAgICAgICAgICAgIHBkZXYgPSBwY2lfZ2V0X3BkZXYo ZGV2LnNlZywgZGV2LmJ1cywgZGV2LmRldmZuKTsKICAgICAgICAgICAgIGlmICggIXBkZXYgKQog ICAgICAgICAgICAgICAgIG5vZGUgPSBYRU5fSU5WQUxJRF9ERVY7CkBAIC00MzQsNyArNDM0LDcg QEAgbG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fc3lzY3RsX3QpIHVf c3lzY3RsKQogICAgICAgICAgICAgICAgIG5vZGUgPSBYRU5fSU5WQUxJRF9OT0RFX0lEOwogICAg ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG5vZGUgPSBwZGV2LT5ub2RlOwotICAgICAg ICAgICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgICAgICAgICBwY2lkZXZzX3Vu bG9jaygpOwogCiAgICAgICAgICAgICBpZiAoIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KHRpLT5ub2Rl cywgaSwgJm5vZGUsIDEpICkKICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h bWQvaW9tbXVfaW5pdC5jCmluZGV4IGE0MDA0OTcuLjQ1MzYxMDYgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbml0LmMKKysrIGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYW1kL2lvbW11X2luaXQuYwpAQCAtNjczLDkgKzY3Myw5IEBAIHZvaWQgcGFyc2Vf cHByX2xvZ19lbnRyeShzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSwgdTMyIGVudHJ5W10pCiAgICAg YnVzID0gUENJX0JVUyhkZXZpY2VfaWQpOwogICAgIGRldmZuID0gUENJX0RFVkZOMihkZXZpY2Vf aWQpOwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfbG9jaygp OwogICAgIHBkZXYgPSBwY2lfZ2V0X3JlYWxfcGRldihpb21tdS0+c2VnLCBidXMsIGRldmZuKTsK LSAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX3VubG9jaygpOwog CiAgICAgaWYgKCBwZGV2ICkKICAgICAgICAgZ3Vlc3RfaW9tbXVfYWRkX3Bwcl9sb2cocGRldi0+ ZG9tYWluLCBlbnRyeSk7CkBAIC03ODcsMTAgKzc4NywxMCBAQCBzdGF0aWMgYm9vbF90IF9faW5p dCBzZXRfaW9tbXVfaW50ZXJydXB0X2hhbmRsZXIoc3RydWN0IGFtZF9pb21tdSAqaW9tbXUpCiAg ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHNwaW5fbG9jaygmcGNpZGV2c19sb2NrKTsK KyAgICBwY2lkZXZzX2xvY2soKTsKICAgICBpb21tdS0+bXNpLmRldiA9IHBjaV9nZXRfcGRldihp b21tdS0+c2VnLCBQQ0lfQlVTKGlvbW11LT5iZGYpLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBDSV9ERVZGTjIoaW9tbXUtPmJkZikpOwotICAgIHNwaW5fdW5sb2NrKCZwY2lk ZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAgICAgaWYgKCAhaW9tbXUtPm1zaS5k ZXYgKQogICAgIHsKICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJT01NVTogbm8gcGRldiBmb3Ig JTA0eDolMDJ4OiUwMnguJXVcbiIsCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hbWQvaW9tbXVfbWFwLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFw LmMKaW5kZXggNzg4NjJjOS4uOWQ5MWRmYyAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvYW1kL2lvbW11X21hcC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9p b21tdV9tYXAuYwpAQCAtNTkzLDcgKzU5Myw3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19t b2RlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgICAgICBoZC0+YXJj aC5wYWdpbmdfbW9kZSA9IGxldmVsOwogICAgICAgICBoZC0+YXJjaC5yb290X3RhYmxlID0gbmV3 X3Jvb3Q7CiAKLSAgICAgICAgaWYgKCAhc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykgKQor ICAgICAgICBpZiAoICFwY2lkZXZzX2lzX2xvY2tlZCgpICkKICAgICAgICAgICAgIEFNRF9JT01N VV9ERUJVRygiJXMgVHJ5IHRvIGFjY2VzcyBwZGV2X2xpc3QgIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ3aXRob3V0IGFxdWlyaW5nIHBjaWRldnNfbG9jay5cbiIsIF9fZnVuY19fKTsK IApkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9hbWRfaW9tbXUu YyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKaW5kZXggYzFj MGI2Yi4uZGMzYmZhYiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3Bj aV9hbWRfaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9p b21tdS5jCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIHZvaWQgYW1kX2lvbW11X3NldHVwX2Rv bWFpbl9kZXZpY2UoCiAKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb21tdS0+bG9jaywg ZmxhZ3MpOwogCi0gICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwY2lkZXZzX2xvY2spKTsKKyAg ICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7CiAKICAgICBpZiAoIHBjaV9hdHNfZGV2aWNl KGlvbW11LT5zZWcsIGJ1cywgcGRldi0+ZGV2Zm4pICYmCiAgICAgICAgICAhcGNpX2F0c19lbmFi bGVkKGlvbW11LT5zZWcsIGJ1cywgcGRldi0+ZGV2Zm4pICkKQEAgLTM0NSw3ICszNDUsNyBAQCB2 b2lkIGFtZF9pb21tdV9kaXNhYmxlX2RvbWFpbl9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZG9tYWlu LAogICAgIH0KICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb21tdS0+bG9jaywgZmxhZ3Mp OwogCi0gICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NF UlQocGNpZGV2c19pc19sb2NrZWQoKSk7CiAKICAgICBpZiAoIGRldmZuID09IHBkZXYtPmRldmZu ICYmCiAgICAgICAgICBwY2lfYXRzX2RldmljZShpb21tdS0+c2VnLCBidXMsIGRldmZuKSAmJgpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMgYi94ZW4vZHJpdmVycy9w YXNzdGhyb3VnaC9wY2kuYwppbmRleCA2MmIzMTFiLi5lMDlmN2QxIDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9w Y2kuYwpAQCAtNDgsNyArNDgsNyBAQCBzdHJ1Y3QgcGNpX3NlZyB7CiAgICAgfSBidXMyYnJpZGdl W01BWF9CVVNFU107CiB9OwogCi1zcGlubG9ja190IHBjaWRldnNfbG9jayA9IFNQSU5fTE9DS19V TkxPQ0tFRDsKK3N0YXRpYyBzcGlubG9ja190IF9wY2lkZXZzX2xvY2sgPSBTUElOX0xPQ0tfVU5M T0NLRUQ7CiBzdGF0aWMgc3RydWN0IHJhZGl4X3RyZWVfcm9vdCBwY2lfc2VnbWVudHM7CiAKIHN0 YXRpYyBpbmxpbmUgc3RydWN0IHBjaV9zZWcgKmdldF9wc2VnKHUxNiBzZWcpCkBAIC0xMDMsNiAr MTAzLDI2IEBAIHN0YXRpYyBpbnQgcGNpX3NlZ21lbnRzX2l0ZXJhdGUoCiAgICAgcmV0dXJuIHJj OwogfQogCit2b2lkIHBjaWRldnNfbG9jayh2b2lkKQoreworICAgIHNwaW5fbG9ja19yZWN1cnNp dmUoJl9wY2lkZXZzX2xvY2spOworfQorCit2b2lkIHBjaWRldnNfdW5sb2NrKHZvaWQpCit7Cisg ICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZfcGNpZGV2c19sb2NrKTsKK30KKworaW50IHBjaWRl dnNfaXNfbG9ja2VkKHZvaWQpCit7CisgICAgcmV0dXJuIHNwaW5faXNfbG9ja2VkKCZfcGNpZGV2 c19sb2NrKTsKK30KKworaW50IHBjaWRldnNfdHJ5bG9jayh2b2lkKQoreworICAgIHJldHVybiBz cGluX3RyeWxvY2tfcmVjdXJzaXZlKCZfcGNpZGV2c19sb2NrKTsKK30KKwogdm9pZCBfX2luaXQg cHRfcGNpX2luaXQodm9pZCkKIHsKICAgICByYWRpeF90cmVlX2luaXQoJnBjaV9zZWdtZW50cyk7 CkBAIC00MTIsMTQgKzQzMiwxNCBAQCBpbnQgX19pbml0IHBjaV9oaWRlX2RldmljZShpbnQgYnVz LCBpbnQgZGV2Zm4pCiAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXY7CiAgICAgaW50IHJjID0gLUVO T01FTTsKIAotICAgIHNwaW5fbG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX2xvY2so KTsKICAgICBwZGV2ID0gYWxsb2NfcGRldihnZXRfcHNlZygwKSwgYnVzLCBkZXZmbik7CiAgICAg aWYgKCBwZGV2ICkKICAgICB7CiAgICAgICAgIF9wY2lfaGlkZV9kZXZpY2UocGRldik7CiAgICAg ICAgIHJjID0gMDsKICAgICB9Ci0gICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAg cGNpZGV2c191bmxvY2soKTsKIAogICAgIHJldHVybiByYzsKIH0KQEAgLTQ1Niw3ICs0NzYsNyBA QCBzdHJ1Y3QgcGNpX2RldiAqcGNpX2dldF9wZGV2KGludCBzZWcsIGludCBidXMsIGludCBkZXZm bikKICAgICBzdHJ1Y3QgcGNpX3NlZyAqcHNlZyA9IGdldF9wc2VnKHNlZyk7CiAgICAgc3RydWN0 IHBjaV9kZXYgKnBkZXYgPSBOVUxMOwogCi0gICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwY2lk ZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7CiAgICAgQVNTRVJU KHNlZyAhPSAtMSB8fCBidXMgPT0gLTEpOwogICAgIEFTU0VSVChidXMgIT0gLTEgfHwgZGV2Zm4g PT0gLTEpOwogCkBAIC01ODEsOSArNjAxLDkgQEAgaW50IHBjaV9hZGRfZGV2aWNlKHUxNiBzZWcs IHU4IGJ1cywgdTggZGV2Zm4sCiAgICAgICAgIHBkZXZfdHlwZSA9ICJleHRlbmRlZCBmdW5jdGlv biI7CiAgICAgZWxzZSBpZiAoaW5mby0+aXNfdmlydGZuKQogICAgIHsKLSAgICAgICAgc3Bpbl9s b2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICBwY2lkZXZzX2xvY2soKTsKICAgICAgICAgcGRl diA9IHBjaV9nZXRfcGRldihzZWcsIGluZm8tPnBoeXNmbi5idXMsIGluZm8tPnBoeXNmbi5kZXZm bik7Ci0gICAgICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICBwY2lkZXZz X3VubG9jaygpOwogICAgICAgICBpZiAoICFwZGV2ICkKICAgICAgICAgICAgIHBjaV9hZGRfZGV2 aWNlKHNlZywgaW5mby0+cGh5c2ZuLmJ1cywgaW5mby0+cGh5c2ZuLmRldmZuLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwgbm9kZSk7CkBAIC02MDEsNyArNjIxLDcgQEAgaW50IHBj aV9hZGRfZGV2aWNlKHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4sCiAKICAgICByZXQgPSAtRU5P TUVNOwogCi0gICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfbG9jaygp OwogICAgIHBzZWcgPSBhbGxvY19wc2VnKHNlZyk7CiAgICAgaWYgKCAhcHNlZyApCiAgICAgICAg IGdvdG8gb3V0OwpAQCAtNzAzLDcgKzcyMyw3IEBAIGludCBwY2lfYWRkX2RldmljZSh1MTYgc2Vn LCB1OCBidXMsIHU4IGRldmZuLAogICAgIHBjaV9lbmFibGVfYWNzKHBkZXYpOwogCiBvdXQ6Ci0g ICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c191bmxvY2soKTsKICAg ICBpZiAoICFyZXQgKQogICAgIHsKICAgICAgICAgcHJpbnRrKFhFTkxPR19ERUJVRyAiUENJIGFk ZCAlcyAlMDR4OiUwMng6JTAyeC4ldVxuIiwgcGRldl90eXBlLApAQCAtNzM1LDcgKzc1NSw3IEBA IGludCBwY2lfcmVtb3ZlX2RldmljZSh1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuKQogICAgIGlm ICggIXBzZWcgKQogICAgICAgICByZXR1cm4gLUVOT0RFVjsKIAotICAgIHNwaW5fbG9jaygmcGNp ZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX2xvY2soKTsKICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 ICggcGRldiwgJnBzZWctPmFsbGRldnNfbGlzdCwgYWxsZGV2c19saXN0ICkKICAgICAgICAgaWYg KCBwZGV2LT5idXMgPT0gYnVzICYmIHBkZXYtPmRldmZuID09IGRldmZuICkKICAgICAgICAgewpA QCAtNzQ5LDcgKzc2OSw3IEBAIGludCBwY2lfcmVtb3ZlX2RldmljZSh1MTYgc2VnLCB1OCBidXMs IHU4IGRldmZuKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgIHNwaW5fdW5s b2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBjaWRldnNfdW5sb2NrKCk7CiAgICAgcmV0dXJuIHJl dDsKIH0KIApAQCAtODA3LDExICs4MjcsMTEgQEAgaW50IHBjaV9yZWxlYXNlX2RldmljZXMoc3Ry dWN0IGRvbWFpbiAqZCkKICAgICB1OCBidXMsIGRldmZuOwogICAgIGludCByZXQ7CiAKLSAgICBz cGluX2xvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgcmV0ID0g cGNpX2NsZWFuX2RwY2lfaXJxcyhkKTsKICAgICBpZiAoIHJldCApCiAgICAgewotICAgICAgICBz cGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICAgICAgcGNpZGV2c191bmxvY2soKTsKICAg ICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgd2hpbGUgKCAocGRldiA9IHBjaV9nZXRfcGRl dl9ieV9kb21haW4oZCwgLTEsIC0xLCAtMSkpICkKQEAgLTgyMyw3ICs4NDMsNyBAQCBpbnQgcGNp X3JlbGVhc2VfZGV2aWNlcyhzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICAgICAgIGQt PmRvbWFpbl9pZCwgcGRldi0+c2VnLCBidXMsCiAgICAgICAgICAgICAgICAgICAgUENJX1NMT1Qo ZGV2Zm4pLCBQQ0lfRlVOQyhkZXZmbikpOwogICAgIH0KLSAgICBzcGluX3VubG9jaygmcGNpZGV2 c19sb2NrKTsKKyAgICBwY2lkZXZzX3VubG9jaygpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC05 MjAsNyArOTQwLDcgQEAgdm9pZCBwY2lfY2hlY2tfZGlzYWJsZV9kZXZpY2UodTE2IHNlZywgdTgg YnVzLCB1OCBkZXZmbikKICAgICBzX3RpbWVfdCBub3cgPSBOT1coKTsKICAgICB1MTYgY3dvcmQ7 CiAKLSAgICBzcGluX2xvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c19sb2NrKCk7CiAg ICAgcGRldiA9IHBjaV9nZXRfcmVhbF9wZGV2KHNlZywgYnVzLCBkZXZmbik7CiAgICAgaWYgKCBw ZGV2ICkKICAgICB7CkBAIC05MzEsNyArOTUxLDcgQEAgdm9pZCBwY2lfY2hlY2tfZGlzYWJsZV9k ZXZpY2UodTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbikKICAgICAgICAgaWYgKCArK3BkZXYtPmZh dWx0LmNvdW50IDwgUFRfRkFVTFRfVEhSRVNIT0xEICkKICAgICAgICAgICAgIHBkZXYgPSBOVUxM OwogICAgIH0KLSAgICBzcGluX3VubG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX3Vu bG9jaygpOwogCiAgICAgaWYgKCAhcGRldiApCiAgICAgICAgIHJldHVybjsKQEAgLTk4OCw5ICsx MDA4LDkgQEAgaW50IF9faW5pdCBzY2FuX3BjaV9kZXZpY2VzKHZvaWQpCiB7CiAgICAgaW50IHJl dDsKIAotICAgIHNwaW5fbG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX2xvY2soKTsK ICAgICByZXQgPSBwY2lfc2VnbWVudHNfaXRlcmF0ZShfc2Nhbl9wY2lfZGV2aWNlcywgTlVMTCk7 Ci0gICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c191bmxvY2soKTsK IAogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xMDU0LDE3ICsxMDc0LDE3IEBAIHN0YXRpYyBpbnQg X19od2RvbV9pbml0IF9zZXR1cF9od2RvbV9wY2lfZGV2aWNlcyhzdHJ1Y3QgcGNpX3NlZyAqcHNl Zywgdm9pZCAqYXJnCiAKICAgICAgICAgICAgIGlmICggaW9tbXVfdmVyYm9zZSApCiAgICAgICAg ICAgICB7Ci0gICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAg ICAgICAgICAgICAgcGNpZGV2c191bmxvY2soKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzX3Bl bmRpbmdfc29mdGlycXMoKTsKLSAgICAgICAgICAgICAgICBzcGluX2xvY2soJnBjaWRldnNfbG9j ayk7CisgICAgICAgICAgICAgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgICAgICAgICB9CiAgICAg ICAgIH0KIAogICAgICAgICBpZiAoICFpb21tdV92ZXJib3NlICkKICAgICAgICAgewotICAgICAg ICAgICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgICAgICAgICBwY2lkZXZzX3Vu bG9jaygpOwogICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7Ci0gICAgICAg ICAgICBzcGluX2xvY2soJnBjaWRldnNfbG9jayk7CisgICAgICAgICAgICBwY2lkZXZzX2xvY2so KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTA3Niw5ICsxMDk2LDkgQEAgdm9pZCBfX2h3ZG9t X2luaXQgc2V0dXBfaHdkb21fcGNpX2RldmljZXMoCiB7CiAgICAgc3RydWN0IHNldHVwX2h3ZG9t IGN0eHQgPSB7IC5kID0gZCwgLmhhbmRsZXIgPSBoYW5kbGVyIH07CiAKLSAgICBzcGluX2xvY2so JnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgcGNpX3NlZ21lbnRzX2l0 ZXJhdGUoX3NldHVwX2h3ZG9tX3BjaV9kZXZpY2VzLCAmY3R4dCk7Ci0gICAgc3Bpbl91bmxvY2so JnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c191bmxvY2soKTsKIH0KIAogI2lmZGVmIENPTkZJ R19BQ1BJCkBAIC0xMjA2LDkgKzEyMjYsOSBAQCBzdGF0aWMgaW50IF9kdW1wX3BjaV9kZXZpY2Vz KHN0cnVjdCBwY2lfc2VnICpwc2VnLCB2b2lkICphcmcpCiBzdGF0aWMgdm9pZCBkdW1wX3BjaV9k ZXZpY2VzKHVuc2lnbmVkIGNoYXIgY2gpCiB7CiAgICAgcHJpbnRrKCI9PT09IFBDSSBkZXZpY2Vz ID09PT1cbiIpOwotICAgIHNwaW5fbG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX2xv Y2soKTsKICAgICBwY2lfc2VnbWVudHNfaXRlcmF0ZShfZHVtcF9wY2lfZGV2aWNlcywgTlVMTCk7 Ci0gICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c191bmxvY2soKTsK IH0KIAogc3RhdGljIGludCBfX2luaXQgc2V0dXBfZHVtcF9wY2lkZXZzKHZvaWQpCkBAIC0xMjQy LDcgKzEyNjIsNyBAQCBpbnQgaW9tbXVfYWRkX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldikK ICAgICBpZiAoICFwZGV2LT5kb21haW4gKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAg IEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRl dnNfaXNfbG9ja2VkKCkpOwogCiAgICAgaGQgPSBkb21haW5faHZtX2lvbW11KHBkZXYtPmRvbWFp bik7CiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29wcyApCkBAIC0x MjcxLDcgKzEyOTEsNyBAQCBpbnQgaW9tbXVfZW5hYmxlX2RldmljZShzdHJ1Y3QgcGNpX2RldiAq cGRldikKICAgICBpZiAoICFwZGV2LT5kb21haW4gKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsK IAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJU KHBjaWRldnNfaXNfbG9ja2VkKCkpOwogCiAgICAgaGQgPSBkb21haW5faHZtX2lvbW11KHBkZXYt PmRvbWFpbik7CiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29wcyB8 fApAQCAtMTMyMCw5ICsxMzQwLDkgQEAgc3RhdGljIGludCBkZXZpY2VfYXNzaWduZWQodTE2IHNl ZywgdTggYnVzLCB1OCBkZXZmbikKIHsKICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldjsKIAotICAg IHNwaW5fbG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX2xvY2soKTsKICAgICBwZGV2 ID0gcGNpX2dldF9wZGV2X2J5X2RvbWFpbihoYXJkd2FyZV9kb21haW4sIHNlZywgYnVzLCBkZXZm bik7Ci0gICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c191bmxvY2so KTsKIAogICAgIHJldHVybiBwZGV2ID8gMCA6IC1FQlVTWTsKIH0KQEAgLTEzNDQsMTMgKzEzNjQs MTMgQEAgc3RhdGljIGludCBhc3NpZ25fZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsIHUxNiBzZWcs IHU4IGJ1cywgdTggZGV2Zm4sIHUzMiBmbGFnKQogICAgICAgICAgICAgIHAybV9nZXRfaG9zdHAy bShkKS0+Z2xvYmFsX2xvZ2RpcnR5KSkgKQogICAgICAgICByZXR1cm4gLUVYREVWOwogCi0gICAg aWYgKCAhc3Bpbl90cnlsb2NrKCZwY2lkZXZzX2xvY2spICkKKyAgICBpZiAoICFwY2lkZXZzX3Ry eWxvY2soKSApCiAgICAgICAgIHJldHVybiAtRVJFU1RBUlQ7CiAKICAgICByYyA9IGlvbW11X2Nv bnN0cnVjdChkKTsKICAgICBpZiAoIHJjICkKICAgICB7Ci0gICAgICAgIHNwaW5fdW5sb2NrKCZw Y2lkZXZzX2xvY2spOworICAgICAgICBwY2lkZXZzX3VubG9jaygpOwogICAgICAgICByZXR1cm4g cmM7CiAgICAgfQogCkBAIC0xMzgxLDcgKzE0MDEsNyBAQCBzdGF0aWMgaW50IGFzc2lnbl9kZXZp Y2Uoc3RydWN0IGRvbWFpbiAqZCwgdTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbiwgdTMyIGZsYWcp CiAgZG9uZToKICAgICBpZiAoICFoYXNfYXJjaF9wZGV2cyhkKSAmJiBuZWVkX2lvbW11KGQpICkK ICAgICAgICAgaW9tbXVfdGVhcmRvd24oZCk7Ci0gICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9j ayk7CisgICAgcGNpZGV2c191bmxvY2soKTsKIAogICAgIHJldHVybiByYzsKIH0KQEAgLTEzOTYs NyArMTQxNiw3IEBAIGludCBkZWFzc2lnbl9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgdTE2IHNl ZywgdTggYnVzLCB1OCBkZXZmbikKICAgICBpZiAoICFpb21tdV9lbmFibGVkIHx8ICFoZC0+cGxh dGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICBBU1NFUlQoc3Bpbl9p c19sb2NrZWQoJnBjaWRldnNfbG9jaykpOworICAgIEFTU0VSVChwY2lkZXZzX2lzX2xvY2tlZCgp KTsKICAgICBwZGV2ID0gcGNpX2dldF9wZGV2X2J5X2RvbWFpbihkLCBzZWcsIGJ1cywgZGV2Zm4p OwogICAgIGlmICggIXBkZXYgKQogICAgICAgICByZXR1cm4gLUVOT0RFVjsKQEAgLTE0NTEsNyAr MTQ3MSw3IEBAIHN0YXRpYyBpbnQgaW9tbXVfZ2V0X2RldmljZV9ncm91cCgKIAogICAgIGdyb3Vw X2lkID0gb3BzLT5nZXRfZGV2aWNlX2dyb3VwX2lkKHNlZywgYnVzLCBkZXZmbik7CiAKLSAgICBz cGluX2xvY2soJnBjaWRldnNfbG9jayk7CisgICAgcGNpZGV2c19sb2NrKCk7CiAgICAgZm9yX2Vh Y2hfcGRldiggZCwgcGRldiApCiAgICAgewogICAgICAgICBpZiAoIChwZGV2LT5zZWcgIT0gc2Vn KSB8fApAQCAtMTQ3MCwxNCArMTQ5MCwxNCBAQCBzdGF0aWMgaW50IGlvbW11X2dldF9kZXZpY2Vf Z3JvdXAoCiAKICAgICAgICAgICAgIGlmICggdW5saWtlbHkoY29weV90b19ndWVzdF9vZmZzZXQo YnVmLCBpLCAmYmRmLCAxKSkgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNwaW5f dW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICAgICAgICAgIHBjaWRldnNfdW5sb2NrKCk7 CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg aSsrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgc3Bpbl91bmxvY2soJnBjaWRldnNfbG9jayk7 CisgICAgcGNpZGV2c191bmxvY2soKTsKIAogICAgIHJldHVybiBpOwogfQpAQCAtMTYwNSw5ICsx NjI1LDkgQEAgaW50IGlvbW11X2RvX3BjaV9kb21jdGwoCiAgICAgICAgIGJ1cyA9IFBDSV9CVVMo bWFjaGluZV9zYmRmKTsKICAgICAgICAgZGV2Zm4gPSBQQ0lfREVWRk4yKG1hY2hpbmVfc2JkZik7 CiAKLSAgICAgICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICBwY2lkZXZzX2xv Y2soKTsKICAgICAgICAgcmV0ID0gZGVhc3NpZ25fZGV2aWNlKGQsIHNlZywgYnVzLCBkZXZmbik7 Ci0gICAgICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgICAgICBwY2lkZXZzX3Vu bG9jaygpOwogICAgICAgICBpZiAoIHJldCApCiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0df RVJSCiAgICAgICAgICAgICAgICAgICAgImRlYXNzaWduICUwNHg6JTAyeDolMDJ4LiV1IGZyb20g ZG9tJWQgZmFpbGVkICglZClcbiIsCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC92dGQvaW50cmVtYXAuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pbnRyZW1hcC5j CmluZGV4IDBlZTNmYjIuLmY1ZTNmNDkgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3Z0ZC9pbnRyZW1hcC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pbnRy ZW1hcC5jCkBAIC05ODQsNyArOTg0LDcgQEAgaW50IHBpX3VwZGF0ZV9pcnRlKGNvbnN0IHN0cnVj dCB2Y3B1ICp2LCBjb25zdCBzdHJ1Y3QgcGlycSAqcGlycSwKIAogICAgIHNwaW5fdW5sb2NrX2ly cSgmZGVzYy0+bG9jayk7CiAKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9j aykpOworICAgIEFTU0VSVChwY2lkZXZzX2lzX2xvY2tlZCgpKTsKIAogICAgIC8qCiAgICAgICog RklYTUU6IEZvciBwZXJmb3JtYW5jZSByZWFzb25zIHdlIHNob3VsZCBzdG9yZSB0aGUgJ2lvbW11 JyBwb2ludGVyIGluCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9t bXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCmluZGV4IDgwMjI3MDIu Ljg0MDkxMDAgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5j CisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCkBAIC0xMjgyLDcgKzEy ODIsNyBAQCBpbnQgZG9tYWluX2NvbnRleHRfbWFwcGluZ19vbmUoCiAgICAgdTE2IHNlZyA9IGlv bW11LT5pbnRlbC0+ZHJoZC0+c2VnbWVudDsKICAgICBpbnQgYWdhdzsKIAotICAgIEFTU0VSVChz cGluX2lzX2xvY2tlZCgmcGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRldnNfaXNfbG9j a2VkKCkpOwogICAgIHNwaW5fbG9jaygmaW9tbXUtPmxvY2spOwogICAgIG1hZGRyID0gYnVzX3Rv X2NvbnRleHRfbWFkZHIoaW9tbXUsIGJ1cyk7CiAgICAgY29udGV4dF9lbnRyaWVzID0gKHN0cnVj dCBjb250ZXh0X2VudHJ5ICopbWFwX3Z0ZF9kb21haW5fcGFnZShtYWRkcik7CkBAIC0xNDI0LDcg KzE0MjQsNyBAQCBzdGF0aWMgaW50IGRvbWFpbl9jb250ZXh0X21hcHBpbmcoCiAgICAgaWYgKCAh ZHJoZCApCiAgICAgICAgIHJldHVybiAtRU5PREVWOwogCi0gICAgQVNTRVJUKHNwaW5faXNfbG9j a2VkKCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2c19pc19sb2NrZWQoKSk7CiAK ICAgICBzd2l0Y2ggKCBwZGV2LT50eXBlICkKICAgICB7CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCBp bnQgZG9tYWluX2NvbnRleHRfdW5tYXBfb25lKAogICAgIHU2NCBtYWRkcjsKICAgICBpbnQgaW9t bXVfZG9taWQ7CiAKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBjaWRldnNfbG9jaykpOwor ICAgIEFTU0VSVChwY2lkZXZzX2lzX2xvY2tlZCgpKTsKICAgICBzcGluX2xvY2soJmlvbW11LT5s b2NrKTsKIAogICAgIG1hZGRyID0gYnVzX3RvX2NvbnRleHRfbWFkZHIoaW9tbXUsIGJ1cyk7CkBA IC0xODE2LDcgKzE4MTYsNyBAQCBzdGF0aWMgaW50IHJtcnJfaWRlbnRpdHlfbWFwcGluZyhzdHJ1 Y3QgZG9tYWluICpkLCBib29sX3QgbWFwLAogICAgIHN0cnVjdCBtYXBwZWRfcm1yciAqbXJtcnI7 CiAgICAgc3RydWN0IGh2bV9pb21tdSAqaGQgPSBkb21haW5faHZtX2lvbW11KGQpOwogCi0gICAg QVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwY2lkZXZzX2xvY2spKTsKKyAgICBBU1NFUlQocGNpZGV2 c19pc19sb2NrZWQoKSk7CiAgICAgQVNTRVJUKHJtcnItPmJhc2VfYWRkcmVzcyA8IHJtcnItPmVu ZF9hZGRyZXNzKTsKIAogICAgIC8qCkBAIC0xODgxLDcgKzE4ODEsNyBAQCBzdGF0aWMgaW50IGlu dGVsX2lvbW11X2FkZF9kZXZpY2UodTggZGV2Zm4sIHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogICAg IHUxNiBiZGY7CiAgICAgaW50IHJldCwgaTsKIAotICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgm cGNpZGV2c19sb2NrKSk7CisgICAgQVNTRVJUKHBjaWRldnNfaXNfbG9ja2VkKCkpOwogCiAgICAg aWYgKCAhcGRldi0+ZG9tYWluICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CkBAIC0yMTA5LDcg KzIxMDksNyBAQCBzdGF0aWMgdm9pZCBfX2h3ZG9tX2luaXQgc2V0dXBfaHdkb21fcm1ycihzdHJ1 Y3QgZG9tYWluICpkKQogICAgIHUxNiBiZGY7CiAgICAgaW50IHJldCwgaTsKIAotICAgIHNwaW5f bG9jaygmcGNpZGV2c19sb2NrKTsKKyAgICBwY2lkZXZzX2xvY2soKTsKICAgICBmb3JfZWFjaF9y bXJyX2RldmljZSAoIHJtcnIsIGJkZiwgaSApCiAgICAgewogICAgICAgICAvKgpAQCAtMjEyMyw3 ICsyMTIzLDcgQEAgc3RhdGljIHZvaWQgX19od2RvbV9pbml0IHNldHVwX2h3ZG9tX3JtcnIoc3Ry dWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiBWVERQUkVGSVgs CiAgICAgICAgICAgICAgICAgICAgICAiSU9NTVU6IG1hcHBpbmcgcmVzZXJ2ZWQgcmVnaW9uIGZh aWxlZFxuIik7CiAgICAgfQotICAgIHNwaW5fdW5sb2NrKCZwY2lkZXZzX2xvY2spOworICAgIHBj aWRldnNfdW5sb2NrKCk7CiB9CiAKIGludCBfX2luaXQgaW50ZWxfdnRkX3NldHVwKHZvaWQpCmRp ZmYgLS1naXQgYS94ZW4vZHJpdmVycy92aWRlby92Z2EuYyBiL3hlbi9kcml2ZXJzL3ZpZGVvL3Zn YS5jCmluZGV4IDQwZTU5NjMuLjYxYzZiMTMgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3ZpZGVv L3ZnYS5jCisrKyBiL3hlbi9kcml2ZXJzL3ZpZGVvL3ZnYS5jCkBAIC0xMTcsOSArMTE3LDkgQEAg dm9pZCBfX2luaXQgdmlkZW9fZW5kYm9vdCh2b2lkKQogICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBwY2lfZGV2ICpwZGV2OwogICAgICAgICAgICAgICAgIHU4IGIgPSBidXMsIGRmID0gZGV2 Zm4sIHNiOwogCi0gICAgICAgICAgICAgICAgc3Bpbl9sb2NrKCZwY2lkZXZzX2xvY2spOworICAg ICAgICAgICAgICAgIHBjaWRldnNfbG9jaygpOwogICAgICAgICAgICAgICAgIHBkZXYgPSBwY2lf Z2V0X3BkZXYoMCwgYnVzLCBkZXZmbik7Ci0gICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJnBj aWRldnNfbG9jayk7CisgICAgICAgICAgICAgICAgcGNpZGV2c191bmxvY2soKTsKIAogICAgICAg ICAgICAgICAgIGlmICggIXBkZXYgfHwKICAgICAgICAgICAgICAgICAgICAgIHBjaV9jb25mX3Jl YWQxNigwLCBidXMsIFBDSV9TTE9UKGRldmZuKSwgUENJX0ZVTkMoZGV2Zm4pLApkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUveGVuL3BjaS5oIGIveGVuL2luY2x1ZGUveGVuL3BjaS5oCmluZGV4IGE1 YWVmNTUuLmI4NzU3MWQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4vcGNpLmgKQEAgLTk0LDcgKzk0LDEwIEBAIHN0cnVjdCBwY2lfZGV2IHsK ICAqIGludGVycnVwdCBoYW5kbGluZyByZWxhdGVkICh0aGUgbWFzayBiaXQgcmVnaXN0ZXIpLgog ICovCiAKLWV4dGVybiBzcGlubG9ja190IHBjaWRldnNfbG9jazsKK3ZvaWQgcGNpZGV2c19sb2Nr KHZvaWQpOwordm9pZCBwY2lkZXZzX3VubG9jayh2b2lkKTsKK2ludCBwY2lkZXZzX2lzX2xvY2tl ZCh2b2lkKTsKK2ludCBwY2lkZXZzX3RyeWxvY2sodm9pZCk7CiAKIGJvb2xfdCBwY2lfa25vd25f c2VnbWVudCh1MTYgc2VnKTsKIGJvb2xfdCBwY2lfZGV2aWNlX2RldGVjdCh1MTYgc2VnLCB1OCBi dXMsIHU4IGRldiwgdTggZnVuYyk7Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==