From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kzcIY-000720-DO for kexec@lists.infradead.org; Wed, 13 Jan 2021 09:18:42 +0000 Date: Wed, 13 Jan 2021 17:17:01 +0800 From: Pingfan Liu Subject: Re: [PATCH v5 3/3] makedumpfile/arm64: Add support for ARMv8.2-LVA (52-bit kernel VA support) Message-ID: <20210113091007.GA24810@x1pad> References: <20200910053305.323365-1-bhsharma@redhat.com> <20200910053305.323365-4-bhsharma@redhat.com> MIME-Version: 1.0 In-Reply-To: Content-Disposition: inline List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: HAGIO =?utf-8?B?S0FaVUhJVE8o6JCp5bC+44CA5LiA5LuBKQ==?= , kexec@lists.infradead.org, Bhupesh Sharma T24gVGh1LCBTZXAgMjQsIDIwMjAgYXQgMDU6MDU6NDVBTSArMDAwMCwgSEFHSU8gS0FaVUhJVE8o 6JCp5bC+IOS4gOS7gSkgd3JvdGU6Cj4gSGkgQmh1cGVzaCwKPiAKPiBUaGFuayB5b3UgZm9yIHRo ZSB1cGRhdGVkIHBhdGNoLgo+IAo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiBXaXRo IEFSTXY4LjItTFZBIGFyY2hpdGVjdHVyZSBleHRlbnNpb24gYXZhaWxhYmlsaXR5LCBhcm02NCBo YXJkd2FyZQo+ID4gd2hpY2ggc3VwcG9ydHMgdGhpcyBleHRlbnNpb24gY2FuIHN1cHBvcnQgdXB0 byA1Mi1iaXQgdmlydHVhbAo+ID4gYWRkcmVzc2VzLiBJdCBpcyBzcGVjaWFsbHkgdXNlZnVsIGZv ciBoYXZpbmcgYSA1Mi1iaXQgdXNlci1zcGFjZSB2aXJ0dWFsCj4gPiBhZGRyZXNzIHNwYWNlIHdo aWxlIHRoZSBrZXJuZWwgY2FuIHN0aWxsIHJldGFpbiA0OC1iaXQvNTItYml0IHZpcnR1YWwKPiA+ IGFkZHJlc3NpbmcuCj4gPiAKPiA+IFNpbmNlIGF0IHRoZSBtb21lbnQgd2UgZW5hYmxlIHRoZSBz dXBwb3J0IG9mIHRoaXMgZXh0ZW5zaW9uIGluIHRoZQo+ID4ga2VybmVsIHZpYSBhIENPTkZJRyBm bGFnIChDT05GSUdfQVJNNjRfVkFfQklUU181MiksIHNvIHRoZXJlIGFyZQo+ID4gbm8gY2xlYXIg bWVjaGFuaXNtcyBpbiB1c2VyLXNwYWNlIHRvIGRldGVybWluZSB0aGlzIENPTkZJRwo+ID4gZmxh ZyB2YWx1ZSBhbmQgdXNlIGl0IHRvIGRldGVybWluZSB0aGUga2VybmVsLXNwYWNlIFZBIGFkZHJl c3MgcmFuZ2UKPiA+IHZhbHVlcy4KPiA+IAo+ID4gJ21ha2VkdW1wZmlsZScgY2FuIGluc3RlYWQg dXNlICdUQ1JfRUwxLlQxU1onIHZhbHVlIGZyb20gdm1jb3JlaW5mbwo+ID4gd2hpY2ggaW5kaWNh dGVzIHRoZSBzaXplIG9mZnNldCBvZiB0aGUgbWVtb3J5IHJlZ2lvbiBhZGRyZXNzZWQgYnkKPiA+ IFRUQlIxX0VMMSAoYW5kIGhlbmNlIGNhbiBiZSB1c2VkIGZvciBkZXRlcm1pbmluZyB0aGUKPiA+ IHZhYml0c19hY3R1YWwgdmFsdWUpLgo+ID4gCj4gPiBVc2luZyB0aGUgdm1jb3JlaW5mbyB2YXJp YWJsZSBleHBvcnRlZCBieSBrZXJuZWwgY29tbWl0Cj4gPiAgYmJkYmMxMTgwNGZmICgiYXJtNjQv Y3Jhc2hfY29yZTogRXhwb3J0ICBUQ1JfRUwxLlQxU1ogaW4gdm1jb3JlaW5mbyIpLAo+ID4gdGhl IHVzZXItc3BhY2UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvciBkZXRlcm1p bmluZyB3aGV0aGVyCj4gPiAgYW4gYWRkcmVzcyBsaWVzIGluIHRoZSBsaW5lYXIgbWFwIHJhbmdl IChmb3IgbmV3ZXIga2VybmVscyA+PSA1LjQpOgo+ID4gCj4gPiAgICNkZWZpbmUgX19pc19sbV9h ZGRyZXNzKGFkZHIpCSghKCgodTY0KWFkZHIpICYgQklUKHZhYml0c19hY3R1YWwgLSAxKSkpCj4g PiAKPiA+IE5vdGUgdGhhdCBmb3IgdGhlIC0tbWVtLXVzYWdlIGNhc2UgdGhvdWdoIHdlIG5lZWQg dG8gY2FsY3VsYXRlCj4gPiB2YWJpdHNfYWN0dWFsIHZhbHVlIGJlZm9yZSB0aGUgdm1jb3JlaW5m byByZWFkIGZ1bmN0aW9uYWxpdHkgaXMgcmVhZHksCj4gCj4gRm9yIHRoaXMsIGNhbid0IHdlIHJl YWQgdGhlIFRDUl9FTDEuVDFTWiBmcm9tIHZtY29yZWluZm8gaW4gL3Byb2Mva2NvcmUncwo+IEVM RiBub3RlPyAgSSB0aGluayB3ZSBjYW4gdXNlIHRoZSBjb21tb24gZnVuY3Rpb25zIHVzZWQgdG8g dm1jb3JlIHdpdGggaXQuCj4gCj4gSSdsbCB3cml0ZSBhIHBhdGNoIHRvIGRvIHNvIGlmIGl0IHNv dW5kcyBnb29kLgo+IAo+ID4gc28gd2UgY2FuIGluc3RlYWQgcmVhZCB0aGUgYXJjaGl0ZWN0dXJl IHJlZ2lzdGVyIElEX0FBNjRNTUZSMl9FTDEKPiA+IGRpcmVjdGx5IHRvIHNlZSBpZiB0aGUgdW5k ZXJseWluZyBoYXJkd2FyZSBzdXBwb3J0cyA1Mi1iaXQgYWRkcmVzc2luZwo+ID4gYW5kIGFjY29y ZGluZ2x5IHNldCB2YWJpdHNfYWN0dWFsIGFzOgo+ID4gCj4gPiAgICByZWFkX2lkX2FhNjRtbWZy Ml9lbDEoKTsKPiA+ICAgIGlmIChoYXJkd2FyZSBzdXBwb3J0cyA1Mi1iaXQgYWRkcmVzc2luZykK PiA+IAl2YWJpdHNfYWN0dWFsID0gNTI7Cj4gPiAgICBlbHNlCj4gPiAJdmFiaXRzX2FjdHVhbCA9 IHZhX2JpdHMgdmFsdWUgY2FsY3VsYXRlZCB2aWEgX3N0ZXh0IHN5bWJvbDsKPiA+IAo+ID4gQWxz byBtYWtlIHN1cmUgdGhhdCB0aGUgcGFnZV9vZmZzZXQsIGlzX2xpbmVhcl9hZGRyKGFkZHIpIGFu ZCBfX3BhKCkKPiA+IGNhbGN1bGF0aW9ucyB3b3JrIGJvdGggZm9yIG9sZGVyICg8IDUuNCkgYW5k IG5ld2VyIGtlcm5lbHMgKD49IDUuNCkuCj4gPiAKPiA+IEkgaGF2ZSB0ZXN0ZWQgc2V2ZXJhbCBj b21iaW5hdGlvbnMgd2l0aCBib3RoIGtlcm5lbCBjYXRlZ29yaWVzCj4gPiBbZm9yIGUuZy4gd2l0 aCBkaWZmZXJlbnQgVkEgKDM5LCA0MiwgNDggYW5kIDUyLWJpdCkgYW5kIFBBIGNvbWJpbmF0aW9u cwo+ID4gKDQ4IGFuZCA1Mi1iaXQpXSBvbiBhdC1sZWFzdCAzIGRpZmZlcmVudCBib2FyZHMuCj4g PiAKPiA+IFVuZm9ydHVuYXRlbHksIHRoaXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGNhbGwgJ3Bv cHVsYXRlX2tlcm5lbF92ZXJzaW9uKCknCj4gPiBlYXJsaWVyICdnZXRfcGFnZV9vZmZzZXRfYXJt NjQoKScgYXMgJ2luZm8tPmtlcm5lbF92ZXJzaW9uJyByZW1haW5zCj4gPiB1bmluaXRpYWxpemVk IGJlZm9yZSBpdHMgZmlyc3QgdXNlIG90aGVyd2lzZS4KPiAKPiBUaGUgcG9wdWxhdGVfa2VybmVs X3ZlcnNpb24oKSB1c2VzIHVuYW1lKCksIHNvIHRoaXMgbWVhbnMgdGhhdCB0aGVyZSB3aWxsCj4g YmUgc29tZSBjYXNlcyB0aGF0IG1ha2VkdW1wZmlsZSBkb2Vzbid0IHdvcmsgd2l0aCB2bWNvcmVz IHdoaWNoIHdlcmUKPiBjYXB0dXJlZCBvbiBvdGhlciBrZXJuZWxzIHRoYW4gcnVubmluZyBvbmUu ICBUaGlzIGlzIGEgcmF0aGVyIGJpZyBsaW1pdGF0aW9uCj4gZXNwZWNpYWxseSB0byBiYWNrd2Fy ZC1jb21wYXRpYmlsaXR5IHRlc3QsIGFuZCBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8KPiBhdm9pZCBj aGFuZ2luZyBiZWhhdmlvciBkZXBlbmRpbmcgb24gZW52aXJvbm1lbnQsIG5vdCBvbiBkYXRhLgo+ IAo+IElzIHRoZXJlIG5vIHJvb20gdG8gYXZvaWQgaXQ/CgpJIGhhdmUgYSBuZXcgaWRlYSBhYm91 dCBpdCwgd2hpY2ggYXZvaWQgYW55IHZlcnNpb24ganVkZ2VtZW50LiBQbGVhc2Ugc2VlIHRoZSBj b21tZW50IGlubGluZQo+IAo+IEp1c3QgYW4gaWRlYSwgYnV0IGNhbiB3ZSB1c2UgdGhlIE9TUkVM RUFTRSB2bWNvcmVpbmZvIGluIEVMRiBub3RlIGZpcnN0Cj4gdG8gZGV0ZXJtaW5lIHRoZSBrZXJu ZWwgdmVyc2lvbj8gIEl0J3MgZnJvbSBpbml0X3V0c19ucy5uYW1lLnJlbGVhc2UsCj4gd2h5IGNh bid0IHdlIHVzZSBpdD8KPiAKPiBUaGFua3MsCj4gS2F6dQo+IAo+ID4gCj4gPiBUaGlzIHBhdGNo IGlzIGluIGFjY29yZGFuY2Ugd2l0aCBBUk12OCBBcmNoaXRlY3R1cmUgUmVmZXJlbmNlIE1hbnVh bAo+ID4gCj4gPiBDYzogS2F6dWhpdG8gSGFnaW8gPGstaGFnaW8gYXQgYWIuanAubmVjLmNvbT4K PiA+IENjOiBKb2huIERvbm5lbGx5IDxqb2huLnAuZG9ubmVsbHkgYXQgb3JhY2xlLmNvbT4KPiA+ IENjOiBrZXhlYyBhdCBsaXN0cy5pbmZyYWRlYWQub3JnCj4gPiBTaWduZWQtb2ZmLWJ5OiBCaHVw ZXNoIFNoYXJtYSA8YmhzaGFybWEgYXQgcmVkaGF0LmNvbT4KPiA+IC0tLQo+ID4gIGFyY2gvYXJt NjQuYyAgIHwgMjMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0KPiA+ICBjb21tb24uaCAgICAgICB8ICAxMCArKysKPiA+ICBtYWtlZHVtcGZpbGUuYyB8 ICAgNCArLQo+ID4gIG1ha2VkdW1wZmlsZS5oIHwgICA2ICstCj4gPiAgNCBmaWxlcyBjaGFuZ2Vk LCAyMTggaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQg YS9hcmNoL2FybTY0LmMgYi9hcmNoL2FybTY0LmMKPiA+IGluZGV4IDcwOWUwYTUwNjkxNi4uY2Nh YTg2NDFjYTY2IDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9hcm02NC5jCj4gPiArKysgYi9hcmNoL2Fy bTY0LmMKPiA+IEBAIC0xOSwxMCArMTksMjMgQEAKPiA+IAo+ID4gICNpZmRlZiBfX2FhcmNoNjRf Xwo+ID4gCj4gPiArI2luY2x1ZGUgPGFzbS9od2NhcC5oPgo+ID4gKyNpbmNsdWRlIDxzeXMvYXV4 di5oPgo+ID4gICNpbmNsdWRlICIuLi9lbGZfaW5mby5oIgo+ID4gICNpbmNsdWRlICIuLi9tYWtl ZHVtcGZpbGUuaCIKPiA+ICAjaW5jbHVkZSAiLi4vcHJpbnRfaW5mby5oIgo+ID4gCj4gPiArLyog SURfQUE2NE1NRlIyX0VMMSByZWxhdGVkIGhlbHBlcnM6ICovCj4gPiArI2RlZmluZSBJRF9BQTY0 TU1GUjJfTFZBX1NISUZUCTE2Cj4gPiArI2RlZmluZSBJRF9BQTY0TU1GUjJfTFZBX01BU0sJKDB4 ZiA8PCBJRF9BQTY0TU1GUjJfTFZBX1NISUZUKQo+ID4gKwo+ID4gKy8qIENQVSBmZWF0dXJlIElE IHJlZ2lzdGVycyAqLwo+ID4gKyNkZWZpbmUgZ2V0X2NwdV9mdHIoaWQpICh7CQkJCQkJCVwKPiA+ ICsJCXVuc2lnbmVkIGxvbmcgX192YWw7CQkJCQkJXAo+ID4gKwkJYXNtIHZvbGF0aWxlKCJtcnMg JTAsICIgX19zdHJpbmdpZnkoaWQpIDogIj1yIiAoX192YWwpKTsJXAo+ID4gKwkJX192YWw7CQkJ CQkJCQlcCj4gPiArfSkKPiA+ICsKPiA+ICB0eXBlZGVmIHN0cnVjdCB7Cj4gPiAgCXVuc2lnbmVk IGxvbmcgcGdkOwo+ID4gIH0gcGdkX3Q7Cj4gPiBAQCAtNDcsNiArNjAsNyBAQCB0eXBlZGVmIHN0 cnVjdCB7Cj4gPiAgc3RhdGljIGludCBscGFfNTJfYml0X3N1cHBvcnRfYXZhaWxhYmxlOwo+ID4g IHN0YXRpYyBpbnQgcGd0YWJsZV9sZXZlbDsKPiA+ICBzdGF0aWMgaW50IHZhX2JpdHM7Cj4gPiAr c3RhdGljIGludCB2YWJpdHNfYWN0dWFsOwo+ID4gIHN0YXRpYyB1bnNpZ25lZCBsb25nIGtpbWFn ZV92b2Zmc2V0Owo+ID4gCj4gPiAgI2RlZmluZSBTWl80SwkJCTQwOTYKPiA+IEBAIC01OCw3ICs3 Miw2IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGtpbWFnZV92b2Zmc2V0Owo+ID4gICNkZWZpbmUg UEFHRV9PRkZTRVRfNDIJCSgoMHhmZmZmZmZmZmZmZmZmZmZmVUwpIDw8IDQyKQo+ID4gICNkZWZp bmUgUEFHRV9PRkZTRVRfNDcJCSgoMHhmZmZmZmZmZmZmZmZmZmZmVUwpIDw8IDQ3KQo+ID4gICNk ZWZpbmUgUEFHRV9PRkZTRVRfNDgJCSgoMHhmZmZmZmZmZmZmZmZmZmZmVUwpIDw8IDQ4KQo+ID4g LSNkZWZpbmUgUEFHRV9PRkZTRVRfNTIJCSgoMHhmZmZmZmZmZmZmZmZmZmZmVUwpIDw8IDUyKQo+ ID4gCj4gPiAgI2RlZmluZSBwZ2RfdmFsKHgpCQkoKHgpLnBnZCkKPiA+ICAjZGVmaW5lIHB1ZF92 YWwoeCkJCShwZ2RfdmFsKCh4KS5wZ2QpKQo+ID4gQEAgLTIxOSwxMyArMjMyLDI1IEBAIHBtZF9w YWdlX3BhZGRyKHBtZF90IHBtZCkKPiA+ICAjZGVmaW5lIHB0ZV9pbmRleCh2YWRkcikgCQkoKCh2 YWRkcikgPj4gUEFHRVNISUZUKCkpICYgKFBUUlNfUEVSX1BURSAtIDEpKQo+ID4gICNkZWZpbmUg cHRlX29mZnNldChkaXIsIHZhZGRyKSAJCShwbWRfcGFnZV9wYWRkcigoKmRpcikpICsgcHRlX2lu ZGV4KHZhZGRyKSAqIHNpemVvZihwdGVfdCkpCj4gPiAKPiA+ICsvKgo+ID4gKyAqIFRoZSBsaW5l YXIga2VybmVsIHJhbmdlIHN0YXJ0cyBhdCB0aGUgYm90dG9tIG9mIHRoZSB2aXJ0dWFsIGFkZHJl c3MKPiA+ICsgKiBzcGFjZS4gVGVzdGluZyB0aGUgdG9wIGJpdCBmb3IgdGhlIHN0YXJ0IG9mIHRo ZSByZWdpb24gaXMgYQo+ID4gKyAqIHN1ZmZpY2llbnQgY2hlY2sgYW5kIGF2b2lkcyBoYXZpbmcg dG8gd29ycnkgYWJvdXQgdGhlIHRhZy4KPiA+ICsgKi8KPiA+ICsjZGVmaW5lIGlzX2xpbmVhcl9h ZGRyKGFkZHIpCSgoaW5mby0+a2VybmVsX3ZlcnNpb24gPCBLRVJORUxfVkVSU0lPTig1LCA0LCAw KSkgPwlcCj4gPiArCSghISgodW5zaWduZWQgbG9uZykoYWRkcikgJiAoMVVMIDw8ICh2YWJpdHNf YWN0dWFsIC0gMSkpKSkgOiBcCj4gPiArCSghKCh1bnNpZ25lZCBsb25nKShhZGRyKSAmICgxVUwg PDwgKHZhYml0c19hY3R1YWwgLSAxKSkpKSkKPiA+ICsKPiA+ICBzdGF0aWMgdW5zaWduZWQgbG9u ZyBsb25nCj4gPiAgX19wYSh1bnNpZ25lZCBsb25nIHZhZGRyKQo+ID4gIHsKPiA+ICAJaWYgKGtp bWFnZV92b2Zmc2V0ID09IE5PVF9GT1VORF9OVU1CRVIgfHwKPiA+IC0JCQkodmFkZHIgPj0gUEFH RV9PRkZTRVQpKQo+ID4gLQkJcmV0dXJuICh2YWRkciAtIFBBR0VfT0ZGU0VUICsgaW5mby0+cGh5 c19iYXNlKTsKPiA+IC0JZWxzZQo+ID4gKwkJCWlzX2xpbmVhcl9hZGRyKHZhZGRyKSkgewo+ID4g KwkJaWYgKGluZm8tPmtlcm5lbF92ZXJzaW9uIDwgS0VSTkVMX1ZFUlNJT04oNSwgNCwgMCkpCj4g PiArCQkJcmV0dXJuICgodmFkZHIgJiB+UEFHRV9PRkZTRVQpICsgaW5mby0+cGh5c19iYXNlKTsK PiA+ICsJCWVsc2UKPiA+ICsJCQlyZXR1cm4gKHZhZGRyICsgaW5mby0+cGh5c19iYXNlIC0gUEFH RV9PRkZTRVQpOwo+ID4gKwl9IGVsc2UKPiA+ICAJCXJldHVybiAodmFkZHIgLSBraW1hZ2Vfdm9m ZnNldCk7Cj4gPiAgfQo+ID4gCj4gPiBAQCAtMjU0LDYgKzI3OSw3IEBAIHN0YXRpYyBpbnQgY2Fs Y3VsYXRlX3BsYXRfY29uZmlnKHZvaWQpCj4gPiAgCQkJKFBBR0VTSVpFKCkgPT0gU1pfNjRLICYm IHZhX2JpdHMgPT0gNDIpKSB7Cj4gPiAgCQlwZ3RhYmxlX2xldmVsID0gMjsKPiA+ICAJfSBlbHNl IGlmICgoUEFHRVNJWkUoKSA9PSBTWl82NEsgJiYgdmFfYml0cyA9PSA0OCkgfHwKPiA+ICsJCQko UEFHRVNJWkUoKSA9PSBTWl82NEsgJiYgdmFfYml0cyA9PSA1MikgfHwKPiA+ICAJCQkoUEFHRVNJ WkUoKSA9PSBTWl80SyAmJiB2YV9iaXRzID09IDM5KSB8fAo+ID4gIAkJCShQQUdFU0laRSgpID09 IFNaXzE2SyAmJiB2YV9iaXRzID09IDQ3KSkgewo+ID4gIAkJcGd0YWJsZV9sZXZlbCA9IDM7Cj4g PiBAQCAtMjg4LDggKzMxNCwxNCBAQCBnZXRfcGh5c19iYXNlX2FybTY0KHZvaWQpCj4gPiAgCQly ZXR1cm4gVFJVRTsKPiA+ICAJfQo+ID4gCj4gPiArCS8qIElnbm9yZSB0aGUgMXN0IFBUX0xPQUQg Ki8KPiA+ICAJaWYgKGdldF9udW1fcHRfbG9hZHMoKSAmJiBQQUdFX09GRlNFVCkgewo+ID4gLQkJ Zm9yIChpID0gMDsKPiA+ICsJCS8qIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGxvb3Agc3RhcnRz IHdpdGggaSA9IDEuCj4gPiArCQkgKiBUaGlzIGlzIHJlcXVpcmVkIHRvIG1ha2Ugc3VyZSB0aGF0 IHRoZSBmb2xsb3dpbmcgbG9naWMKPiA+ICsJCSAqIHdvcmtzIGJvdGggZm9yIG9sZCBhbmQgbmV3 ZXIga2VybmVscyAod2l0aCBmbGlwcGVkCj4gPiArCQkgKiBWQSBzcGFjZSwgaS5lLiA+PSA1LjQu MCkKPiA+ICsJCSAqLwo+ID4gKwkJZm9yIChpID0gMTsKPiA+ICAJCSAgICBnZXRfcHRfbG9hZChp LCAmcGh5c19zdGFydCwgTlVMTCwgJnZpcnRfc3RhcnQsIE5VTEwpOwo+ID4gIAkJICAgIGkrKykg ewo+ID4gIAkJCWlmICh2aXJ0X3N0YXJ0ICE9IE5PVF9LVl9BRERSCj4gPiBAQCAtMzQ2LDYgKzM3 OCwxMzkgQEAgZ2V0X3N0ZXh0X3N5bWJvbCh2b2lkKQo+ID4gIAlyZXR1cm4oZm91bmQgPyBrYWxs c3ltIDogRkFMU0UpOwo+ID4gIH0KPiA+IAo+ID4gK3N0YXRpYyBpbnQKPiA+ICtnZXRfdmFfYml0 c19mcm9tX3N0ZXh0X2FybTY0KHZvaWQpCj4gPiArewo+ID4gKwl1bG9uZyBfc3RleHQ7Cj4gPiAr Cj4gPiArCV9zdGV4dCA9IGdldF9zdGV4dF9zeW1ib2woKTsKPiA+ICsJaWYgKCFfc3RleHQpIHsK PiA+ICsJCUVSUk1TRygiQ2FuJ3QgZ2V0IHRoZSBzeW1ib2wgb2YgX3N0ZXh0LlxuIik7Cj4gPiAr CQlyZXR1cm4gRkFMU0U7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogRGVyaXZlIHZhX2JpdHMgYXMg cGVyIGFyY2gvYXJtNjQvS2NvbmZpZy4gTm90ZSB0aGF0IHRoaXMgaXMgYQo+ID4gKwkgKiBiZXN0 IGNhc2UgYXBwcm94aW1hdGlvbiBhdCB0aGUgbW9tZW50LCBhcyB0aGVyZSBjYW4gYmUKPiA+ICsJ ICogaW5jb25zaXN0ZW5jaWVzIGluIHRoaXMgY2FsY3VsYXRpb24gKGZvciBlLmcuLCBmb3IKPiA+ ICsJICogNTItYml0IGtlcm5lbCBWQSBjYXNlLCB0aGUgNDh0aCBiaXQgaXMgc2V0IGluCj4gPiAr CSAqIHRoZSBfc3RleHQgc3ltYm9sKS4KPiA+ICsJICoKPiA+ICsJICogU28sIHdlIG5lZWQgdG8g cmVseSBvbiB0aGUgdmFiaXRzX2FjdHVhbCBzeW1ib2wgaW4gdGhlCj4gPiArCSAqIHZtY29yZWlu Zm8gb3IgcmVhZCB2aWEgc3lzdGVtIHJlZ2lzdGVyIGZvciBhIGFjY3VyYXRlIHZhbHVlCj4gPiAr CSAqIG9mIHRoZSB2aXJ0dWFsIGFkZHJlc3Npbmcgc3VwcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5n IGtlcm5lbC4KPiA+ICsJICovCj4gPiArCWlmICgoX3N0ZXh0ICYgUEFHRV9PRkZTRVRfNDgpID09 IFBBR0VfT0ZGU0VUXzQ4KSB7Cj4gPiArCQl2YV9iaXRzID0gNDg7Cj4gPiArCX0gZWxzZSBpZiAo KF9zdGV4dCAmIFBBR0VfT0ZGU0VUXzQ3KSA9PSBQQUdFX09GRlNFVF80Nykgewo+ID4gKwkJdmFf Yml0cyA9IDQ3Owo+ID4gKwl9IGVsc2UgaWYgKChfc3RleHQgJiBQQUdFX09GRlNFVF80MikgPT0g UEFHRV9PRkZTRVRfNDIpIHsKPiA+ICsJCXZhX2JpdHMgPSA0MjsKPiA+ICsJfSBlbHNlIGlmICgo X3N0ZXh0ICYgUEFHRV9PRkZTRVRfMzkpID09IFBBR0VfT0ZGU0VUXzM5KSB7Cj4gPiArCQl2YV9i aXRzID0gMzk7Cj4gPiArCX0gZWxzZSBpZiAoKF9zdGV4dCAmIFBBR0VfT0ZGU0VUXzM2KSA9PSBQ QUdFX09GRlNFVF8zNikgewo+ID4gKwkJdmFfYml0cyA9IDM2Owo+ID4gKwl9IGVsc2Ugewo+ID4g KwkJRVJSTVNHKCJDYW5ub3QgZmluZCBhIHByb3BlciBfc3RleHQgZm9yIGNhbGN1bGF0aW5nIFZB X0JJVFNcbiIpOwo+ID4gKwkJcmV0dXJuIEZBTFNFOwo+ID4gKwl9Cj4gPiArCj4gPiArCURFQlVH X01TRygidmFfYml0cyAgICAgICA6ICVkIChhcHByb3hpbWF0aW9uIHZpYSBfc3RleHQpXG4iLCB2 YV9iaXRzKTsKPiA+ICsKPiA+ICsJcmV0dXJuIFRSVUU7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIE5v dGUgdGhhdCBpdHMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUKPiA+ICsgKiBJRF9BQTY0TU1G UjJfRUwxIGFyY2hpdGVjdHVyZSByZWdpc3RlciBjYW4gYmUgcmVhZAo+ID4gKyAqIG9ubHkgd2hl biB3ZSBnaXZlIGFuIC5hcmNoIGhpbnQgdG8gdGhlIGdjYy9iaW51dGlscywKPiA+ICsgKiBzbyB3 ZSB1c2UgdGhlIGdjYyBjb25zdHJ1Y3QgJ19fYXR0cmlidXRlX18gKCh0YXJnZXQgKCJhcmNoPWFy bXY4LjItYSIpKSknCj4gPiArICogaGVyZSB3aGljaCBpcyBhbiAuYXJjaCBkaXJlY3RpdmUgKHNl ZSBBQXJjaDY0LVRhcmdldC1zZWxlY3Rpb24tZGlyZWN0aXZlcwo+ID4gKyAqIGRvY3VtZW50YXRp b24gZnJvbSBBUk0gZm9yIGRldGFpbHMpLiBUaGlzIGlzIHJlcXVpcmVkIG9ubHkgZm9yCj4gPiAr ICogdGhpcyBmdW5jdGlvbiB0byBtYWtlIHN1cmUgaXQgY29tcGlsZXMgd2VsbCB3aXRoIGdjYy9i aW51dGlscy4KPiA+ICsgKi8KPiA+ICtfX2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgiYXJjaD1hcm12 OC4yLWEiKSkpCj4gPiArc3RhdGljIHVuc2lnbmVkIGxvbmcKPiA+ICtyZWFkX2lkX2FhNjRtbWZy Ml9lbDEodm9pZCkKPiA+ICt7Cj4gPiArCXJldHVybiBnZXRfY3B1X2Z0cihJRF9BQTY0TU1GUjJf RUwxKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludAo+ID4gK2dldF92YWJpdHNfYWN0dWFs X2Zyb21faWRfYWE2NG1tZnIyX2VsMSh2b2lkKQo+ID4gK3sKPiA+ICsJaW50IGxfdmFiaXRzX2Fj dHVhbDsKPiA+ICsJdW5zaWduZWQgbG9uZyB2YWw7Cj4gPiArCj4gPiArCS8qIENoZWNrIGlmIElE X0FBNjRNTUZSMl9FTDEgQ1BVLUlEIHJlZ2lzdGVyIGluZGljYXRlcwo+ID4gKwkgKiBBUk12OC4y L0xWQSBzdXBwb3J0Ogo+ID4gKwkgKiBWQVJhbmdlLCBiaXRzIFsxOToxNl0KPiA+ICsJICogICBG cm9tIEFSTXY4LjI6Cj4gPiArCSAqICAgSW5kaWNhdGVzIHN1cHBvcnQgZm9yIGEgbGFyZ2VyIHZp cnR1YWwgYWRkcmVzcy4KPiA+ICsJICogICBEZWZpbmVkIHZhbHVlcyBhcmU6Cj4gPiArCSAqICAg ICAwYjAwMDAgVk1TQXY4LTY0IHN1cHBvcnRzIDQ4LWJpdCBWQXMuCj4gPiArCSAqICAgICAwYjAw MDEgVk1TQXY4LTY0IHN1cHBvcnRzIDUyLWJpdCBWQXMgd2hlbiB1c2luZyB0aGUgNjRLQgo+ID4g KwkgKiAgICAgICAgICAgIHBhZ2Ugc2l6ZS4gVGhlIG90aGVyIHRyYW5zbGF0aW9uIGdyYW51bGVz IHN1cHBvcnQKPiA+ICsJICogICAgICAgICAgICA0OC1iaXQgVkFzLgo+ID4gKwkgKgo+ID4gKwkg KiBTZWUgQVJNdjggQVJNIGZvciBtb3JlIGRldGFpbHMuCj4gPiArCSAqLwo+ID4gKwlpZiAoIShn ZXRhdXh2YWwoQVRfSFdDQVApICYgSFdDQVBfQ1BVSUQpKSB7Cj4gPiArCQlFUlJNU0coImFybTY0 IENQVUlEIHJlZ2lzdGVycyB1bmF2YWlsYWJsZS5cbiIpOwo+ID4gKwkJcmV0dXJuIEVSUk9SOwo+ ID4gKwl9Cj4gPiArCj4gPiArCXZhbCA9IHJlYWRfaWRfYWE2NG1tZnIyX2VsMSgpOwo+ID4gKwl2 YWwgPSAodmFsICYgSURfQUE2NE1NRlIyX0xWQV9NQVNLKSA+IElEX0FBNjRNTUZSMl9MVkFfU0hJ RlQ7Cj4gPiArCj4gPiArCWlmICgodmFsID09IDB4MSkgJiYgKFBBR0VTSVpFKCkgPT0gU1pfNjRL KSkKPiA+ICsJCWxfdmFiaXRzX2FjdHVhbCA9IDUyOwo+ID4gKwllbHNlCj4gPiArCQlsX3ZhYml0 c19hY3R1YWwgPSA0ODsKPiA+ICsKPiA+ICsJcmV0dXJuIGxfdmFiaXRzX2FjdHVhbDsKPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIHZvaWQKPiA+ICtnZXRfcGFnZV9vZmZzZXRfYXJtNjQodm9pZCkK PiA+ICt7Cj4gPiArCS8qIENoZWNrIGlmICd2YWJpdHNfYWN0dWFsJyBpcyBpbml0aWFsaXplZCB5 ZXQuCj4gPiArCSAqIElmIG5vdCwgb3VyIGJlc3QgYmV0IGlzIHRvIHJlYWQgSURfQUE2NE1NRlIy X0VMMSBDUFUtSUQKPiA+ICsJICogcmVnaXN0ZXIuCj4gPiArCSAqLwo+ID4gKwlpZiAoIXZhYml0 c19hY3R1YWwpIHsKPiA+ICsJCXZhYml0c19hY3R1YWwgPSBnZXRfdmFiaXRzX2FjdHVhbF9mcm9t X2lkX2FhNjRtbWZyMl9lbDEoKTsKPiA+ICsJCWlmICgodmFiaXRzX2FjdHVhbCA9PSBFUlJPUikg fHwgKHZhYml0c19hY3R1YWwgIT0gNTIpKSB7Cj4gPiArCQkJLyogSWYgd2UgY2Fubm90IHJlYWQg SURfQUE2NE1NRlIyX0VMMSBhcmNoCj4gPiArCQkJICogcmVnaXN0ZXIgb3IgaWYgdGhpcyByZWdp c3RlciBkb2VzIG5vdCBpbmRpY2F0ZQo+ID4gKwkJCSAqIHN1cHBvcnQgZm9yIGEgbGFyZ2VyIHZp cnR1YWwgYWRkcmVzcywgb3VyIGxhc3QKPiA+ICsJCQkgKiBvcHRpb24gaXMgdG8gdXNlIHRoZSBW QV9CSVRTIHRvIGNhbGN1bGF0ZSB0aGUKPiA+ICsJCQkgKiBQQUdFX09GRlNFVCB2YWx1ZSwgaS5l LiB2YWJpdHNfYWN0dWFsID0gVkFfQklUUy4KPiA+ICsJCQkgKi8KPiA+ICsJCQl2YWJpdHNfYWN0 dWFsID0gdmFfYml0czsKPiA+ICsJCQlERUJVR19NU0coInZhYml0c19hY3R1YWwgOiAlZCAoYXBw cm94aW1hdGlvbiB2aWEgdmFfYml0cylcbiIsCj4gPiArCQkJCQl2YWJpdHNfYWN0dWFsKTsKPiA+ ICsJCX0gZWxzZQo+ID4gKwkJCURFQlVHX01TRygidmFiaXRzX2FjdHVhbCA6ICVkICh2aWEgaWRf YWE2NG1tZnIyX2VsMSlcbiIsCj4gPiArCQkJCQl2YWJpdHNfYWN0dWFsKTsKPiA+ICsJfQo+ID4g Kwo+ID4gKwlpZiAoIXBvcHVsYXRlX2tlcm5lbF92ZXJzaW9uKCkpIHsKPiA+ICsJCUVSUk1TRygi Q2Fubm90IGdldCBpbmZvcm1hdGlvbiBhYm91dCBjdXJyZW50IGtlcm5lbFxuIik7Cj4gPiArCQly ZXR1cm47Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogU2VlIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20v bWVtb3J5LmggZm9yIG1vcmUgZGV0YWlscyBvZgo+ID4gKwkgKiB0aGUgUEFHRV9PRkZTRVQgY2Fs Y3VsYXRpb24uCj4gPiArCSAqLwo+ID4gKwlpZiAoaW5mby0+a2VybmVsX3ZlcnNpb24gPCBLRVJO RUxfVkVSU0lPTig1LCA0LCAwKSkKPiA+ICsJCWluZm8tPnBhZ2Vfb2Zmc2V0ID0gKCgweGZmZmZm ZmZmZmZmZmZmZmZVTCkgLQo+ID4gKwkJCQkoKDFVTCkgPDwgKHZhYml0c19hY3R1YWwgLSAxKSkg KyAxKTsKPiA+ICsJZWxzZQo+ID4gKwkJaW5mby0+cGFnZV9vZmZzZXQgPSAoLSgxVUwgPDwgdmFi aXRzX2FjdHVhbCkpOwo+ID4gKwoKQ29uc2lkZXJpbmcgdGhlIGZvbGxvd2luZyByZWxhdGVkIGNv bW1pdCBvcmRlcgoKICAgIGI2ZDAwZDQ3ZTgxYSBhcm02NDogbW06IEludHJvZHVjZSA1Mi1iaXQg S2VybmVsIFZBcyAgICAgICAgICAgICAgICAgICAgICAgICgyKQogICAgY2UzYWFlZDg3MzQ0IGFy bTY0OiBtbTogTW9kaWZ5IGNhbGN1bGF0aW9uIG9mIFZNRU1NQVBfU0laRQogICAgYzhiNmQyY2Nm OWIxIGFybTY0OiBtbTogU2VwYXJhdGUgb3V0IHZtZW1tYXAKICAgIGM4MTIwMjZjNTRjZiBhcm02 NDogbW06IExvZ2ljIHRvIG1ha2Ugb2Zmc2V0X3R0YnIxIGNvbmRpdGlvbmFsCiAgICA1MzgzY2M2 ZWZlZDEgYXJtNjQ6IG1tOiBJbnRyb2R1Y2UgdmFiaXRzX2FjdHVhbAogICAgOTBlYzk1Y2RhOTFh IGFybTY0OiBtbTogSW50cm9kdWNlIFZBX0JJVFNfTUlOCiAgICA5OTQyNmU1ZThjOWYgYXJtNjQ6 IGR1bXA6IERlLWNvbnN0aWZ5IFZBX1NUQVJUIGFuZCBLQVNBTl9TSEFET1dfU1RBUlQKICAgIDZi ZDFkMGJlMGU5NyBhcm02NDoga2FzYW46IFN3aXRjaCB0byB1c2luZyBLQVNBTl9TSEFET1dfT0ZG U0VUCiAgICAxNGMxMjdjOTU3YzEgYXJtNjQ6IG1tOiBGbGlwIGtlcm5lbCBWQSBzcGFjZSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoMSkKCkFuZAogICAgI2RlZmluZSBfUEFHRV9FTkQo dmEpCQkoLShVTCgxKSA8PCAoKHZhKSAtIDEpKSkKICAgICNkZWZpbmUgUEFHRV9PRkZTRVQgKCgo MHhmZmZmZmZmZmZmZmZmZmZmVUwpIC0gKCgxVUwpIDw8ICh2YWJpdHNfYWN0dWFsIC0gMSkpICsg MSkpICAvL29sZAogICAgI2RlZmluZSBQQUdFX09GRlNFVCAoLSgxVUwgPDwgdmFiaXRzX2FjdHVh bCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbmV3CgpiZWZvcmUg KDEpLCBTWU1CT0woX3RleHQpIDwgUEFHRV9PRkZTRVQsIGFmdGVyd2FyZCwgU1lNQk9MKF90ZXh0 KSA+IFBBR0VfRU5EID09ICJvbGQgUEFHRV9PRkZTRVQiCgpTbyB0aGUgY29tcGFyYXNpb24gb2Yg a2VybmVsIHZlcnNpb24gY2FuIGJlIHJlcGxhY2VkIGJ5CiAgICBpZiBTWU1CT0woX3RleHQpID4g UEFHRV9FTkQKCWluZm8tPnBhZ2Vfb2Zmc2V0ID0gbmV3IFBBR0VfT0ZGU0VUCiAgICBlbHNlCglp bmZvLT5wYWdlX29mZnNldCA9IG9sZCBQQUdFX09GRlNFVAoKCkFueSBjb21tZW50PwoKVGhhbmtz LAoJUGluZ2ZhbgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmtleGVjIG1haWxpbmcgbGlzdAprZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMK