From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sameer Goel Subject: [RFC 6/6] acpi:arm64: Add support for parsing IORT table Date: Thu, 8 Jun 2017 13:30:47 -0600 Message-ID: <1496950247-8755-7-git-send-email-sgoel@codeaurora.org> References: <1496950247-8755-1-git-send-email-sgoel@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dJ39M-00015w-BT for xen-devel@lists.xenproject.org; Thu, 08 Jun 2017 19:31:20 +0000 In-Reply-To: <1496950247-8755-1-git-send-email-sgoel@codeaurora.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, Julien Grall Cc: Stefano Stabellini , Tomasz Nowicki , Punit Agrawal , Sameer Goel , Robin Murphy , Shanker Donthineni List-Id: xen-devel@lists.xenproject.org QWRkIGxpbWl0ZWQgc3VwcG9ydCBmb3IgcGFyc2luZyBJT1JUIHRhYmxlIHRvIGluaXRpYWxpemUg U01NVSBkZXZpY2VzLgoKU2lnbmVkLW9mZi1ieTogU2FtZWVyIEdvZWwgPHNnb2VsQGNvZGVhdXJv cmEub3JnPgotLS0KIHhlbi9hcmNoL2FybS9zZXR1cC5jICAgICAgICAgICAgICAgIHwgICAzICsK IHhlbi9kcml2ZXJzL2FjcGkvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKIHhlbi9kcml2ZXJz L2FjcGkvYXJtL01ha2VmaWxlICAgICAgIHwgICAxICsKIHhlbi9kcml2ZXJzL2FjcGkvYXJtL2lv cnQuYyAgICAgICAgIHwgMjMyICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQog eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lvbW11LmMgfCAgMTUgKy0tCiB4ZW4vaW5jbHVk ZS9hY3BpL2FjcGkuaCAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vaW5jbHVkZS9hY3BpL2FjcGlf aW9ydC5oICAgICAgICB8ICAyNSArKy0tCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2RldmljZS5oICAg ICAgICB8ICAgMiArCiB4ZW4vaW5jbHVkZS94ZW4vYWNwaS5oICAgICAgICAgICAgICB8ICAyMSAr KysrCiB4ZW4vaW5jbHVkZS94ZW4vbGliLmggICAgICAgICAgICAgICB8ICAgNyArLQogeGVuL2lu Y2x1ZGUveGVuL3BjaS5oICAgICAgICAgICAgICAgfCAgIDEgKwogMTEgZmlsZXMgY2hhbmdlZCwg MTg0IGluc2VydGlvbnMoKyksIDEyNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4 ZW4vZHJpdmVycy9hY3BpL2FybS9NYWtlZmlsZQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9z ZXR1cC5jIGIveGVuL2FyY2gvYXJtL3NldHVwLmMKaW5kZXggOTJhMmRlNi4uNWRjOTNmZiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gvYXJtL3NldHVwLmMKKysrIGIveGVuL2FyY2gvYXJtL3NldHVwLmMK QEAgLTc1Myw2ICs3NTMsOSBAQCB2b2lkIF9faW5pdCBzdGFydF94ZW4odW5zaWduZWQgbG9uZyBi b290X3BoeXNfb2Zmc2V0LAogICAgIC8qIFBhcnNlIHRoZSBBQ1BJIHRhYmxlcyBmb3IgcG9zc2li bGUgYm9vdC10aW1lIGNvbmZpZ3VyYXRpb24gKi8KICAgICBhY3BpX2Jvb3RfdGFibGVfaW5pdCgp OwogCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgSU9SVCB0YWJsZXMgKi8KKyAgICBhY3BpX2lvcnRf aW5pdCgpOworCiAgICAgaWYgKCBhY3BpX2Rpc2FibGVkICkKICAgICAgICAgcHJpbnRrKCJCb290 aW5nIHVzaW5nIERldmljZSBUcmVlXG4iKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS94ZW4vZHJp dmVycy9hY3BpL01ha2VmaWxlIGIveGVuL2RyaXZlcnMvYWNwaS9NYWtlZmlsZQppbmRleCA0NDRi MTFkLi40MTY1MzE4IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9hY3BpL01ha2VmaWxlCisrKyBi L3hlbi9kcml2ZXJzL2FjcGkvTWFrZWZpbGUKQEAgLTEsNSArMSw2IEBACiBzdWJkaXIteSArPSB0 YWJsZXMKIHN1YmRpci15ICs9IHV0aWxpdGllcworc3ViZGlyLSQoQ09ORklHX0FSTV82NCkgKz0g YXJtCiBzdWJkaXItJChDT05GSUdfWDg2KSArPSBhcGVpCiAKIG9iai1iaW4teSArPSB0YWJsZXMu aW5pdC5vCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9hY3BpL2FybS9NYWtlZmlsZSBiL3hlbi9k cml2ZXJzL2FjcGkvYXJtL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjdjMDM5YmIKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vZHJpdmVycy9hY3BpL2FybS9NYWtl ZmlsZQpAQCAtMCwwICsxIEBACitvYmoteSArPSBpb3J0Lm8KZGlmZiAtLWdpdCBhL3hlbi9kcml2 ZXJzL2FjcGkvYXJtL2lvcnQuYyBiL3hlbi9kcml2ZXJzL2FjcGkvYXJtL2lvcnQuYwppbmRleCA0 YTViYjk2Li5jMjJlYzMxIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9hY3BpL2FybS9pb3J0LmMK KysrIGIveGVuL2RyaXZlcnMvYWNwaS9hcm0vaW9ydC5jCkBAIC0xNCwyOSArMTQsNDAgQEAKICAq IFRoaXMgZmlsZSBpbXBsZW1lbnRzIGVhcmx5IGRldGVjdGlvbi9wYXJzaW5nIG9mIEkvTyBtYXBw aW5nCiAgKiByZXBvcnRlZCB0byBPUyB0aHJvdWdoIGZpcm13YXJlIHZpYSBJL08gUmVtYXBwaW5n IFRhYmxlIChJT1JUKQogICogSU9SVCBkb2N1bWVudCBudW1iZXI6IEFSTSBERU4gMDA0OUEKKyAq CisgKiBCYXNlZCBvbiBMaW51eCBkcml2ZXJzL2FjcGkvYXJtNjQvaW9ydC5jCisgKiA9PiBjb21t aXQgY2E3OGQzMTczY2ZmMzUwM2JjZDE1NzIzYjA0OTc1N2Y3NTc2MmQxNQorICoKKyAqIFhlbiBt b2RpZmljYXRpb246CisgKiBTYW1lZXIgR29lbCA8c2dvZWxAY29kZWF1cm9yYS5vcmc+CisgKiBD b3B5cmlnaHQgKEMpIDIwMTcsIFRoZSBMaW51eCBGb3VuZGF0aW9uLCBBbGwgcmlnaHRzIHJlc2Vy dmVkLgorICoKICAqLwogCi0jZGVmaW5lIHByX2ZtdChmbXQpCSJBQ1BJOiBJT1JUOiAiIGZtdAor I2luY2x1ZGUgPHhlbi9hY3BpLmg+CisjaW5jbHVkZSA8eGVuL2Z3bm9kZS5oPgorI2luY2x1ZGUg PHhlbi9pb21tdS5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vbGlzdC5o PgorI2luY2x1ZGUgPHhlbi9wY2kuaD4KKworI2luY2x1ZGUgPGFzbS9kZXZpY2UuaD4KIAotI2lu Y2x1ZGUgPGxpbnV4L2FjcGlfaW9ydC5oPgotI2luY2x1ZGUgPGxpbnV4L2lvbW11Lmg+Ci0jaW5j bHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvbGlzdC5oPgotI2luY2x1ZGUg PGxpbnV4L3BjaS5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1 ZGUgPGxpbnV4L3NsYWIuaD4KIAogI2RlZmluZSBJT1JUX1RZUEVfTUFTSyh0eXBlKQkoMSA8PCAo dHlwZSkpCiAjZGVmaW5lIElPUlRfTVNJX1RZUEUJCSgxIDw8IEFDUElfSU9SVF9OT0RFX0lUU19H Uk9VUCkKICNkZWZpbmUgSU9SVF9JT01NVV9UWVBFCQkoKDEgPDwgQUNQSV9JT1JUX05PREVfU01N VSkgfAlcCiAJCQkJKDEgPDwgQUNQSV9JT1JUX05PREVfU01NVV9WMykpCiAKKyNpZiAwCiBzdHJ1 Y3QgaW9ydF9pdHNfbXNpX2NoaXAgewogCXN0cnVjdCBsaXN0X2hlYWQJbGlzdDsKIAlzdHJ1Y3Qg Zndub2RlX2hhbmRsZQkqZndfbm9kZTsKIAl1MzIJCQl0cmFuc2xhdGlvbl9pZDsKIH07CiAKKyNl bmRpZgorCiBzdHJ1Y3QgaW9ydF9md25vZGUgewogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIAlz dHJ1Y3QgYWNwaV9pb3J0X25vZGUgKmlvcnRfbm9kZTsKQEAgLTYwLDcgKzcxLDcgQEAgc3RhdGlj IGlubGluZSBpbnQgaW9ydF9zZXRfZndub2RlKHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqaW9ydF9u b2RlLAogewogCXN0cnVjdCBpb3J0X2Z3bm9kZSAqbnA7CiAKLQlucCA9IGt6YWxsb2Moc2l6ZW9m KHN0cnVjdCBpb3J0X2Z3bm9kZSksIEdGUF9BVE9NSUMpOworCW5wID0geHphbGxvYyhzdHJ1Y3Qg aW9ydF9md25vZGUpOwogCiAJaWYgKFdBUk5fT04oIW5wKSkKIAkJcmV0dXJuIC1FTk9NRU07CkBA IC0xMTQsNyArMTI1LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGlvcnRfZGVsZXRlX2Z3bm9kZShz dHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUpCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1 cnIsIHRtcCwgJmlvcnRfZndub2RlX2xpc3QsIGxpc3QpIHsKIAkJaWYgKGN1cnItPmlvcnRfbm9k ZSA9PSBub2RlKSB7CiAJCQlsaXN0X2RlbCgmY3Vyci0+bGlzdCk7Ci0JCQlrZnJlZShjdXJyKTsK KwkJCXhmcmVlKGN1cnIpOwogCQkJYnJlYWs7CiAJCX0KIAl9CkBAIC0xMjcsNiArMTM4LDcgQEAg dHlwZWRlZiBhY3BpX3N0YXR1cyAoKmlvcnRfZmluZF9ub2RlX2NhbGxiYWNrKQogLyogUm9vdCBw b2ludGVyIHRvIHRoZSBtYXBwZWQgSU9SVCB0YWJsZSAqLwogc3RhdGljIHN0cnVjdCBhY3BpX3Rh YmxlX2hlYWRlciAqaW9ydF90YWJsZTsKIAorI2lmIDAKIHN0YXRpYyBMSVNUX0hFQUQoaW9ydF9t c2lfY2hpcF9saXN0KTsKIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0soaW9ydF9tc2lfY2hpcF9sb2Nr KTsKIApAQCAtMTk5LDcgKzIxMSw3IEBAIHN0cnVjdCBmd25vZGVfaGFuZGxlICppb3J0X2ZpbmRf ZG9tYWluX3Rva2VuKGludCB0cmFuc19pZCkKIAogCXJldHVybiBmd19ub2RlOwogfQotCisjZW5k aWYKIHN0YXRpYyBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKmlvcnRfc2Nhbl9ub2RlKGVudW0gYWNw aV9pb3J0X25vZGVfdHlwZSB0eXBlLAogCQkJCQkgICAgIGlvcnRfZmluZF9ub2RlX2NhbGxiYWNr IGNhbGxiYWNrLAogCQkJCQkgICAgIHZvaWQgKmNvbnRleHQpCkBAIC0yMTksOSArMjMxLDEwIEBA IHN0YXRpYyBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKmlvcnRfc2Nhbl9ub2RlKGVudW0gYWNwaV9p b3J0X25vZGVfdHlwZSB0eXBlLAogCQkJCWlvcnRfdGFibGUtPmxlbmd0aCk7CiAKIAlmb3IgKGkg PSAwOyBpIDwgaW9ydC0+bm9kZV9jb3VudDsgaSsrKSB7Ci0JCWlmIChXQVJOX1RBSU5UKGlvcnRf bm9kZSA+PSBpb3J0X2VuZCwgVEFJTlRfRklSTVdBUkVfV09SS0FST1VORCwKLQkJCSAgICAgICAi SU9SVCBub2RlIHBvaW50ZXIgb3ZlcmZsb3dzLCBiYWQgdGFibGUhXG4iKSkKKwkJaWYgKGlvcnRf bm9kZSA+PSBpb3J0X2VuZCkgeworCQkJcHJpbnRrKFhFTkxPR19FUlIgIklPUlQgbm9kZSBwb2lu dGVyIG92ZXJmbG93cywgYmFkIHRhYmxlIVxuIik7CiAJCQlyZXR1cm4gTlVMTDsKKwkJfQogCiAJ CWlmIChpb3J0X25vZGUtPnR5cGUgPT0gdHlwZSAmJgogCQkgICAgQUNQSV9TVUNDRVNTKGNhbGxi YWNrKGlvcnRfbm9kZSwgY29udGV4dCkpKQpAQCAtMjQ5LDYgKzI2MiwxNCBAQCBib29sIGlvcnRf bm9kZV9tYXRjaCh1OCB0eXBlKQogCXJldHVybiBub2RlICE9IE5VTEw7CiB9CiAKKy8qCisgKiBG b2xsb3dpbmcgMiBkZWZpbmllcyBzaG91bGQgY29tZSBmcm9tIHRoZSBQQ0kgcGFzc3Rocm91Z2gg aW1wbGVtZW50YXRpb24uCisgKiBCYXNlZCBvbiB0aGUgY3VycmVudCBwY2lfZGV2IGRlZmluZSB0 aGUgYnVzIG51bWJlciBhbmQgc2VnIG51bWJlciBjb21lCisgKiBmcm9tIHBjaV9kZXYgc28gbWFr aW5nIGFuIEFQSSBhc3N1bXB0aW9uCisgKi8KKyNkZWZpbmUgdG9fcGNpX2RldihwKSBjb250YWlu ZXJfb2YocCwgc3RydWN0IHBjaV9kZXYsZGV2KQorI2RlZmluZSBwY2lfZG9tYWluX25yKGRldikg ZGV2LT5zZWcKKwogc3RhdGljIGFjcGlfc3RhdHVzIGlvcnRfbWF0Y2hfbm9kZV9jYWxsYmFjayhz dHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUsCiAJCQkJCSAgICB2b2lkICpjb250ZXh0KQogewpA QCAtMjU2LDYgKzI3NywxMSBAQCBzdGF0aWMgYWNwaV9zdGF0dXMgaW9ydF9tYXRjaF9ub2RlX2Nh bGxiYWNrKHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9kZSwKIAlhY3BpX3N0YXR1cyBzdGF0dXM7 CiAKIAlpZiAobm9kZS0+dHlwZSA9PSBBQ1BJX0lPUlRfTk9ERV9OQU1FRF9DT01QT05FTlQpIHsK KwkJc3RhdHVzID0gQUVfTk9UX0lNUExFTUVOVEVEOworLyoKKyAqIE5hbWVkIGNvbXBvbmVudHMg bm90IHN1cHBvcnRlZCB5ZXQuCisgKi8KKyNpZiAwCiAJCXN0cnVjdCBhY3BpX2J1ZmZlciBidWYg PSB7IEFDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMIH07CiAJCXN0cnVjdCBhY3BpX2RldmljZSAq YWRldiA9IHRvX2FjcGlfZGV2aWNlX25vZGUoZGV2LT5md25vZGUpOwogCQlzdHJ1Y3QgYWNwaV9p b3J0X25hbWVkX2NvbXBvbmVudCAqbmNvbXA7CkBAIC0yNzUsMTEgKzMwMSwxMiBAQCBzdGF0aWMg YWNwaV9zdGF0dXMgaW9ydF9tYXRjaF9ub2RlX2NhbGxiYWNrKHN0cnVjdCBhY3BpX2lvcnRfbm9k ZSAqbm9kZSwKIAkJc3RhdHVzID0gIXN0cmNtcChuY29tcC0+ZGV2aWNlX25hbWUsIGJ1Zi5wb2lu dGVyKSA/CiAJCQkJCQkJQUVfT0sgOiBBRV9OT1RfRk9VTkQ7CiAJCWFjcGlfb3NfZnJlZShidWYu cG9pbnRlcik7CisjZW5kaWYKIAl9IGVsc2UgaWYgKG5vZGUtPnR5cGUgPT0gQUNQSV9JT1JUX05P REVfUENJX1JPT1RfQ09NUExFWCkgewogCQlzdHJ1Y3QgYWNwaV9pb3J0X3Jvb3RfY29tcGxleCAq cGNpX3JjOwotCQlzdHJ1Y3QgcGNpX2J1cyAqYnVzOworCQlzdHJ1Y3QgcGNpX2RldiAqcGNpX2Rl djsKIAotCQlidXMgPSB0b19wY2lfYnVzKGRldik7CisJCXBjaV9kZXYgPSB0b19wY2lfZGV2KGRl dik7CiAJCXBjaV9yYyA9IChzdHJ1Y3QgYWNwaV9pb3J0X3Jvb3RfY29tcGxleCAqKW5vZGUtPm5v ZGVfZGF0YTsKIAogCQkvKgpAQCAtMjg3LDEyICszMTQsMTEgQEAgc3RhdGljIGFjcGlfc3RhdHVz IGlvcnRfbWF0Y2hfbm9kZV9jYWxsYmFjayhzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUsCiAJ CSAqIHdpdGggcm9vdCBjb21wbGV4ZXMuIEVhY2ggc2VnbWVudCBudW1iZXIgY2FuIHJlcHJlc2Vu dCBvbmx5CiAJCSAqIG9uZSByb290IGNvbXBsZXguCiAJCSAqLwotCQlzdGF0dXMgPSBwY2lfcmMt PnBjaV9zZWdtZW50X251bWJlciA9PSBwY2lfZG9tYWluX25yKGJ1cykgPworCQlzdGF0dXMgPSBw Y2lfcmMtPnBjaV9zZWdtZW50X251bWJlciA9PSBwY2lfZG9tYWluX25yKHBjaV9kZXYpID8KIAkJ CQkJCQlBRV9PSyA6IEFFX05PVF9GT1VORDsKIAl9IGVsc2UgewogCQlzdGF0dXMgPSBBRV9OT1Rf Rk9VTkQ7CiAJfQotb3V0OgogCXJldHVybiBzdGF0dXM7CiB9CiAKQEAgLTMwNyw3ICszMzMsOCBA QCBzdGF0aWMgaW50IGlvcnRfaWRfbWFwKHN0cnVjdCBhY3BpX2lvcnRfaWRfbWFwcGluZyAqbWFw LCB1OCB0eXBlLCB1MzIgcmlkX2luLAogCQkJcmV0dXJuIDA7CiAJCX0KIAotCQlwcl93YXJuKEZX X0JVRyAiW21hcCAlcF0gU0lOR0xFIE1BUFBJTkcgZmxhZyBub3QgYWxsb3dlZCBmb3Igbm9kZSB0 eXBlICVkLCBza2lwcGluZyBJRCBtYXBcbiIsCisJCXByaW50ayhYRU5MT0dfV0FSTklORyAiW21h cCAlcF0gU0lOR0xFIE1BUFBJTkcgZmxhZyBub3QgXAorCQkgICAgICAgYWxsb3dlZCBmb3Igbm9k ZSB0eXBlICVkLCBza2lwcGluZyBJRCBtYXBcbiIsCiAJCQltYXAsIHR5cGUpOwogCQlyZXR1cm4g LUVOWElPOwogCX0KQEAgLTMyMCw2ICszNDcsMTEgQEAgc3RhdGljIGludCBpb3J0X2lkX21hcChz dHJ1Y3QgYWNwaV9pb3J0X2lkX21hcHBpbmcgKm1hcCwgdTggdHlwZSwgdTMyIHJpZF9pbiwKIAly ZXR1cm4gMDsKIH0KIAorLyoKKyAqIE5hbWUgY29tcG9uZW50cyBhcmUgbm90IHN1cHBvcnRlZCB5 ZXQgc28gd2UgZG8gbm90IG5lZWQgdGhlCisgKiBpb3J0X25vZGVfZ2V0X2lkIGZ1bmN0aW9uCisg Ki8KKyNpZiAwCiBzdGF0aWMKIHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqaW9ydF9ub2RlX2dldF9p ZChzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUsCiAJCQkJCXUzMiAqaWRfb3V0LCB1OCB0eXBl X21hc2ssCkBAIC0zMzcsOCArMzY5LDggQEAgc3RydWN0IGFjcGlfaW9ydF9ub2RlICppb3J0X25v ZGVfZ2V0X2lkKHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9kZSwKIAogCS8qIEZpcm13YXJlIGJ1 ZyEgKi8KIAlpZiAoIW1hcC0+b3V0cHV0X3JlZmVyZW5jZSkgewotCQlwcl9lcnIoRldfQlVHICJb bm9kZSAlcCB0eXBlICVkXSBJRCBtYXAgaGFzIE5VTEwgcGFyZW50IHJlZmVyZW5jZVxuIiwKLQkJ ICAgICAgIG5vZGUsIG5vZGUtPnR5cGUpOworCQlwcmludGsoWEVOTE9HX0VSUiAiW25vZGUgJXAg dHlwZSAlZF0gSUQgbWFwIGhhcyBOVUxMIHBhcmVudCBcCisJCSAgICAgICByZWZlcmVuY2VcbiIs IG5vZGUsIG5vZGUtPnR5cGUpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTM1OCw2ICszOTAs NyBAQCBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKmlvcnRfbm9kZV9nZXRfaWQoc3RydWN0IGFjcGlf aW9ydF9ub2RlICpub2RlLAogCiAJcmV0dXJuIE5VTEw7CiB9CisjZW5kaWYKIAogc3RhdGljIHN0 cnVjdCBhY3BpX2lvcnRfbm9kZSAqaW9ydF9ub2RlX21hcF9yaWQoc3RydWN0IGFjcGlfaW9ydF9u b2RlICpub2RlLAogCQkJCQkJdTMyIHJpZF9pbiwgdTMyICpyaWRfb3V0LApAQCAtMzg0LDggKzQx Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKmlvcnRfbm9kZV9tYXBfcmlkKHN0 cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9kZSwKIAogCQkvKiBGaXJtd2FyZSBidWchICovCiAJCWlm ICghbWFwLT5vdXRwdXRfcmVmZXJlbmNlKSB7Ci0JCQlwcl9lcnIoRldfQlVHICJbbm9kZSAlcCB0 eXBlICVkXSBJRCBtYXAgaGFzIE5VTEwgcGFyZW50IHJlZmVyZW5jZVxuIiwKLQkJCSAgICAgICBu b2RlLCBub2RlLT50eXBlKTsKKwkJCXByaW50ayhYRU5MT0dfRVJSICJbbm9kZSAlcCB0eXBlICVk XSBJRCBtYXAgaGFzIE5VTEwgXAorCQkJICAgICAgIHBhcmVudCByZWZlcmVuY2VcbiIsIG5vZGUs IG5vZGUtPnR5cGUpOwogCQkJZ290byBmYWlsX21hcDsKIAkJfQogCkBAIC00MTAsNiArNDQzLDEw IEBAIGZhaWxfbWFwOgogCXJldHVybiBOVUxMOwogfQogCisvKiBYZW46IENvbW1lbnQgb3V0IHRo ZSBOYW1lZENvbXBvbmVudCBhbmQgSVRTIG1hcHBpbmcgY29kZSB0aWxsIHRoZSBzdXBwb3J0Cisg KiBpcyBhdmFpbGFibGUuCisgKiAqLworI2lmIDAKIHN0YXRpYyBzdHJ1Y3QgYWNwaV9pb3J0X25v ZGUgKmlvcnRfZmluZF9kZXZfbm9kZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IHBj aV9idXMgKnBidXM7CkBAIC01MDMsNiArNTQwLDkgQEAgc3RydWN0IGlycV9kb21haW4gKmlvcnRf Z2V0X2RldmljZV9kb21haW4oc3RydWN0IGRldmljZSAqZGV2LCB1MzIgcmVxX2lkKQogCXJldHVy biBpcnFfZmluZF9tYXRjaGluZ19md25vZGUoaGFuZGxlLCBET01BSU5fQlVTX1BDSV9NU0kpOwog fQogCisvKgorICogUklEIGlzIHRoZSBzYW1lIGFzIFBDSV9ERVZJRChCREYpIGZvciBRREYyNDAw CisgKi8KIHN0YXRpYyBpbnQgX19nZXRfcGNpX3JpZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2 IGFsaWFzLCB2b2lkICpkYXRhKQogewogCXUzMiAqcmlkID0gZGF0YTsKQEAgLTUxMCw3ICs1NTAs NyBAQCBzdGF0aWMgaW50IF9fZ2V0X3BjaV9yaWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBh bGlhcywgdm9pZCAqZGF0YSkKIAkqcmlkID0gYWxpYXM7CiAJcmV0dXJuIDA7CiB9Ci0KKyNlbmRp Zgogc3RhdGljIGludCBhcm1fc21tdV9pb3J0X3hsYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMy IHN0cmVhbWlkLAogCQkJICAgICAgIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsCiAJCQkg ICAgICAgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqb3BzKQpAQCAtNTIzLDI5ICs1NjMsMjQgQEAg c3RhdGljIGludCBhcm1fc21tdV9pb3J0X3hsYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIHN0 cmVhbWlkLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW9tbXVfb3Bz ICppb3J0X2lvbW11X3hsYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwKLQkJCQkJc3RydWN0IGFjcGlf aW9ydF9ub2RlICpub2RlLAotCQkJCQl1MzIgc3RyZWFtaWQpCitzdGF0aWMgaW50IGlvcnRfaW9t bXVfeGxhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUs CisJCQkgICAgdTMyIHN0cmVhbWlkKQogewotCWNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wcyA9 IE5VTEw7CiAJaW50IHJldCA9IC1FTk9ERVY7CiAJc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmlvcnRf Zndub2RlOwogCiAJaWYgKG5vZGUpIHsKIAkJaW9ydF9md25vZGUgPSBpb3J0X2dldF9md25vZGUo bm9kZSk7CiAJCWlmICghaW9ydF9md25vZGUpCi0JCQlyZXR1cm4gTlVMTDsKLQotCQlvcHMgPSBp b21tdV9vcHNfZnJvbV9md25vZGUoaW9ydF9md25vZGUpOwotCQlpZiAoIW9wcykKLQkJCXJldHVy biBOVUxMOworCQkJcmV0dXJuIHJldDsKIAotCQlyZXQgPSBhcm1fc21tdV9pb3J0X3hsYXRlKGRl diwgc3RyZWFtaWQsIGlvcnRfZndub2RlLCBvcHMpOworCQlyZXQgPSBhcm1fc21tdV9pb3J0X3hs YXRlKGRldiwgc3RyZWFtaWQsIGlvcnRfZndub2RlLCBOVUxMKTsKIAl9CiAKLQlyZXR1cm4gcmV0 ID8gTlVMTCA6IG9wczsKKwlyZXR1cm4gcmV0OwogfQogCisjaWYgMCAvKiBYZW46IFdlIGRvIG5v dCBuZWVkIHRoaXMgZnVuY3Rpb24gZm9yIFhlbiAqLwogLyoqCiAgKiBpb3J0X3NldF9kbWFfbWFz ayAtIFNldC11cCBkbWEgbWFzayBmb3IgYSBkZXZpY2UuCiAgKgpAQCAtNTY3LDM5ICs2MDIsNDMg QEAgdm9pZCBpb3J0X3NldF9kbWFfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKCFkZXYt PmRtYV9tYXNrKQogCQlkZXYtPmRtYV9tYXNrID0gJmRldi0+Y29oZXJlbnRfZG1hX21hc2s7CiB9 Ci0KKyNlbmRpZgogLyoqCi0gKiBpb3J0X2lvbW11X2NvbmZpZ3VyZSAtIFNldC11cCBJT01NVSBj b25maWd1cmF0aW9uIGZvciBhIGRldmljZS4KKyAqIGlvcnRfaW9tbXVfY29uZmlndXJlIC0gU2V0 LXVwIElPTU1VIGNvbmZpZ3VyYXRpb24gZm9yIGEgZGV2aWNlLiBUaGlzCisgKiBmdW5jdGlvbiBz ZXRzIHVwIHRoZSBmd3NwZWMgYXMgbmVlZGVkIGZvciBhIGdpdmVuIGRldmljZS4gT25seSBQQ0kK KyAqIGRldmljZXMgYXJlIHN1cHBvcnRlZCBmb3Igbm93LgogICoKICAqIEBkZXY6IGRldmljZSB0 byBjb25maWd1cmUKICAqCi0gKiBSZXR1cm5zOiBpb21tdV9vcHMgcG9pbnRlciBvbiBjb25maWd1 cmF0aW9uIHN1Y2Nlc3MKLSAqICAgICAgICAgIE5VTEwgb24gY29uZmlndXJhdGlvbiBmYWlsdXJl CisgKiBSZXR1cm5zOiBBcHByb3ByaWF0ZSBhY3BpX3N0YXR1cwogICovCi1jb25zdCBzdHJ1Y3Qg aW9tbXVfb3BzICppb3J0X2lvbW11X2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpCithY3Bp X3N0YXR1cyBpb3J0X2lvbW11X2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJc3Ry dWN0IGFjcGlfaW9ydF9ub2RlICpub2RlLCAqcGFyZW50OwotCWNvbnN0IHN0cnVjdCBpb21tdV9v cHMgKm9wcyA9IE5VTEw7CiAJdTMyIHN0cmVhbWlkID0gMDsKKwlhY3BpX3N0YXR1cyBzdGF0dXMg PSBBRV9PSzsKIAogCWlmIChkZXZfaXNfcGNpKGRldikpIHsKLQkJc3RydWN0IHBjaV9idXMgKmJ1 cyA9IHRvX3BjaV9kZXYoZGV2KS0+YnVzOworCQlzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldmljZSA9 IHRvX3BjaV9kZXYoZGV2KTsKIAkJdTMyIHJpZDsKIAotCQlwY2lfZm9yX2VhY2hfZG1hX2FsaWFz KHRvX3BjaV9kZXYoZGV2KSwgX19nZXRfcGNpX3JpZCwKLQkJCQkgICAgICAgJnJpZCk7CisJCXJp ZCA9IFBDSV9CREYyKHBjaV9kZXZpY2UtPmJ1cyxwY2lfZGV2aWNlLT5kZXZmbik7CiAKIAkJbm9k ZSA9IGlvcnRfc2Nhbl9ub2RlKEFDUElfSU9SVF9OT0RFX1BDSV9ST09UX0NPTVBMRVgsCi0JCQkJ ICAgICAgaW9ydF9tYXRjaF9ub2RlX2NhbGxiYWNrLCAmYnVzLT5kZXYpOworCQkJCSAgICAgIGlv cnRfbWF0Y2hfbm9kZV9jYWxsYmFjaywgZGV2KTsKIAkJaWYgKCFub2RlKQotCQkJcmV0dXJuIE5V TEw7CisJCQlyZXR1cm4gQUVfTk9UX0ZPVU5EOwogCiAJCXBhcmVudCA9IGlvcnRfbm9kZV9tYXBf cmlkKG5vZGUsIHJpZCwgJnN0cmVhbWlkLAogCQkJCQkgICBJT1JUX0lPTU1VX1RZUEUpOwogCi0J CW9wcyA9IGlvcnRfaW9tbXVfeGxhdGUoZGV2LCBwYXJlbnQsIHN0cmVhbWlkKTsKKwkJc3RhdHVz ID0gaW9ydF9pb21tdV94bGF0ZShkZXYsIHBhcmVudCwgc3RyZWFtaWQpOworCisJCXN0YXR1cyA9 IHN0YXR1cyA/IEFFX0VSUk9SIDogQUVfT0s7CiAKIAl9IGVsc2UgeworCQlzdGF0dXMgPSBBRV9O T1RfSU1QTEVNRU5URUQ7CisjaWYgMAogCQlpbnQgaSA9IDA7CiAKIAkJbm9kZSA9IGlvcnRfc2Nh bl9ub2RlKEFDUElfSU9SVF9OT0RFX05BTUVEX0NPTVBPTkVOVCwKQEAgLTYxNiwxMSArNjU1LDE3 IEBAIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKmlvcnRfaW9tbXVfY29uZmlndXJlKHN0cnVjdCBk ZXZpY2UgKmRldikKIAkJCXBhcmVudCA9IGlvcnRfbm9kZV9nZXRfaWQobm9kZSwgJnN0cmVhbWlk LAogCQkJCQkJICBJT1JUX0lPTU1VX1RZUEUsIGkrKyk7CiAJCX0KKyNlbmRpZgogCX0KIAotCXJl dHVybiBvcHM7CisJcmV0dXJuIHN0YXR1czsKIH0KIAorLyoKKyAqIFhlbjogTm90IHVzaW5nIHRo ZSBwYXJzaW4gb3BzIGZvciBub3cuIE5lZWQgdG8gY2hlY2sgYW5kIHNlZSBpZiBpdCB3aWxsCisg KiBiZSB1c2VmdWwgdG8gdXNlIHRoZXNlIGluIHNvbWUgZm9ybSwgb3IgbGV0IHRoZSBkcml2ZXIg cGFyc2UgSU9SVCBub2RlLgorICovCisjaWYgMAogc3RhdGljIHZvaWQgX19pbml0IGFjcGlfaW9y dF9yZWdpc3Rlcl9pcnEoaW50IGh3aXJxLCBjb25zdCBjaGFyICpuYW1lLAogCQkJCQkgIGludCB0 cmlnZ2VyLAogCQkJCQkgIHN0cnVjdCByZXNvdXJjZSAqcmVzKQpAQCAtODA3LDkzICs4NTIsNjMg QEAgY29uc3Qgc3RydWN0IGlvcnRfaW9tbXVfY29uZmlnICppb3J0X2dldF9pb21tdV9jZmcoc3Ry dWN0IGFjcGlfaW9ydF9ub2RlICpub2RlKQogCQlyZXR1cm4gTlVMTDsKIAl9CiB9Ci0KKyNlbmRp ZgogLyoqCi0gKiBpb3J0X2FkZF9zbW11X3BsYXRmb3JtX2RldmljZSgpIC0gQWxsb2NhdGUgYSBw bGF0Zm9ybSBkZXZpY2UgZm9yIFNNTVUKKyAqIFhlbjogcmVuYW1lIHRoZSBmdW5jdGlvbiB0byBp b3J0X2FkZF9zbW11X2RldmljZQorICogaW9ydF9hZGRfc21tdV9kZXZpY2UoKSAtIEFsbG9jYXRl IGEgZGV2aWNlIGZvciBTTU1VCiAgKiBAbm9kZTogUG9pbnRlciB0byBTTU1VIEFDUEkgSU9SVCBu b2RlCiAgKgogICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCA8MCBmYWlsdXJlCiAgKi8KLXN0YXRp YyBpbnQgX19pbml0IGlvcnRfYWRkX3NtbXVfcGxhdGZvcm1fZGV2aWNlKHN0cnVjdCBhY3BpX2lv cnRfbm9kZSAqbm9kZSkKK3N0YXRpYyBpbnQgX19pbml0IGlvcnRfYWRkX3NtbXVfZGV2aWNlKHN0 cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9kZSkKIHsKIAlzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndu b2RlOwotCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Ci0Jc3RydWN0IHJlc291cmNlICpy OwotCWVudW0gZGV2X2RtYV9hdHRyIGF0dHI7Ci0JaW50IHJldCwgY291bnQ7Ci0JY29uc3Qgc3Ry dWN0IGlvcnRfaW9tbXVfY29uZmlnICpvcHMgPSBpb3J0X2dldF9pb21tdV9jZmcobm9kZSk7Ci0K LQlpZiAoIW9wcykKLQkJcmV0dXJuIC1FTk9ERVY7Ci0KLQlwZGV2ID0gcGxhdGZvcm1fZGV2aWNl X2FsbG9jKG9wcy0+bmFtZSwgUExBVEZPUk1fREVWSURfQVVUTyk7Ci0JaWYgKCFwZGV2KQotCQly ZXR1cm4gLUVOT01FTTsKLQotCWNvdW50ID0gb3BzLT5pb21tdV9jb3VudF9yZXNvdXJjZXMobm9k ZSk7CisJc3RydWN0IGRldmljZSAqZGV2OworCWludCByZXQ7CiAKLQlyID0ga2NhbGxvYyhjb3Vu dCwgc2l6ZW9mKCpyKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFyKSB7Ci0JCXJldCA9IC1FTk9NRU07 Ci0JCWdvdG8gZGV2X3B1dDsKLQl9Ci0KLQlvcHMtPmlvbW11X2luaXRfcmVzb3VyY2VzKHIsIG5v ZGUpOwotCi0JcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZF9yZXNvdXJjZXMocGRldiwgciwgY291 bnQpOwogCS8qCi0JICogUmVzb3VyY2VzIGFyZSBkdXBsaWNhdGVkIGluIHBsYXRmb3JtX2Rldmlj ZV9hZGRfcmVzb3VyY2VzLAotCSAqIGZyZWUgdGhlaXIgYWxsb2NhdGVkIG1lbW9yeQorCSAqIE5v dCBlbmFibGluZyB0aGUgcGFyc2luZyBvcHMgZm9yIG5vdy4gVGhlIGNvcnJlc3BvbmRpbmcgZHJp dmVyCisJICogY2FuIHBhcnNlIHRoaXMgaW5mb3JtYXRpb24gYXMgbmVlZGVkLCBzbyBkZWxldGlu ZyByZWxldmVudCBjb2RlIGFzCisJICogY29tcGFyZWQgdG8gYmFzZSByZXZpc2lvbi4KIAkgKi8K LQlrZnJlZShyKTsKIAotCWlmIChyZXQpCi0JCWdvdG8gZGV2X3B1dDsKKwlkZXYgPSB4emFsbG9j KHN0cnVjdCBkZXZpY2UpOworCWlmICghZGV2KQorCQlyZXR1cm4gLUVOT01FTTsKIAogCS8qCiAJ ICogQWRkIGEgY29weSBvZiBJT1JUIG5vZGUgcG9pbnRlciB0byBwbGF0Zm9ybV9kYXRhIHRvCiAJ ICogYmUgdXNlZCB0byByZXRyaWV2ZSBJT1JUIGRhdGEgaW5mb3JtYXRpb24uCiAJICovCi0JcmV0 ID0gcGxhdGZvcm1fZGV2aWNlX2FkZF9kYXRhKHBkZXYsICZub2RlLCBzaXplb2Yobm9kZSkpOwot CWlmIChyZXQpCi0JCWdvdG8gZGV2X3B1dDsKLQotCS8qCi0JICogV2UgZXhwZWN0IHRoZSBkbWEg bWFza3MgdG8gYmUgZXF1aXZhbGVudCBmb3IKLQkgKiBhbGwgU01NVXMgc2V0LXVwcwotCSAqLwot CXBkZXYtPmRldi5kbWFfbWFzayA9ICZwZGV2LT5kZXYuY29oZXJlbnRfZG1hX21hc2s7CisJZGV2 LT50eXBlID0gREVWX0FDUEk7IC8qIFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQgYW5kIHdlIGNh biBjaGVjaworCQkJCSBmd25vZGUuIERlZmluaW5nIGZvciBsZWdhY3kgc3VwcG9ydCAqLworCWRl di0+YWNwaV9ub2RlID0gbm9kZTsvKiBBIGNvcHkgb2YgdGhlIG5vZGUgZG9lcyBub3Qgc2VlbSBu ZWNlc3NhcnkgKi8gCiAKIAlmd25vZGUgPSBpb3J0X2dldF9md25vZGUobm9kZSk7CiAKIAlpZiAo IWZ3bm9kZSkgewogCQlyZXQgPSAtRU5PREVWOwotCQlnb3RvIGRldl9wdXQ7CisJCWdvdG8gZXJy b3I7CiAJfQogCi0JcGRldi0+ZGV2LmZ3bm9kZSA9IGZ3bm9kZTsKLQotCWF0dHIgPSBvcHMtPmlv bW11X2lzX2NvaGVyZW50KG5vZGUpID8KLQkJCSAgICAgREVWX0RNQV9DT0hFUkVOVCA6IERFVl9E TUFfTk9OX0NPSEVSRU5UOwotCi0JLyogQ29uZmlndXJlIERNQSBmb3IgdGhlIHBhZ2UgdGFibGUg d2Fsa2VyICovCi0JYWNwaV9kbWFfY29uZmlndXJlKCZwZGV2LT5kZXYsIGF0dHIpOworCWRldi0+ Zndub2RlID0gZndub2RlOwogCi0JcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZChwZGV2KTsKLQlp ZiAocmV0KQotCQlnb3RvIGRtYV9kZWNvbmZpZ3VyZTsKKwkvKiBDYWxsIHRoZSBhY3BpIGluaXQg ZnVuY3Rpb25zIGZvciBJT01NVSBkZXZpY2VzICovCisJcmV0ID0gYWNwaV9kZXZpY2VfaW5pdChE RVZJQ0VfSU9NTVUsICh2b2lkKilkZXYsIG5vZGUtPnR5cGUpOwogCiAJcmV0dXJuIDA7CiAKLWRt YV9kZWNvbmZpZ3VyZToKLQlhY3BpX2RtYV9kZWNvbmZpZ3VyZSgmcGRldi0+ZGV2KTsKLWRldl9w dXQ6Ci0JcGxhdGZvcm1fZGV2aWNlX3B1dChwZGV2KTsKK2Vycm9yOgorCXhmcmVlKGRldik7CiAK IAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQgaW9ydF9pbml0X3BsYXRmb3Jt X2RldmljZXModm9pZCkKKy8qCisgKiBYZW46IFJlbmFtZSB0aGUgZnVuY3Rpb24gdG8gaW9ydF9p bml0X2RldmljZXMgYXMgdGhpcyBmdW5jdGlvbiB3aWxsCisgKiBwb3B1bGF0ZSB0aGUgZGV2aWNl IG9iamVjdCBmb3IgU01NVSBkZXZpY2VzLgorICovCitzdGF0aWMgdm9pZCBfX2luaXQgaW9ydF9p bml0X2RldmljZXModm9pZCkKIHsKIAlzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKmlvcnRfbm9kZSwg KmlvcnRfZW5kOwogCXN0cnVjdCBhY3BpX3RhYmxlX2lvcnQgKmlvcnQ7CkBAIC05MTQsNyArOTI5 LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGlvcnRfaW5pdF9wbGF0Zm9ybV9kZXZpY2VzKHZvaWQp CiAKIAlmb3IgKGkgPSAwOyBpIDwgaW9ydC0+bm9kZV9jb3VudDsgaSsrKSB7CiAJCWlmIChpb3J0 X25vZGUgPj0gaW9ydF9lbmQpIHsKLQkJCXByX2VycigiaW9ydCBub2RlIHBvaW50ZXIgb3ZlcmZs b3dzLCBiYWQgdGFibGVcbiIpOworCQkJcHJpbnRrKFhFTkxPR19FUlIgImlvcnQgbm9kZSBwb2lu dGVyIG92ZXJmbG93cywgYmFkIHRhYmxlXG4iKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC05Mjcs NyArOTQyLDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGlvcnRfaW5pdF9wbGF0Zm9ybV9kZXZpY2Vz KHZvaWQpCiAKIAkJCWlvcnRfc2V0X2Z3bm9kZShpb3J0X25vZGUsIGZ3bm9kZSk7CiAKLQkJCXJl dCA9IGlvcnRfYWRkX3NtbXVfcGxhdGZvcm1fZGV2aWNlKGlvcnRfbm9kZSk7CisJCQlyZXQgPSBp b3J0X2FkZF9zbW11X2RldmljZShpb3J0X25vZGUpOwogCQkJaWYgKHJldCkgewogCQkJCWlvcnRf ZGVsZXRlX2Z3bm9kZShpb3J0X25vZGUpOwogCQkJCWFjcGlfZnJlZV9md25vZGVfc3RhdGljKGZ3 bm9kZSk7CkBAIC05NDksMTMgKzk2NCwxNCBAQCB2b2lkIF9faW5pdCBhY3BpX2lvcnRfaW5pdCh2 b2lkKQogCQlpZiAoc3RhdHVzICE9IEFFX05PVF9GT1VORCkgewogCQkJY29uc3QgY2hhciAqbXNn ID0gYWNwaV9mb3JtYXRfZXhjZXB0aW9uKHN0YXR1cyk7CiAKLQkJCXByX2VycigiRmFpbGVkIHRv IGdldCB0YWJsZSwgJXNcbiIsIG1zZyk7CisJCQlwcmludGsoWEVOTE9HX0VSUiAiRmFpbGVkIHRv IGdldCB0YWJsZSwgJXNcbiIsIG1zZyk7CiAJCX0KIAogCQlyZXR1cm47CiAJfQogCi0JaW9ydF9p bml0X3BsYXRmb3JtX2RldmljZXMoKTsKKwlpb3J0X2luaXRfZGV2aWNlcygpOwogCi0JYWNwaV9w cm9iZV9kZXZpY2VfdGFibGUoaW9ydCk7CisgICAgICAgIC8qIE5vdCB1c2VkIGZvciBub3cgKi8K KwkvL2FjcGlfcHJvYmVfZGV2aWNlX3RhYmxlKGlvcnQpOwogfQpkaWZmIC0tZ2l0IGEveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h cm0vaW9tbXUuYwppbmRleCBlZGY3MGMyLi4xMzk3ZGE1IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hcm0vaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h cm0vaW9tbXUuYwpAQCAtNzQsMjQgKzc0LDI2IEBAIGludCBhcmNoX2lvbW11X3BvcHVsYXRlX3Bh Z2VfdGFibGUoc3RydWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4gLUVOT1NZUzsKIH0KIAorLyoK KyAqIFRoZSBvcHMgcGFyYW1ldGVyIGluIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgYmUgTlVM TCBmb3IgWGVuLAorICogYXMgdGhlIG9wcyBhcmUgc2V0IHBlciBkb21haW4uCisgKi8KIGludCBp b21tdV9md3NwZWNfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBmd25vZGVfaGFuZGxl ICppb21tdV9md25vZGUsCiAgICAgICAgIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wcykKIHsK ICAgICBzdHJ1Y3QgaW9tbXVfZndzcGVjICpmd3NwZWMgPSBkZXYtPmlvbW11X2Z3c3BlYzsKIAor ICAgIC8qCisgICAgICogZndzcGVjIGlzIGFscmVhZHkgYWxsb2NhdGVkIGZvciB0aGlzIGRldmlj ZS4KKyAgICAgKi8KICAgICBpZiAoZndzcGVjKQotICAgICAgICByZXR1cm4gb3BzID09IGZ3c3Bl Yy0+b3BzID8gMCA6IC1FSU5WQUw7CisgICAgICAgIHJldHVybiAwOwogCiAgICAgZndzcGVjID0g eHphbGxvYyhzdHJ1Y3QgaW9tbXVfZndzcGVjKTsKICAgICBpZiAoIWZ3c3BlYykKICAgICAgICAg cmV0dXJuIC1FTk9NRU07CiAKLSAgICAvKiBSZWYgY291bnRpbmcgZm9yIHRoZSBkdCBkZXZpY2Ug bm9kZSBpcyBub3QgbmVlZGVkICovCi0KLSAgICAvKm9mX25vZGVfZ2V0KHRvX29mX25vZGUoaW9t bXVfZndub2RlKSk7Ki8KLQogICAgIGZ3c3BlYy0+aW9tbXVfZndub2RlID0gaW9tbXVfZndub2Rl OwotICAgIGZ3c3BlYy0+b3BzID0gb3BzOwogICAgIGRldi0+aW9tbXVfZndzcGVjID0gZndzcGVj OwogICAgIHJldHVybiAwOwogfQpAQCAtMTAxLDcgKzEwMyw2IEBAIHZvaWQgaW9tbXVfZndzcGVj X2ZyZWUoc3RydWN0IGRldmljZSAqZGV2KQogICAgIHN0cnVjdCBpb21tdV9md3NwZWMgKmZ3c3Bl YyA9IGRldi0+aW9tbXVfZndzcGVjOwogCiAgICAgaWYgKGZ3c3BlYykgewotICAgICAgICAvKmZ3 bm9kZV9oYW5kbGVfcHV0KGZ3c3BlYy0+aW9tbXVfZndub2RlKTsqLwogICAgICAgICB4ZnJlZShm d3NwZWMpOwogICAgICAgICBkZXYtPmlvbW11X2Z3c3BlYyA9IE5VTEw7CiAgICAgfQpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYWNwaS9hY3BpLmggYi94ZW4vaW5jbHVkZS9hY3BpL2FjcGkuaApp bmRleCBjODUyNzAxLi4xYWM5MmIyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hY3BpL2FjcGku aAorKysgYi94ZW4vaW5jbHVkZS9hY3BpL2FjcGkuaApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1 ZGUgImFjdGJsLmgiCQkvKiBBQ1BJIHRhYmxlIGRlZmluaXRpb25zICovCiAjaW5jbHVkZSAiYWNs b2NhbC5oIgkJLyogSW50ZXJuYWwgZGF0YSB0eXBlcyAqLwogI2luY2x1ZGUgImFjb3V0cHV0Lmgi CQkvKiBFcnJvciBvdXRwdXQgYW5kIERlYnVnIG1hY3JvcyAqLworI2luY2x1ZGUgImFjcGlfaW9y dC5oIiAgICAgICAgICAvKiBVdGlsaXR5IGRlZmluZXMgZm9yIElPUlQgKi8KICNpbmNsdWRlICJh Y3Bpb3N4Zi5oIgkJLyogSW50ZXJmYWNlcyB0byB0aGUgQUNQSS10by1PUyBsYXllciAqLwogI2lu Y2x1ZGUgImFjcGl4Zi5oIgkJLyogQUNQSSBjb3JlIHN1YnN5c3RlbSBleHRlcm5hbCBpbnRlcmZh Y2VzICovCiAjaW5jbHVkZSAiYWNnbG9iYWwuaCIJCS8qIEFsbCBnbG9iYWwgdmFyaWFibGVzICov CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hY3BpL2FjcGlfaW9ydC5oIGIveGVuL2luY2x1ZGUv YWNwaS9hY3BpX2lvcnQuaAppbmRleCA3N2UwODA5Li5jMGI1YjhkIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS9hY3BpL2FjcGlfaW9ydC5oCisrKyBiL3hlbi9pbmNsdWRlL2FjcGkvYWNwaV9pb3J0 LmgKQEAgLTE5LDI3ICsxOSwzNSBAQAogI2lmbmRlZiBfX0FDUElfSU9SVF9IX18KICNkZWZpbmUg X19BQ1BJX0lPUlRfSF9fCiAKLSNpbmNsdWRlIDxsaW51eC9hY3BpLmg+Ci0jaW5jbHVkZSA8bGlu dXgvZndub2RlLmg+Ci0jaW5jbHVkZSA8bGludXgvaXJxZG9tYWluLmg+CisjaW5jbHVkZSA8eGVu L2FjcGkuaD4KKyNpbmNsdWRlIDxhc20vZGV2aWNlLmg+CiAKKy8qCisgKiBXZSBhcmUgbm90IHVz aW5nIElPUlQgSVJRIGJpbmRpbmdzIGZvciB0aGlzIGNoYW5nZSBzZXQKKyAqLworI2lmIDAKICNk ZWZpbmUgSU9SVF9JUlFfTUFTSyhpcnEpCQkoaXJxICYgMHhmZmZmZmZmZlVMTCkKICNkZWZpbmUg SU9SVF9JUlFfVFJJR0dFUl9NQVNLKGlycSkJKChpcnEgPj4gMzIpICYgMHhmZmZmZmZmZlVMTCkK IAogaW50IGlvcnRfcmVnaXN0ZXJfZG9tYWluX3Rva2VuKGludCB0cmFuc19pZCwgc3RydWN0IGZ3 bm9kZV9oYW5kbGUgKmZ3X25vZGUpOwogdm9pZCBpb3J0X2RlcmVnaXN0ZXJfZG9tYWluX3Rva2Vu KGludCB0cmFuc19pZCk7CiBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqaW9ydF9maW5kX2RvbWFpbl90 b2tlbihpbnQgdHJhbnNfaWQpOwotI2lmZGVmIENPTkZJR19BQ1BJX0lPUlQKKyNlbmRpZgorCisj aWZkZWYgQ09ORklHX0FSTV82NAogdm9pZCBhY3BpX2lvcnRfaW5pdCh2b2lkKTsKIGJvb2wgaW9y dF9ub2RlX21hdGNoKHU4IHR5cGUpOworI2lmIDAKIHUzMiBpb3J0X21zaV9tYXBfcmlkKHN0cnVj dCBkZXZpY2UgKmRldiwgdTMyIHJlcV9pZCk7CiBzdHJ1Y3QgaXJxX2RvbWFpbiAqaW9ydF9nZXRf ZGV2aWNlX2RvbWFpbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiByZXFfaWQpOwogLyogSU9NTVUg aW50ZXJmYWNlICovCiB2b2lkIGlvcnRfc2V0X2RtYV9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldik7 Ci1jb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lvbW11X2NvbmZpZ3VyZShzdHJ1Y3QgZGV2 aWNlICpkZXYpOworI2VuZGlmCithY3BpX3N0YXR1cyBpb3J0X2lvbW11X2NvbmZpZ3VyZShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBhY3BpX2lvcnRfaW5p dCh2b2lkKSB7IH0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpb3J0X25vZGVfbWF0Y2godTggdHlwZSkg eyByZXR1cm4gZmFsc2U7IH0KKyNpZiAwCiBzdGF0aWMgaW5saW5lIHUzMiBpb3J0X21zaV9tYXBf cmlkKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIHJlcV9pZCkKIHsgcmV0dXJuIHJlcV9pZDsgfQog c3RhdGljIGlubGluZSBzdHJ1Y3QgaXJxX2RvbWFpbiAqaW9ydF9nZXRfZGV2aWNlX2RvbWFpbihz dHJ1Y3QgZGV2aWNlICpkZXYsCkBAIC00NywxMiArNTUsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgaXJxX2RvbWFpbiAqaW9ydF9nZXRfZGV2aWNlX2RvbWFpbihzdHJ1Y3QgZGV2aWNlICpkZXYs CiB7IHJldHVybiBOVUxMOyB9CiAvKiBJT01NVSBpbnRlcmZhY2UgKi8KIHN0YXRpYyBpbmxpbmUg dm9pZCBpb3J0X3NldF9kbWFfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYpIHsgfQorI2VuZGlmCiBz dGF0aWMgaW5saW5lCi1jb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lvbW11X2NvbmZpZ3Vy ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCi17IHJldHVybiBOVUxMOyB9CithY3BpX3N0YXR1cyBpb21t dV9vcHMgaW9ydF9pb21tdV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KQoreyByZXR1cm4g QUVfTk9UX0lNUExFTUVOVEVEOyB9CiAjZW5kaWYKIAotI2RlZmluZSBJT1JUX0FDUElfREVDTEFS RShuYW1lLCB0YWJsZV9pZCwgZm4pCQlcCi0JQUNQSV9ERUNMQVJFX1BST0JFX0VOVFJZKGlvcnQs IG5hbWUsIHRhYmxlX2lkLCAwLCBOVUxMLCAwLCBmbikKIAogI2VuZGlmIC8qIF9fQUNQSV9JT1JU X0hfXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9kZXZpY2UuaCBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vZGV2aWNlLmgKaW5kZXggNTAyN2M4Ny4uNGVlZjljZSAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvYXNtLWFybS9kZXZpY2UuaAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJt L2RldmljZS5oCkBAIC03LDYgKzcsNyBAQAogZW51bSBkZXZpY2VfdHlwZQogewogICAgIERFVl9E VCwKKyAgICBERVZfQUNQSSwKIH07CiAKIHN0cnVjdCBkZXZfYXJjaGRhdGEgewpAQCAtMjAsNiAr MjEsNyBAQCBzdHJ1Y3QgZGV2aWNlCiAjaWZkZWYgQ09ORklHX0hBU19ERVZJQ0VfVFJFRQogICAg IHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqb2Zfbm9kZTsgLyogVXNlZCBieSBkcml2ZXJzIGltcG9y dGVkIGZyb20gTGludXggKi8KICNlbmRpZgorICAgIHZvaWQgKmFjcGlfbm9kZTsgLypDdXJyZW50 IHVzZSBjYXNlIGlzIGFjcGlfaW9ydF9ub2RlICovCiAgICAgc3RydWN0IGZ3bm9kZV9oYW5kbGUg KmZ3bm9kZTsgLypmdyBkZXZpY2Ugbm9kZSBpZGVudGlmaWVyICovCiAgICAgc3RydWN0IGlvbW11 X2Z3c3BlYyAqaW9tbXVfZndzcGVjOwogICAgIHN0cnVjdCBkZXZfYXJjaGRhdGEgYXJjaGRhdGE7 CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vYWNwaS5oIGIveGVuL2luY2x1ZGUveGVuL2Fj cGkuaAppbmRleCAzMGVjMGVlLi4yMTA2YmE5IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4v YWNwaS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9hY3BpLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAog I2luY2x1ZGUgPGFjcGkvYWNwaS5oPgogI2luY2x1ZGUgPGFzbS9hY3BpLmg+CisjaW5jbHVkZSA8 eGVuL2Z3bm9kZS5oPgogCiAjZGVmaW5lIEFDUElfTUFEVF9HRVRfKGZsZCwgeCkgKCgoeCkgJiBB Q1BJX01BRFRfIyNmbGQjI19NQVNLKSAvIFwKIAkoQUNQSV9NQURUXyMjZmxkIyNfTUFTSyAmIC1B Q1BJX01BRFRfIyNmbGQjI19NQVNLKSkKQEAgLTQ5LDYgKzUwLDI2IEBACiAgICAgICAgICAgICAg ICAgKCEoZW50cnkpKSB8fCAodW5zaWduZWQgbG9uZykoZW50cnkpICsgc2l6ZW9mKCooZW50cnkp KSA+IChlbmQpIHx8ICBcCiAgICAgICAgICAgICAgICAgKGVudHJ5KS0+aGVhZGVyLmxlbmd0aCA8 IHNpemVvZigqKGVudHJ5KSkpCiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGZ3bm9kZV9oYW5kbGUg KmFjcGlfYWxsb2NfZndub2RlX3N0YXRpYyh2b2lkKQoreworCXN0cnVjdCBmd25vZGVfaGFuZGxl ICpmd25vZGU7CisKKwlmd25vZGUgPSB4emFsbG9jKHN0cnVjdCBmd25vZGVfaGFuZGxlKTsKKwlp ZiAoIWZ3bm9kZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlmd25vZGUtPnR5cGUgPSBGV05PREVfQUNQ SV9TVEFUSUM7CisKKwlyZXR1cm4gZndub2RlOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYWNw aV9mcmVlX2Z3bm9kZV9zdGF0aWMoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSkKK3sKKwlp ZiAoV0FSTl9PTighZndub2RlIHx8IGZ3bm9kZS0+dHlwZSAhPSBGV05PREVfQUNQSV9TVEFUSUMp KQorCQlyZXR1cm47CisKKwl4ZnJlZShmd25vZGUpOworfQogI2lmZGVmIENPTkZJR19BQ1BJCiAK IGVudW0gYWNwaV9pbnRlcnJ1cHRfaWQgewpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2xp Yi5oIGIveGVuL2luY2x1ZGUveGVuL2xpYi5oCmluZGV4IDk5NWE4NWEuLjM3ODVmYWUgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9saWIuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vbGliLmgK QEAgLTksNyArOSwxMiBAQAogI2luY2x1ZGUgPGFzbS9idWcuaD4KIAogI2RlZmluZSBCVUdfT04o cCkgIGRvIHsgaWYgKHVubGlrZWx5KHApKSBCVUcoKTsgIH0gd2hpbGUgKDApCi0jZGVmaW5lIFdB Uk5fT04ocCkgZG8geyBpZiAodW5saWtlbHkocCkpIFdBUk4oKTsgfSB3aGlsZSAoMCkKKyNkZWZp bmUgV0FSTl9PTihwKSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgIGludCBfX3JldF93YXJuX29uID0gISEocCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgaWYgKHVubGlrZWx5KF9fcmV0X3dhcm5fb24pKSAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgV0FSTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgIHVubGlrZWx5KF9fcmV0X3dhcm5fb24pOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCit9KQogCiAjaWYgX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9 PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDYpCiAvKiBGb3JjZSBhIGNvbXBpbGF0aW9uIGVycm9y IGlmIGNvbmRpdGlvbiBpcyB0cnVlICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vcGNp LmggYi94ZW4vaW5jbHVkZS94ZW4vcGNpLmgKaW5kZXggNTliNmU4YS4uYzUxODU2OSAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUveGVuL3BjaS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9wY2kuaApA QCAtODgsNiArODgsNyBAQCBzdHJ1Y3QgcGNpX2RldiB7CiAjZGVmaW5lIFBUX0ZBVUxUX1RIUkVT SE9MRCAxMAogICAgIH0gZmF1bHQ7CiAgICAgdTY0IHZmX3JsZW5bNl07CisgICAgc3RydWN0IGRl dmljZSBkZXY7CiB9OwogCiAjZGVmaW5lIGZvcl9lYWNoX3BkZXYoZG9tYWluLCBwZGV2KSBcCi0t IApRdWFsY29tbSBEYXRhY2VudGVyIFRlY2hub2xvZ2llcyBhcyBhbiBhZmZpbGlhdGUgb2YgUXVh bGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBpcyBh IG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sIGEgTGludXggRm91bmRhdGlvbiBDb2xs YWJvcmF0aXZlIFByb2plY3QuCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==