From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Sameer" Subject: Re: [RFC v2 5/7] acpi:arm64: Add support for parsing IORT table Date: Thu, 19 Oct 2017 09:00:10 -0600 Message-ID: <027b88cb-2ec1-b25b-c524-4c52692af289@codeaurora.org> References: <1505954230-18892-1-git-send-email-sgoel@codeaurora.org> <1505954230-18892-6-git-send-email-sgoel@codeaurora.org> <38c8c438-498b-98e4-758d-f6924ec4b565@caviumnetworks.com> 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 1e5CJ4-0002Zw-8o for xen-devel@lists.xenproject.org; Thu, 19 Oct 2017 15:00:22 +0000 In-Reply-To: <38c8c438-498b-98e4-758d-f6924ec4b565@caviumnetworks.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Manish Jaggi , xen-devel@lists.xenproject.org, julien.grall@arm.com Cc: sstabellini@kernel.org, wei.liu2@citrix.com, george.dunlap@eu.citrix.com, Andrew.Cooper3@citrix.com, jbeulich@suse.com, Ian.Jackson@citrix.com, nd@arm.com, robin.murphy@arm.com, shankerd@codeaurora.org List-Id: xen-devel@lists.xenproject.org Ck9uIDEwLzEwLzIwMTcgNjozNiBBTSwgTWFuaXNoIEphZ2dpIHdyb3RlOgo+IEhpIFNhbWVlciwK PiBPbiA5LzIxLzIwMTcgNjowNyBBTSwgU2FtZWVyIEdvZWwgd3JvdGU6Cj4+IEFkZCBzdXBwb3J0 IGZvciBwYXJzaW5nIElPUlQgdGFibGUgdG8gaW5pdGlhbGl6ZSBTTU1VIGRldmljZXMuCj4+ICog VGhlIGNvZGUgZm9yIGNyZWF0aW5nIGFuIFNNTVUgZGV2aWNlIGhhcyBiZWVuIG1vZGlmaWVkLCBz byB0aGF0IHRoZSBTTU1VCj4+IGRldmljZSBjYW4gYmUgaW5pdGlhbGl6ZWQuCj4+ICogVGhlIE5B TUVEIE5PREUgY29kZSBoYXMgYmVlbiBjb21tZW50ZWQgb3V0IGFzIHRoaXMgd2lsbCBuZWVkIERP TTAga2VybmVsCj4+IHN1cHBvcnQuCj4+ICogSVRTIGNvZGUgaGFzIGJlZW4gaW5jbHVkZWQgYnV0 IGl0IGhhcyBub3QgYmVlbiB0ZXN0ZWQuCj4gQ291bGQgeW91IHBsZWFzZSByZWZhY3RvciB0aGlz IHBhdGNoIGludG8gYW5vdGhlciBzZXQgb2YgdHdvIHBhdGNoZXMuCj4gSSBhbSBwbGFubmluZyB0 byByZWJhc2UgbXkgSU9SVCBmb3IgRG9tMCBIaWRpbmcgcGF0Y2ggcmV3b3JrIG9uIHRoaXMgcGF0 Y2guCgpJIHdpbGwgdHJ5IHRvIGJyZWFrIHRoaXMgdXAuIExldHMgZGlzY3VzcyB0aGlzIGEgYml0 IG1vcmUgbmV4dCB3ZWVrLgo+IFRoYW5rcywKPiBNYW5pc2gKPj4gU2lnbmVkLW9mZi1ieTogU2Ft ZWVyIEdvZWwgPHNnb2VsQGNvZGVhdXJvcmEub3JnPgo+PiAtLS0KPj4gwqAgeGVuL2FyY2gvYXJt L3NldHVwLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDMgKwo+PiDCoCB4ZW4v ZHJpdmVycy9hY3BpL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+PiDCoCB4 ZW4vZHJpdmVycy9hY3BpL2FybS9NYWtlZmlsZcKgwqDCoMKgwqAgfMKgwqAgMSArCj4+IMKgIHhl bi9kcml2ZXJzL2FjcGkvYXJtL2lvcnQuY8KgwqDCoMKgwqDCoMKgIHwgMTczICsrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KPj4gwqAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YXJtL3NtbXUuYyB8wqDCoCAxICsKPj4gwqAgeGVuL2luY2x1ZGUvYWNwaS9hY3BpX2lvcnQuaMKg wqDCoMKgwqDCoCB8wqAgMTcgKystLQo+PiDCoCB4ZW4vaW5jbHVkZS9hc20tYXJtL2RldmljZS5o wqDCoMKgwqDCoMKgIHzCoMKgIDIgKwo+PiDCoCB4ZW4vaW5jbHVkZS94ZW4vYWNwaS5owqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyMSArKysrKwo+PiDCoCB4ZW4vaW5jbHVkZS94ZW4vcGNp LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4ICsrCj4+IMKgIDkgZmlsZXMgY2hh bmdlZCwgMTQ2IGluc2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQo+PiDCoCBjcmVhdGUgbW9k ZSAxMDA2NDQgeGVuL2RyaXZlcnMvYWNwaS9hcm0vTWFrZWZpbGUKPj4KPj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL2FybS9zZXR1cC5jIGIveGVuL2FyY2gvYXJtL3NldHVwLmMKPj4gaW5kZXggOTJm MTczYi4uNGJhMDliMiAxMDA2NDQKPj4gLS0tIGEveGVuL2FyY2gvYXJtL3NldHVwLmMKPj4gKysr IGIveGVuL2FyY2gvYXJtL3NldHVwLmMKPj4gQEAgLTQ5LDYgKzQ5LDcgQEAKPj4gwqAgI2luY2x1 ZGUgPGFzbS9zZXR1cC5oPgo+PiDCoCAjaW5jbHVkZSA8eHNtL3hzbS5oPgo+PiDCoCAjaW5jbHVk ZSA8YXNtL2FjcGkuaD4KPj4gKyNpbmNsdWRlIDxhY3BpL2FjcGlfaW9ydC5oPgo+PiDCoCDCoCBz dHJ1Y3QgYm9vdGluZm8gX19pbml0ZGF0YSBib290aW5mbzsKPj4gwqAgQEAgLTc5Niw2ICs3OTcs OCBAQCB2b2lkIF9faW5pdCBzdGFydF94ZW4odW5zaWduZWQgbG9uZyBib290X3BoeXNfb2Zmc2V0 LAo+PiDCoCDCoMKgwqDCoMKgIHRhc2tsZXRfc3Vic3lzX2luaXQoKTsKPj4gwqAgK8KgwqDCoCAv KiBQYXJzZSB0aGUgQUNQSSBpb3J0IGRhdGEgKi8KPj4gK8KgwqDCoCBhY3BpX2lvcnRfaW5pdCgp Owo+PiDCoCDCoMKgwqDCoMKgIHhzbV9kdF9pbml0KCk7Cj4+IMKgIGRpZmYgLS1naXQgYS94ZW4v ZHJpdmVycy9hY3BpL01ha2VmaWxlIGIveGVuL2RyaXZlcnMvYWNwaS9NYWtlZmlsZQo+PiBpbmRl eCA0NDRiMTFkLi5lN2ZmZDgyIDEwMDY0NAo+PiAtLS0gYS94ZW4vZHJpdmVycy9hY3BpL01ha2Vm aWxlCj4+ICsrKyBiL3hlbi9kcml2ZXJzL2FjcGkvTWFrZWZpbGUKPj4gQEAgLTEsNSArMSw2IEBA Cj4+IMKgIHN1YmRpci15ICs9IHRhYmxlcwo+PiDCoCBzdWJkaXIteSArPSB1dGlsaXRpZXMKPj4g K3N1YmRpci0kKENPTkZJR19BUk0pICs9IGFybQo+PiDCoCBzdWJkaXItJChDT05GSUdfWDg2KSAr PSBhcGVpCj4+IMKgIMKgIG9iai1iaW4teSArPSB0YWJsZXMuaW5pdC5vCj4+IGRpZmYgLS1naXQg YS94ZW4vZHJpdmVycy9hY3BpL2FybS9NYWtlZmlsZSBiL3hlbi9kcml2ZXJzL2FjcGkvYXJtL01h a2VmaWxlCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjdjMDM5YmIK Pj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi94ZW4vZHJpdmVycy9hY3BpL2FybS9NYWtlZmlsZQo+ PiBAQCAtMCwwICsxIEBACj4+ICtvYmoteSArPSBpb3J0Lm8KPj4gZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL2FjcGkvYXJtL2lvcnQuYyBiL3hlbi9kcml2ZXJzL2FjcGkvYXJtL2lvcnQuYwo+PiBp bmRleCAyZTM2OGE2Li43ZjU0MDYyIDEwMDY0NAo+PiAtLS0gYS94ZW4vZHJpdmVycy9hY3BpL2Fy bS9pb3J0LmMKPj4gKysrIGIveGVuL2RyaXZlcnMvYWNwaS9hcm0vaW9ydC5jCj4+IEBAIC0xNCwx NyArMTQsNDcgQEAKPj4gwqDCoCAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGVhcmx5IGRldGVjdGlv bi9wYXJzaW5nIG9mIEkvTyBtYXBwaW5nCj4+IMKgwqAgKiByZXBvcnRlZCB0byBPUyB0aHJvdWdo IGZpcm13YXJlIHZpYSBJL08gUmVtYXBwaW5nIFRhYmxlIChJT1JUKQo+PiDCoMKgICogSU9SVCBk b2N1bWVudCBudW1iZXI6IEFSTSBERU4gMDA0OUEKPj4gKyAqCj4+ICsgKiBCYXNlZCBvbiBMaW51 eCBkcml2ZXJzL2FjcGkvYXJtNjQvaW9ydC5jCj4+ICsgKiA9PiBjb21taXQgY2E3OGQzMTczY2Zm MzUwM2JjZDE1NzIzYjA0OTc1N2Y3NTc2MmQxNQo+PiArICoKPj4gKyAqIFhlbiBtb2RpZmljYXRp b246Cj4+ICsgKiBTYW1lZXIgR29lbCA8c2dvZWxAY29kZWF1cm9yYS5vcmc+Cj4+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMTcsIFRoZSBMaW51eCBGb3VuZGF0aW9uLCBBbGwgcmlnaHRzIHJlc2VydmVk Lgo+PiArICoKPj4gwqDCoCAqLwo+PiDCoCAtI2RlZmluZSBwcl9mbXQoZm10KcKgwqDCoCAiQUNQ STogSU9SVDogIiBmbXQKPj4gLQo+PiAtI2luY2x1ZGUgPGxpbnV4L2FjcGlfaW9ydC5oPgo+PiAt I2luY2x1ZGUgPGxpbnV4L2lvbW11Lmg+Cj4+IC0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4+ IC0jaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+PiAtI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgo+PiAt I2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+PiAtI2luY2x1ZGUgPGxpbnV4L3Ns YWIuaD4KPj4gKyNpbmNsdWRlIDx4ZW4vYWNwaS5oPgo+PiArI2luY2x1ZGUgPGFjcGkvYWNwaV9p b3J0Lmg+Cj4+ICsjaW5jbHVkZSA8eGVuL2Z3bm9kZS5oPgo+PiArI2luY2x1ZGUgPHhlbi9pb21t dS5oPgo+PiArI2luY2x1ZGUgPHhlbi9saWIuaD4KPj4gKyNpbmNsdWRlIDx4ZW4vbGlzdC5oPgo+ PiArI2luY2x1ZGUgPHhlbi9wY2kuaD4KPj4gKwo+PiArI2luY2x1ZGUgPGFzbS9kZXZpY2UuaD4K Pj4gKwo+PiArLyogWGVuOiBEZWZpbmUgY29tcGF0aWJpbGl0eSBmdW5jdGlvbnMgKi8KPj4gKyNk ZWZpbmUgRldfQlVHwqDCoMKgwqDCoMKgwqAgIltGaXJtd2FyZSBCdWddOiAiCj4+ICsjZGVmaW5l IHByX2VycihmbXQsIC4uLikgcHJpbnRrKFhFTkxPR19FUlIgZm10LCAjIyBfX1ZBX0FSR1NfXykK Pj4gKyNkZWZpbmUgcHJfd2FybihmbXQsIC4uLikgcHJpbnRrKFhFTkxPR19XQVJOSU5HIGZtdCwg IyMgX19WQV9BUkdTX18pCj4+ICsKPj4gKy8qIEFsaWFzIHRvIFhlbiBhbGxvY2F0aW9uIGhlbHBl cnMgKi8KPj4gKyNkZWZpbmUga2ZyZWUgeGZyZWUKPj4gKyNkZWZpbmUga21hbGxvYyhzaXplLCBm bGFncynCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF94bWFsbG9jKHNpemUsIHNpemVvZih2b2lkICop KQo+PiArI2RlZmluZSBremFsbG9jKHNpemUsIGZsYWdzKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg X3h6YWxsb2Moc2l6ZSwgc2l6ZW9mKHZvaWQgKikpCj4+ICsKPj4gKy8qIFJlZGVmaW5lIFdBUk4g bWFjcm9zICovCj4+ICsjdW5kZWYgV0FSTgo+PiArI3VuZGVmIFdBUk5fT04KPj4gKyNkZWZpbmUg V0FSTihjb25kaXRpb24sIGZvcm1hdC4uLikgKHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBcCj4+ICvCoMKgwqAgaW50IF9fcmV0X3dhcm5fb24gPSAhIShjb25kaXRpb24p O8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqAgaWYgKHVubGlrZWx5 KF9fcmV0X3dhcm5fb24pKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwK Pj4gK8KgwqDCoMKgwqDCoMKgIHByaW50ayhmb3JtYXQpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIHVubGlrZWx5KF9fcmV0X3dhcm5f b24pO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK30pCj4+ICsj ZGVmaW5lIFdBUk5fVEFJTlQoY29uZCwgdGFpbnQsIGZvcm1hdC4uLikgV0FSTihjb25kLCBmb3Jt YXQpCj4+ICsjZGVmaW5lIFdBUk5fT04oY29uZCnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKCEhY29uZCkKPj4gwqAgwqAgI2RlZmluZSBJT1JUX1RZUEVfTUFTSyh0 eXBlKcKgwqDCoCAoMSA8PCAodHlwZSkpCj4+IMKgICNkZWZpbmUgSU9SVF9NU0lfVFlQRcKgwqDC oMKgwqDCoMKgICgxIDw8IEFDUElfSU9SVF9OT0RFX0lUU19HUk9VUCkKPj4gQEAgLTI1Niw2ICsy ODYsMTMgQEAgc3RhdGljIGFjcGlfc3RhdHVzIGlvcnRfbWF0Y2hfbm9kZV9jYWxsYmFjayhzdHJ1 Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUsCj4+IMKgwqDCoMKgwqAgYWNwaV9zdGF0dXMgc3RhdHVz Owo+PiDCoCDCoMKgwqDCoMKgIGlmIChub2RlLT50eXBlID09IEFDUElfSU9SVF9OT0RFX05BTUVE X0NPTVBPTkVOVCkgewo+PiArwqDCoMKgwqDCoMKgwqAgc3RhdHVzID0gQUVfTk9UX0lNUExFTUVO VEVEOwo+PiArLyoKPj4gKyAqIFdlIG5lZWQgdGhlIG5hbWVzcGFjZSBvYmplY3QgbmFtZSBmcm9t IGRzZHQgdG8gbWF0Y2ggdGhlIGlvcnQgbm9kZSwgdGhpcwo+PiArICogd2lsbCBuZWVkIGFkZGl0 aW9ucyB0byB0aGUga2VybmVsIHhlbiBidXMgbm90aWZpZXJzLgo+PiArICogU28sIGRpc2FibGlu ZyB0aGUgbmFtZWQgbm9kZSBjb2RlIHRpbGwgYSBwcm9wb3NhbCBpcyBhcHByb3ZlZC4KPj4gKyAq Lwo+PiArI2lmIDAKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhY3BpX2J1ZmZlciBidWYg PSB7IEFDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMIH07Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYgPSB0b19hY3BpX2RldmljZV9ub2RlKGRldi0+Zndub2Rl KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhY3BpX2lvcnRfbmFtZWRfY29tcG9uZW50 ICpuY29tcDsKPj4gQEAgLTI3NSwxMSArMzEyLDEyIEBAIHN0YXRpYyBhY3BpX3N0YXR1cyBpb3J0 X21hdGNoX25vZGVfY2FsbGJhY2soc3RydWN0IGFjcGlfaW9ydF9ub2RlICpub2RlLAo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgc3RhdHVzID0gIXN0cmNtcChuY29tcC0+ZGV2aWNlX25hbWUsIGJ1Zi5w b2ludGVyKSA/Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgQUVfT0sgOiBBRV9OT1RfRk9VTkQ7Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBhY3BpX29zX2ZyZWUoYnVmLnBvaW50ZXIpOwo+PiArI2VuZGlmCj4+IMKgwqDCoMKgwqAgfSBl bHNlIGlmIChub2RlLT50eXBlID09IEFDUElfSU9SVF9OT0RFX1BDSV9ST09UX0NPTVBMRVgpIHsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhY3BpX2lvcnRfcm9vdF9jb21wbGV4ICpwY2lf cmM7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcGNpX2J1cyAqYnVzOwo+PiArwqDCoMKgwqDC oMKgwqAgc3RydWN0IHBjaV9kZXYgKnBjaV9kZXY7Cj4+IMKgIC3CoMKgwqDCoMKgwqDCoCBidXMg PSB0b19wY2lfYnVzKGRldik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBwY2lfZGV2ID0gdG9fcGNpX2Rl dihkZXYpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcGNpX3JjID0gKHN0cnVjdCBhY3BpX2lvcnRf cm9vdF9jb21wbGV4ICopbm9kZS0+bm9kZV9kYXRhOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAg LyoKPj4gQEAgLTI4NywxMiArMzI1LDExIEBAIHN0YXRpYyBhY3BpX3N0YXR1cyBpb3J0X21hdGNo X25vZGVfY2FsbGJhY2soc3RydWN0IGFjcGlfaW9ydF9ub2RlICpub2RlLAo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIHdpdGggcm9vdCBjb21wbGV4ZXMuIEVhY2ggc2VnbWVudCBudW1iZXIgY2Fu IHJlcHJlc2VudCBvbmx5Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICogb25lIHJvb3QgY29tcGxl eC4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4gLcKgwqDCoMKgwqDCoMKgIHN0YXR1cyA9 IHBjaV9yYy0+cGNpX3NlZ21lbnRfbnVtYmVyID09IHBjaV9kb21haW5fbnIoYnVzKSA/Cj4+ICvC oMKgwqDCoMKgwqDCoCBzdGF0dXMgPSBwY2lfcmMtPnBjaV9zZWdtZW50X251bWJlciA9PSBwY2lf ZG9tYWluX25yKHBjaV9kZXYpID8KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBRV9PSyA6IEFFX05PVF9GT1VORDsKPj4gwqDCoMKg wqDCoCB9IGVsc2Ugewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdHVzID0gQUVfTk9UX0ZPVU5E Owo+PiDCoMKgwqDCoMKgIH0KPj4gLW91dDoKPj4gwqDCoMKgwqDCoCByZXR1cm4gc3RhdHVzOwo+ PiDCoCB9Cj4+IMKgIEBAIC0zMjAsNiArMzU3LDExIEBAIHN0YXRpYyBpbnQgaW9ydF9pZF9tYXAo c3RydWN0IGFjcGlfaW9ydF9pZF9tYXBwaW5nICptYXAsIHU4IHR5cGUsIHUzMiByaWRfaW4sCj4+ IMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgKy8qCj4+ICsgKiBOYW1lZCBjb21w b25lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIHlldCBzbyB3ZSBkbyBub3QgbmVlZCB0aGUKPj4gKyAq IGlvcnRfbm9kZV9nZXRfaWQgZnVuY3Rpb24KPj4gKyAqLwo+PiArI2lmIDAKPj4gwqAgc3RhdGlj Cj4+IMKgIHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqaW9ydF9ub2RlX2dldF9pZChzdHJ1Y3QgYWNw aV9pb3J0X25vZGUgKm5vZGUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1MzIgKmlkX291dCwgdTggdHlwZV9tYXNrLAo+PiBAQCAtMzU4LDYgKzQwMCw3IEBA IHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqaW9ydF9ub2RlX2dldF9pZChzdHJ1Y3QgYWNwaV9pb3J0 X25vZGUgKm5vZGUsCj4+IMKgIMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+IMKgIH0KPj4gKyNl bmRpZgo+PiDCoCDCoCBzdGF0aWMgc3RydWN0IGFjcGlfaW9ydF9ub2RlICppb3J0X25vZGVfbWFw X3JpZChzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByaWRfaW4sIHUzMiAqcmlkX291dCwK Pj4gQEAgLTQxMCw2ICs0NTMsMTAgQEAgZmFpbF9tYXA6Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIE5V TEw7Cj4+IMKgIH0KPj4gwqAgKy8qIFhlbjogQ29tbWVudCBvdXQgdGhlIE5hbWVkQ29tcG9uZW50 IGFuZCBJVFMgbWFwcGluZyBjb2RlIHRpbGwgdGhlIHN1cHBvcnQKPj4gKyAqIGlzIGF2YWlsYWJs ZS4KPj4gKyAqLwo+PiArI2lmIDAKPj4gwqAgc3RhdGljIHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAq aW9ydF9maW5kX2Rldl9ub2RlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gwqAgewo+PiDCoMKgwqDC oMKgIHN0cnVjdCBwY2lfYnVzICpwYnVzOwo+PiBAQCAtNDgxLDcgKzUyOCw3IEBAIHN0YXRpYyBp bnQgaW9ydF9kZXZfZmluZF9pdHNfaWQoc3RydWN0IGRldmljZSAqZGV2LCB1MzIgcmVxX2lkLAo+ PiDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiDCoCB9Cj4+IMKgIC0vKioKPj4gKy8qCj4+IMKgwqAg KiBpb3J0X2dldF9kZXZpY2VfZG9tYWluKCkgLSBGaW5kIE1TSSBkb21haW4gcmVsYXRlZCB0byBh IGRldmljZQo+PiDCoMKgICogQGRldjogVGhlIGRldmljZS4KPj4gwqDCoCAqIEByZXFfaWQ6IFJl cXVlc3RlciBJRCBmb3IgdGhlIGRldmljZS4KPj4gQEAgLTUxMCw3ICs1NTcsNyBAQCBzdGF0aWMg aW50IF9fZ2V0X3BjaV9yaWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBhbGlhcywgdm9pZCAq ZGF0YSkKPj4gwqDCoMKgwqDCoCAqcmlkID0gYWxpYXM7Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIDA7 Cj4+IMKgIH0KPj4gLQo+PiArI2VuZGlmCj4+IMKgIHN0YXRpYyBpbnQgYXJtX3NtbXVfaW9ydF94 bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiBzdHJlYW1pZCwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLAo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBp b21tdV9vcHMgKm9wcykKPj4gQEAgLTU0Niw2ICs1OTMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGlvbW11X29wcyAqaW9ydF9pb21tdV94bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+IMKgwqDC oMKgwqAgcmV0dXJuIHJldCA/IE5VTEwgOiBvcHM7Cj4+IMKgIH0KPj4gwqAgKyNpZiAwIC8qIFhl bjogV2UgZG8gbm90IG5lZWQgdGhpcyBmdW5jdGlvbiBmb3IgWGVuICovCj4+IMKgIC8qKgo+PiDC oMKgICogaW9ydF9zZXRfZG1hX21hc2sgLSBTZXQtdXAgZG1hIG1hc2sgZm9yIGEgZGV2aWNlLgo+ PiDCoMKgICoKPj4gQEAgLTU2Nyw3ICs2MTUsNyBAQCB2b2lkIGlvcnRfc2V0X2RtYV9tYXNrKHN0 cnVjdCBkZXZpY2UgKmRldikKPj4gwqDCoMKgwqDCoCBpZiAoIWRldi0+ZG1hX21hc2spCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBkZXYtPmRtYV9tYXNrID0gJmRldi0+Y29oZXJlbnRfZG1hX21hc2s7 Cj4+IMKgIH0KPj4gLQo+PiArI2VuZGlmCj4+IMKgIC8qKgo+PiDCoMKgICogaW9ydF9pb21tdV9j b25maWd1cmUgLSBTZXQtdXAgSU9NTVUgY29uZmlndXJhdGlvbiBmb3IgYSBkZXZpY2UuCj4+IMKg wqAgKgo+PiBAQCAtNTgzLDE0ICs2MzEsMTMgQEAgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqaW9y dF9pb21tdV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KQo+PiDCoMKgwqDCoMKgIHUzMiBz dHJlYW1pZCA9IDA7Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKGRldl9pc19wY2koZGV2KSkgewo+PiAt wqDCoMKgwqDCoMKgwqAgc3RydWN0IHBjaV9idXMgKmJ1cyA9IHRvX3BjaV9kZXYoZGV2KS0+YnVz Owo+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHBjaV9kZXYgKnBjaV9kZXZpY2UgPSB0b19wY2lf ZGV2KGRldik7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcmlkOwo+PiDCoCAtwqDCoMKgwqDC oMKgwqAgcGNpX2Zvcl9lYWNoX2RtYV9hbGlhcyh0b19wY2lfZGV2KGRldiksIF9fZ2V0X3BjaV9y aWQsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmcmlk KTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJpZCA9IFBDSV9CREYyKHBjaV9kZXZpY2UtPmJ1cywgcGNp X2RldmljZS0+ZGV2Zm4pOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgbm9kZSA9IGlvcnRfc2Nh bl9ub2RlKEFDUElfSU9SVF9OT0RFX1BDSV9ST09UX0NPTVBMRVgsCj4+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW9ydF9tYXRjaF9ub2RlX2NhbGxiYWNrLCAm YnVzLT5kZXYpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlvcnRfbWF0Y2hfbm9kZV9jYWxsYmFjaywgZGV2KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGlm ICghbm9kZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+IMKg IEBAIC02MDAsNiArNjQ3LDEzIEBAIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKmlvcnRfaW9tbXVf Y29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIG9wcyA9 IGlvcnRfaW9tbXVfeGxhdGUoZGV2LCBwYXJlbnQsIHN0cmVhbWlkKTsKPj4gwqAgwqDCoMKgwqDC oCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+ICsvKgo+PiArICog V2UgbmVlZCB0aGUgbmFtZXNwYWNlIG9iamVjdCBuYW1lIGZyb20gZHNkdCB0byBtYXRjaCB0aGUg aW9ydCBub2RlLCB0aGlzCj4+ICsgKiB3aWxsIG5lZWQgYWRkaXRpb25zIHRvIHRoZSBrZXJuZWwg eGVuIGJ1cyBub3RpZmllcnMuCj4+ICsgKiBTbywgZGlzYWJsaW5nIHRoZSBuYW1lZCBub2RlIGNv ZGUgdGlsbCBhIHByb3Bvc2FsIGlzIGFwcHJvdmVkLgo+PiArICovCj4+ICsjaWYgMAo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgaW50IGkgPSAwOwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgbm9kZSA9 IGlvcnRfc2Nhbl9ub2RlKEFDUElfSU9SVF9OT0RFX05BTUVEX0NPTVBPTkVOVCwKPj4gQEAgLTYx NiwxMSArNjcwLDE3IEBAIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKmlvcnRfaW9tbXVfY29uZmln dXJlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFy ZW50ID0gaW9ydF9ub2RlX2dldF9pZChub2RlLCAmc3RyZWFtaWQsCj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJT1JUX0lPTU1VX1RZUEUs IGkrKyk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsjZW5kaWYKPj4gwqDCoMKgwqDCoCB9 Cj4+IMKgIMKgwqDCoMKgwqAgcmV0dXJuIG9wczsKPj4gwqAgfQo+PiDCoCArLyoKPj4gKyAqIFhl bjogTm90IHVzaW5nIHRoZSBwYXJzaW5nIG9wcyBmb3Igbm93LiBOZWVkIHRvIGNoZWNrIGFuZCBz ZWUgaWYgaXQgd2lsbAo+PiArICogYmUgdXNlZnVsIHRvIHVzZSB0aGVzZSBpbiBzb21lIGZvcm0s IG9yIGxldCB0aGUgZHJpdmVyIHBhcnNlIElPUlQgbm9kZS4KPj4gKyAqLwo+PiArI2lmIDAKPj4g wqAgc3RhdGljIHZvaWQgX19pbml0IGFjcGlfaW9ydF9yZWdpc3Rlcl9pcnEoaW50IGh3aXJxLCBj b25zdCBjaGFyICpuYW1lLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludCB0cmlnZ2VyLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCByZXNvdXJjZSAqcmVzKQo+PiBAQCAtODA3LDcgKzg2Nyw3 IEBAIGNvbnN0IHN0cnVjdCBpb3J0X2lvbW11X2NvbmZpZyAqaW9ydF9nZXRfaW9tbXVfY2ZnKHN0 cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9kZSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBO VUxMOwo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgfQo+PiAtCj4+ICsjZW5kaWYKPj4gwqAgLyoqCj4+ IMKgwqAgKiBpb3J0X2FkZF9zbW11X3BsYXRmb3JtX2RldmljZSgpIC0gQWxsb2NhdGUgYSBwbGF0 Zm9ybSBkZXZpY2UgZm9yIFNNTVUKPj4gwqDCoCAqIEBub2RlOiBQb2ludGVyIHRvIFNNTVUgQUNQ SSBJT1JUIG5vZGUKPj4gQEAgLTgxNyw3OCArODc3LDQyIEBAIGNvbnN0IHN0cnVjdCBpb3J0X2lv bW11X2NvbmZpZyAqaW9ydF9nZXRfaW9tbXVfY2ZnKHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9k ZSkKPj4gwqAgc3RhdGljIGludCBfX2luaXQgaW9ydF9hZGRfc21tdV9wbGF0Zm9ybV9kZXZpY2Uo c3RydWN0IGFjcGlfaW9ydF9ub2RlICpub2RlKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgc3RydWN0 IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZTsKPj4gLcKgwqDCoCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2Owo+PiAtwqDCoMKgIHN0cnVjdCByZXNvdXJjZSAqcjsKPj4gLcKgwqDCoCBlbnVtIGRl dl9kbWFfYXR0ciBhdHRyOwo+PiAtwqDCoMKgIGludCByZXQsIGNvdW50Owo+PiAtwqDCoMKgIGNv bnN0IHN0cnVjdCBpb3J0X2lvbW11X2NvbmZpZyAqb3BzID0gaW9ydF9nZXRfaW9tbXVfY2ZnKG5v ZGUpOwo+PiAtCj4+IC3CoMKgwqAgaWYgKCFvcHMpCj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4g LUVOT0RFVjsKPj4gLQo+PiAtwqDCoMKgIHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfYWxsb2Mob3Bz LT5uYW1lLCBQTEFURk9STV9ERVZJRF9BVVRPKTsKPj4gLcKgwqDCoCBpZiAoIXBkZXYpCj4+IC3C oMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4gLQo+PiAtwqDCoMKgIGNvdW50ID0gb3Bz LT5pb21tdV9jb3VudF9yZXNvdXJjZXMobm9kZSk7Cj4+IC0KPj4gLcKgwqDCoCByID0ga2NhbGxv Yyhjb3VudCwgc2l6ZW9mKCpyKSwgR0ZQX0tFUk5FTCk7Cj4+IC3CoMKgwqAgaWYgKCFyKSB7Cj4+ IC3CoMKgwqDCoMKgwqDCoCByZXQgPSAtRU5PTUVNOwo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBk ZXZfcHV0Owo+PiAtwqDCoMKgIH0KPj4gLQo+PiAtwqDCoMKgIG9wcy0+aW9tbXVfaW5pdF9yZXNv dXJjZXMociwgbm9kZSk7Cj4+ICvCoMKgwqAgc3RydWN0IGRldmljZSAqZGV2Owo+PiArwqDCoMKg IGludCByZXQ7Cj4+IMKgIC3CoMKgwqAgcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZF9yZXNvdXJj ZXMocGRldiwgciwgY291bnQpOwo+PiDCoMKgwqDCoMKgIC8qCj4+IC3CoMKgwqDCoCAqIFJlc291 cmNlcyBhcmUgZHVwbGljYXRlZCBpbiBwbGF0Zm9ybV9kZXZpY2VfYWRkX3Jlc291cmNlcywKPj4g LcKgwqDCoMKgICogZnJlZSB0aGVpciBhbGxvY2F0ZWQgbWVtb3J5Cj4+ICvCoMKgwqDCoCAqIE5v dCBlbmFibGluZyB0aGUgcGFyc2luZyBvcHMgZm9yIG5vdy4gVGhlIGNvcnJlc3BvbmRpbmcgZHJp dmVyCj4+ICvCoMKgwqDCoCAqIGNhbiBwYXJzZSB0aGlzIGluZm9ybWF0aW9uIGFzIG5lZWRlZCwg c28gZGVsZXRpbmcgcmVsZXZhbnQgY29kZSBhcwo+PiArwqDCoMKgwqAgKiBjb21wYXJlZCB0byBi YXNlIHJldmlzaW9uLgo+PiDCoMKgwqDCoMKgwqAgKi8KPj4gLcKgwqDCoCBrZnJlZShyKTsKPj4g wqAgLcKgwqDCoCBpZiAocmV0KQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBkZXZfcHV0Owo+PiAr wqDCoMKgIGRldiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkZXZpY2UpLCBHRlBfS0VSTkVMKTsK Pj4gK8KgwqDCoCBpZiAoIWRldikKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+ PiDCoCDCoMKgwqDCoMKgIC8qCj4+IMKgwqDCoMKgwqDCoCAqIEFkZCBhIGNvcHkgb2YgSU9SVCBu b2RlIHBvaW50ZXIgdG8gcGxhdGZvcm1fZGF0YSB0bwo+PiDCoMKgwqDCoMKgwqAgKiBiZSB1c2Vk IHRvIHJldHJpZXZlIElPUlQgZGF0YSBpbmZvcm1hdGlvbi4KPj4gwqDCoMKgwqDCoMKgICovCj4+ IC3CoMKgwqAgcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZF9kYXRhKHBkZXYsICZub2RlLCBzaXpl b2Yobm9kZSkpOwo+PiAtwqDCoMKgIGlmIChyZXQpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGRl dl9wdXQ7Cj4+IC0KPj4gLcKgwqDCoCAvKgo+PiAtwqDCoMKgwqAgKiBXZSBleHBlY3QgdGhlIGRt YSBtYXNrcyB0byBiZSBlcXVpdmFsZW50IGZvcgo+PiAtwqDCoMKgwqAgKiBhbGwgU01NVXMgc2V0 LXVwcwo+PiAtwqDCoMKgwqAgKi8KPj4gLcKgwqDCoCBwZGV2LT5kZXYuZG1hX21hc2sgPSAmcGRl di0+ZGV2LmNvaGVyZW50X2RtYV9tYXNrOwo+PiArwqDCoMKgIGRldi0+dHlwZSA9IERFVl9BQ1BJ Owo+PiArwqDCoMKgIGRldi0+YWNwaV9ub2RlID0gbm9kZTsKPj4gwqAgwqDCoMKgwqDCoCBmd25v ZGUgPSBpb3J0X2dldF9md25vZGUobm9kZSk7Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKCFmd25vZGUp IHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9ERVY7Cj4+IC3CoMKgwqDCoMKgwqDC oCBnb3RvIGRldl9wdXQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGVycm9yOwo+PiDCoMKgwqDC oMKgIH0KPj4gwqAgLcKgwqDCoCBwZGV2LT5kZXYuZndub2RlID0gZndub2RlOwo+PiAtCj4+IC3C oMKgwqAgYXR0ciA9IG9wcy0+aW9tbXVfaXNfY29oZXJlbnQobm9kZSkgPwo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgREVWX0RNQV9DT0hFUkVOVCA6IERFVl9ETUFfTk9OX0NP SEVSRU5UOwo+PiAtCj4+IC3CoMKgwqAgLyogQ29uZmlndXJlIERNQSBmb3IgdGhlIHBhZ2UgdGFi bGUgd2Fsa2VyICovCj4+IC3CoMKgwqAgYWNwaV9kbWFfY29uZmlndXJlKCZwZGV2LT5kZXYsIGF0 dHIpOwo+PiArwqDCoMKgIGRldi0+Zndub2RlID0gZndub2RlOwo+PiDCoCAtwqDCoMKgIHJldCA9 IHBsYXRmb3JtX2RldmljZV9hZGQocGRldik7Cj4+IC3CoMKgwqAgaWYgKHJldCkKPj4gLcKgwqDC oMKgwqDCoMKgIGdvdG8gZG1hX2RlY29uZmlndXJlOwo+PiArwqDCoMKgIC8qIENhbGwgdGhlIGFj cGkgaW5pdCBmdW5jdGlvbnMgZm9yIElPTU1VIGRldmljZXMgKi8KPj4gK8KgwqDCoCByZXQgPSBh Y3BpX2RldmljZV9pbml0KERFVklDRV9JT01NVSwgKHZvaWQgKilkZXYsIG5vZGUtPnR5cGUpOwo+ PiDCoCDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiDCoCAtZG1hX2RlY29uZmlndXJlOgo+PiAtwqDC oMKgIGFjcGlfZG1hX2RlY29uZmlndXJlKCZwZGV2LT5kZXYpOwo+PiAtZGV2X3B1dDoKPj4gLcKg wqDCoCBwbGF0Zm9ybV9kZXZpY2VfcHV0KHBkZXYpOwo+PiArZXJyb3I6Cj4+ICvCoMKgwqAga2Zy ZWUoZGV2KTsKPj4gwqAgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiDCoCB9Cj4+IEBAIC05NTcs NSArOTgxLDYgQEAgdm9pZCBfX2luaXQgYWNwaV9pb3J0X2luaXQodm9pZCkKPj4gwqAgwqDCoMKg wqDCoCBpb3J0X2luaXRfcGxhdGZvcm1fZGV2aWNlcygpOwo+PiDCoCAtwqDCoMKgIGFjcGlfcHJv YmVfZGV2aWNlX3RhYmxlKGlvcnQpOwo+PiArwqDCoMKgIC8qIFhlbjsgRG8gbm90IG5lZWQgYSBk ZXZpY2UgdGFibGUgcHJvYmUgKi8KPj4gK8KgwqDCoCAvKiBhY3BpX3Byb2JlX2RldmljZV90YWJs ZShpb3J0KTsqLwo+PiDCoCB9Cj4+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hcm0vc21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwo+PiBpbmRl eCAzNjJkNTc4Li5hZDk1NmQ1IDEwMDY0NAo+PiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hcm0vc21tdS5jCj4+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMK Pj4gQEAgLTE4MSw2ICsxODEsNyBAQCBzdGF0aWMgdm9pZCBfX2lvbWVtICpkZXZtX2lvcmVtYXBf cmVzb3VyY2Uoc3RydWN0IGRldmljZSAqZGV2LAo+PiDCoMKgICogWGVuOiBQQ0kgZnVuY3Rpb25z Cj4+IMKgwqAgKiBUT0RPOiBJdCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hlbiBQQ0kgd2lsbCBi ZSBzdXBwb3J0ZWQKPj4gwqDCoCAqLwo+PiArI3VuZGVmIHRvX3BjaV9kZXYKPj4gwqAgI2RlZmlu ZSB0b19wY2lfZGV2KGRldinCoMKgwqAgKE5VTEwpCj4+IMKgIHN0YXRpYyBpbmxpbmUgaW50IHBj aV9mb3JfZWFjaF9kbWFfYWxpYXMoc3RydWN0IHBjaV9kZXYgKnBkZXYsCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCAoKmZuKSAoc3RydWN0IHBjaV9k ZXYgKnBkZXYsCj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hY3BpL2FjcGlfaW9ydC5oIGIv eGVuL2luY2x1ZGUvYWNwaS9hY3BpX2lvcnQuaAo+PiBpbmRleCA3N2UwODA5Li5kNDMxNWE0IDEw MDY0NAo+PiAtLS0gYS94ZW4vaW5jbHVkZS9hY3BpL2FjcGlfaW9ydC5oCj4+ICsrKyBiL3hlbi9p bmNsdWRlL2FjcGkvYWNwaV9pb3J0LmgKPj4gQEAgLTE5LDI3ICsxOSwzMiBAQAo+PiDCoCAjaWZu ZGVmIF9fQUNQSV9JT1JUX0hfXwo+PiDCoCAjZGVmaW5lIF9fQUNQSV9JT1JUX0hfXwo+PiDCoCAt I2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9md25vZGUuaD4KPj4g LSNpbmNsdWRlIDxsaW51eC9pcnFkb21haW4uaD4KPj4gKyNpbmNsdWRlIDx4ZW4vYWNwaS5oPgo+ PiArI2luY2x1ZGUgPGFzbS9kZXZpY2UuaD4KPj4gwqAgKy8qIFhlbjogTm90IHVzaW5nIElPUlQg SVJRIGJpbmRpbmdzICovCj4+ICsjaWYgMAo+PiDCoCAjZGVmaW5lIElPUlRfSVJRX01BU0soaXJx KcKgwqDCoMKgwqDCoMKgIChpcnEgJiAweGZmZmZmZmZmVUxMKQo+PiDCoCAjZGVmaW5lIElPUlRf SVJRX1RSSUdHRVJfTUFTSyhpcnEpwqDCoMKgICgoaXJxID4+IDMyKSAmIDB4ZmZmZmZmZmZVTEwp Cj4+IMKgIMKgIGludCBpb3J0X3JlZ2lzdGVyX2RvbWFpbl90b2tlbihpbnQgdHJhbnNfaWQsIHN0 cnVjdCBmd25vZGVfaGFuZGxlICpmd19ub2RlKTsKPj4gwqAgdm9pZCBpb3J0X2RlcmVnaXN0ZXJf ZG9tYWluX3Rva2VuKGludCB0cmFuc19pZCk7Cj4+IMKgIHN0cnVjdCBmd25vZGVfaGFuZGxlICpp b3J0X2ZpbmRfZG9tYWluX3Rva2VuKGludCB0cmFuc19pZCk7Cj4+IC0jaWZkZWYgQ09ORklHX0FD UElfSU9SVAo+PiArI2VuZGlmCj4+ICsjaWZkZWYgQ09ORklHX0FSTV82NAo+PiDCoCB2b2lkIGFj cGlfaW9ydF9pbml0KHZvaWQpOwo+PiDCoCBib29sIGlvcnRfbm9kZV9tYXRjaCh1OCB0eXBlKTsK Pj4gKyNpZiAwCj4+IMKgIHUzMiBpb3J0X21zaV9tYXBfcmlkKHN0cnVjdCBkZXZpY2UgKmRldiwg dTMyIHJlcV9pZCk7Cj4+IMKgIHN0cnVjdCBpcnFfZG9tYWluICppb3J0X2dldF9kZXZpY2VfZG9t YWluKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIHJlcV9pZCk7Cj4+IMKgIC8qIElPTU1VIGludGVy ZmFjZSAqLwo+PiDCoCB2b2lkIGlvcnRfc2V0X2RtYV9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldik7 Cj4+ICsjZW5kaWYKPj4gwqAgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqaW9ydF9pb21tdV9jb25m aWd1cmUoc3RydWN0IGRldmljZSAqZGV2KTsKPj4gwqAgI2Vsc2UKPj4gwqAgc3RhdGljIGlubGlu ZSB2b2lkIGFjcGlfaW9ydF9pbml0KHZvaWQpIHsgfQo+PiDCoCBzdGF0aWMgaW5saW5lIGJvb2wg aW9ydF9ub2RlX21hdGNoKHU4IHR5cGUpIHsgcmV0dXJuIGZhbHNlOyB9Cj4+ICsjaWYgMAo+PiDC oCBzdGF0aWMgaW5saW5lIHUzMiBpb3J0X21zaV9tYXBfcmlkKHN0cnVjdCBkZXZpY2UgKmRldiwg dTMyIHJlcV9pZCkKPj4gwqAgeyByZXR1cm4gcmVxX2lkOyB9Cj4+IMKgIHN0YXRpYyBpbmxpbmUg c3RydWN0IGlycV9kb21haW4gKmlvcnRfZ2V0X2RldmljZV9kb21haW4oc3RydWN0IGRldmljZSAq ZGV2LAo+PiBAQCAtNDcsMTIgKzUyLDEwIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlycV9kb21h aW4gKmlvcnRfZ2V0X2RldmljZV9kb21haW4oc3RydWN0IGRldmljZSAqZGV2LAo+PiDCoCB7IHJl dHVybiBOVUxMOyB9Cj4+IMKgIC8qIElPTU1VIGludGVyZmFjZSAqLwo+PiDCoCBzdGF0aWMgaW5s aW5lIHZvaWQgaW9ydF9zZXRfZG1hX21hc2soc3RydWN0IGRldmljZSAqZGV2KSB7IH0KPj4gKyNl bmRpZgo+PiDCoCBzdGF0aWMgaW5saW5lCj4+IMKgIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKmlv cnRfaW9tbXVfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gwqAgeyByZXR1cm4gTlVM TDsgfQo+PiDCoCAjZW5kaWYKPj4gwqAgLSNkZWZpbmUgSU9SVF9BQ1BJX0RFQ0xBUkUobmFtZSwg dGFibGVfaWQsIGZuKcKgwqDCoMKgwqDCoMKgIFwKPj4gLcKgwqDCoCBBQ1BJX0RFQ0xBUkVfUFJP QkVfRU5UUlkoaW9ydCwgbmFtZSwgdGFibGVfaWQsIDAsIE5VTEwsIDAsIGZuKQo+PiAtCj4+IMKg ICNlbmRpZiAvKiBfX0FDUElfSU9SVF9IX18gKi8KPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS1hcm0vZGV2aWNlLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RldmljZS5oCj4+IGluZGV4 IDUwMjdjODcuLjRlZWY5Y2UgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZGV2 aWNlLmgKPj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kZXZpY2UuaAo+PiBAQCAtNyw2ICs3 LDcgQEAKPj4gwqAgZW51bSBkZXZpY2VfdHlwZQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgREVWX0RU LAo+PiArwqDCoMKgIERFVl9BQ1BJLAo+PiDCoCB9Owo+PiDCoCDCoCBzdHJ1Y3QgZGV2X2FyY2hk YXRhIHsKPj4gQEAgLTIwLDYgKzIxLDcgQEAgc3RydWN0IGRldmljZQo+PiDCoCAjaWZkZWYgQ09O RklHX0hBU19ERVZJQ0VfVFJFRQo+PiDCoMKgwqDCoMKgIHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAq b2Zfbm9kZTsgLyogVXNlZCBieSBkcml2ZXJzIGltcG9ydGVkIGZyb20gTGludXggKi8KPj4gwqAg I2VuZGlmCj4+ICvCoMKgwqAgdm9pZCAqYWNwaV9ub2RlOyAvKkN1cnJlbnQgdXNlIGNhc2UgaXMg YWNwaV9pb3J0X25vZGUgKi8KPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndu b2RlOyAvKmZ3IGRldmljZSBub2RlIGlkZW50aWZpZXIgKi8KPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qg aW9tbXVfZndzcGVjICppb21tdV9md3NwZWM7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRldl9hcmNo ZGF0YSBhcmNoZGF0YTsKPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9hY3BpLmggYi94 ZW4vaW5jbHVkZS94ZW4vYWNwaS5oCj4+IGluZGV4IDk0MDkzNTAuLjJmNmFhZTEgMTAwNjQ0Cj4+ IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9hY3BpLmgKPj4gKysrIGIveGVuL2luY2x1ZGUveGVuL2Fj cGkuaAo+PiBAQCAtMzIsNiArMzIsNyBAQAo+PiDCoCDCoCAjaW5jbHVkZSA8YWNwaS9hY3BpLmg+ Cj4+IMKgICNpbmNsdWRlIDxhc20vYWNwaS5oPgo+PiArI2luY2x1ZGUgPHhlbi9md25vZGUuaD4K Pj4gwqAgwqAgI2RlZmluZSBBQ1BJX01BRFRfR0VUXyhmbGQsIHgpICgoKHgpICYgQUNQSV9NQURU XyMjZmxkIyNfTUFTSykgLyBcCj4+IMKgwqDCoMKgwqAgKEFDUElfTUFEVF8jI2ZsZCMjX01BU0sg JiAtQUNQSV9NQURUXyMjZmxkIyNfTUFTSykpCj4+IEBAIC00OSw2ICs1MCwyNiBAQAo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICghKGVudHJ5KSkgfHwgKHVuc2lnbmVkIGxv bmcpKGVudHJ5KSArIHNpemVvZigqKGVudHJ5KSkgPiAoZW5kKSB8fMKgIFwKPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZW50cnkpLT5oZWFkZXIubGVuZ3RoIDwgc2l6ZW9m KCooZW50cnkpKSkKPj4gwqAgK3N0YXRpYyBpbmxpbmUgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmFj cGlfYWxsb2NfZndub2RlX3N0YXRpYyh2b2lkKQo+PiArewo+PiArwqDCoMKgIHN0cnVjdCBmd25v ZGVfaGFuZGxlICpmd25vZGU7Cj4+ICsKPj4gK8KgwqDCoCBmd25vZGUgPSB4emFsbG9jKHN0cnVj dCBmd25vZGVfaGFuZGxlKTsKPj4gK8KgwqDCoCBpZiAoIWZ3bm9kZSkKPj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiBOVUxMOwo+PiArCj4+ICvCoMKgwqAgZndub2RlLT50eXBlID0gRldOT0RFX0FD UElfU1RBVElDOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIGZ3bm9kZTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGlubGluZSB2b2lkIGFjcGlfZnJlZV9md25vZGVfc3RhdGljKHN0cnVjdCBmd25vZGVf aGFuZGxlICpmd25vZGUpCj4+ICt7Cj4+ICvCoMKgwqAgaWYgKCFmd25vZGUgfHwgZndub2RlLT50 eXBlICE9IEZXTk9ERV9BQ1BJX1NUQVRJQykKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4g Kwo+PiArwqDCoMKgIHhmcmVlKGZ3bm9kZSk7Cj4+ICt9Cj4+IMKgICNpZmRlZiBDT05GSUdfQUNQ SQo+PiDCoCDCoCBlbnVtIGFjcGlfaW50ZXJydXB0X2lkIHsKPj4gZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hlbi9wY2kuaCBiL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAo+PiBpbmRleCA0M2YyMTI1 Li4xODJiMWE1IDEwMDY0NAo+PiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vcGNpLmgKPj4gKysrIGIv eGVuL2luY2x1ZGUveGVuL3BjaS5oCj4+IEBAIC05Miw4ICs5MiwxNiBAQCBzdHJ1Y3QgcGNpX2Rl diB7Cj4+IMKgICNkZWZpbmUgUFRfRkFVTFRfVEhSRVNIT0xEIDEwCj4+IMKgwqDCoMKgwqAgfSBm YXVsdDsKPj4gwqDCoMKgwqDCoCB1NjQgdmZfcmxlbls2XTsKPj4gKyNpZmRlZiBDT05GSUdfQVJN Cj4+ICvCoMKgwqAgc3RydWN0IGRldmljZSBkZXY7Cj4+ICsjZW5kaWYKPj4gwqAgfTsKPj4gwqAg KyNpZmRlZiBDT05GSUdfQVJNCj4+ICsjZGVmaW5lIHRvX3BjaV9kZXYocCkgY29udGFpbmVyX29m KHAsIHN0cnVjdCBwY2lfZGV2LGRldikKPj4gKyNkZWZpbmUgcGNpX2RvbWFpbl9ucihkZXYpIGRl di0+c2VnCj4+ICsjZW5kaWYKPj4gKwo+PiDCoCAjZGVmaW5lIGZvcl9lYWNoX3BkZXYoZG9tYWlu LCBwZGV2KSBcCj4+IMKgwqDCoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRyeShwZGV2LCAmKGRvbWFp bi0+YXJjaC5wZGV2X2xpc3QpLCBkb21haW5fbGlzdCkKPj4gwqAgCj4gCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCgotLSAKIFF1YWxjb21tIERhdGFjZW50ZXIgVGVjaG5vbG9naWVzIGFzIGFuIGFm ZmlsaWF0ZSBvZiBRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYy4gUXVhbGNvbW0gVGVjaG5vbG9n aWVzLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwgYSBMaW51eCBG b3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdC4KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=