From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Sameer" Subject: Re: [RFC 6/6] acpi:arm64: Add support for parsing IORT table Date: Mon, 28 Aug 2017 16:21:17 -0600 Message-ID: <6aeb2ed8-6aff-d921-d0c3-1b2af8f56a81@codeaurora.org> References: <1496950247-8755-1-git-send-email-sgoel@codeaurora.org> <1496950247-8755-7-git-send-email-sgoel@codeaurora.org> <6475825a-4413-49f1-f6a7-042eb1c376f7@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dmSPM-0002mo-Hv for xen-devel@lists.xenproject.org; Mon, 28 Aug 2017 22:21:24 +0000 In-Reply-To: <6475825a-4413-49f1-f6a7-042eb1c376f7@arm.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: Julien Grall , xen-devel@lists.xenproject.org Cc: Tomasz Nowicki , Stefano Stabellini , Robin Murphy , Shanker Donthineni , Punit Agrawal List-Id: xen-devel@lists.xenproject.org CgpPbiA2LzEyLzIwMTcgNzoyNCBBTSwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IEhpIFNhbWVlciwK PiAKPiBPbiAwOC8wNi8xNyAyMDozMCwgU2FtZWVyIEdvZWwgd3JvdGU6Cj4+IEFkZCBsaW1pdGVk IHN1cHBvcnQgZm9yIHBhcnNpbmcgSU9SVCB0YWJsZSB0byBpbml0aWFsaXplIFNNTVUgZGV2aWNl cy4KPiAKPiBJdCB3b3VsZCBiZSBuaWNlIHRvIGV4cGxhaW4gd2hhdCB5b3UgYWN0dWFsbHkgc3Vw cG9ydCBpbiB0aGUgY29tbWl0IG1lc3NhZ2UuCj4gCj4gWy4uLl0KPiAKPj4KPj4gwqAjZGVmaW5l IElPUlRfVFlQRV9NQVNLKHR5cGUpwqDCoMKgICgxIDw8ICh0eXBlKSkKPj4gwqAjZGVmaW5lIElP UlRfTVNJX1RZUEXCoMKgwqDCoMKgwqDCoCAoMSA8PCBBQ1BJX0lPUlRfTk9ERV9JVFNfR1JPVVAp Cj4+IMKgI2RlZmluZSBJT1JUX0lPTU1VX1RZUEXCoMKgwqDCoMKgwqDCoCAoKDEgPDwgQUNQSV9J T1JUX05PREVfU01NVSkgfMKgwqDCoCBcCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICgxIDw8IEFDUElfSU9SVF9OT0RFX1NNTVVfVjMpKQo+Pgo+PiArI2lmIDAKPj4gwqBzdHJ1 Y3QgaW9ydF9pdHNfbXNpX2NoaXAgewo+PiDCoMKgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkwqDCoMKg IGxpc3Q7Cj4+IMKgwqDCoMKgIHN0cnVjdCBmd25vZGVfaGFuZGxlwqDCoMKgICpmd19ub2RlOwo+ PiDCoMKgwqDCoCB1MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRyYW5zbGF0aW9uX2lkOwo+PiDC oH07Cj4+Cj4+ICsjZW5kaWYKPj4gKwo+IAo+IFdoeSBjYW5ub3QgeW91IGVuYWJsZSBNU0kgbm93 PyBBY3R1YWxseSB0aGlzIHdvdWxkIGFsbG93IHVzIHRvIGtub3cgd2hldGhlciB3ZSBzaG91bGQg aW1wb3J0IHRoZSBjb2RlIGZyb20gTGludXggb3IgcmVpbXBsZW1lbnQgb3Igb3duLgpXZWxsIHdh cyBub3QgdG9vIHN1cmUgYWJvdXQgaG93IHRoaXMgd2lsbCBmaXQgaW4sIHNvIHdhcyBsZWF2aW5n IHRoaXMgZm9yIG5leHQgaXRlcmF0aW9uLiBJIHdpbGwgdHJ5IHRvIGVuYWJsZSB0aGlzLgo+IAo+ PiDCoHN0cnVjdCBpb3J0X2Z3bm9kZSB7Cj4+IMKgwqDCoMKgIHN0cnVjdCBsaXN0X2hlYWQgbGlz dDsKPj4gwqDCoMKgwqAgc3RydWN0IGFjcGlfaW9ydF9ub2RlICppb3J0X25vZGU7Cj4+IEBAIC02 MCw3ICs3MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlvcnRfc2V0X2Z3bm9kZShzdHJ1Y3QgYWNw aV9pb3J0X25vZGUgKmlvcnRfbm9kZSwKPj4gwqB7Cj4+IMKgwqDCoMKgIHN0cnVjdCBpb3J0X2Z3 bm9kZSAqbnA7Cj4+Cj4+IC3CoMKgwqAgbnAgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaW9ydF9m d25vZGUpLCBHRlBfQVRPTUlDKTsKPj4gK8KgwqDCoCBucCA9IHh6YWxsb2Moc3RydWN0IGlvcnRf Zndub2RlKTsKPiAKPiBJZiB3ZSBkZWNpZGUgdG8ga2VlcCB0aGlzIGNvZGUgY2xvc2UgdG8gTGlu dXggeW91IG5lZWQgdG86Cj4gwqDCoMKgwqAtIGF2b2lkIHJlcGxhY2luZyBMaW51eCBuYW1lIGJ5 IFhlbiBuYW1lIGFzIG11Y2ggYXMgcG9zc2libGUuIEluc3RlYWQgdXNlIG1hY3JvCj4gwqDCoMKg wqAtIGV4cGxhaW4gYWJvdmUgZWFjaCBjaGFuZ2Ugd2h5IHlvdSBuZWVkIHRoZW4KPiAKPiBTZWUg d2hhdCBJIGRpZCBmb3IgdGhlIEFSTSBTTU1VLgpBZ3JlZWQKPiAKPj4KPj4gwqDCoMKgwqAgaWYg KFdBUk5fT04oIW5wKSkKPj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT01FTTsKPj4gQEAg LTExNCw3ICsxMjUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW9ydF9kZWxldGVfZndub2RlKHN0 cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9kZSkKPj4gwqDCoMKgwqAgbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKGN1cnIsIHRtcCwgJmlvcnRfZndub2RlX2xpc3QsIGxpc3QpIHsKPj4gwqDCoMKgwqDC oMKgwqDCoCBpZiAoY3Vyci0+aW9ydF9ub2RlID09IG5vZGUpIHsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGxpc3RfZGVsKCZjdXJyLT5saXN0KTsKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAga2ZyZWUoY3Vycik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhmcmVlKGN1cnIpOwo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+IMKgwqDCoMKgwqDCoMKgwqAgfQo+ PiDCoMKgwqDCoCB9Cj4+IEBAIC0xMjcsNiArMTM4LDcgQEAgdHlwZWRlZiBhY3BpX3N0YXR1cyAo KmlvcnRfZmluZF9ub2RlX2NhbGxiYWNrKQo+PiDCoC8qIFJvb3QgcG9pbnRlciB0byB0aGUgbWFw cGVkIElPUlQgdGFibGUgKi8KPj4gwqBzdGF0aWMgc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyICpp b3J0X3RhYmxlOwo+Pgo+PiArI2lmIDAKPj4gwqBzdGF0aWMgTElTVF9IRUFEKGlvcnRfbXNpX2No aXBfbGlzdCk7Cj4+IMKgc3RhdGljIERFRklORV9TUElOTE9DSyhpb3J0X21zaV9jaGlwX2xvY2sp Owo+Pgo+PiBAQCAtMTk5LDcgKzIxMSw3IEBAIHN0cnVjdCBmd25vZGVfaGFuZGxlICppb3J0X2Zp bmRfZG9tYWluX3Rva2VuKGludCB0cmFuc19pZCkKPj4KPj4gwqDCoMKgwqAgcmV0dXJuIGZ3X25v ZGU7Cj4+IMKgfQo+PiAtCj4+ICsjZW5kaWYKPiAKPiBQbGVhc2UgYXZvaWQgZHJvcHBpbmcgbmV3 bGluZS4KPiAKPj4gwqBzdGF0aWMgc3RydWN0IGFjcGlfaW9ydF9ub2RlICppb3J0X3NjYW5fbm9k ZShlbnVtIGFjcGlfaW9ydF9ub2RlX3R5cGUgdHlwZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW9ydF9maW5kX25vZGVfY2FsbGJhY2sgY2Fs bGJhY2ssCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHZvaWQgKmNvbnRleHQpCj4+IEBAIC0yMTksOSArMjMxLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qg YWNwaV9pb3J0X25vZGUgKmlvcnRfc2Nhbl9ub2RlKGVudW0gYWNwaV9pb3J0X25vZGVfdHlwZSB0 eXBlLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpb3J0X3RhYmxlLT5sZW5n dGgpOwo+Pgo+PiDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgaW9ydC0+bm9kZV9jb3VudDsgaSsr KSB7Cj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoV0FSTl9UQUlOVChpb3J0X25vZGUgPj0gaW9ydF9l bmQsIFRBSU5UX0ZJUk1XQVJFX1dPUktBUk9VTkQsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgIklPUlQgbm9kZSBwb2ludGVyIG92ZXJmbG93cywgYmFkIHRhYmxlIVxu IikpCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoaW9ydF9ub2RlID49IGlvcnRfZW5kKSB7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaW50ayhYRU5MT0dfRVJSICJJT1JUIG5vZGUgcG9pbnRl ciBvdmVyZmxvd3MsIGJhZCB0YWJsZSFcbiIpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIE5VTEw7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+Cj4+IMKgwqDCoMKgwqDCoMKgwqAg aWYgKGlvcnRfbm9kZS0+dHlwZSA9PSB0eXBlICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBBQ1BJX1NVQ0NFU1MoY2FsbGJhY2soaW9ydF9ub2RlLCBjb250ZXh0KSkpCj4+IEBAIC0yNDks NiArMjYyLDE0IEBAIGJvb2wgaW9ydF9ub2RlX21hdGNoKHU4IHR5cGUpCj4+IMKgwqDCoMKgIHJl dHVybiBub2RlICE9IE5VTEw7Cj4+IMKgfQo+Pgo+PiArLyoKPj4gKyAqIEZvbGxvd2luZyAyIGRl ZmluaWVzIHNob3VsZCBjb21lIGZyb20gdGhlIFBDSSBwYXNzdGhyb3VnaCBpbXBsZW1lbnRhdGlv bi4KPj4gKyAqIEJhc2VkIG9uIHRoZSBjdXJyZW50IHBjaV9kZXYgZGVmaW5lIHRoZSBidXMgbnVt YmVyIGFuZCBzZWcgbnVtYmVyIGNvbWUKPj4gKyAqIGZyb20gcGNpX2RldiBzbyBtYWtpbmcgYW4g QVBJIGFzc3VtcHRpb24KPj4gKyAqLwo+PiArI2RlZmluZSB0b19wY2lfZGV2KHApIGNvbnRhaW5l cl9vZihwLCBzdHJ1Y3QgcGNpX2RldixkZXYpCj4+ICsjZGVmaW5lIHBjaV9kb21haW5fbnIoZGV2 KSBkZXYtPnNlZwo+IAo+IFRoaXMgc2hvdWxkIGdvIGluIHBjaS5oLgo+IAo+PiArCj4+IMKgc3Rh dGljIGFjcGlfc3RhdHVzIGlvcnRfbWF0Y2hfbm9kZV9jYWxsYmFjayhzdHJ1Y3QgYWNwaV9pb3J0 X25vZGUgKm5vZGUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB2b2lkICpjb250ZXh0KQo+PiDCoHsKPj4gQEAgLTI1Niw2ICsyNzcsMTEgQEAgc3Rh dGljIGFjcGlfc3RhdHVzIGlvcnRfbWF0Y2hfbm9kZV9jYWxsYmFjayhzdHJ1Y3QgYWNwaV9pb3J0 X25vZGUgKm5vZGUsCj4+IMKgwqDCoMKgIGFjcGlfc3RhdHVzIHN0YXR1czsKPj4KPj4gwqDCoMKg wqAgaWYgKG5vZGUtPnR5cGUgPT0gQUNQSV9JT1JUX05PREVfTkFNRURfQ09NUE9ORU5UKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoCBzdGF0dXMgPSBBRV9OT1RfSU1QTEVNRU5URUQ7Cj4+ICsvKgo+PiAr ICogTmFtZWQgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkIHlldC4KPiAKPiBDYW4geW91IGV4cGFu ZD8KV2VyZSBub3QgbmVlZGVkIGZvciBub3csIGJ1dCBJIGFncmVlIHdlIGNhbiBlbmFibGUgdGhl IGNvZGUuCj4gCj4gWy4uLl0KPiAKPj4gKy8qCj4+ICsgKiBSSUQgaXMgdGhlIHNhbWUgYXMgUENJ X0RFVklEKEJERikgZm9yIFFERjI0MDAKPiAKPiBYZW4gaXMgbWVhbnQgdG8gYmUgYWdub3N0aWMg dG8gdGhlIHBsYXRmb3JtLiBSYXRoZXIgdGhhbiBtYWtpbmcgYXNzdW1wdGlvbiwgd2Ugc2hvdWxk IGRpc2N1c3Mgb24gd2F5IHRvIGdldCB0aGUgUklELiBJIHdpbGwgYW5zd2VyIG9uIFJvYmluJ3Mg bWFpbCBhYm91dCBpdC4KPiAKPj4gKyAqLwo+PiDCoHN0YXRpYyBpbnQgX19nZXRfcGNpX3JpZChz dHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IGFsaWFzLCB2b2lkICpkYXRhKQo+PiDCoHsKPj4gwqDC oMKgwqAgdTMyICpyaWQgPSBkYXRhOwo+PiBAQCAtNTEwLDcgKzU1MCw3IEBAIHN0YXRpYyBpbnQg X19nZXRfcGNpX3JpZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IGFsaWFzLCB2b2lkICpkYXRh KQo+PiDCoMKgwqDCoCAqcmlkID0gYWxpYXM7Cj4+IMKgwqDCoMKgIHJldHVybiAwOwo+PiDCoH0K Pj4gLQo+PiArI2VuZGlmCj4gCj4gUGxlYXNlIGF2b2lkIGRyb3BwaW5nIG5ld2xpbmUKPiAKPj4g wqBzdGF0aWMgaW50IGFybV9zbW11X2lvcnRfeGxhdGUoc3RydWN0IGRldmljZSAqZGV2LCB1MzIg c3RyZWFtaWQsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBmd25vZGVfaGFuZGxlICpmd25vZGUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wcykKPj4gQEAgLTUyMywyOSArNTYz LDI0IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfaW9ydF94bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYs IHUzMiBzdHJlYW1pZCwKPj4gwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gwqB9Cj4+Cj4+IC1zdGF0 aWMgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqaW9ydF9pb21tdV94bGF0ZShzdHJ1Y3QgZGV2aWNl ICpkZXYsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg YWNwaV9pb3J0X25vZGUgKm5vZGUsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1MzIgc3RyZWFtaWQpCj4+ICtzdGF0aWMgaW50IGlvcnRfaW9tbXVfeGxhdGUoc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHN0cmVhbWlkKQo+PiDCoHsKPj4gLcKgwqDCoCBj b25zdCBzdHJ1Y3QgaW9tbXVfb3BzICpvcHMgPSBOVUxMOwo+PiDCoMKgwqDCoCBpbnQgcmV0ID0g LUVOT0RFVjsKPj4gwqDCoMKgwqAgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmlvcnRfZndub2RlOwo+ Pgo+PiDCoMKgwqDCoCBpZiAobm9kZSkgewo+PiDCoMKgwqDCoMKgwqDCoMKgIGlvcnRfZndub2Rl ID0gaW9ydF9nZXRfZndub2RlKG5vZGUpOwo+PiDCoMKgwqDCoMKgwqDCoMKgIGlmICghaW9ydF9m d25vZGUpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOwo+PiAtCj4+IC3C oMKgwqDCoMKgwqDCoCBvcHMgPSBpb21tdV9vcHNfZnJvbV9md25vZGUoaW9ydF9md25vZGUpOwo+ PiAtwqDCoMKgwqDCoMKgwqAgaWYgKCFvcHMpCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiBOVUxMOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pgo+PiAt wqDCoMKgwqDCoMKgwqAgcmV0ID0gYXJtX3NtbXVfaW9ydF94bGF0ZShkZXYsIHN0cmVhbWlkLCBp b3J0X2Z3bm9kZSwgb3BzKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IGFybV9zbW11X2lvcnRf eGxhdGUoZGV2LCBzdHJlYW1pZCwgaW9ydF9md25vZGUsIE5VTEwpOwo+IAo+IFdoeSBkb24ndCB5 b3UgZ2V0IHRoZSBJT01NVSBvcHMgaGVyZT8gVGhpcyB3b3VsZCBhdm9pZCB1bmVjZXNzYXJ5IGNo YW5nZS4KRnJvbSB0aGUgbGludXggZGVmaW5pdGlvbiBpdCBzZWVtcyB0aGF0IHRoZXJlIHdpbGwg YmUgZXZlbnR1YWxseSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBvcHMKc2V0IGJ5IHRoZSBidXMuIEkg ZGlkIG5vdCBmaW5kIGEgdXNlIGZvciB0aGlzIGhlcmUsIHNvIHJlbW92ZWQgaXQgdG8gc2ltcGxp ZnkgY29kZS4gSSBjYW4gCmFkZCB0aGVzZSBiYWNrLCBidXQgc2VlIHRoaXMgYXMgZGVhZCBjb2Rl LgoKPiAKPj4gwqDCoMKgwqAgfQo+Pgo+PiAtwqDCoMKgIHJldHVybiByZXQgPyBOVUxMIDogb3Bz Owo+PiArwqDCoMKgIHJldHVybiByZXQ7Cj4+IMKgfQo+Pgo+PiArI2lmIDAgLyogWGVuOiBXZSBk byBub3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGZvciBYZW4gKi8KPj4gwqAvKioKPj4gwqAgKiBpb3J0 X3NldF9kbWFfbWFzayAtIFNldC11cCBkbWEgbWFzayBmb3IgYSBkZXZpY2UuCj4+IMKgICoKPj4g QEAgLTU2NywzOSArNjAyLDQzIEBAIHZvaWQgaW9ydF9zZXRfZG1hX21hc2soc3RydWN0IGRldmlj ZSAqZGV2KQo+PiDCoMKgwqDCoCBpZiAoIWRldi0+ZG1hX21hc2spCj4+IMKgwqDCoMKgwqDCoMKg wqAgZGV2LT5kbWFfbWFzayA9ICZkZXYtPmNvaGVyZW50X2RtYV9tYXNrOwo+PiDCoH0KPj4gLQo+ PiArI2VuZGlmCj4gCj4gUGxlYXNlIGF2b2lkIGRyb3BwaW5nIG5ld2xpbmUKPiAKPj4gwqAvKioK Pj4gLSAqIGlvcnRfaW9tbXVfY29uZmlndXJlIC0gU2V0LXVwIElPTU1VIGNvbmZpZ3VyYXRpb24g Zm9yIGEgZGV2aWNlLgo+PiArICogaW9ydF9pb21tdV9jb25maWd1cmUgLSBTZXQtdXAgSU9NTVUg Y29uZmlndXJhdGlvbiBmb3IgYSBkZXZpY2UuIFRoaXMKPj4gKyAqIGZ1bmN0aW9uIHNldHMgdXAg dGhlIGZ3c3BlYyBhcyBuZWVkZWQgZm9yIGEgZ2l2ZW4gZGV2aWNlLiBPbmx5IFBDSQo+PiArICog ZGV2aWNlcyBhcmUgc3VwcG9ydGVkIGZvciBub3cuCj4+IMKgICoKPj4gwqAgKiBAZGV2OiBkZXZp Y2UgdG8gY29uZmlndXJlCj4+IMKgICoKPj4gLSAqIFJldHVybnM6IGlvbW11X29wcyBwb2ludGVy IG9uIGNvbmZpZ3VyYXRpb24gc3VjY2Vzcwo+PiAtICrCoMKgwqDCoMKgwqDCoMKgwqAgTlVMTCBv biBjb25maWd1cmF0aW9uIGZhaWx1cmUKPj4gKyAqIFJldHVybnM6IEFwcHJvcHJpYXRlIGFjcGlf c3RhdHVzCj4+IMKgICovCj4+IC1jb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lvbW11X2Nv bmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICthY3BpX3N0YXR1cyBpb3J0X2lvbW11X2Nv bmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gCj4gSSBkb24ndCB0aGluayB0aGlzIGNoYW5n ZSBpcyBuZWNlc3NhcnkuIFJldHVybmluZyB0aGUgaW9tbXVfb3BzIGhlcmUgd291bGQgYmUgdGhl IGJlc3QuCj4gCj4gWy4uLl0KPiAKPj4gKy8qCj4+ICsgKiBYZW46IE5vdCB1c2luZyB0aGUgcGFy c2luIG9wcyBmb3Igbm93LiBOZWVkIHRvIGNoZWNrIGFuZCBzZWUgaWYgaXQgd2lsbAo+PiArICog YmUgdXNlZnVsIHRvIHVzZSB0aGVzZSBpbiBzb21lIGZvcm0sIG9yIGxldCB0aGUgZHJpdmVyIHBh cnNlIElPUlQgbm9kZS4KPj4gKyAqLwo+PiArI2lmIDAKPj4gwqBzdGF0aWMgdm9pZCBfX2luaXQg YWNwaV9pb3J0X3JlZ2lzdGVyX2lycShpbnQgaHdpcnEsIGNvbnN0IGNoYXIgKm5hbWUsCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCB0cmlnZ2VyLAo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmVz b3VyY2UgKnJlcykKPj4gQEAgLTgwNyw5MyArODUyLDYzIEBAIGNvbnN0IHN0cnVjdCBpb3J0X2lv bW11X2NvbmZpZyAqaW9ydF9nZXRfaW9tbXVfY2ZnKHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9k ZSkKPj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4gwqDCoMKgwqAgfQo+PiDCoH0K Pj4gLQo+PiArI2VuZGlmCj4gCj4gUGxlYXNlIGF2b2lkIGRyb3BwaW5nIG5ld2xpbmUuCj4gCj4+ IMKgLyoqCj4+IC0gKiBpb3J0X2FkZF9zbW11X3BsYXRmb3JtX2RldmljZSgpIC0gQWxsb2NhdGUg YSBwbGF0Zm9ybSBkZXZpY2UgZm9yIFNNTVUKPj4gKyAqIFhlbjogcmVuYW1lIHRoZSBmdW5jdGlv biB0byBpb3J0X2FkZF9zbW11X2RldmljZQo+IAo+IFJlbmFtaW5nIHRoZSBmdW5jdGlvbiBtYWtl IG1vcmUgZGlmZmljdWx0IHRvIGJhY2twb3J0IGNoYW5nZS4gU28gd2h5IHJlbmFtaW5nIGl0Pwo+ IAo+IFsuLi5dCj4gCj4+IC1zdGF0aWMgdm9pZCBfX2luaXQgaW9ydF9pbml0X3BsYXRmb3JtX2Rl dmljZXModm9pZCkKPj4gKy8qCj4+ICsgKiBYZW46IFJlbmFtZSB0aGUgZnVuY3Rpb24gdG8gaW9y dF9pbml0X2RldmljZXMgYXMgdGhpcyBmdW5jdGlvbiB3aWxsCj4+ICsgKiBwb3B1bGF0ZSB0aGUg ZGV2aWNlIG9iamVjdCBmb3IgU01NVSBkZXZpY2VzLgo+IAo+IERpdHRvLgo+IAo+PiArICovCj4+ ICtzdGF0aWMgdm9pZCBfX2luaXQgaW9ydF9pbml0X2RldmljZXModm9pZCkKPiAKPiBbLi4uXQo+ IAo+PiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lvbW11LmMgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaW9tbXUuYwo+PiBpbmRleCBlZGY3MGMyLi4xMzk3 ZGE1IDEwMDY0NAo+PiAtLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaW9tbXUuYwo+ PiArKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaW9tbXUuYwo+PiBAQCAtNzQsMjQg Kzc0LDI2IEBAIGludCBhcmNoX2lvbW11X3BvcHVsYXRlX3BhZ2VfdGFibGUoc3RydWN0IGRvbWFp biAqZCkKPj4gwqDCoMKgwqAgcmV0dXJuIC1FTk9TWVM7Cj4+IMKgfQo+Pgo+PiArLyoKPj4gKyAq IFRoZSBvcHMgcGFyYW1ldGVyIGluIHRoaXMgZnVuY3Rpb24gd2lsbCBhbHdheXMgYmUgTlVMTCBm b3IgWGVuLAo+PiArICogYXMgdGhlIG9wcyBhcmUgc2V0IHBlciBkb21haW4uCj4+ICsgKi8KPj4g wqBpbnQgaW9tbXVfZndzcGVjX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZndub2Rl X2hhbmRsZSAqaW9tbXVfZndub2RlLAo+PiDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBp b21tdV9vcHMgKm9wcykKPj4gwqB7Cj4+IMKgwqDCoMKgIHN0cnVjdCBpb21tdV9md3NwZWMgKmZ3 c3BlYyA9IGRldi0+aW9tbXVfZndzcGVjOwo+Pgo+PiArwqDCoMKgIC8qCj4+ICvCoMKgwqDCoCAq IGZ3c3BlYyBpcyBhbHJlYWR5IGFsbG9jYXRlZCBmb3IgdGhpcyBkZXZpY2UuCj4+ICvCoMKgwqDC oCAqLwo+PiDCoMKgwqDCoCBpZiAoZndzcGVjKQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIG9w cyA9PSBmd3NwZWMtPm9wcyA/IDAgOiAtRUlOVkFMOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IDA7Cj4+Cj4+IMKgwqDCoMKgIGZ3c3BlYyA9IHh6YWxsb2Moc3RydWN0IGlvbW11X2Z3c3BlYyk7 Cj4+IMKgwqDCoMKgIGlmICghZndzcGVjKQo+PiDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5P TUVNOwo+Pgo+PiAtwqDCoMKgIC8qIFJlZiBjb3VudGluZyBmb3IgdGhlIGR0IGRldmljZSBub2Rl IGlzIG5vdCBuZWVkZWQgKi8KPj4gLQo+PiAtwqDCoMKgIC8qb2Zfbm9kZV9nZXQodG9fb2Zfbm9k ZShpb21tdV9md25vZGUpKTsqLwo+IAo+IFRoaXMgY291bGQgc2hvdWxkIGhhdmUgbmVldmVyIGJl ZW4gY29tbWVudGVkIGF0IGZpcnN0IGhhbmQuCk5lZWRlZCBzb21lIGhlbHAgb24gZW5hYmxpbmcg dGhlIGR0IHJlbGF0ZWQgY29kZS4gSSB3aWxsIHRyeSB0byBlbmFibGUgdGhpcy4KPiAKPj4gLQo+ PiDCoMKgwqDCoCBmd3NwZWMtPmlvbW11X2Z3bm9kZSA9IGlvbW11X2Z3bm9kZTsKPj4gLcKgwqDC oCBmd3NwZWMtPm9wcyA9IG9wczsKPj4gwqDCoMKgwqAgZGV2LT5pb21tdV9md3NwZWMgPSBmd3Nw ZWM7Cj4+IMKgwqDCoMKgIHJldHVybiAwOwo+PiDCoH0KPj4gQEAgLTEwMSw3ICsxMDMsNiBAQCB2 b2lkIGlvbW11X2Z3c3BlY19mcmVlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gwqDCoMKgwqAgc3Ry dWN0IGlvbW11X2Z3c3BlYyAqZndzcGVjID0gZGV2LT5pb21tdV9md3NwZWM7Cj4+Cj4+IMKgwqDC oMKgIGlmIChmd3NwZWMpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIC8qZndub2RlX2hhbmRsZV9wdXQo ZndzcGVjLT5pb21tdV9md25vZGUpOyovCj4gCj4gRGl0dG8uCj4gCj4+IMKgwqDCoMKgwqDCoMKg wqAgeGZyZWUoZndzcGVjKTsKPj4gwqDCoMKgwqDCoMKgwqDCoCBkZXYtPmlvbW11X2Z3c3BlYyA9 IE5VTEw7Cj4+IMKgwqDCoMKgIH0KPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FjcGkvYWNw aS5oIGIveGVuL2luY2x1ZGUvYWNwaS9hY3BpLmgKPj4gaW5kZXggYzg1MjcwMS4uMWFjOTJiMiAx MDA2NDQKPj4gLS0tIGEveGVuL2luY2x1ZGUvYWNwaS9hY3BpLmgKPj4gKysrIGIveGVuL2luY2x1 ZGUvYWNwaS9hY3BpLmgKPj4gQEAgLTYwLDYgKzYwLDcgQEAKPj4gwqAjaW5jbHVkZSAiYWN0Ymwu aCLCoMKgwqDCoMKgwqDCoCAvKiBBQ1BJIHRhYmxlIGRlZmluaXRpb25zICovCj4+IMKgI2luY2x1 ZGUgImFjbG9jYWwuaCLCoMKgwqDCoMKgwqDCoCAvKiBJbnRlcm5hbCBkYXRhIHR5cGVzICovCj4+ IMKgI2luY2x1ZGUgImFjb3V0cHV0LmgiwqDCoMKgwqDCoMKgwqAgLyogRXJyb3Igb3V0cHV0IGFu ZCBEZWJ1ZyBtYWNyb3MgKi8KPj4gKyNpbmNsdWRlICJhY3BpX2lvcnQuaCLCoMKgwqDCoMKgwqDC oMKgwqAgLyogVXRpbGl0eSBkZWZpbmVzIGZvciBJT1JUICovCj4gCj4gSSB0aGluayB0aGlzIGlz IGEgcHJldHR5IGJhZCBpZGVhLiBZb3UgZG9uJ3QgbmVlZCB0byBpbmNsdWRlIGFjcGlfaW9ydC5o IGV2ZXJ5d2hlcmUuClRydWUgdGhpcyBpcyBuZWVkZWQgZm9yIGFybSBvbmx5LiBJIHdpbGwgaW5j bHVkZSB0aGlzIGluIGFybSBzcGVjaWZpYyBjb2RlLgo+IAo+PiDCoCNpbmNsdWRlICJhY3Bpb3N4 Zi5oIsKgwqDCoMKgwqDCoMKgIC8qIEludGVyZmFjZXMgdG8gdGhlIEFDUEktdG8tT1MgbGF5ZXIg Ki8KPj4gwqAjaW5jbHVkZSAiYWNwaXhmLmgiwqDCoMKgwqDCoMKgwqAgLyogQUNQSSBjb3JlIHN1 YnN5c3RlbSBleHRlcm5hbCBpbnRlcmZhY2VzICovCj4+IMKgI2luY2x1ZGUgImFjZ2xvYmFsLmgi wqDCoMKgwqDCoMKgwqAgLyogQWxsIGdsb2JhbCB2YXJpYWJsZXMgKi8KPj4gZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL2FjcGkvYWNwaV9pb3J0LmggYi94ZW4vaW5jbHVkZS9hY3BpL2FjcGlfaW9y dC5oCj4+IGluZGV4IDc3ZTA4MDkuLmMwYjViOGQgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRl L2FjcGkvYWNwaV9pb3J0LmgKPj4gKysrIGIveGVuL2luY2x1ZGUvYWNwaS9hY3BpX2lvcnQuaAo+ PiBAQCAtMTksMjcgKzE5LDM1IEBACj4+IMKgI2lmbmRlZiBfX0FDUElfSU9SVF9IX18KPj4gwqAj ZGVmaW5lIF9fQUNQSV9JT1JUX0hfXwo+Pgo+PiAtI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KPj4g LSNpbmNsdWRlIDxsaW51eC9md25vZGUuaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9pcnFkb21haW4u aD4KPj4gKyNpbmNsdWRlIDx4ZW4vYWNwaS5oPgo+PiArI2luY2x1ZGUgPGFzbS9kZXZpY2UuaD4K Pj4KPj4gKy8qCj4+ICsgKiBXZSBhcmUgbm90IHVzaW5nIElPUlQgSVJRIGJpbmRpbmdzIGZvciB0 aGlzIGNoYW5nZSBzZXQKPj4gKyAqLwo+PiArI2lmIDAKPiAKPiBXaGlsc3QgSSBjYW4gdW5kZXJz dGFuZCB3aHkgd2Ugd2FudCB0byBpZmRlZiBpbiB0aGUgKi5jLiBJIHRoaW5rIGl0IGxlc3Mgd2Fy cmFudCBpbiB0aGUgaGVhZGVyLiBJIHdvdWxkIHByZWZlciB0aGVtIHRvIGVpdGhlciBrZXB0IG9y IGRyb3BwZWQuIEJ1dCBub3QgI2lmIDAuCj4gCj4+IMKgI2RlZmluZSBJT1JUX0lSUV9NQVNLKGly cSnCoMKgwqDCoMKgwqDCoCAoaXJxICYgMHhmZmZmZmZmZlVMTCkKPj4gwqAjZGVmaW5lIElPUlRf SVJRX1RSSUdHRVJfTUFTSyhpcnEpwqDCoMKgICgoaXJxID4+IDMyKSAmIDB4ZmZmZmZmZmZVTEwp Cj4+Cj4+IMKgaW50IGlvcnRfcmVnaXN0ZXJfZG9tYWluX3Rva2VuKGludCB0cmFuc19pZCwgc3Ry dWN0IGZ3bm9kZV9oYW5kbGUgKmZ3X25vZGUpOwo+PiDCoHZvaWQgaW9ydF9kZXJlZ2lzdGVyX2Rv bWFpbl90b2tlbihpbnQgdHJhbnNfaWQpOwo+PiDCoHN0cnVjdCBmd25vZGVfaGFuZGxlICppb3J0 X2ZpbmRfZG9tYWluX3Rva2VuKGludCB0cmFuc19pZCk7Cj4+IC0jaWZkZWYgQ09ORklHX0FDUElf SU9SVAo+PiArI2VuZGlmCj4+ICsKPj4gKyNpZmRlZiBDT05GSUdfQVJNXzY0Cj4gCj4gV2h5ICNp ZmRlZiBDT05GSUdfQVJNXzY0PwpXYXMgdHJ5aW5nIHRvIGtlZXAgdGhlIGltcGFjdCBsb3cgZm9y IHRoaXMgUkZDIGl0ZXJhdGlvbiAoTXkgdXNlLWNhc2UgaXMgYXJtNjQgb25seSkuIExvb2tpbmcg Zm9yIHRoZSByaWdodCByZWNvbW1lbmRhdGlvbj8KPiAKPj4gwqB2b2lkIGFjcGlfaW9ydF9pbml0 KHZvaWQpOwo+PiDCoGJvb2wgaW9ydF9ub2RlX21hdGNoKHU4IHR5cGUpOwo+PiDCoHZvaWQgYWNw aV9pb3J0X2luaXQodm9pZCk7Cj4+IMKgYm9vbCBpb3J0X25vZGVfbWF0Y2godTggdHlwZSk7Cj4+ ICsjaWYgMAo+PiDCoHUzMiBpb3J0X21zaV9tYXBfcmlkKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMy IHJlcV9pZCk7Cj4+IMKgc3RydWN0IGlycV9kb21haW4gKmlvcnRfZ2V0X2RldmljZV9kb21haW4o c3RydWN0IGRldmljZSAqZGV2LCB1MzIgcmVxX2lkKTsKPj4gwqAvKiBJT01NVSBpbnRlcmZhY2Ug Ki8KPj4gwqB2b2lkIGlvcnRfc2V0X2RtYV9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4+IC1j b25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lvbW11X2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNl ICpkZXYpOwo+PiArI2VuZGlmCj4+ICthY3BpX3N0YXR1cyBpb3J0X2lvbW11X2NvbmZpZ3VyZShz dHJ1Y3QgZGV2aWNlICpkZXYpOwo+PiDCoCNlbHNlCj4+IMKgc3RhdGljIGlubGluZSB2b2lkIGFj cGlfaW9ydF9pbml0KHZvaWQpIHsgfQo+PiDCoHN0YXRpYyBpbmxpbmUgYm9vbCBpb3J0X25vZGVf bWF0Y2godTggdHlwZSkgeyByZXR1cm4gZmFsc2U7IH0KPj4gKyNpZiAwCj4+IMKgc3RhdGljIGlu bGluZSB1MzIgaW9ydF9tc2lfbWFwX3JpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiByZXFfaWQp Cj4+IMKgeyByZXR1cm4gcmVxX2lkOyB9Cj4+IMKgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXJxX2Rv bWFpbiAqaW9ydF9nZXRfZGV2aWNlX2RvbWFpbihzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+IEBAIC00 NywxMiArNTUsMTEgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXJxX2RvbWFpbiAqaW9ydF9nZXRf ZGV2aWNlX2RvbWFpbihzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+IMKgeyByZXR1cm4gTlVMTDsgfQo+ PiDCoC8qIElPTU1VIGludGVyZmFjZSAqLwo+PiDCoHN0YXRpYyBpbmxpbmUgdm9pZCBpb3J0X3Nl dF9kbWFfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYpIHsgfQo+PiArI2VuZGlmCj4+IMKgc3RhdGlj IGlubGluZQo+PiAtY29uc3Qgc3RydWN0IGlvbW11X29wcyAqaW9ydF9pb21tdV9jb25maWd1cmUo c3RydWN0IGRldmljZSAqZGV2KQo+PiAteyByZXR1cm4gTlVMTDsgfQo+PiArYWNwaV9zdGF0dXMg aW9tbXVfb3BzIGlvcnRfaW9tbXVfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gK3sg cmV0dXJuIEFFX05PVF9JTVBMRU1FTlRFRDsgfQo+PiDCoCNlbmRpZgo+Pgo+PiArI2lmIDAKPj4g wqB1MzIgaW9ydF9tc2lfbWFwX3JpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiByZXFfaWQpOwo+ PiDCoHN0cnVjdCBpcnFfZG9tYWluICppb3J0X2dldF9kZXZpY2VfZG9tYWluKHN0cnVjdCBkZXZp Y2UgKmRldiwgdTMyIHJlcV9pZCk7Cj4+IMKgLyogSU9NTVUgaW50ZXJmYWNlICovCj4+IMKgdm9p ZCBpb3J0X3NldF9kbWFfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+PiAtY29uc3Qgc3RydWN0 IGlvbW11X29wcyAqaW9ydF9pb21tdV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KTsKPj4g KyNlbmRpZgo+PiArYWNwaV9zdGF0dXMgaW9ydF9pb21tdV9jb25maWd1cmUoc3RydWN0IGRldmlj ZSAqZGV2KTsKPj4gwqAjZWxzZQo+PiDCoHN0YXRpYyBpbmxpbmUgdm9pZCBhY3BpX2lvcnRfaW5p dCh2b2lkKSB7IH0KPj4gwqBzdGF0aWMgaW5saW5lIGJvb2wgaW9ydF9ub2RlX21hdGNoKHU4IHR5 cGUpIHsgcmV0dXJuIGZhbHNlOyB9Cj4+ICsjaWYgMAo+PiDCoHN0YXRpYyBpbmxpbmUgdTMyIGlv cnRfbXNpX21hcF9yaWQoc3RydWN0IGRldmljZSAqZGV2LCB1MzIgcmVxX2lkKQo+PiDCoHsgcmV0 dXJuIHJlcV9pZDsgfQo+PiDCoHN0YXRpYyBpbmxpbmUgc3RydWN0IGlycV9kb21haW4gKmlvcnRf Z2V0X2RldmljZV9kb21haW4oc3RydWN0IGRldmljZSAqZGV2LAo+PiBAQCAtNDcsMTIgKzU1LDEx IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGlycV9kb21haW4gKmlvcnRfZ2V0X2RldmljZV9kb21h aW4oc3RydWN0IGRldmljZSAqZGV2LAo+PiDCoHsgcmV0dXJuIE5VTEw7IH0KPj4gwqAvKiBJT01N VSBpbnRlcmZhY2UgKi8KPj4gwqBzdGF0aWMgaW5saW5lIHZvaWQgaW9ydF9zZXRfZG1hX21hc2so c3RydWN0IGRldmljZSAqZGV2KSB7IH0KPj4gKyNlbmRpZgo+PiDCoHN0YXRpYyBpbmxpbmUKPj4g LWNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKmlvcnRfaW9tbXVfY29uZmlndXJlKHN0cnVjdCBkZXZp Y2UgKmRldikKPj4gLXsgcmV0dXJuIE5VTEw7IH0KPj4gK2FjcGlfc3RhdHVzIGlvbW11X29wcyBp b3J0X2lvbW11X2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICt7IHJldHVybiBBRV9O T1RfSU1QTEVNRU5URUQ7IH0KPj4gwqAjZW5kaWYKPj4KPj4gLSNkZWZpbmUgSU9SVF9BQ1BJX0RF Q0xBUkUobmFtZSwgdGFibGVfaWQsIGZuKcKgwqDCoMKgwqDCoMKgIFwKPj4gLcKgwqDCoCBBQ1BJ X0RFQ0xBUkVfUFJPQkVfRU5UUlkoaW9ydCwgbmFtZSwgdGFibGVfaWQsIDAsIE5VTEwsIDAsIGZu KQo+IAo+IEkgdGhpbmsgd2Ugd2hvdWxkIG5lZWQgc29tZXRoaW5nIHNpbWlsYXIgZm9yIFhlbi4K WWVzLiBJIGhhdmUgZGVmaW5lZCBzb21ldGhpbmcgc2ltaWxhciB0byB3aGF0IHlvdSBoYXZlIGRl ZmluZWQgZm9yIERUIGluIHNtbXUgCmRyaXZlci4KPiAKPiBbLi4uXQo+IAo+PiBkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUveGVuL2xpYi5oIGIveGVuL2luY2x1ZGUveGVuL2xpYi5oCj4+IGluZGV4 IDk5NWE4NWEuLjM3ODVmYWUgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9saWIuaAo+ PiArKysgYi94ZW4vaW5jbHVkZS94ZW4vbGliLmgKPj4gQEAgLTksNyArOSwxMiBAQAo+PiDCoCNp bmNsdWRlIDxhc20vYnVnLmg+Cj4+Cj4+IMKgI2RlZmluZSBCVUdfT04ocCnCoCBkbyB7IGlmICh1 bmxpa2VseShwKSkgQlVHKCk7wqAgfSB3aGlsZSAoMCkKPj4gLSNkZWZpbmUgV0FSTl9PTihwKSBk byB7IGlmICh1bmxpa2VseShwKSkgV0FSTigpOyB9IHdoaWxlICgwKQo+PiArI2RlZmluZSBXQVJO X09OKHApICh7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgIGludCBfX3JldF93YXJuX29u ID0gISEocCk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXAo+PiArwqDCoMKgIGlmICh1bmxpa2VseShfX3JldF93YXJuX29uKSnCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDC oMKgwqDCoMKgIFdBUk4oKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKg wqAgdW5saWtlbHkoX19yZXRfd2Fybl9vbik7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK30pCj4gCj4gaG1tbW0uIFdoeSB0 aGlzIGNoYW5nZT8KV2FzIGdldHRpbmcgYSBjb21waWxhdGlvbiBlcnJvciB3aGVuIEkgd2FzIHVz aW5nIFdBUk5fT04gYXMgYSBjb25kaXRpb25hbAppbiBhbiBpZiBzdGF0ZW1lbnQgcmVnYXJkaW5n IHRoZSByZXR1cm4gdmFsdWUuIFNvIHJlbW92ZWQgdGhlIGxvb3AuIFRoaXMKbG9va3Mgc2ltaWxh ciB0byBMaW51eCBub3cuCj4gCj4+Cj4+IMKgI2lmIF9fR05VQ19fID4gNCB8fCAoX19HTlVDX18g PT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSA2KQo+PiDCoC8qIEZvcmNlIGEgY29tcGlsYXRpb24g ZXJyb3IgaWYgY29uZGl0aW9uIGlzIHRydWUgKi8KPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3hlbi9wY2kuaCBiL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAo+PiBpbmRleCA1OWI2ZThhLi5jNTE4 NTY5IDEwMDY0NAo+PiAtLS0gYS94ZW4vaW5jbHVkZS94ZW4vcGNpLmgKPj4gKysrIGIveGVuL2lu Y2x1ZGUveGVuL3BjaS5oCj4+IEBAIC04OCw2ICs4OCw3IEBAIHN0cnVjdCBwY2lfZGV2IHsKPj4g wqAjZGVmaW5lIFBUX0ZBVUxUX1RIUkVTSE9MRCAxMAo+PiDCoMKgwqDCoCB9IGZhdWx0Owo+PiDC oMKgwqDCoCB1NjQgdmZfcmxlbls2XTsKPj4gK8KgwqDCoCBzdHJ1Y3QgZGV2aWNlIGRldjsKPiAK PiBzdHJ1Y3QgZGV2aWNlIGRvZXMgbm90IGV4aXN0IG9uIHg4Ni4gSWYgeW91IHN0aWxsIHdhbnQg dG8gYWRkIGl0LCB0aGVuIHlvdSBzaG91bGQgZG8gaXQgaW4gYSBzZXBhcmF0ZSBwYXRjaCBhbmQg Q0MgcmVsZXZhbnQgbWFpbnRhaW5lcnMuCk9rLCBJIHdpbGwgZ28gYWhlYWQgYW5kIGRvIHRoYXQu Cj4gCj4+IMKgfTsKPj4KPj4gwqAjZGVmaW5lIGZvcl9lYWNoX3BkZXYoZG9tYWluLCBwZGV2KSBc Cj4+Cj4gCj4gQ2hlZXJzLAo+IAoKLS0gCiBRdWFsY29tbSBEYXRhY2VudGVyIFRlY2hub2xvZ2ll cyBhcyBhbiBhZmZpbGlhdGUgb2YgUXVhbGNvbW0gVGVjaG5vbG9naWVzLCBJbmMuIFF1YWxjb21t IFRlY2hub2xvZ2llcywgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0s IGEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QuCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK