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:21:33 -0600 Message-ID: <23d4e661-0097-4cd0-7917-bc66c92fe8b4@codeaurora.org> References: <1505954230-18892-1-git-send-email-sgoel@codeaurora.org> <1505954230-18892-6-git-send-email-sgoel@codeaurora.org> <040fde45-10f8-fa40-29e3-d1312faf311f@linaro.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 1e5Cdi-0005Kw-NX for xen-devel@lists.xenproject.org; Thu, 19 Oct 2017 15:21:42 +0000 In-Reply-To: <040fde45-10f8-fa40-29e3-d1312faf311f@linaro.org> 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, julien.grall@arm.com, mjaggi@caviumnetworks.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 CgpPbiAxMC8xMi8yMDE3IDg6MDYgQU0sIEp1bGllbiBHcmFsbCB3cm90ZToKPiBIaSBTYW1lZXIs Cj4gCj4gT24gMjEvMDkvMTcgMDE6MzcsIFNhbWVlciBHb2VsIHdyb3RlOgo+PiBBZGQgc3VwcG9y dCBmb3IgcGFyc2luZyBJT1JUIHRhYmxlIHRvIGluaXRpYWxpemUgU01NVSBkZXZpY2VzLgo+PiAq IFRoZSBjb2RlIGZvciBjcmVhdGluZyBhbiBTTU1VIGRldmljZSBoYXMgYmVlbiBtb2RpZmllZCwg c28gdGhhdCB0aGUgU01NVQo+PiBkZXZpY2UgY2FuIGJlIGluaXRpYWxpemVkLgo+PiAqIFRoZSBO QU1FRCBOT0RFIGNvZGUgaGFzIGJlZW4gY29tbWVudGVkIG91dCBhcyB0aGlzIHdpbGwgbmVlZCBE T00wIGtlcm5lbAo+PiBzdXBwb3J0Lgo+PiAqIElUUyBjb2RlIGhhcyBiZWVuIGluY2x1ZGVkIGJ1 dCBpdCBoYXMgbm90IGJlZW4gdGVzdGVkLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBTYW1lZXIgR29l bCA8c2dvZWxAY29kZWF1cm9yYS5vcmc+Cj4+IC0tLQo+PiDCoCB4ZW4vYXJjaC9hcm0vc2V0dXAu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArCj4+IMKgIHhlbi9kcml2ZXJz L2FjcGkvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+IMKgIHhlbi9kcml2 ZXJzL2FjcGkvYXJtL01ha2VmaWxlwqDCoMKgwqDCoCB8wqDCoCAxICsKPj4gwqAgeGVuL2RyaXZl cnMvYWNwaS9hcm0vaW9ydC5jwqDCoMKgwqDCoMKgwqAgfCAxNzMgKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLQo+PiDCoCB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21t dS5jIHzCoMKgIDEgKwo+PiDCoCB4ZW4vaW5jbHVkZS9hY3BpL2FjcGlfaW9ydC5owqDCoMKgwqDC oMKgIHzCoCAxNyArKy0tCj4+IMKgIHhlbi9pbmNsdWRlL2FzbS1hcm0vZGV2aWNlLmjCoMKgwqDC oMKgwqAgfMKgwqAgMiArCj4+IMKgIHhlbi9pbmNsdWRlL3hlbi9hY3BpLmjCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgIDIxICsrKysrCj4+IMKgIHhlbi9pbmNsdWRlL3hlbi9wY2kuaMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDggKysKPj4gwqAgOSBmaWxlcyBjaGFuZ2VkLCAx NDYgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0 NCB4ZW4vZHJpdmVycy9hY3BpL2FybS9NYWtlZmlsZQo+Pgo+PiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL3NldHVwLmMgYi94ZW4vYXJjaC9hcm0vc2V0dXAuYwo+PiBpbmRleCA5MmYxNzNiLi40 YmEwOWIyIDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vc2V0dXAuYwo+PiArKysgYi94ZW4v YXJjaC9hcm0vc2V0dXAuYwo+PiBAQCAtNDksNiArNDksNyBAQAo+PiDCoCAjaW5jbHVkZSA8YXNt L3NldHVwLmg+Cj4+IMKgICNpbmNsdWRlIDx4c20veHNtLmg+Cj4+IMKgICNpbmNsdWRlIDxhc20v YWNwaS5oPgo+PiArI2luY2x1ZGUgPGFjcGkvYWNwaV9pb3J0Lmg+Cj4+IMKgIMKgIHN0cnVjdCBi b290aW5mbyBfX2luaXRkYXRhIGJvb3RpbmZvOwo+PiDCoCBAQCAtNzk2LDYgKzc5Nyw4IEBAIHZv aWQgX19pbml0IHN0YXJ0X3hlbih1bnNpZ25lZCBsb25nIGJvb3RfcGh5c19vZmZzZXQsCj4+IMKg IMKgwqDCoMKgwqAgdGFza2xldF9zdWJzeXNfaW5pdCgpOwo+PiDCoCArwqDCoMKgIC8qIFBhcnNl IHRoZSBBQ1BJIGlvcnQgZGF0YSAqLwo+PiArwqDCoMKgIGFjcGlfaW9ydF9pbml0KCk7Cj4+IMKg IMKgwqDCoMKgwqAgeHNtX2R0X2luaXQoKTsKPj4gwqAgZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJz L2FjcGkvTWFrZWZpbGUgYi94ZW4vZHJpdmVycy9hY3BpL01ha2VmaWxlCj4+IGluZGV4IDQ0NGIx MWQuLmU3ZmZkODIgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvTWFrZWZpbGUKPj4g KysrIGIveGVuL2RyaXZlcnMvYWNwaS9NYWtlZmlsZQo+PiBAQCAtMSw1ICsxLDYgQEAKPj4gwqAg c3ViZGlyLXkgKz0gdGFibGVzCj4+IMKgIHN1YmRpci15ICs9IHV0aWxpdGllcwo+PiArc3ViZGly LSQoQ09ORklHX0FSTSkgKz0gYXJtCj4+IMKgIHN1YmRpci0kKENPTkZJR19YODYpICs9IGFwZWkK Pj4gwqAgwqAgb2JqLWJpbi15ICs9IHRhYmxlcy5pbml0Lm8KPj4gZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL2FjcGkvYXJtL01ha2VmaWxlIGIveGVuL2RyaXZlcnMvYWNwaS9hcm0vTWFrZWZpbGUK Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uN2MwMzliYgo+PiAtLS0g L2Rldi9udWxsCj4+ICsrKyBiL3hlbi9kcml2ZXJzL2FjcGkvYXJtL01ha2VmaWxlCj4+IEBAIC0w LDAgKzEgQEAKPj4gK29iai15ICs9IGlvcnQubwo+PiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMv YWNwaS9hcm0vaW9ydC5jIGIveGVuL2RyaXZlcnMvYWNwaS9hcm0vaW9ydC5jCj4+IGluZGV4IDJl MzY4YTYuLjdmNTQwNjIgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvYXJtL2lvcnQu Ywo+PiArKysgYi94ZW4vZHJpdmVycy9hY3BpL2FybS9pb3J0LmMKPj4gQEAgLTE0LDE3ICsxNCw0 NyBAQAo+PiDCoMKgICogVGhpcyBmaWxlIGltcGxlbWVudHMgZWFybHkgZGV0ZWN0aW9uL3BhcnNp bmcgb2YgSS9PIG1hcHBpbmcKPj4gwqDCoCAqIHJlcG9ydGVkIHRvIE9TIHRocm91Z2ggZmlybXdh cmUgdmlhIEkvTyBSZW1hcHBpbmcgVGFibGUgKElPUlQpCj4+IMKgwqAgKiBJT1JUIGRvY3VtZW50 IG51bWJlcjogQVJNIERFTiAwMDQ5QQo+PiArICoKPj4gKyAqIEJhc2VkIG9uIExpbnV4IGRyaXZl cnMvYWNwaS9hcm02NC9pb3J0LmMKPj4gKyAqID0+IGNvbW1pdCBjYTc4ZDMxNzNjZmYzNTAzYmNk MTU3MjNiMDQ5NzU3Zjc1NzYyZDE1Cj4+ICsgKgo+PiArICogWGVuIG1vZGlmaWNhdGlvbjoKPj4g KyAqIFNhbWVlciBHb2VsIDxzZ29lbEBjb2RlYXVyb3JhLm9yZz4KPj4gKyAqIENvcHlyaWdodCAo QykgMjAxNywgVGhlIExpbnV4IEZvdW5kYXRpb24sIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsg Kgo+PiDCoMKgICovCj4+IMKgIC0jZGVmaW5lIHByX2ZtdChmbXQpwqDCoMKgICJBQ1BJOiBJT1JU OiAiIGZtdAo+PiAtCj4+IC0jaW5jbHVkZSA8bGludXgvYWNwaV9pb3J0Lmg+Cj4+IC0jaW5jbHVk ZSA8bGludXgvaW9tbXUuaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4gLSNpbmNs dWRlIDxsaW51eC9saXN0Lmg+Cj4+IC0jaW5jbHVkZSA8bGludXgvcGNpLmg+Cj4+IC0jaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+IC0jaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ PiArI2luY2x1ZGUgPHhlbi9hY3BpLmg+Cj4+ICsjaW5jbHVkZSA8YWNwaS9hY3BpX2lvcnQuaD4K PiAKPiBXaHkgZG8geW91IG5lZWQgdG8gaW5jbHVkZSB0aGVyZT8gQ2FuJ3QgdGhpcyBiZSBkb25l IGFmdGVyIGFsbCB0aGUgPHhlbi8+ID8KSSB3YXMganVzdCBjbHViYmluZyB0aGUgYWNwaSBpbmNs dWRlcy4gSSBjYW4gbW92ZSB0aGlzIGFmdGVyIGFsbCB4ZW4vCj4gCj4+ICsjaW5jbHVkZSA8eGVu L2Z3bm9kZS5oPgo+PiArI2luY2x1ZGUgPHhlbi9pb21tdS5oPgo+PiArI2luY2x1ZGUgPHhlbi9s aWIuaD4KPj4gKyNpbmNsdWRlIDx4ZW4vbGlzdC5oPgo+PiArI2luY2x1ZGUgPHhlbi9wY2kuaD4K Pj4gKwo+PiArI2luY2x1ZGUgPGFzbS9kZXZpY2UuaD4KPj4gKwo+PiArLyogWGVuOiBEZWZpbmUg Y29tcGF0aWJpbGl0eSBmdW5jdGlvbnMgKi8KPj4gKyNkZWZpbmUgRldfQlVHwqDCoMKgwqDCoMKg wqAgIltGaXJtd2FyZSBCdWddOiAiCj4+ICsjZGVmaW5lIHByX2VycihmbXQsIC4uLikgcHJpbnRr KFhFTkxPR19FUlIgZm10LCAjIyBfX1ZBX0FSR1NfXykKPj4gKyNkZWZpbmUgcHJfd2FybihmbXQs IC4uLikgcHJpbnRrKFhFTkxPR19XQVJOSU5HIGZtdCwgIyMgX19WQV9BUkdTX18pCj4+ICsKPj4g Ky8qIEFsaWFzIHRvIFhlbiBhbGxvY2F0aW9uIGhlbHBlcnMgKi8KPj4gKyNkZWZpbmUga2ZyZWUg eGZyZWUKPj4gKyNkZWZpbmUga21hbGxvYyhzaXplLCBmbGFncynCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIF94bWFsbG9jKHNpemUsIHNpemVvZih2b2lkICopKQo+PiArI2RlZmluZSBremFsbG9jKHNp emUsIGZsYWdzKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX3h6YWxsb2Moc2l6ZSwgc2l6ZW9mKHZv aWQgKikpCj4gCj4gTGlrZWx5IHlvdSB3b3VsZCBuZWVkIHRoZSBzYW1lIG1hY3JvcyBpbiB0aGUg U01NVXYzIGRyaXZlci4gQ291bGQgd2UgdGhpbmsgb2YgYSBjb21tb24gaGVhZGVycyBpbXBsZW1l bnRpbmcgdGhlIExpbnV4IGNvbXBhdCBsYXllcj8KSSBhZ3JlZSB0aGF0IHRoaXMgd2lsbCBiZSBh IHZlcnkgdXNlZnVsLiBpJ2xsIHRyeSB0byBwcm9wb3NlIHNvbWV0aGluZy4KPiAKPj4gKwo+PiAr LyogUmVkZWZpbmUgV0FSTiBtYWNyb3MgKi8KPj4gKyN1bmRlZiBXQVJOCj4+ICsjdW5kZWYgV0FS Tl9PTgo+PiArI2RlZmluZSBXQVJOKGNvbmRpdGlvbiwgZm9ybWF0Li4uKSAoe8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCBpbnQgX19yZXRfd2Fybl9v biA9ICEhKGNvbmRpdGlvbik7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8Kg wqDCoCBpZiAodW5saWtlbHkoX19yZXRfd2Fybl9vbikpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgXAo+PiArwqDCoMKgwqDCoMKgwqAgcHJpbnRrKGZvcm1hdCk7wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqAgdW5s aWtlbHkoX19yZXRfd2Fybl9vbik7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+PiArfSkKPiAKPiBBZ2FpbiwgeW91IHNob3VsZCBhdCBsZWFzdCB0cnkgdG8gbW9kaWZ5 IHRoZSBjb21tb24gY29kZSB2ZXJzaW9uIGJlZm9yZSBkZWNpZGluZyB0byByZWRlZmluZSBpdCBo ZXJlLgpUaGUgeGVuIG1hY3JvIHNlZW1zIHN1Y2ggdGhhdCBpdCBleHBsaWNpdGx5IHRyaWVzIHRv IGJsb2NrIGEgcmV0dXJuIGJ5IHdyYXBwaW5nIHRoaXMgbWFjcm8gaW4gYSBsb29wLiBJIGhhZCBj aGFuZ2VkIHRoZSBjb21tb24gZnVuY3Rpb24gaW4gdGhlIGxhc3QgaXRlcmF0aW9uIGFuZCB0aGVy ZSBzZWVtZWQgdG8gYmUgYSBwdXNoYmFjay4gCj4gCj4+ICsjZGVmaW5lIFdBUk5fVEFJTlQoY29u ZCwgdGFpbnQsIGZvcm1hdC4uLikgV0FSTihjb25kLCBmb3JtYXQpCj4+ICsjZGVmaW5lIFdBUk5f T04oY29uZCnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKCEhY29u ZCkKPj4gwqAgwqAgI2RlZmluZSBJT1JUX1RZUEVfTUFTSyh0eXBlKcKgwqDCoCAoMSA8PCAodHlw ZSkpCj4+IMKgICNkZWZpbmUgSU9SVF9NU0lfVFlQRcKgwqDCoMKgwqDCoMKgICgxIDw8IEFDUElf SU9SVF9OT0RFX0lUU19HUk9VUCkKPj4gQEAgLTI1Niw2ICsyODYsMTMgQEAgc3RhdGljIGFjcGlf c3RhdHVzIGlvcnRfbWF0Y2hfbm9kZV9jYWxsYmFjayhzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5v ZGUsCj4+IMKgwqDCoMKgwqAgYWNwaV9zdGF0dXMgc3RhdHVzOwo+PiDCoCDCoMKgwqDCoMKgIGlm IChub2RlLT50eXBlID09IEFDUElfSU9SVF9OT0RFX05BTUVEX0NPTVBPTkVOVCkgewo+PiArwqDC oMKgwqDCoMKgwqAgc3RhdHVzID0gQUVfTk9UX0lNUExFTUVOVEVEOwo+PiArLyoKPj4gKyAqIFdl IG5lZWQgdGhlIG5hbWVzcGFjZSBvYmplY3QgbmFtZSBmcm9tIGRzZHQgdG8gbWF0Y2ggdGhlIGlv cnQgbm9kZSwgdGhpcwo+IAo+IFBsZWFzZSBhZGQgYSAiWGVuOiBUT0RPOiIgaW4gZnJvbnQuCk9r Lgo+IAo+PiArICogd2lsbCBuZWVkIGFkZGl0aW9ucyB0byB0aGUga2VybmVsIHhlbiBidXMgbm90 aWZpZXJzLgo+PiArICogU28sIGRpc2FibGluZyB0aGUgbmFtZWQgbm9kZSBjb2RlIHRpbGwgYSBw cm9wb3NhbCBpcyBhcHByb3ZlZC4KPj4gKyAqLwo+PiArI2lmIDAKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBhY3BpX2J1ZmZlciBidWYgPSB7IEFDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxM IH07Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYgPSB0b19h Y3BpX2RldmljZV9ub2RlKGRldi0+Zndub2RlKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBhY3BpX2lvcnRfbmFtZWRfY29tcG9uZW50ICpuY29tcDsKPj4gQEAgLTI3NSwxMSArMzEyLDEy IEBAIHN0YXRpYyBhY3BpX3N0YXR1cyBpb3J0X21hdGNoX25vZGVfY2FsbGJhY2soc3RydWN0IGFj cGlfaW9ydF9ub2RlICpub2RlLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3RhdHVzID0gIXN0cmNt cChuY29tcC0+ZGV2aWNlX25hbWUsIGJ1Zi5wb2ludGVyKSA/Cj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQUVfT0sgOiBBRV9OT1Rf Rk9VTkQ7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBhY3BpX29zX2ZyZWUoYnVmLnBvaW50ZXIpOwo+ PiArI2VuZGlmCj4+IMKgwqDCoMKgwqAgfSBlbHNlIGlmIChub2RlLT50eXBlID09IEFDUElfSU9S VF9OT0RFX1BDSV9ST09UX0NPTVBMRVgpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBh Y3BpX2lvcnRfcm9vdF9jb21wbGV4ICpwY2lfcmM7Cj4+IC3CoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg cGNpX2J1cyAqYnVzOwo+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IHBjaV9kZXYgKnBjaV9kZXY7 Cj4gCj4gRG8geW91IHJlYWxseSBuZWVkIHRvIG1vZGlmeSB0aGUgY29kZT8gV291bGRuJ3QgaXQg YmUgcG9zc2libGUgdG8gZG8KPiAKPiAjZGVmaW5lIHBjaV9idXMgcGNpX2RldgpUaGUgcGNpX2Rl diBpcyB0aGUgY29udGFpbmVyIGZvciB0aGUgZ2VuZXJpYyBkZXZpY2UuIEkgd2FudGVkIHRvIGNh bGwgdGhpcyBvdXQgZXhwbGljaXRseSBoZXJlLiBXZSBjYW4gZG8gdGhlIGFib3ZlIGlmIHlvdSBp bnNpc3QgOikuCj4gCj4gV2l0aCBhbiBleHBsYW5hdGlvbiB3aHkgeW91IGRvIHRoYXQgb24gdG9w Lgo+IAo+PiDCoCAtwqDCoMKgwqDCoMKgwqAgYnVzID0gdG9fcGNpX2J1cyhkZXYpOwo+PiArwqDC oMKgwqDCoMKgwqAgcGNpX2RldiA9IHRvX3BjaV9kZXYoZGV2KTsKPiAKPiBTYW1lIGhlcmU/Cj4g Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwY2lfcmMgPSAoc3RydWN0IGFjcGlfaW9ydF9yb290X2Nv bXBsZXggKilub2RlLT5ub2RlX2RhdGE7Cj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCAvKgo+PiBA QCAtMjg3LDEyICszMjUsMTEgQEAgc3RhdGljIGFjcGlfc3RhdHVzIGlvcnRfbWF0Y2hfbm9kZV9j YWxsYmFjayhzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUsCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgICogd2l0aCByb290IGNvbXBsZXhlcy4gRWFjaCBzZWdtZW50IG51bWJlciBjYW4gcmVwcmVz ZW50IG9ubHkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBvbmUgcm9vdCBjb21wbGV4Lgo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgwqDCoMKgwqAgc3RhdHVzID0gcGNpX3Jj LT5wY2lfc2VnbWVudF9udW1iZXIgPT0gcGNpX2RvbWFpbl9ucihidXMpID8KPj4gK8KgwqDCoMKg wqDCoMKgIHN0YXR1cyA9IHBjaV9yYy0+cGNpX3NlZ21lbnRfbnVtYmVyID09IHBjaV9kb21haW5f bnIocGNpX2RldikgPwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEFFX09LIDogQUVfTk9UX0ZPVU5EOwo+PiDCoMKgwqDCoMKgIH0g ZWxzZSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0dXMgPSBBRV9OT1RfRk9VTkQ7Cj4+IMKg wqDCoMKgwqAgfQo+PiAtb3V0Ogo+PiDCoMKgwqDCoMKgIHJldHVybiBzdGF0dXM7Cj4+IMKgIH0K Pj4gwqAgQEAgLTMyMCw2ICszNTcsMTEgQEAgc3RhdGljIGludCBpb3J0X2lkX21hcChzdHJ1Y3Qg YWNwaV9pb3J0X2lkX21hcHBpbmcgKm1hcCwgdTggdHlwZSwgdTMyIHJpZF9pbiwKPj4gwqDCoMKg wqDCoCByZXR1cm4gMDsKPj4gwqAgfQo+PiDCoCArLyoKPj4gKyAqIE5hbWVkIGNvbXBvbmVudHMg YXJlIG5vdCBzdXBwb3J0ZWQgeWV0IHNvIHdlIGRvIG5vdCBuZWVkIHRoZQo+PiArICogaW9ydF9u b2RlX2dldF9pZCBmdW5jdGlvbgo+IAo+IE1pc3NpbmcgZnVsbCBzdG9wICsgVE9ETy4KT2suCj4g Cj4+ICsgKi8KPj4gKyNpZiAwCj4+IMKgIHN0YXRpYwo+PiDCoCBzdHJ1Y3QgYWNwaV9pb3J0X25v ZGUgKmlvcnRfbm9kZV9nZXRfaWQoc3RydWN0IGFjcGlfaW9ydF9ub2RlICpub2RlLAo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyICppZF9vdXQsIHU4IHR5 cGVfbWFzaywKPj4gQEAgLTM1OCw2ICs0MDAsNyBAQCBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKmlv cnRfbm9kZV9nZXRfaWQoc3RydWN0IGFjcGlfaW9ydF9ub2RlICpub2RlLAo+PiDCoCDCoMKgwqDC oMKgIHJldHVybiBOVUxMOwo+PiDCoCB9Cj4+ICsjZW5kaWYKPj4gwqAgwqAgc3RhdGljIHN0cnVj dCBhY3BpX2lvcnRfbm9kZSAqaW9ydF9ub2RlX21hcF9yaWQoc3RydWN0IGFjcGlfaW9ydF9ub2Rl ICpub2RlLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1MzIgcmlkX2luLCB1MzIgKnJpZF9vdXQsCj4+IEBAIC00MTAsNiArNDUzLDEwIEBAIGZh aWxfbWFwOgo+PiDCoMKgwqDCoMKgIHJldHVybiBOVUxMOwo+PiDCoCB9Cj4+IMKgICsvKiBYZW46 IENvbW1lbnQgb3V0IHRoZSBOYW1lZENvbXBvbmVudCBhbmQgSVRTIG1hcHBpbmcgY29kZSB0aWxs IHRoZSBzdXBwb3J0Cj4gCj4gKyBUT0RPIGhlcmUgcGxlYXNlLgo+IApPay4KPj4gKyAqIGlzIGF2 YWlsYWJsZS4KPj4gKyAqLwo+PiArI2lmIDAKPj4gwqAgc3RhdGljIHN0cnVjdCBhY3BpX2lvcnRf bm9kZSAqaW9ydF9maW5kX2Rldl9ub2RlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gwqAgewo+PiDC oMKgwqDCoMKgIHN0cnVjdCBwY2lfYnVzICpwYnVzOwo+PiBAQCAtNDgxLDcgKzUyOCw3IEBAIHN0 YXRpYyBpbnQgaW9ydF9kZXZfZmluZF9pdHNfaWQoc3RydWN0IGRldmljZSAqZGV2LCB1MzIgcmVx X2lkLAo+PiDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiDCoCB9Cj4+IMKgIC0vKioKPj4gKy8qCj4g Cj4gV2h5IHRoaXMgY2hhbmdlPwpPdmVyc2lnaHQuCj4gCj4+IMKgwqAgKiBpb3J0X2dldF9kZXZp Y2VfZG9tYWluKCkgLSBGaW5kIE1TSSBkb21haW4gcmVsYXRlZCB0byBhIGRldmljZQo+PiDCoMKg ICogQGRldjogVGhlIGRldmljZS4KPj4gwqDCoCAqIEByZXFfaWQ6IFJlcXVlc3RlciBJRCBmb3Ig dGhlIGRldmljZS4KPj4gQEAgLTUxMCw3ICs1NTcsNyBAQCBzdGF0aWMgaW50IF9fZ2V0X3BjaV9y aWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUxNiBhbGlhcywgdm9pZCAqZGF0YSkKPj4gwqDCoMKg wqDCoCAqcmlkID0gYWxpYXM7Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gLQo+ PiArI2VuZGlmCj4gCj4gUGxlYXNlIGF2b2lkIGRyb3BwaW5nIG5ld2xpbmUuCj4gCj4+IMKgIHN0 YXRpYyBpbnQgYXJtX3NtbXVfaW9ydF94bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiBzdHJl YW1pZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg Zndub2RlX2hhbmRsZSAqZndub2RlLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKm9wcykKPj4gQEAgLTU0Niw2ICs1OTMs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqaW9ydF9pb21tdV94bGF0ZShzdHJ1 Y3QgZGV2aWNlICpkZXYsCj4+IMKgwqDCoMKgwqAgcmV0dXJuIHJldCA/IE5VTEwgOiBvcHM7Cj4+ IMKgIH0KPj4gwqAgKyNpZiAwIC8qIFhlbjogV2UgZG8gbm90IG5lZWQgdGhpcyBmdW5jdGlvbiBm b3IgWGVuICovCj4+IMKgIC8qKgo+PiDCoMKgICogaW9ydF9zZXRfZG1hX21hc2sgLSBTZXQtdXAg ZG1hIG1hc2sgZm9yIGEgZGV2aWNlLgo+PiDCoMKgICoKPj4gQEAgLTU2Nyw3ICs2MTUsNyBAQCB2 b2lkIGlvcnRfc2V0X2RtYV9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gwqDCoMKgwqDCoCBp ZiAoIWRldi0+ZG1hX21hc2spCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBkZXYtPmRtYV9tYXNrID0g JmRldi0+Y29oZXJlbnRfZG1hX21hc2s7Cj4+IMKgIH0KPj4gLQo+PiArI2VuZGlmCj4gCj4gU2Ft ZSBoZXJlLgo+IAo+PiDCoCAvKioKPj4gwqDCoCAqIGlvcnRfaW9tbXVfY29uZmlndXJlIC0gU2V0 LXVwIElPTU1VIGNvbmZpZ3VyYXRpb24gZm9yIGEgZGV2aWNlLgo+PiDCoMKgICoKPj4gQEAgLTU4 MywxNCArNjMxLDEzIEBAIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKmlvcnRfaW9tbXVfY29uZmln dXJlKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gwqDCoMKgwqDCoCB1MzIgc3RyZWFtaWQgPSAwOwo+ PiDCoCDCoMKgwqDCoMKgIGlmIChkZXZfaXNfcGNpKGRldikpIHsKPj4gLcKgwqDCoMKgwqDCoMKg IHN0cnVjdCBwY2lfYnVzICpidXMgPSB0b19wY2lfZGV2KGRldiktPmJ1czsKPj4gK8KgwqDCoMKg wqDCoMKgIHN0cnVjdCBwY2lfZGV2ICpwY2lfZGV2aWNlID0gdG9fcGNpX2RldihkZXYpOwo+IAo+ IFNlZSBhYm92ZS4KPiAKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByaWQ7Cj4+IMKgIC3CoMKg wqDCoMKgwqDCoCBwY2lfZm9yX2VhY2hfZG1hX2FsaWFzKHRvX3BjaV9kZXYoZGV2KSwgX19nZXRf cGNpX3JpZCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICZyaWQpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmlkID0gUENJX0JERjIocGNpX2RldmljZS0+YnVz LCBwY2lfZGV2aWNlLT5kZXZmbik7Cj4gCj4gSSBiZWxpZXZlIHdlIGhhZCBhIGRpc2N1c3Npb24g b24gdjEgZXhwbGFpbmluZyB3aHkgdGhpcyBpcyB3cm9uZy4gU28gSSBkb24ndCB1bmRlcnN0YW5k IHdoeQpUaGUgaW50ZW50IGhlcmUgd2FzIHRvIGhhdmUgc29tZSB3b3JraW5nIHN1cHBvcnQgY29k ZSB0byBnZXQgdGhlIFNNTVV2MyBkcml2ZXIgcmVhZHkgZm9yIGEgZmlyc3QgcmV2aWV3LiBJIHN0 aWxsIG5lZWQgdG8gcmVzZWFyY2ggb24gaG93IHRvIGZpeCB0aGlzIGNvcnJlY3RseSBiYXNlZCBv biB0aGUgdjEgY29tbWVudHMuIEknbGwgZml4IGl0IGluIHRoZSBuZXh0IFJGQy4KPiAKPj4gwqAg wqDCoMKgwqDCoMKgwqDCoMKgIG5vZGUgPSBpb3J0X3NjYW5fbm9kZShBQ1BJX0lPUlRfTk9ERV9Q Q0lfUk9PVF9DT01QTEVYLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGlvcnRfbWF0Y2hfbm9kZV9jYWxsYmFjaywgJmJ1cy0+ZGV2KTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpb3J0X21hdGNoX25vZGVfY2FsbGJh Y2ssIGRldik7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIW5vZGUpCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOwo+PiDCoCBAQCAtNjAwLDYgKzY0NywxMyBAQCBj b25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lvbW11X2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNl ICpkZXYpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBvcHMgPSBpb3J0X2lvbW11X3hsYXRlKGRldiwg cGFyZW50LCBzdHJlYW1pZCk7Cj4+IMKgIMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiBOVUxMOwo+PiArLyoKPj4gKyAqIFdlIG5lZWQgdGhlIG5hbWVzcGFjZSBv YmplY3QgbmFtZSBmcm9tIGRzZHQgdG8gbWF0Y2ggdGhlIGlvcnQgbm9kZSwgdGhpcwo+IAo+IFhl bjoKPiAKPj4gKyAqIHdpbGwgbmVlZCBhZGRpdGlvbnMgdG8gdGhlIGtlcm5lbCB4ZW4gYnVzIG5v dGlmaWVycy4KPj4gKyAqIFNvLCBkaXNhYmxpbmcgdGhlIG5hbWVkIG5vZGUgY29kZSB0aWxsIGEg cHJvcG9zYWwgaXMgYXBwcm92ZWQuCj4+ICsgKi8KPj4gKyNpZiAwCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCBpbnQgaSA9IDA7Cj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBub2RlID0gaW9ydF9zY2Fu X25vZGUoQUNQSV9JT1JUX05PREVfTkFNRURfQ09NUE9ORU5ULAo+PiBAQCAtNjE2LDExICs2NzAs MTcgQEAgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqaW9ydF9pb21tdV9jb25maWd1cmUoc3RydWN0 IGRldmljZSAqZGV2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYXJlbnQgPSBpb3J0 X25vZGVfZ2V0X2lkKG5vZGUsICZzdHJlYW1pZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElPUlRfSU9NTVVfVFlQRSwgaSsrKTsKPj4g wqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKyNlbmRpZgo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgwqDC oMKgwqDCoCByZXR1cm4gb3BzOwo+PiDCoCB9Cj4+IMKgICsvKgo+PiArICogWGVuOiBOb3QgdXNp bmcgdGhlIHBhcnNpbmcgb3BzIGZvciBub3cuIE5lZWQgdG8gY2hlY2sgYW5kIHNlZSBpZiBpdCB3 aWxsCj4+ICsgKiBiZSB1c2VmdWwgdG8gdXNlIHRoZXNlIGluIHNvbWUgZm9ybSwgb3IgbGV0IHRo ZSBkcml2ZXIgcGFyc2UgSU9SVCBub2RlLgo+PiArICovCj4+ICsjaWYgMAo+PiDCoCBzdGF0aWMg dm9pZCBfX2luaXQgYWNwaV9pb3J0X3JlZ2lzdGVyX2lycShpbnQgaHdpcnEsIGNvbnN0IGNoYXIg Km5hbWUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW50IHRyaWdnZXIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IHJlc291cmNlICpyZXMpCj4+IEBAIC04MDcsNyArODY3LDcgQEAgY29uc3Qg c3RydWN0IGlvcnRfaW9tbXVfY29uZmlnICppb3J0X2dldF9pb21tdV9jZmcoc3RydWN0IGFjcGlf aW9ydF9ub2RlICpub2RlKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+IMKg wqDCoMKgwqAgfQo+PiDCoCB9Cj4+IC0KPj4gKyNlbmRpZgo+IAo+IFBsZWFzZSBhdm9pZCBkcm9w cGluZyBuZXdsaW5lLgo+IAo+PiDCoCAvKioKPj4gwqDCoCAqIGlvcnRfYWRkX3NtbXVfcGxhdGZv cm1fZGV2aWNlKCkgLSBBbGxvY2F0ZSBhIHBsYXRmb3JtIGRldmljZSBmb3IgU01NVQo+PiDCoMKg ICogQG5vZGU6IFBvaW50ZXIgdG8gU01NVSBBQ1BJIElPUlQgbm9kZQo+PiBAQCAtODE3LDc4ICs4 NzcsNDIgQEAgY29uc3Qgc3RydWN0IGlvcnRfaW9tbXVfY29uZmlnICppb3J0X2dldF9pb21tdV9j Zmcoc3RydWN0IGFjcGlfaW9ydF9ub2RlICpub2RlKQo+PiDCoCBzdGF0aWMgaW50IF9faW5pdCBp b3J0X2FkZF9zbW11X3BsYXRmb3JtX2RldmljZShzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUp Cj4gCj4gTG9va2luZyBhdCB0aGUgY2hhbmdlcyBpbiB0aGlzIGZ1bmN0aW9uLiBZb3UgYmFzaWNh bGx5IHJld3JpdGUgZXZlcnl0aGluZy4gSSB3b3VsZCBwcmVmZXIgaWYgeW91IGNvbW1lbnQgdGhl IGN1cnJlbnQgb25lIGFuZCBpbXBsZW1lbnQgZnJvbSBzY3JhdGNoIHRoZSBYZW4gdmVyc2lvbi4K QWdyZWUuCj4gCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndu b2RlOwo+PiAtwqDCoMKgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7Cj4+IC3CoMKgwqAg c3RydWN0IHJlc291cmNlICpyOwo+PiAtwqDCoMKgIGVudW0gZGV2X2RtYV9hdHRyIGF0dHI7Cj4+ IC3CoMKgwqAgaW50IHJldCwgY291bnQ7Cj4+IC3CoMKgwqAgY29uc3Qgc3RydWN0IGlvcnRfaW9t bXVfY29uZmlnICpvcHMgPSBpb3J0X2dldF9pb21tdV9jZmcobm9kZSk7Cj4+IC0KPj4gLcKgwqDC oCBpZiAoIW9wcykKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PREVWOwo+PiAtCj4+IC3C oMKgwqAgcGRldiA9IHBsYXRmb3JtX2RldmljZV9hbGxvYyhvcHMtPm5hbWUsIFBMQVRGT1JNX0RF VklEX0FVVE8pOwo+PiAtwqDCoMKgIGlmICghcGRldikKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVy biAtRU5PTUVNOwo+PiAtCj4+IC3CoMKgwqAgY291bnQgPSBvcHMtPmlvbW11X2NvdW50X3Jlc291 cmNlcyhub2RlKTsKPj4gLQo+PiAtwqDCoMKgIHIgPSBrY2FsbG9jKGNvdW50LCBzaXplb2YoKnIp LCBHRlBfS0VSTkVMKTsKPj4gLcKgwqDCoCBpZiAoIXIpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHJl dCA9IC1FTk9NRU07Cj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGRldl9wdXQ7Cj4+IC3CoMKgwqAg fQo+PiAtCj4+IC3CoMKgwqAgb3BzLT5pb21tdV9pbml0X3Jlc291cmNlcyhyLCBub2RlKTsKPj4g K8KgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gwqAgLcKg wqDCoCByZXQgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkX3Jlc291cmNlcyhwZGV2LCByLCBjb3VudCk7 Cj4+IMKgwqDCoMKgwqAgLyoKPj4gLcKgwqDCoMKgICogUmVzb3VyY2VzIGFyZSBkdXBsaWNhdGVk IGluIHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3VyY2VzLAo+PiAtwqDCoMKgwqAgKiBmcmVlIHRo ZWlyIGFsbG9jYXRlZCBtZW1vcnkKPj4gK8KgwqDCoMKgICogTm90IGVuYWJsaW5nIHRoZSBwYXJz aW5nIG9wcyBmb3Igbm93LiBUaGUgY29ycmVzcG9uZGluZyBkcml2ZXIKPj4gK8KgwqDCoMKgICog Y2FuIHBhcnNlIHRoaXMgaW5mb3JtYXRpb24gYXMgbmVlZGVkLCBzbyBkZWxldGluZyByZWxldmFu dCBjb2RlIGFzCj4+ICvCoMKgwqDCoCAqIGNvbXBhcmVkIHRvIGJhc2UgcmV2aXNpb24uCj4+IMKg wqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgIGtmcmVlKHIpOwo+PiDCoCAtwqDCoMKgIGlmIChyZXQp Cj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGRldl9wdXQ7Cj4+ICvCoMKgwqAgZGV2ID0ga3phbGxv YyhzaXplb2Yoc3RydWN0IGRldmljZSksIEdGUF9LRVJORUwpOwo+PiArwqDCoMKgIGlmICghZGV2 KQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+IMKgIMKgwqDCoMKgwqAgLyoK Pj4gwqDCoMKgwqDCoMKgICogQWRkIGEgY29weSBvZiBJT1JUIG5vZGUgcG9pbnRlciB0byBwbGF0 Zm9ybV9kYXRhIHRvCj4+IMKgwqDCoMKgwqDCoCAqIGJlIHVzZWQgdG8gcmV0cmlldmUgSU9SVCBk YXRhIGluZm9ybWF0aW9uLgo+PiDCoMKgwqDCoMKgwqAgKi8KPj4gLcKgwqDCoCByZXQgPSBwbGF0 Zm9ybV9kZXZpY2VfYWRkX2RhdGEocGRldiwgJm5vZGUsIHNpemVvZihub2RlKSk7Cj4+IC3CoMKg wqAgaWYgKHJldCkKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gZGV2X3B1dDsKPj4gLQo+PiAtwqDC oMKgIC8qCj4+IC3CoMKgwqDCoCAqIFdlIGV4cGVjdCB0aGUgZG1hIG1hc2tzIHRvIGJlIGVxdWl2 YWxlbnQgZm9yCj4+IC3CoMKgwqDCoCAqIGFsbCBTTU1VcyBzZXQtdXBzCj4+IC3CoMKgwqDCoCAq Lwo+PiAtwqDCoMKgIHBkZXYtPmRldi5kbWFfbWFzayA9ICZwZGV2LT5kZXYuY29oZXJlbnRfZG1h X21hc2s7Cj4+ICvCoMKgwqAgZGV2LT50eXBlID0gREVWX0FDUEk7Cj4+ICvCoMKgwqAgZGV2LT5h Y3BpX25vZGUgPSBub2RlOwo+PiDCoCDCoMKgwqDCoMKgIGZ3bm9kZSA9IGlvcnRfZ2V0X2Z3bm9k ZShub2RlKTsKPj4gwqAgwqDCoMKgwqDCoCBpZiAoIWZ3bm9kZSkgewo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0ID0gLUVOT0RFVjsKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gZGV2X3B1dDsKPj4g K8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3I7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCAtwqDCoMKg IHBkZXYtPmRldi5md25vZGUgPSBmd25vZGU7Cj4+IC0KPj4gLcKgwqDCoCBhdHRyID0gb3BzLT5p b21tdV9pc19jb2hlcmVudChub2RlKSA/Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBERVZfRE1BX0NPSEVSRU5UIDogREVWX0RNQV9OT05fQ09IRVJFTlQ7Cj4+IC0KPj4gLcKg wqDCoCAvKiBDb25maWd1cmUgRE1BIGZvciB0aGUgcGFnZSB0YWJsZSB3YWxrZXIgKi8KPj4gLcKg wqDCoCBhY3BpX2RtYV9jb25maWd1cmUoJnBkZXYtPmRldiwgYXR0cik7Cj4+ICvCoMKgwqAgZGV2 LT5md25vZGUgPSBmd25vZGU7Cj4+IMKgIC3CoMKgwqAgcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2Fk ZChwZGV2KTsKPj4gLcKgwqDCoCBpZiAocmV0KQo+PiAtwqDCoMKgwqDCoMKgwqAgZ290byBkbWFf ZGVjb25maWd1cmU7Cj4+ICvCoMKgwqAgLyogQ2FsbCB0aGUgYWNwaSBpbml0IGZ1bmN0aW9ucyBm b3IgSU9NTVUgZGV2aWNlcyAqLwo+PiArwqDCoMKgIHJldCA9IGFjcGlfZGV2aWNlX2luaXQoREVW SUNFX0lPTU1VLCAodm9pZCAqKWRldiwgbm9kZS0+dHlwZSk7Cj4+IMKgIMKgwqDCoMKgwqAgcmV0 dXJuIDA7Cj4+IMKgIC1kbWFfZGVjb25maWd1cmU6Cj4+IC3CoMKgwqAgYWNwaV9kbWFfZGVjb25m aWd1cmUoJnBkZXYtPmRldik7Cj4+IC1kZXZfcHV0Ogo+PiAtwqDCoMKgIHBsYXRmb3JtX2Rldmlj ZV9wdXQocGRldik7Cj4+ICtlcnJvcjoKPj4gK8KgwqDCoCBrZnJlZShkZXYpOwo+PiDCoCDCoMKg wqDCoMKgIHJldHVybiByZXQ7Cj4+IMKgIH0KPj4gQEAgLTk1Nyw1ICs5ODEsNiBAQCB2b2lkIF9f aW5pdCBhY3BpX2lvcnRfaW5pdCh2b2lkKQo+PiDCoCDCoMKgwqDCoMKgIGlvcnRfaW5pdF9wbGF0 Zm9ybV9kZXZpY2VzKCk7Cj4+IMKgIC3CoMKgwqAgYWNwaV9wcm9iZV9kZXZpY2VfdGFibGUoaW9y dCk7Cj4+ICvCoMKgwqAgLyogWGVuOyBEbyBub3QgbmVlZCBhIGRldmljZSB0YWJsZSBwcm9iZSAq Lwo+PiArwqDCoMKgIC8qIGFjcGlfcHJvYmVfZGV2aWNlX3RhYmxlKGlvcnQpOyovCj4gCj4gUGxl YXNlIHVzZSBlaXRoZXIKPiAKPiAjaWYgMAo+IAo+ICNlbmRpZgo+IAo+IG9yIGludHJvZHVjZSBh IGR1bW15IGFjcGlfcHJvYmVfZGV2aWNlX3RhYmxlKC4uLikgYXQgdGhlIHN0YXJ0LgpXaWxsIGlu dHJvZHVjZSBhIGR1bW15IGFjcGlfcHJvYmUuCj4gCj4+IMKgIH0KPj4gZGlmZiAtLWdpdCBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hcm0vc21tdS5jCj4+IGluZGV4IDM2MmQ1NzguLmFkOTU2ZDUgMTAwNjQ0Cj4+IC0tLSBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKPj4gKysrIGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYXJtL3NtbXUuYwo+PiBAQCAtMTgxLDYgKzE4MSw3IEBAIHN0YXRpYyB2b2lkIF9f aW9tZW0gKmRldm1faW9yZW1hcF9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+IMKgwqAg KiBYZW46IFBDSSBmdW5jdGlvbnMKPj4gwqDCoCAqIFRPRE86IEl0IHNob3VsZCBiZSBpbXBsZW1l bnRlZCB3aGVuIFBDSSB3aWxsIGJlIHN1cHBvcnRlZAo+PiDCoMKgICovCj4+ICsjdW5kZWYgdG9f cGNpX2Rldgo+IAo+IFdoeSB0aGlzIGNoYW5nZT8KSSBoYWQgcmVkZWZpbmUgdGhlIHRvX3BjaV9k ZXYgdG8gZ2V0IHRoZSBhY3R1YWwgcGNpX2RldiBzdHJ1Y3QuIHNtbXUgZHJpdmVyIGRvZXMgbm90 IHVzZSBwY2kgeWV0Lgo+IAo+PiDCoCAjZGVmaW5lIHRvX3BjaV9kZXYoZGV2KcKgwqDCoCAoTlVM TCkKPj4gwqAgc3RhdGljIGlubGluZSBpbnQgcGNpX2Zvcl9lYWNoX2RtYV9hbGlhcyhzdHJ1Y3Qg cGNpX2RldiAqcGRldiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW50ICgqZm4pIChzdHJ1Y3QgcGNpX2RldiAqcGRldiwKPj4gZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FjcGkvYWNwaV9pb3J0LmggYi94ZW4vaW5jbHVkZS9hY3BpL2FjcGlfaW9ydC5o Cj4+IGluZGV4IDc3ZTA4MDkuLmQ0MzE1YTQgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL2Fj cGkvYWNwaV9pb3J0LmgKPj4gKysrIGIveGVuL2luY2x1ZGUvYWNwaS9hY3BpX2lvcnQuaAo+IAo+ IFlvdSBwcm9iYWJseSB3YW50IHRvIHJlLXN5bmMgdGhpcyBoZWFkZXJzIGFzIGl0IGNoYW5nZWQg cXVpdGUgYSBiaXQgYW5kIHdvdWxkIGF2b2lkIHNvbWUgc3BlY2lmaWMgI2lmIDAgZm9yIFhlbi4K PiAKPj4gQEAgLTE5LDI3ICsxOSwzMiBAQAo+PiDCoCAjaWZuZGVmIF9fQUNQSV9JT1JUX0hfXwo+ PiDCoCAjZGVmaW5lIF9fQUNQSV9JT1JUX0hfXwo+PiDCoCAtI2luY2x1ZGUgPGxpbnV4L2FjcGku aD4KPj4gLSNpbmNsdWRlIDxsaW51eC9md25vZGUuaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9pcnFk b21haW4uaD4KPj4gKyNpbmNsdWRlIDx4ZW4vYWNwaS5oPgo+PiArI2luY2x1ZGUgPGFzbS9kZXZp Y2UuaD4KPj4gwqAgKy8qIFhlbjogTm90IHVzaW5nIElPUlQgSVJRIGJpbmRpbmdzICovCj4+ICsj aWYgMAo+PiDCoCAjZGVmaW5lIElPUlRfSVJRX01BU0soaXJxKcKgwqDCoMKgwqDCoMKgIChpcnEg JiAweGZmZmZmZmZmVUxMKQo+PiDCoCAjZGVmaW5lIElPUlRfSVJRX1RSSUdHRVJfTUFTSyhpcnEp wqDCoMKgICgoaXJxID4+IDMyKSAmIDB4ZmZmZmZmZmZVTEwpCj4+IMKgIMKgIGludCBpb3J0X3Jl Z2lzdGVyX2RvbWFpbl90b2tlbihpbnQgdHJhbnNfaWQsIHN0cnVjdCBmd25vZGVfaGFuZGxlICpm d19ub2RlKTsKPj4gwqAgdm9pZCBpb3J0X2RlcmVnaXN0ZXJfZG9tYWluX3Rva2VuKGludCB0cmFu c19pZCk7Cj4+IMKgIHN0cnVjdCBmd25vZGVfaGFuZGxlICppb3J0X2ZpbmRfZG9tYWluX3Rva2Vu KGludCB0cmFuc19pZCk7Cj4+IC0jaWZkZWYgQ09ORklHX0FDUElfSU9SVAo+PiArI2VuZGlmCj4+ ICsjaWZkZWYgQ09ORklHX0FSTV82NAo+IAo+IEFzIHNhaWQgaW4gdGhlIGZpcnN0IHZlcnNpb24s IEkgc2VlIG5vIHBvaW50IG9mIHJlcGxhY2luZyBDT05GSUdfQUNQSV9JT1JUIHdpdGggQ09ORklH X0FSTV82NC4gWW91IHNob3VsZCBpbnN0ZWFkIHRha2UgYWR2YW50YWdlIG9mIHRoZSBLY29uZmln IHRvIGFkZCBhIG5ldyBjb25maWcgQUNQSV9JT1JUIGFuZCBzZWxlY3Qgb24gQXJtNjQgd2l0aCBB Q1BJLgoKSSBhZ3JlZS4gSSBzYXcgeW91ciBjb21tZW50cyBhIGJpdCBsYXRlIGZvciB0aGlzIFJG Qy4gSSB3aWxsIGFkZCB0aGlzIHRvIHRoZSBuZXh0IHNldC4KPiAKPj4gwqAgdm9pZCBhY3BpX2lv cnRfaW5pdCh2b2lkKTsKPj4gwqAgYm9vbCBpb3J0X25vZGVfbWF0Y2godTggdHlwZSk7Cj4+ICsj aWYgMAo+PiDCoCB1MzIgaW9ydF9tc2lfbWFwX3JpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiBy ZXFfaWQpOwo+PiDCoCBzdHJ1Y3QgaXJxX2RvbWFpbiAqaW9ydF9nZXRfZGV2aWNlX2RvbWFpbihz dHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiByZXFfaWQpOwo+PiDCoCAvKiBJT01NVSBpbnRlcmZhY2Ug Ki8KPj4gwqAgdm9pZCBpb3J0X3NldF9kbWFfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+PiAr I2VuZGlmCj4+IMKgIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKmlvcnRfaW9tbXVfY29uZmlndXJl KHN0cnVjdCBkZXZpY2UgKmRldik7Cj4+IMKgICNlbHNlCj4+IMKgIHN0YXRpYyBpbmxpbmUgdm9p ZCBhY3BpX2lvcnRfaW5pdCh2b2lkKSB7IH0KPj4gwqAgc3RhdGljIGlubGluZSBib29sIGlvcnRf bm9kZV9tYXRjaCh1OCB0eXBlKSB7IHJldHVybiBmYWxzZTsgfQo+PiArI2lmIDAKPj4gwqAgc3Rh dGljIGlubGluZSB1MzIgaW9ydF9tc2lfbWFwX3JpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiBy ZXFfaWQpCj4+IMKgIHsgcmV0dXJuIHJlcV9pZDsgfQo+PiDCoCBzdGF0aWMgaW5saW5lIHN0cnVj dCBpcnFfZG9tYWluICppb3J0X2dldF9kZXZpY2VfZG9tYWluKHN0cnVjdCBkZXZpY2UgKmRldiwK Pj4gQEAgLTQ3LDEyICs1MiwxMCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBpcnFfZG9tYWluICpp b3J0X2dldF9kZXZpY2VfZG9tYWluKHN0cnVjdCBkZXZpY2UgKmRldiwKPj4gwqAgeyByZXR1cm4g TlVMTDsgfQo+PiDCoCAvKiBJT01NVSBpbnRlcmZhY2UgKi8KPj4gwqAgc3RhdGljIGlubGluZSB2 b2lkIGlvcnRfc2V0X2RtYV9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldikgeyB9Cj4+ICsjZW5kaWYK Pj4gwqAgc3RhdGljIGlubGluZQo+PiDCoCBjb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lv bW11X2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+IMKgIHsgcmV0dXJuIE5VTEw7IH0K Pj4gwqAgI2VuZGlmCj4+IMKgIC0jZGVmaW5lIElPUlRfQUNQSV9ERUNMQVJFKG5hbWUsIHRhYmxl X2lkLCBmbinCoMKgwqDCoMKgwqDCoCBcCj4+IC3CoMKgwqAgQUNQSV9ERUNMQVJFX1BST0JFX0VO VFJZKGlvcnQsIG5hbWUsIHRhYmxlX2lkLCAwLCBOVUxMLCAwLCBmbikKPj4gLQo+PiDCoCAjZW5k aWYgLyogX19BQ1BJX0lPUlRfSF9fICovCj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t YXJtL2RldmljZS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9kZXZpY2UuaAo+PiBpbmRleCA1MDI3 Yzg3Li40ZWVmOWNlIDEwMDY0NAo+PiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2RldmljZS5o Cj4+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZGV2aWNlLmgKPj4gQEAgLTcsNiArNyw3IEBA Cj4+IMKgIGVudW0gZGV2aWNlX3R5cGUKPj4gwqAgewo+PiDCoMKgwqDCoMKgIERFVl9EVCwKPj4g K8KgwqDCoCBERVZfQUNQSSwKPj4gwqAgfTsKPj4gwqAgwqAgc3RydWN0IGRldl9hcmNoZGF0YSB7 Cj4+IEBAIC0yMCw2ICsyMSw3IEBAIHN0cnVjdCBkZXZpY2UKPj4gwqAgI2lmZGVmIENPTkZJR19I QVNfREVWSUNFX1RSRUUKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUgKm9mX25v ZGU7IC8qIFVzZWQgYnkgZHJpdmVycyBpbXBvcnRlZCBmcm9tIExpbnV4ICovCj4+IMKgICNlbmRp Zgo+PiArwqDCoMKgIHZvaWQgKmFjcGlfbm9kZTsgLypDdXJyZW50IHVzZSBjYXNlIGlzIGFjcGlf aW9ydF9ub2RlICovCj4gCj4gQ2FuIHlvdSBleHBsYWluIHdoeSB5b3UgbmVlZCB0aGF0PyBBZnRl ciB0aGUgY3JlYXRpb24gb2YgZndub2RlLCBJIHdhcyBleHBlY3Rpbmcgb2Zfbm9kZSB0byBkaXNh cHBlYXIuIFNvIEkgZG9uJ3QgcmVhbGx5IGZhbmN5IHNlZSBhY3BpX25vZGUgaGVyZSBtb3JlIGl0 IGRvZXMgbm90IGV4aXN0IGluIExpbnV4LgpvZl9ub2RlIHN0YXlzIGZvciBiYWNrd2FyZHMgY29t cGF0aWJpbGl0eSB3aXRoIHNtbXUgdjIgZHJpdmVyLiBJIHdpbGwgdHJ5IHRvIGZpbmQgYSB3YXkg dG8gcmVtb3ZlIGFjcGlfbm9kZS4KPiAKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZndub2RlX2hhbmRs ZSAqZndub2RlOyAvKmZ3IGRldmljZSBub2RlIGlkZW50aWZpZXIgKi8KPj4gwqDCoMKgwqDCoCBz dHJ1Y3QgaW9tbXVfZndzcGVjICppb21tdV9md3NwZWM7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRl dl9hcmNoZGF0YSBhcmNoZGF0YTsKPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9hY3Bp LmggYi94ZW4vaW5jbHVkZS94ZW4vYWNwaS5oCj4+IGluZGV4IDk0MDkzNTAuLjJmNmFhZTEgMTAw NjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9hY3BpLmgKPj4gKysrIGIveGVuL2luY2x1ZGUv eGVuL2FjcGkuaAo+PiBAQCAtMzIsNiArMzIsNyBAQAo+PiDCoCDCoCAjaW5jbHVkZSA8YWNwaS9h Y3BpLmg+Cj4+IMKgICNpbmNsdWRlIDxhc20vYWNwaS5oPgo+PiArI2luY2x1ZGUgPHhlbi9md25v ZGUuaD4KPiAKPiBJIHRoaW5rIHRoaXMgYW5kIC4uLgo+IAo+PiDCoCDCoCAjZGVmaW5lIEFDUElf TUFEVF9HRVRfKGZsZCwgeCkgKCgoeCkgJiBBQ1BJX01BRFRfIyNmbGQjI19NQVNLKSAvIFwKPj4g wqDCoMKgwqDCoCAoQUNQSV9NQURUXyMjZmxkIyNfTUFTSyAmIC1BQ1BJX01BRFRfIyNmbGQjI19N QVNLKSkKPj4gQEAgLTQ5LDYgKzUwLDI2IEBACj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKCEoZW50cnkpKSB8fCAodW5zaWduZWQgbG9uZykoZW50cnkpICsgc2l6ZW9mKCoo ZW50cnkpKSA+IChlbmQpIHx8wqAgXAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIChlbnRyeSktPmhlYWRlci5sZW5ndGggPCBzaXplb2YoKihlbnRyeSkpKQo+PiDCoCArc3Rh dGljIGlubGluZSBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqYWNwaV9hbGxvY19md25vZGVfc3RhdGlj KHZvaWQpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZTsKPj4g Kwo+PiArwqDCoMKgIGZ3bm9kZSA9IHh6YWxsb2Moc3RydWN0IGZ3bm9kZV9oYW5kbGUpOwo+PiAr wqDCoMKgIGlmICghZndub2RlKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4+ICsK Pj4gK8KgwqDCoCBmd25vZGUtPnR5cGUgPSBGV05PREVfQUNQSV9TVEFUSUM7Cj4+ICsKPj4gK8Kg wqDCoCByZXR1cm4gZndub2RlOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgYWNw aV9mcmVlX2Z3bm9kZV9zdGF0aWMoc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSkKPj4gK3sK Pj4gK8KgwqDCoCBpZiAoIWZ3bm9kZSB8fCBmd25vZGUtPnR5cGUgIT0gRldOT0RFX0FDUElfU1RB VElDKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiArCj4+ICvCoMKgwqAgeGZyZWUoZndu b2RlKTsKPj4gK30KPiAKPiAuLi4gdGhvc2UgMiBoZWxwZXJzIHNob3VsZCBnbyBpbiBhc20vYWNw aS5oLgpPay4KPiAKPj4gwqAgI2lmZGVmIENPTkZJR19BQ1BJCj4+IMKgIMKgIGVudW0gYWNwaV9p bnRlcnJ1cHRfaWQgewo+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3BjaS5oIGIveGVu L2luY2x1ZGUveGVuL3BjaS5oCj4+IGluZGV4IDQzZjIxMjUuLjE4MmIxYTUgMTAwNjQ0Cj4+IC0t LSBhL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAo+PiArKysgYi94ZW4vaW5jbHVkZS94ZW4vcGNpLmgK Pj4gQEAgLTkyLDggKzkyLDE2IEBAIHN0cnVjdCBwY2lfZGV2IHsKPj4gwqAgI2RlZmluZSBQVF9G QVVMVF9USFJFU0hPTEQgMTAKPj4gwqDCoMKgwqDCoCB9IGZhdWx0Owo+PiDCoMKgwqDCoMKgIHU2 NCB2Zl9ybGVuWzZdOwo+PiArI2lmZGVmIENPTkZJR19BUk0KPj4gK8KgwqDCoCBzdHJ1Y3QgZGV2 aWNlIGRldjsKPj4gKyNlbmRpZgo+IAo+IFRoZXJlIGFyZSBhIHBhcnQgb2YgUENJIHRoYXQgaXMg YWxyZWFkeSBwZXItYXJjaC4gU2VlIGFyY2hfcGNpX2RldiBpbiBhc20tYXJtL3BjaS5oLgo+IAo+ IFBsZWFzZSBkZWZpbmUgdGhlIGZpZWxkIGRldiBpbiBpdCByYXRoZXIgdGhhbiBoZXJlLgpPaywg SSdsbCBjaGVjayBpZiBJIGNhbiBkbyB0aGlzLgo+IAo+PiDCoCB9Owo+PiDCoCArI2lmZGVmIENP TkZJR19BUk0KPj4gKyNkZWZpbmUgdG9fcGNpX2RldihwKSBjb250YWluZXJfb2YocCwgc3RydWN0 IHBjaV9kZXYsZGV2KQo+PiArI2RlZmluZSBwY2lfZG9tYWluX25yKGRldikgZGV2LT5zZWcKPj4g KyNlbmRpZgo+IAo+IFNpbWlsYXJseSwgdGhpcyBzaG91bGQgYmUgbW92ZWQgaW4gYXNtLWFybS9w Y2kuaC4KT2suCj4gCj4+ICsKPj4gwqAgI2RlZmluZSBmb3JfZWFjaF9wZGV2KGRvbWFpbiwgcGRl dikgXAo+PiDCoMKgwqDCoMKgIGxpc3RfZm9yX2VhY2hfZW50cnkocGRldiwgJihkb21haW4tPmFy Y2gucGRldl9saXN0KSwgZG9tYWluX2xpc3QpCj4+IMKgCj4gCj4gQ2hlZXJzLAo+IAoKLS0gCiBR dWFsY29tbSBEYXRhY2VudGVyIFRlY2hub2xvZ2llcyBhcyBhbiBhZmZpbGlhdGUgb2YgUXVhbGNv bW0gVGVjaG5vbG9naWVzLCBJbmMuIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBpcyBhIG1l bWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sIGEgTGludXggRm91bmRhdGlvbiBDb2xsYWJv cmF0aXZlIFByb2plY3QuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK