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: Tue, 14 Nov 2017 18:27:33 -0700 Message-ID: <6ab070b1-02ab-c6a2-91cd-6593055799f4@codeaurora.org> References: <1505954230-18892-1-git-send-email-sgoel@codeaurora.org> <1505954230-18892-6-git-send-email-sgoel@codeaurora.org> <82497a5f-afa1-e603-27a9-7405aec7a1a4@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 1eEmUQ-00021N-7N for xen-devel@lists.xenproject.org; Wed, 15 Nov 2017 01:27:42 +0000 In-Reply-To: <82497a5f-afa1-e603-27a9-7405aec7a1a4@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 CgpPbiAxMS84LzIwMTcgNzo0MSBBTSwgTWFuaXNoIEphZ2dpIHdyb3RlOgo+IEhpIFNhbWVlcgo+ IAo+IE9uIDkvMjEvMjAxNyA2OjA3IEFNLCBTYW1lZXIgR29lbCB3cm90ZToKPj4gQWRkIHN1cHBv cnQgZm9yIHBhcnNpbmcgSU9SVCB0YWJsZSB0byBpbml0aWFsaXplIFNNTVUgZGV2aWNlcy4KPj4g KiBUaGUgY29kZSBmb3IgY3JlYXRpbmcgYW4gU01NVSBkZXZpY2UgaGFzIGJlZW4gbW9kaWZpZWQs IHNvIHRoYXQgdGhlIFNNTVUKPj4gZGV2aWNlIGNhbiBiZSBpbml0aWFsaXplZC4KPj4gKiBUaGUg TkFNRUQgTk9ERSBjb2RlIGhhcyBiZWVuIGNvbW1lbnRlZCBvdXQgYXMgdGhpcyB3aWxsIG5lZWQg RE9NMCBrZXJuZWwKPj4gc3VwcG9ydC4KPj4gKiBJVFMgY29kZSBoYXMgYmVlbiBpbmNsdWRlZCBi dXQgaXQgaGFzIG5vdCBiZWVuIHRlc3RlZC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogU2FtZWVyIEdv ZWwgPHNnb2VsQGNvZGVhdXJvcmEub3JnPgo+IEZvbGxvd3VwIG9mIHRoZSBkaXNjdXNzaW9ucyB3 ZSBoYWQgb24gaW9ydCBwYXJzaW5nIGFuZCBxdWVyeWluZyBzdHJlYW1JRCBhbmQgZGV2aWNlSWQg YmFzZWQgb24gUklELgo+IEkgaGF2ZSBleHRlbmRlZCB5b3VyIHBhdGNoc2V0IHdpdGggYSBwYXRj aCB0aGF0IHByb3ZpZGVzIGFuIGFsdGVybmF0aXZlCj4gd2F5IG9mIHBhcnNpbmcgaW9ydCBpbnRv IG1hcHMgOiB7cmlkLXN0cmVhbWlkfSwge3JpZC1kZXZpY2VJRCkKPiB3aGljaCBjYW4gZGlyZWN0 bHkgYmUgbG9va2VkIHVwIGZvciBzZWFyY2hpbmcgc3RyZWFtSWQgZm9yIGEgcmlkLiBUaGlzCj4g d2lsbCByZW1vdmUgdGhlIG5lZWQgdG8gdHJhdmVyc2UgaW9ydCB0YWJsZSBhZ2Fpbi4KPiAKPiBU aGUgdGVzdCBwYXRjaCBqdXN0IGRlc2NyaWJlcyB0aGUgcHJvcG9zZWQgZmxvdyBhbmQgaG93IHRo ZSBwYXJzaW5nIGFuZAo+IHF1ZXJ5IGNvZGUgbWlnaHQgZml0IGluLiBJIGhhdmUgbm90IHRlc3Rl ZCBpdC4KPiBUaGUgY29kZSBvbmx5IGNvbXBpbGVzLgo+IAo+IGh0dHBzOi8vZ2l0aHViLmNvbS9t amFnZ2ktY2F2aXVtL3hlbi13aXAvY29tbWl0L2RmMDA2ZDY0YmRiYjVjODM0NGRlNWE3MTBkYThi ZjY0YzllOGVkZDUKPiAoVGhpcyByZXBvIGhhcyBhbGwgNyBvZiB5b3VyIHBhdGNoZXMgKyB0ZXN0 IGNvZGUgcGF0Y2ggbWVyZ2VkLgo+IAo+IE5vdGU6IFRoZSBjb21taXQgdGV4dCBvZiB0aGUgcGF0 Y2ggZGVzY3JpYmVzIHRoZSBiYXNpYyBmbG93IC9hc3N1bXB0aW9ucyAvIHVzYWdlIG9mIGZ1bmN0 aW9ucy4KPiBQbGVhc2Ugc2VlIHRoZSBjb2RlIGFsb25nIHdpdGggdGhlIHYyIGRlc2lnbiBkcmFm dC4KPiBbUkZDXSBbRHJhZnQgRGVzaWduIHYyXSBBQ1BJL0lPUlQgU3VwcG9ydCBpbiBYZW4uCj4g aHR0cHM6Ly9saXN0cy54ZW4ub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTctMTEvbXNn MDA1MTIuaHRtbAo+IAo+IEkgc2VlayB5b3VyIGFkdmljZSBvbiB0aGlzLiBQbGVhc2UgcHJvdmlk ZSB5b3VyIGZlZWRiYWNrLgpJIHJlc3BvbmRlZCBiYWNrIG9uIHRoZSBvdGhlciB0aHJlYWQuIEkg dGhpbmsgd2UgYXJlIGZpeGluZyBzb21ldGhpbmcgdGhhdCBpcyBub3QgYnJva2VuLiBJIHdpbGwg dHJ5IHRvIHBvc3QgYSBjb3VwbGUgb2YgbmV3IFJGQ3MgYW5kIGxldCdzIGRpc2N1c3MgdGhpcyB3 aXRoIGluY3JlbWVudGFsIGNoYW5nZXMgb24gdGhlIG1haWxpbmcgbGlzdC4KClRoYW5rcywKU2Ft ZWVyCj4gCj4gVGhhbmtzCj4gTWFuaXNoCj4gCj4gCj4+IC0tLQo+PiDCoCB4ZW4vYXJjaC9hcm0v c2V0dXAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMyArCj4+IMKgIHhlbi9k cml2ZXJzL2FjcGkvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+IMKgIHhl bi9kcml2ZXJzL2FjcGkvYXJtL01ha2VmaWxlwqDCoMKgwqDCoCB8wqDCoCAxICsKPj4gwqAgeGVu L2RyaXZlcnMvYWNwaS9hcm0vaW9ydC5jwqDCoMKgwqDCoMKgwqAgfCAxNzMgKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+PiDCoCB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9h cm0vc21tdS5jIHzCoMKgIDEgKwo+PiDCoCB4ZW4vaW5jbHVkZS9hY3BpL2FjcGlfaW9ydC5owqDC oMKgwqDCoMKgIHzCoCAxNyArKy0tCj4+IMKgIHhlbi9pbmNsdWRlL2FzbS1hcm0vZGV2aWNlLmjC oMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+IMKgIHhlbi9pbmNsdWRlL3hlbi9hY3BpLmjCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIxICsrKysrCj4+IMKgIHhlbi9pbmNsdWRlL3hlbi9wY2ku aMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDggKysKPj4gwqAgOSBmaWxlcyBjaGFu Z2VkLCAxNDYgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCj4+IMKgIGNyZWF0ZSBtb2Rl IDEwMDY0NCB4ZW4vZHJpdmVycy9hY3BpL2FybS9NYWtlZmlsZQo+Pgo+PiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gvYXJtL3NldHVwLmMgYi94ZW4vYXJjaC9hcm0vc2V0dXAuYwo+PiBpbmRleCA5MmYx NzNiLi40YmEwOWIyIDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vc2V0dXAuYwo+PiArKysg Yi94ZW4vYXJjaC9hcm0vc2V0dXAuYwo+PiBAQCAtNDksNiArNDksNyBAQAo+PiDCoCAjaW5jbHVk ZSA8YXNtL3NldHVwLmg+Cj4+IMKgICNpbmNsdWRlIDx4c20veHNtLmg+Cj4+IMKgICNpbmNsdWRl IDxhc20vYWNwaS5oPgo+PiArI2luY2x1ZGUgPGFjcGkvYWNwaV9pb3J0Lmg+Cj4+IMKgIMKgIHN0 cnVjdCBib290aW5mbyBfX2luaXRkYXRhIGJvb3RpbmZvOwo+PiDCoCBAQCAtNzk2LDYgKzc5Nyw4 IEBAIHZvaWQgX19pbml0IHN0YXJ0X3hlbih1bnNpZ25lZCBsb25nIGJvb3RfcGh5c19vZmZzZXQs Cj4+IMKgIMKgwqDCoMKgwqAgdGFza2xldF9zdWJzeXNfaW5pdCgpOwo+PiDCoCArwqDCoMKgIC8q IFBhcnNlIHRoZSBBQ1BJIGlvcnQgZGF0YSAqLwo+PiArwqDCoMKgIGFjcGlfaW9ydF9pbml0KCk7 Cj4+IMKgIMKgwqDCoMKgwqAgeHNtX2R0X2luaXQoKTsKPj4gwqAgZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL2FjcGkvTWFrZWZpbGUgYi94ZW4vZHJpdmVycy9hY3BpL01ha2VmaWxlCj4+IGluZGV4 IDQ0NGIxMWQuLmU3ZmZkODIgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvTWFrZWZp bGUKPj4gKysrIGIveGVuL2RyaXZlcnMvYWNwaS9NYWtlZmlsZQo+PiBAQCAtMSw1ICsxLDYgQEAK Pj4gwqAgc3ViZGlyLXkgKz0gdGFibGVzCj4+IMKgIHN1YmRpci15ICs9IHV0aWxpdGllcwo+PiAr c3ViZGlyLSQoQ09ORklHX0FSTSkgKz0gYXJtCj4+IMKgIHN1YmRpci0kKENPTkZJR19YODYpICs9 IGFwZWkKPj4gwqAgwqAgb2JqLWJpbi15ICs9IHRhYmxlcy5pbml0Lm8KPj4gZGlmZiAtLWdpdCBh L3hlbi9kcml2ZXJzL2FjcGkvYXJtL01ha2VmaWxlIGIveGVuL2RyaXZlcnMvYWNwaS9hcm0vTWFr ZWZpbGUKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uN2MwMzliYgo+ PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3hlbi9kcml2ZXJzL2FjcGkvYXJtL01ha2VmaWxlCj4+ IEBAIC0wLDAgKzEgQEAKPj4gK29iai15ICs9IGlvcnQubwo+PiBkaWZmIC0tZ2l0IGEveGVuL2Ry aXZlcnMvYWNwaS9hcm0vaW9ydC5jIGIveGVuL2RyaXZlcnMvYWNwaS9hcm0vaW9ydC5jCj4+IGlu ZGV4IDJlMzY4YTYuLjdmNTQwNjIgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvYXJt L2lvcnQuYwo+PiArKysgYi94ZW4vZHJpdmVycy9hY3BpL2FybS9pb3J0LmMKPj4gQEAgLTE0LDE3 ICsxNCw0NyBAQAo+PiDCoMKgICogVGhpcyBmaWxlIGltcGxlbWVudHMgZWFybHkgZGV0ZWN0aW9u L3BhcnNpbmcgb2YgSS9PIG1hcHBpbmcKPj4gwqDCoCAqIHJlcG9ydGVkIHRvIE9TIHRocm91Z2gg ZmlybXdhcmUgdmlhIEkvTyBSZW1hcHBpbmcgVGFibGUgKElPUlQpCj4+IMKgwqAgKiBJT1JUIGRv Y3VtZW50IG51bWJlcjogQVJNIERFTiAwMDQ5QQo+PiArICoKPj4gKyAqIEJhc2VkIG9uIExpbnV4 IGRyaXZlcnMvYWNwaS9hcm02NC9pb3J0LmMKPj4gKyAqID0+IGNvbW1pdCBjYTc4ZDMxNzNjZmYz NTAzYmNkMTU3MjNiMDQ5NzU3Zjc1NzYyZDE1Cj4+ICsgKgo+PiArICogWGVuIG1vZGlmaWNhdGlv bjoKPj4gKyAqIFNhbWVlciBHb2VsIDxzZ29lbEBjb2RlYXVyb3JhLm9yZz4KPj4gKyAqIENvcHly aWdodCAoQykgMjAxNywgVGhlIExpbnV4IEZvdW5kYXRpb24sIEFsbCByaWdodHMgcmVzZXJ2ZWQu Cj4+ICsgKgo+PiDCoMKgICovCj4+IMKgIC0jZGVmaW5lIHByX2ZtdChmbXQpwqDCoMKgICJBQ1BJ OiBJT1JUOiAiIGZtdAo+PiAtCj4+IC0jaW5jbHVkZSA8bGludXgvYWNwaV9pb3J0Lmg+Cj4+IC0j aW5jbHVkZSA8bGludXgvaW9tbXUuaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4g LSNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4+IC0jaW5jbHVkZSA8bGludXgvcGNpLmg+Cj4+IC0j aW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+IC0jaW5jbHVkZSA8bGludXgvc2xh Yi5oPgo+PiArI2luY2x1ZGUgPHhlbi9hY3BpLmg+Cj4+ICsjaW5jbHVkZSA8YWNwaS9hY3BpX2lv cnQuaD4KPj4gKyNpbmNsdWRlIDx4ZW4vZndub2RlLmg+Cj4+ICsjaW5jbHVkZSA8eGVuL2lvbW11 Lmg+Cj4+ICsjaW5jbHVkZSA8eGVuL2xpYi5oPgo+PiArI2luY2x1ZGUgPHhlbi9saXN0Lmg+Cj4+ ICsjaW5jbHVkZSA8eGVuL3BjaS5oPgo+PiArCj4+ICsjaW5jbHVkZSA8YXNtL2RldmljZS5oPgo+ PiArCj4+ICsvKiBYZW46IERlZmluZSBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyAqLwo+PiArI2Rl ZmluZSBGV19CVUfCoMKgwqDCoMKgwqDCoCAiW0Zpcm13YXJlIEJ1Z106ICIKPj4gKyNkZWZpbmUg cHJfZXJyKGZtdCwgLi4uKSBwcmludGsoWEVOTE9HX0VSUiBmbXQsICMjIF9fVkFfQVJHU19fKQo+ PiArI2RlZmluZSBwcl93YXJuKGZtdCwgLi4uKSBwcmludGsoWEVOTE9HX1dBUk5JTkcgZm10LCAj IyBfX1ZBX0FSR1NfXykKPj4gKwo+PiArLyogQWxpYXMgdG8gWGVuIGFsbG9jYXRpb24gaGVscGVy cyAqLwo+PiArI2RlZmluZSBrZnJlZSB4ZnJlZQo+PiArI2RlZmluZSBrbWFsbG9jKHNpemUsIGZs YWdzKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX3htYWxsb2Moc2l6ZSwgc2l6ZW9mKHZvaWQgKikp Cj4+ICsjZGVmaW5lIGt6YWxsb2Moc2l6ZSwgZmxhZ3MpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBf eHphbGxvYyhzaXplLCBzaXplb2Yodm9pZCAqKSkKPj4gKwo+PiArLyogUmVkZWZpbmUgV0FSTiBt YWNyb3MgKi8KPj4gKyN1bmRlZiBXQVJOCj4+ICsjdW5kZWYgV0FSTl9PTgo+PiArI2RlZmluZSBX QVJOKGNvbmRpdGlvbiwgZm9ybWF0Li4uKSAoe8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPj4gK8KgwqDCoCBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGNvbmRpdGlvbik7 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPj4gK8KgwqDCoCBpZiAodW5saWtlbHko X19yZXRfd2Fybl9vbikpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ PiArwqDCoMKgwqDCoMKgwqAgcHJpbnRrKGZvcm1hdCk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4+ICvCoMKgwqAgdW5saWtlbHkoX19yZXRfd2Fybl9v bik7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+PiArfSkKPj4gKyNk ZWZpbmUgV0FSTl9UQUlOVChjb25kLCB0YWludCwgZm9ybWF0Li4uKSBXQVJOKGNvbmQsIGZvcm1h dCkKPj4gKyNkZWZpbmUgV0FSTl9PTihjb25kKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoISFjb25kKQo+PiDCoCDCoCAjZGVmaW5lIElPUlRfVFlQRV9NQVNLKHR5 cGUpwqDCoMKgICgxIDw8ICh0eXBlKSkKPj4gwqAgI2RlZmluZSBJT1JUX01TSV9UWVBFwqDCoMKg wqDCoMKgwqAgKDEgPDwgQUNQSV9JT1JUX05PREVfSVRTX0dST1VQKQo+PiBAQCAtMjU2LDYgKzI4 NiwxMyBAQCBzdGF0aWMgYWNwaV9zdGF0dXMgaW9ydF9tYXRjaF9ub2RlX2NhbGxiYWNrKHN0cnVj dCBhY3BpX2lvcnRfbm9kZSAqbm9kZSwKPj4gwqDCoMKgwqDCoCBhY3BpX3N0YXR1cyBzdGF0dXM7 Cj4+IMKgIMKgwqDCoMKgwqAgaWYgKG5vZGUtPnR5cGUgPT0gQUNQSV9JT1JUX05PREVfTkFNRURf Q09NUE9ORU5UKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdGF0dXMgPSBBRV9OT1RfSU1QTEVNRU5U RUQ7Cj4+ICsvKgo+PiArICogV2UgbmVlZCB0aGUgbmFtZXNwYWNlIG9iamVjdCBuYW1lIGZyb20g ZHNkdCB0byBtYXRjaCB0aGUgaW9ydCBub2RlLCB0aGlzCj4+ICsgKiB3aWxsIG5lZWQgYWRkaXRp b25zIHRvIHRoZSBrZXJuZWwgeGVuIGJ1cyBub3RpZmllcnMuCj4+ICsgKiBTbywgZGlzYWJsaW5n IHRoZSBuYW1lZCBub2RlIGNvZGUgdGlsbCBhIHByb3Bvc2FsIGlzIGFwcHJvdmVkLgo+PiArICov Cj4+ICsjaWYgMAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFjcGlfYnVmZmVyIGJ1ZiA9 IHsgQUNQSV9BTExPQ0FURV9CVUZGRVIsIE5VTEwgfTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBhY3BpX2RldmljZSAqYWRldiA9IHRvX2FjcGlfZGV2aWNlX25vZGUoZGV2LT5md25vZGUp Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFjcGlfaW9ydF9uYW1lZF9jb21wb25lbnQg Km5jb21wOwo+PiBAQCAtMjc1LDExICszMTIsMTIgQEAgc3RhdGljIGFjcGlfc3RhdHVzIGlvcnRf bWF0Y2hfbm9kZV9jYWxsYmFjayhzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUsCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBzdGF0dXMgPSAhc3RyY21wKG5jb21wLT5kZXZpY2VfbmFtZSwgYnVmLnBv aW50ZXIpID8KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBBRV9PSyA6IEFFX05PVF9GT1VORDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKg IGFjcGlfb3NfZnJlZShidWYucG9pbnRlcik7Cj4+ICsjZW5kaWYKPj4gwqDCoMKgwqDCoCB9IGVs c2UgaWYgKG5vZGUtPnR5cGUgPT0gQUNQSV9JT1JUX05PREVfUENJX1JPT1RfQ09NUExFWCkgewo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFjcGlfaW9ydF9yb290X2NvbXBsZXggKnBjaV9y YzsKPj4gLcKgwqDCoMKgwqDCoMKgIHN0cnVjdCBwY2lfYnVzICpidXM7Cj4+ICvCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldjsKPj4gwqAgLcKgwqDCoMKgwqDCoMKgIGJ1cyA9 IHRvX3BjaV9idXMoZGV2KTsKPj4gK8KgwqDCoMKgwqDCoMKgIHBjaV9kZXYgPSB0b19wY2lfZGV2 KGRldik7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwY2lfcmMgPSAoc3RydWN0IGFjcGlfaW9ydF9y b290X2NvbXBsZXggKilub2RlLT5ub2RlX2RhdGE7Cj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCAv Kgo+PiBAQCAtMjg3LDEyICszMjUsMTEgQEAgc3RhdGljIGFjcGlfc3RhdHVzIGlvcnRfbWF0Y2hf bm9kZV9jYWxsYmFjayhzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUsCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgICogd2l0aCByb290IGNvbXBsZXhlcy4gRWFjaCBzZWdtZW50IG51bWJlciBjYW4g cmVwcmVzZW50IG9ubHkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBvbmUgcm9vdCBjb21wbGV4 Lgo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgwqDCoMKgwqAgc3RhdHVzID0g cGNpX3JjLT5wY2lfc2VnbWVudF9udW1iZXIgPT0gcGNpX2RvbWFpbl9ucihidXMpID8KPj4gK8Kg wqDCoMKgwqDCoMKgIHN0YXR1cyA9IHBjaV9yYy0+cGNpX3NlZ21lbnRfbnVtYmVyID09IHBjaV9k b21haW5fbnIocGNpX2RldikgPwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFFX09LIDogQUVfTk9UX0ZPVU5EOwo+PiDCoMKgwqDC oMKgIH0gZWxzZSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBzdGF0dXMgPSBBRV9OT1RfRk9VTkQ7 Cj4+IMKgwqDCoMKgwqAgfQo+PiAtb3V0Ogo+PiDCoMKgwqDCoMKgIHJldHVybiBzdGF0dXM7Cj4+ IMKgIH0KPj4gwqAgQEAgLTMyMCw2ICszNTcsMTEgQEAgc3RhdGljIGludCBpb3J0X2lkX21hcChz dHJ1Y3QgYWNwaV9pb3J0X2lkX21hcHBpbmcgKm1hcCwgdTggdHlwZSwgdTMyIHJpZF9pbiwKPj4g wqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gwqAgfQo+PiDCoCArLyoKPj4gKyAqIE5hbWVkIGNvbXBv bmVudHMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0IHNvIHdlIGRvIG5vdCBuZWVkIHRoZQo+PiArICog aW9ydF9ub2RlX2dldF9pZCBmdW5jdGlvbgo+PiArICovCj4+ICsjaWYgMAo+PiDCoCBzdGF0aWMK Pj4gwqAgc3RydWN0IGFjcGlfaW9ydF9ub2RlICppb3J0X25vZGVfZ2V0X2lkKHN0cnVjdCBhY3Bp X2lvcnRfbm9kZSAqbm9kZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiAqaWRfb3V0LCB1OCB0eXBlX21hc2ssCj4+IEBAIC0zNTgsNiArNDAwLDcgQEAg c3RydWN0IGFjcGlfaW9ydF9ub2RlICppb3J0X25vZGVfZ2V0X2lkKHN0cnVjdCBhY3BpX2lvcnRf bm9kZSAqbm9kZSwKPj4gwqAgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4gwqAgfQo+PiArI2Vu ZGlmCj4+IMKgIMKgIHN0YXRpYyBzdHJ1Y3QgYWNwaV9pb3J0X25vZGUgKmlvcnRfbm9kZV9tYXBf cmlkKHN0cnVjdCBhY3BpX2lvcnRfbm9kZSAqbm9kZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHJpZF9pbiwgdTMyICpyaWRfb3V0LAo+ PiBAQCAtNDEwLDYgKzQ1MywxMCBAQCBmYWlsX21hcDoKPj4gwqDCoMKgwqDCoCByZXR1cm4gTlVM TDsKPj4gwqAgfQo+PiDCoCArLyogWGVuOiBDb21tZW50IG91dCB0aGUgTmFtZWRDb21wb25lbnQg YW5kIElUUyBtYXBwaW5nIGNvZGUgdGlsbCB0aGUgc3VwcG9ydAo+PiArICogaXMgYXZhaWxhYmxl Lgo+PiArICovCj4+ICsjaWYgMAo+PiDCoCBzdGF0aWMgc3RydWN0IGFjcGlfaW9ydF9ub2RlICpp b3J0X2ZpbmRfZGV2X25vZGUoc3RydWN0IGRldmljZSAqZGV2KQo+PiDCoCB7Cj4+IMKgwqDCoMKg wqAgc3RydWN0IHBjaV9idXMgKnBidXM7Cj4+IEBAIC00ODEsNyArNTI4LDcgQEAgc3RhdGljIGlu dCBpb3J0X2Rldl9maW5kX2l0c19pZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiByZXFfaWQsCj4+ IMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIH0KPj4gwqAgLS8qKgo+PiArLyoKPj4gwqDCoCAq IGlvcnRfZ2V0X2RldmljZV9kb21haW4oKSAtIEZpbmQgTVNJIGRvbWFpbiByZWxhdGVkIHRvIGEg ZGV2aWNlCj4+IMKgwqAgKiBAZGV2OiBUaGUgZGV2aWNlLgo+PiDCoMKgICogQHJlcV9pZDogUmVx dWVzdGVyIElEIGZvciB0aGUgZGV2aWNlLgo+PiBAQCAtNTEwLDcgKzU1Nyw3IEBAIHN0YXRpYyBp bnQgX19nZXRfcGNpX3JpZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTE2IGFsaWFzLCB2b2lkICpk YXRhKQo+PiDCoMKgwqDCoMKgICpyaWQgPSBhbGlhczsKPj4gwqDCoMKgwqDCoCByZXR1cm4gMDsK Pj4gwqAgfQo+PiAtCj4+ICsjZW5kaWYKPj4gwqAgc3RhdGljIGludCBhcm1fc21tdV9pb3J0X3hs YXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIHN0cmVhbWlkLAo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGlv bW11X29wcyAqb3BzKQo+PiBAQCAtNTQ2LDYgKzU5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aW9tbXVfb3BzICppb3J0X2lvbW11X3hsYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwKPj4gwqDCoMKg wqDCoCByZXR1cm4gcmV0ID8gTlVMTCA6IG9wczsKPj4gwqAgfQo+PiDCoCArI2lmIDAgLyogWGVu OiBXZSBkbyBub3QgbmVlZCB0aGlzIGZ1bmN0aW9uIGZvciBYZW4gKi8KPj4gwqAgLyoqCj4+IMKg wqAgKiBpb3J0X3NldF9kbWFfbWFzayAtIFNldC11cCBkbWEgbWFzayBmb3IgYSBkZXZpY2UuCj4+ IMKgwqAgKgo+PiBAQCAtNTY3LDcgKzYxNSw3IEBAIHZvaWQgaW9ydF9zZXRfZG1hX21hc2soc3Ry dWN0IGRldmljZSAqZGV2KQo+PiDCoMKgwqDCoMKgIGlmICghZGV2LT5kbWFfbWFzaykKPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGRldi0+ZG1hX21hc2sgPSAmZGV2LT5jb2hlcmVudF9kbWFfbWFzazsK Pj4gwqAgfQo+PiAtCj4+ICsjZW5kaWYKPj4gwqAgLyoqCj4+IMKgwqAgKiBpb3J0X2lvbW11X2Nv bmZpZ3VyZSAtIFNldC11cCBJT01NVSBjb25maWd1cmF0aW9uIGZvciBhIGRldmljZS4KPj4gwqDC oCAqCj4+IEBAIC01ODMsMTQgKzYzMSwxMyBAQCBjb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0 X2lvbW11X2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+IMKgwqDCoMKgwqAgdTMyIHN0 cmVhbWlkID0gMDsKPj4gwqAgwqDCoMKgwqDCoCBpZiAoZGV2X2lzX3BjaShkZXYpKSB7Cj4+IC3C oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcGNpX2J1cyAqYnVzID0gdG9fcGNpX2RldihkZXYpLT5idXM7 Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcGNpX2RldiAqcGNpX2RldmljZSA9IHRvX3BjaV9k ZXYoZGV2KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByaWQ7Cj4+IMKgIC3CoMKgwqDCoMKg wqDCoCBwY2lfZm9yX2VhY2hfZG1hX2FsaWFzKHRvX3BjaV9kZXYoZGV2KSwgX19nZXRfcGNpX3Jp ZCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZyaWQp Owo+PiArwqDCoMKgwqDCoMKgwqAgcmlkID0gUENJX0JERjIocGNpX2RldmljZS0+YnVzLCBwY2lf ZGV2aWNlLT5kZXZmbik7Cj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBub2RlID0gaW9ydF9zY2Fu X25vZGUoQUNQSV9JT1JUX05PREVfUENJX1JPT1RfQ09NUExFWCwKPj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpb3J0X21hdGNoX25vZGVfY2FsbGJhY2ssICZi dXMtPmRldik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aW9ydF9tYXRjaF9ub2RlX2NhbGxiYWNrLCBkZXYpOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KCFub2RlKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4gwqAg QEAgLTYwMCw2ICs2NDcsMTMgQEAgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqaW9ydF9pb21tdV9j b25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgb3BzID0g aW9ydF9pb21tdV94bGF0ZShkZXYsIHBhcmVudCwgc3RyZWFtaWQpOwo+PiDCoCDCoMKgwqDCoMKg IH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsKPj4gKy8qCj4+ICsgKiBX ZSBuZWVkIHRoZSBuYW1lc3BhY2Ugb2JqZWN0IG5hbWUgZnJvbSBkc2R0IHRvIG1hdGNoIHRoZSBp b3J0IG5vZGUsIHRoaXMKPj4gKyAqIHdpbGwgbmVlZCBhZGRpdGlvbnMgdG8gdGhlIGtlcm5lbCB4 ZW4gYnVzIG5vdGlmaWVycy4KPj4gKyAqIFNvLCBkaXNhYmxpbmcgdGhlIG5hbWVkIG5vZGUgY29k ZSB0aWxsIGEgcHJvcG9zYWwgaXMgYXBwcm92ZWQuCj4+ICsgKi8KPj4gKyNpZiAwCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBpbnQgaSA9IDA7Cj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBub2RlID0g aW9ydF9zY2FuX25vZGUoQUNQSV9JT1JUX05PREVfTkFNRURfQ09NUE9ORU5ULAo+PiBAQCAtNjE2 LDExICs2NzAsMTcgQEAgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqaW9ydF9pb21tdV9jb25maWd1 cmUoc3RydWN0IGRldmljZSAqZGV2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYXJl bnQgPSBpb3J0X25vZGVfZ2V0X2lkKG5vZGUsICZzdHJlYW1pZCwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElPUlRfSU9NTVVfVFlQRSwg aSsrKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKyNlbmRpZgo+PiDCoMKgwqDCoMKgIH0K Pj4gwqAgwqDCoMKgwqDCoCByZXR1cm4gb3BzOwo+PiDCoCB9Cj4+IMKgICsvKgo+PiArICogWGVu OiBOb3QgdXNpbmcgdGhlIHBhcnNpbmcgb3BzIGZvciBub3cuIE5lZWQgdG8gY2hlY2sgYW5kIHNl ZSBpZiBpdCB3aWxsCj4+ICsgKiBiZSB1c2VmdWwgdG8gdXNlIHRoZXNlIGluIHNvbWUgZm9ybSwg b3IgbGV0IHRoZSBkcml2ZXIgcGFyc2UgSU9SVCBub2RlLgo+PiArICovCj4+ICsjaWYgMAo+PiDC oCBzdGF0aWMgdm9pZCBfX2luaXQgYWNwaV9pb3J0X3JlZ2lzdGVyX2lycShpbnQgaHdpcnEsIGNv bnN0IGNoYXIgKm5hbWUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaW50IHRyaWdnZXIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHJlc291cmNlICpyZXMpCj4+IEBAIC04MDcsNyArODY3LDcg QEAgY29uc3Qgc3RydWN0IGlvcnRfaW9tbXVfY29uZmlnICppb3J0X2dldF9pb21tdV9jZmcoc3Ry dWN0IGFjcGlfaW9ydF9ub2RlICpub2RlKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5V TEw7Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCB9Cj4+IC0KPj4gKyNlbmRpZgo+PiDCoCAvKioKPj4g wqDCoCAqIGlvcnRfYWRkX3NtbXVfcGxhdGZvcm1fZGV2aWNlKCkgLSBBbGxvY2F0ZSBhIHBsYXRm b3JtIGRldmljZSBmb3IgU01NVQo+PiDCoMKgICogQG5vZGU6IFBvaW50ZXIgdG8gU01NVSBBQ1BJ IElPUlQgbm9kZQo+PiBAQCAtODE3LDc4ICs4NzcsNDIgQEAgY29uc3Qgc3RydWN0IGlvcnRfaW9t bXVfY29uZmlnICppb3J0X2dldF9pb21tdV9jZmcoc3RydWN0IGFjcGlfaW9ydF9ub2RlICpub2Rl KQo+PiDCoCBzdGF0aWMgaW50IF9faW5pdCBpb3J0X2FkZF9zbW11X3BsYXRmb3JtX2RldmljZShz dHJ1Y3QgYWNwaV9pb3J0X25vZGUgKm5vZGUpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qg Zndub2RlX2hhbmRsZSAqZndub2RlOwo+PiAtwqDCoMKgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXY7Cj4+IC3CoMKgwqAgc3RydWN0IHJlc291cmNlICpyOwo+PiAtwqDCoMKgIGVudW0gZGV2 X2RtYV9hdHRyIGF0dHI7Cj4+IC3CoMKgwqAgaW50IHJldCwgY291bnQ7Cj4+IC3CoMKgwqAgY29u c3Qgc3RydWN0IGlvcnRfaW9tbXVfY29uZmlnICpvcHMgPSBpb3J0X2dldF9pb21tdV9jZmcobm9k ZSk7Cj4+IC0KPj4gLcKgwqDCoCBpZiAoIW9wcykKPj4gLcKgwqDCoMKgwqDCoMKgIHJldHVybiAt RU5PREVWOwo+PiAtCj4+IC3CoMKgwqAgcGRldiA9IHBsYXRmb3JtX2RldmljZV9hbGxvYyhvcHMt Pm5hbWUsIFBMQVRGT1JNX0RFVklEX0FVVE8pOwo+PiAtwqDCoMKgIGlmICghcGRldikKPj4gLcKg wqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+PiAtCj4+IC3CoMKgwqAgY291bnQgPSBvcHMt PmlvbW11X2NvdW50X3Jlc291cmNlcyhub2RlKTsKPj4gLQo+PiAtwqDCoMKgIHIgPSBrY2FsbG9j KGNvdW50LCBzaXplb2YoKnIpLCBHRlBfS0VSTkVMKTsKPj4gLcKgwqDCoCBpZiAoIXIpIHsKPj4g LcKgwqDCoMKgwqDCoMKgIHJldCA9IC1FTk9NRU07Cj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGRl dl9wdXQ7Cj4+IC3CoMKgwqAgfQo+PiAtCj4+IC3CoMKgwqAgb3BzLT5pb21tdV9pbml0X3Jlc291 cmNlcyhyLCBub2RlKTsKPj4gK8KgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4+ICvCoMKgwqAg aW50IHJldDsKPj4gwqAgLcKgwqDCoCByZXQgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkX3Jlc291cmNl cyhwZGV2LCByLCBjb3VudCk7Cj4+IMKgwqDCoMKgwqAgLyoKPj4gLcKgwqDCoMKgICogUmVzb3Vy Y2VzIGFyZSBkdXBsaWNhdGVkIGluIHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3VyY2VzLAo+PiAt wqDCoMKgwqAgKiBmcmVlIHRoZWlyIGFsbG9jYXRlZCBtZW1vcnkKPj4gK8KgwqDCoMKgICogTm90 IGVuYWJsaW5nIHRoZSBwYXJzaW5nIG9wcyBmb3Igbm93LiBUaGUgY29ycmVzcG9uZGluZyBkcml2 ZXIKPj4gK8KgwqDCoMKgICogY2FuIHBhcnNlIHRoaXMgaW5mb3JtYXRpb24gYXMgbmVlZGVkLCBz byBkZWxldGluZyByZWxldmFudCBjb2RlIGFzCj4+ICvCoMKgwqDCoCAqIGNvbXBhcmVkIHRvIGJh c2UgcmV2aXNpb24uCj4+IMKgwqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgIGtmcmVlKHIpOwo+PiDC oCAtwqDCoMKgIGlmIChyZXQpCj4+IC3CoMKgwqDCoMKgwqDCoCBnb3RvIGRldl9wdXQ7Cj4+ICvC oMKgwqAgZGV2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGRldmljZSksIEdGUF9LRVJORUwpOwo+ PiArwqDCoMKgIGlmICghZGV2KQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+ IMKgIMKgwqDCoMKgwqAgLyoKPj4gwqDCoMKgwqDCoMKgICogQWRkIGEgY29weSBvZiBJT1JUIG5v ZGUgcG9pbnRlciB0byBwbGF0Zm9ybV9kYXRhIHRvCj4+IMKgwqDCoMKgwqDCoCAqIGJlIHVzZWQg dG8gcmV0cmlldmUgSU9SVCBkYXRhIGluZm9ybWF0aW9uLgo+PiDCoMKgwqDCoMKgwqAgKi8KPj4g LcKgwqDCoCByZXQgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkX2RhdGEocGRldiwgJm5vZGUsIHNpemVv Zihub2RlKSk7Cj4+IC3CoMKgwqAgaWYgKHJldCkKPj4gLcKgwqDCoMKgwqDCoMKgIGdvdG8gZGV2 X3B1dDsKPj4gLQo+PiAtwqDCoMKgIC8qCj4+IC3CoMKgwqDCoCAqIFdlIGV4cGVjdCB0aGUgZG1h IG1hc2tzIHRvIGJlIGVxdWl2YWxlbnQgZm9yCj4+IC3CoMKgwqDCoCAqIGFsbCBTTU1VcyBzZXQt dXBzCj4+IC3CoMKgwqDCoCAqLwo+PiAtwqDCoMKgIHBkZXYtPmRldi5kbWFfbWFzayA9ICZwZGV2 LT5kZXYuY29oZXJlbnRfZG1hX21hc2s7Cj4+ICvCoMKgwqAgZGV2LT50eXBlID0gREVWX0FDUEk7 Cj4+ICvCoMKgwqAgZGV2LT5hY3BpX25vZGUgPSBub2RlOwo+PiDCoCDCoMKgwqDCoMKgIGZ3bm9k ZSA9IGlvcnRfZ2V0X2Z3bm9kZShub2RlKTsKPj4gwqAgwqDCoMKgwqDCoCBpZiAoIWZ3bm9kZSkg ewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVOT0RFVjsKPj4gLcKgwqDCoMKgwqDCoMKg IGdvdG8gZGV2X3B1dDsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyb3I7Cj4+IMKgwqDCoMKg wqAgfQo+PiDCoCAtwqDCoMKgIHBkZXYtPmRldi5md25vZGUgPSBmd25vZGU7Cj4+IC0KPj4gLcKg wqDCoCBhdHRyID0gb3BzLT5pb21tdV9pc19jb2hlcmVudChub2RlKSA/Cj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBERVZfRE1BX0NPSEVSRU5UIDogREVWX0RNQV9OT05fQ09I RVJFTlQ7Cj4+IC0KPj4gLcKgwqDCoCAvKiBDb25maWd1cmUgRE1BIGZvciB0aGUgcGFnZSB0YWJs ZSB3YWxrZXIgKi8KPj4gLcKgwqDCoCBhY3BpX2RtYV9jb25maWd1cmUoJnBkZXYtPmRldiwgYXR0 cik7Cj4+ICvCoMKgwqAgZGV2LT5md25vZGUgPSBmd25vZGU7Cj4+IMKgIC3CoMKgwqAgcmV0ID0g cGxhdGZvcm1fZGV2aWNlX2FkZChwZGV2KTsKPj4gLcKgwqDCoCBpZiAocmV0KQo+PiAtwqDCoMKg wqDCoMKgwqAgZ290byBkbWFfZGVjb25maWd1cmU7Cj4+ICvCoMKgwqAgLyogQ2FsbCB0aGUgYWNw aSBpbml0IGZ1bmN0aW9ucyBmb3IgSU9NTVUgZGV2aWNlcyAqLwo+PiArwqDCoMKgIHJldCA9IGFj cGlfZGV2aWNlX2luaXQoREVWSUNFX0lPTU1VLCAodm9pZCAqKWRldiwgbm9kZS0+dHlwZSk7Cj4+ IMKgIMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIC1kbWFfZGVjb25maWd1cmU6Cj4+IC3CoMKg wqAgYWNwaV9kbWFfZGVjb25maWd1cmUoJnBkZXYtPmRldik7Cj4+IC1kZXZfcHV0Ogo+PiAtwqDC oMKgIHBsYXRmb3JtX2RldmljZV9wdXQocGRldik7Cj4+ICtlcnJvcjoKPj4gK8KgwqDCoCBrZnJl ZShkZXYpOwo+PiDCoCDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+IMKgIH0KPj4gQEAgLTk1Nyw1 ICs5ODEsNiBAQCB2b2lkIF9faW5pdCBhY3BpX2lvcnRfaW5pdCh2b2lkKQo+PiDCoCDCoMKgwqDC oMKgIGlvcnRfaW5pdF9wbGF0Zm9ybV9kZXZpY2VzKCk7Cj4+IMKgIC3CoMKgwqAgYWNwaV9wcm9i ZV9kZXZpY2VfdGFibGUoaW9ydCk7Cj4+ICvCoMKgwqAgLyogWGVuOyBEbyBub3QgbmVlZCBhIGRl dmljZSB0YWJsZSBwcm9iZSAqLwo+PiArwqDCoMKgIC8qIGFjcGlfcHJvYmVfZGV2aWNlX3RhYmxl KGlvcnQpOyovCj4+IMKgIH0KPj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FybS9zbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCj4+IGluZGV4 IDM2MmQ1NzguLmFkOTU2ZDUgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L2FybS9zbW11LmMKPj4gKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwo+ PiBAQCAtMTgxLDYgKzE4MSw3IEBAIHN0YXRpYyB2b2lkIF9faW9tZW0gKmRldm1faW9yZW1hcF9y ZXNvdXJjZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+IMKgwqAgKiBYZW46IFBDSSBmdW5jdGlvbnMK Pj4gwqDCoCAqIFRPRE86IEl0IHNob3VsZCBiZSBpbXBsZW1lbnRlZCB3aGVuIFBDSSB3aWxsIGJl IHN1cHBvcnRlZAo+PiDCoMKgICovCj4+ICsjdW5kZWYgdG9fcGNpX2Rldgo+PiDCoCAjZGVmaW5l IHRvX3BjaV9kZXYoZGV2KcKgwqDCoCAoTlVMTCkKPj4gwqAgc3RhdGljIGlubGluZSBpbnQgcGNp X2Zvcl9lYWNoX2RtYV9hbGlhcyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ICgqZm4pIChzdHJ1Y3QgcGNpX2Rl diAqcGRldiwKPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FjcGkvYWNwaV9pb3J0LmggYi94 ZW4vaW5jbHVkZS9hY3BpL2FjcGlfaW9ydC5oCj4+IGluZGV4IDc3ZTA4MDkuLmQ0MzE1YTQgMTAw NjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FjcGkvYWNwaV9pb3J0LmgKPj4gKysrIGIveGVuL2lu Y2x1ZGUvYWNwaS9hY3BpX2lvcnQuaAo+PiBAQCAtMTksMjcgKzE5LDMyIEBACj4+IMKgICNpZm5k ZWYgX19BQ1BJX0lPUlRfSF9fCj4+IMKgICNkZWZpbmUgX19BQ1BJX0lPUlRfSF9fCj4+IMKgIC0j aW5jbHVkZSA8bGludXgvYWNwaS5oPgo+PiAtI2luY2x1ZGUgPGxpbnV4L2Z3bm9kZS5oPgo+PiAt I2luY2x1ZGUgPGxpbnV4L2lycWRvbWFpbi5oPgo+PiArI2luY2x1ZGUgPHhlbi9hY3BpLmg+Cj4+ ICsjaW5jbHVkZSA8YXNtL2RldmljZS5oPgo+PiDCoCArLyogWGVuOiBOb3QgdXNpbmcgSU9SVCBJ UlEgYmluZGluZ3MgKi8KPj4gKyNpZiAwCj4+IMKgICNkZWZpbmUgSU9SVF9JUlFfTUFTSyhpcnEp wqDCoMKgwqDCoMKgwqAgKGlycSAmIDB4ZmZmZmZmZmZVTEwpCj4+IMKgICNkZWZpbmUgSU9SVF9J UlFfVFJJR0dFUl9NQVNLKGlycSnCoMKgwqAgKChpcnEgPj4gMzIpICYgMHhmZmZmZmZmZlVMTCkK Pj4gwqAgwqAgaW50IGlvcnRfcmVnaXN0ZXJfZG9tYWluX3Rva2VuKGludCB0cmFuc19pZCwgc3Ry dWN0IGZ3bm9kZV9oYW5kbGUgKmZ3X25vZGUpOwo+PiDCoCB2b2lkIGlvcnRfZGVyZWdpc3Rlcl9k b21haW5fdG9rZW4oaW50IHRyYW5zX2lkKTsKPj4gwqAgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmlv cnRfZmluZF9kb21haW5fdG9rZW4oaW50IHRyYW5zX2lkKTsKPj4gLSNpZmRlZiBDT05GSUdfQUNQ SV9JT1JUCj4+ICsjZW5kaWYKPj4gKyNpZmRlZiBDT05GSUdfQVJNXzY0Cj4+IMKgIHZvaWQgYWNw aV9pb3J0X2luaXQodm9pZCk7Cj4+IMKgIGJvb2wgaW9ydF9ub2RlX21hdGNoKHU4IHR5cGUpOwo+ PiArI2lmIDAKPj4gwqAgdTMyIGlvcnRfbXNpX21hcF9yaWQoc3RydWN0IGRldmljZSAqZGV2LCB1 MzIgcmVxX2lkKTsKPj4gwqAgc3RydWN0IGlycV9kb21haW4gKmlvcnRfZ2V0X2RldmljZV9kb21h aW4oc3RydWN0IGRldmljZSAqZGV2LCB1MzIgcmVxX2lkKTsKPj4gwqAgLyogSU9NTVUgaW50ZXJm YWNlICovCj4+IMKgIHZvaWQgaW9ydF9zZXRfZG1hX21hc2soc3RydWN0IGRldmljZSAqZGV2KTsK Pj4gKyNlbmRpZgo+PiDCoCBjb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb3J0X2lvbW11X2NvbmZp Z3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+PiDCoCAjZWxzZQo+PiDCoCBzdGF0aWMgaW5saW5l IHZvaWQgYWNwaV9pb3J0X2luaXQodm9pZCkgeyB9Cj4+IMKgIHN0YXRpYyBpbmxpbmUgYm9vbCBp b3J0X25vZGVfbWF0Y2godTggdHlwZSkgeyByZXR1cm4gZmFsc2U7IH0KPj4gKyNpZiAwCj4+IMKg IHN0YXRpYyBpbmxpbmUgdTMyIGlvcnRfbXNpX21hcF9yaWQoc3RydWN0IGRldmljZSAqZGV2LCB1 MzIgcmVxX2lkKQo+PiDCoCB7IHJldHVybiByZXFfaWQ7IH0KPj4gwqAgc3RhdGljIGlubGluZSBz dHJ1Y3QgaXJxX2RvbWFpbiAqaW9ydF9nZXRfZGV2aWNlX2RvbWFpbihzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4+IEBAIC00NywxMiArNTIsMTAgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaXJxX2RvbWFp biAqaW9ydF9nZXRfZGV2aWNlX2RvbWFpbihzdHJ1Y3QgZGV2aWNlICpkZXYsCj4+IMKgIHsgcmV0 dXJuIE5VTEw7IH0KPj4gwqAgLyogSU9NTVUgaW50ZXJmYWNlICovCj4+IMKgIHN0YXRpYyBpbmxp bmUgdm9pZCBpb3J0X3NldF9kbWFfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYpIHsgfQo+PiArI2Vu ZGlmCj4+IMKgIHN0YXRpYyBpbmxpbmUKPj4gwqAgY29uc3Qgc3RydWN0IGlvbW11X29wcyAqaW9y dF9pb21tdV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KQo+PiDCoCB7IHJldHVybiBOVUxM OyB9Cj4+IMKgICNlbmRpZgo+PiDCoCAtI2RlZmluZSBJT1JUX0FDUElfREVDTEFSRShuYW1lLCB0 YWJsZV9pZCwgZm4pwqDCoMKgwqDCoMKgwqAgXAo+PiAtwqDCoMKgIEFDUElfREVDTEFSRV9QUk9C RV9FTlRSWShpb3J0LCBuYW1lLCB0YWJsZV9pZCwgMCwgTlVMTCwgMCwgZm4pCj4+IC0KPj4gwqAg I2VuZGlmIC8qIF9fQUNQSV9JT1JUX0hfXyAqLwo+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLWFybS9kZXZpY2UuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZGV2aWNlLmgKPj4gaW5kZXgg NTAyN2M4Ny4uNGVlZjljZSAxMDA2NDQKPj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9kZXZp Y2UuaAo+PiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RldmljZS5oCj4+IEBAIC03LDYgKzcs NyBAQAo+PiDCoCBlbnVtIGRldmljZV90eXBlCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBERVZfRFQs Cj4+ICvCoMKgwqAgREVWX0FDUEksCj4+IMKgIH07Cj4+IMKgIMKgIHN0cnVjdCBkZXZfYXJjaGRh dGEgewo+PiBAQCAtMjAsNiArMjEsNyBAQCBzdHJ1Y3QgZGV2aWNlCj4+IMKgICNpZmRlZiBDT05G SUdfSEFTX0RFVklDRV9UUkVFCj4+IMKgwqDCoMKgwqAgc3RydWN0IGR0X2RldmljZV9ub2RlICpv Zl9ub2RlOyAvKiBVc2VkIGJ5IGRyaXZlcnMgaW1wb3J0ZWQgZnJvbSBMaW51eCAqLwo+PiDCoCAj ZW5kaWYKPj4gK8KgwqDCoCB2b2lkICphY3BpX25vZGU7IC8qQ3VycmVudCB1c2UgY2FzZSBpcyBh Y3BpX2lvcnRfbm9kZSAqLwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25v ZGU7IC8qZncgZGV2aWNlIG5vZGUgaWRlbnRpZmllciAqLwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBp b21tdV9md3NwZWMgKmlvbW11X2Z3c3BlYzsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZGV2X2FyY2hk YXRhIGFyY2hkYXRhOwo+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2FjcGkuaCBiL3hl bi9pbmNsdWRlL3hlbi9hY3BpLmgKPj4gaW5kZXggOTQwOTM1MC4uMmY2YWFlMSAxMDA2NDQKPj4g LS0tIGEveGVuL2luY2x1ZGUveGVuL2FjcGkuaAo+PiArKysgYi94ZW4vaW5jbHVkZS94ZW4vYWNw aS5oCj4+IEBAIC0zMiw2ICszMiw3IEBACj4+IMKgIMKgICNpbmNsdWRlIDxhY3BpL2FjcGkuaD4K Pj4gwqAgI2luY2x1ZGUgPGFzbS9hY3BpLmg+Cj4+ICsjaW5jbHVkZSA8eGVuL2Z3bm9kZS5oPgo+ PiDCoCDCoCAjZGVmaW5lIEFDUElfTUFEVF9HRVRfKGZsZCwgeCkgKCgoeCkgJiBBQ1BJX01BRFRf IyNmbGQjI19NQVNLKSAvIFwKPj4gwqDCoMKgwqDCoCAoQUNQSV9NQURUXyMjZmxkIyNfTUFTSyAm IC1BQ1BJX01BRFRfIyNmbGQjI19NQVNLKSkKPj4gQEAgLTQ5LDYgKzUwLDI2IEBACj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKCEoZW50cnkpKSB8fCAodW5zaWduZWQgbG9u ZykoZW50cnkpICsgc2l6ZW9mKCooZW50cnkpKSA+IChlbmQpIHx8wqAgXAo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChlbnRyeSktPmhlYWRlci5sZW5ndGggPCBzaXplb2Yo KihlbnRyeSkpKQo+PiDCoCArc3RhdGljIGlubGluZSBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqYWNw aV9hbGxvY19md25vZGVfc3RhdGljKHZvaWQpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0IGZ3bm9k ZV9oYW5kbGUgKmZ3bm9kZTsKPj4gKwo+PiArwqDCoMKgIGZ3bm9kZSA9IHh6YWxsb2Moc3RydWN0 IGZ3bm9kZV9oYW5kbGUpOwo+PiArwqDCoMKgIGlmICghZndub2RlKQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIE5VTEw7Cj4+ICsKPj4gK8KgwqDCoCBmd25vZGUtPnR5cGUgPSBGV05PREVfQUNQ SV9TVEFUSUM7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gZndub2RlOwo+PiArfQo+PiArCj4+ICtz dGF0aWMgaW5saW5lIHZvaWQgYWNwaV9mcmVlX2Z3bm9kZV9zdGF0aWMoc3RydWN0IGZ3bm9kZV9o YW5kbGUgKmZ3bm9kZSkKPj4gK3sKPj4gK8KgwqDCoCBpZiAoIWZ3bm9kZSB8fCBmd25vZGUtPnR5 cGUgIT0gRldOT0RFX0FDUElfU1RBVElDKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiAr Cj4+ICvCoMKgwqAgeGZyZWUoZndub2RlKTsKPj4gK30KPj4gwqAgI2lmZGVmIENPTkZJR19BQ1BJ Cj4+IMKgIMKgIGVudW0gYWNwaV9pbnRlcnJ1cHRfaWQgewo+PiBkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUveGVuL3BjaS5oIGIveGVuL2luY2x1ZGUveGVuL3BjaS5oCj4+IGluZGV4IDQzZjIxMjUu LjE4MmIxYTUgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAo+PiArKysgYi94 ZW4vaW5jbHVkZS94ZW4vcGNpLmgKPj4gQEAgLTkyLDggKzkyLDE2IEBAIHN0cnVjdCBwY2lfZGV2 IHsKPj4gwqAgI2RlZmluZSBQVF9GQVVMVF9USFJFU0hPTEQgMTAKPj4gwqDCoMKgwqDCoCB9IGZh dWx0Owo+PiDCoMKgwqDCoMKgIHU2NCB2Zl9ybGVuWzZdOwo+PiArI2lmZGVmIENPTkZJR19BUk0K Pj4gK8KgwqDCoCBzdHJ1Y3QgZGV2aWNlIGRldjsKPj4gKyNlbmRpZgo+PiDCoCB9Owo+PiDCoCAr I2lmZGVmIENPTkZJR19BUk0KPj4gKyNkZWZpbmUgdG9fcGNpX2RldihwKSBjb250YWluZXJfb2Yo cCwgc3RydWN0IHBjaV9kZXYsZGV2KQo+PiArI2RlZmluZSBwY2lfZG9tYWluX25yKGRldikgZGV2 LT5zZWcKPj4gKyNlbmRpZgo+PiArCj4+IMKgICNkZWZpbmUgZm9yX2VhY2hfcGRldihkb21haW4s IHBkZXYpIFwKPj4gwqDCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5KHBkZXYsICYoZG9tYWlu LT5hcmNoLnBkZXZfbGlzdCksIGRvbWFpbl9saXN0KQo+PiDCoCAKPiAKPiAKPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IFhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKPiBYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+IGh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwKCi0tIAogUXVhbGNvbW0gRGF0YWNlbnRlciBUZWNobm9sb2dpZXMgYXMgYW4gYWZm aWxpYXRlIG9mIFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBRdWFsY29tbSBUZWNobm9sb2dp ZXMsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLCBhIExpbnV4IEZv dW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0LgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==