From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-bn8nam12on2053.outbound.protection.outlook.com ([40.107.237.53] helo=NAM12-BN8-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mDDNc-0022xw-8E for kexec@lists.infradead.org; Mon, 09 Aug 2021 22:04:24 +0000 Subject: Re: [PATCH 07/11] treewide: Replace the use of mem_encrypt_active() with prot_guest_has() References: <029791b24c6412f9427cfe6ec598156c64395964.1627424774.git.thomas.lendacky@amd.com> From: Tom Lendacky Message-ID: Date: Mon, 9 Aug 2021 17:04:11 -0500 In-Reply-To: Content-Language: en-US MIME-Version: 1.0 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: Christophe Leroy , linux-kernel@vger.kernel.org, x86@kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, iommu@lists.linux-foundation.org, kvm@vger.kernel.org, linux-efi@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-graphics-maintainer@vmware.com, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, kexec@lists.infradead.org, linux-fsdevel@vger.kernel.org Cc: Sathyanarayanan Kuppuswamy , Andi Kleen , Tianyu Lan , Daniel Vetter , Baoquan He , Peter Zijlstra , Thomas Zimmermann , Joerg Roedel , Dave Hansen , Maarten Lankhorst , Maxime Ripard , David Airlie , Dave Young , Ingo Molnar , Borislav Petkov , Andy Lutomirski , Brijesh Singh , Thomas Gleixner , Will Deacon T24gOC8yLzIxIDc6NDIgQU0sIENocmlzdG9waGUgTGVyb3kgd3JvdGU6Cj4gCj4gCj4gTGUgMjgv MDcvMjAyMSDDoCAwMDoyNiwgVG9tIExlbmRhY2t5IGEgw6ljcml0wqA6Cj4+IFJlcGxhY2Ugb2Nj dXJyZW5jZXMgb2YgbWVtX2VuY3J5cHRfYWN0aXZlKCkgd2l0aCBjYWxscyB0byBwcm90X2d1ZXN0 X2hhcygpCj4+IHdpdGggdGhlIFBBVFRSX01FTV9FTkNSWVBUIGF0dHJpYnV0ZS4KPiAKPiAKPiBX aGF0IGFib3V0Cj4gaHR0cHM6Ly9uYW0xMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNv bS8/dXJsPWh0dHBzJTNBJTJGJTJGcGF0Y2h3b3JrLm96bGFicy5vcmclMkZwcm9qZWN0JTJGbGlu dXhwcGMtZGV2JTJGcGF0Y2glMkYyMDIxMDczMDExNDIzMS4yMzQ0NS0xLXdpbGwlNDBrZXJuZWwu b3JnJTJGJmFtcDtkYXRhPTA0JTdDMDElN0N0aG9tYXMubGVuZGFja3klNDBhbWQuY29tJTdDMTE5 OGQ2MjQ2M2UwNGEyN2JlNTkwOGQ5NTViMzA0MzMlN0MzZGQ4OTYxZmU0ODg0ZTYwOGUxMWE4MmQ5 OTRlMTgzZCU3QzAlN0MwJTdDNjM3NjM1MDQ5NjY3MjMzNjEyJTdDVW5rbm93biU3Q1RXRnBiR1pz YjNkOGV5SldJam9pTUM0d0xqQXdNREFpTENKUUlqb2lWMmx1TXpJaUxDSkJUaUk2SWsxaGFXd2lM Q0pYVkNJNk1uMCUzRCU3QzEwMDAmYW1wO3NkYXRhPUVycHU0RHUwNXNWWWtZdUFmVGtYZEx2cTQ4 JTJGbGZMUzJxJTJGWlc4REczdEZ3JTNEJmFtcDtyZXNlcnZlZD0wPiA/CgpBaCwgbG9va3MgbGlr ZSB0aGF0IGp1c3Qgd2VudCBpbnRvIHRoZSBQUEMgdHJlZSBhbmQgaXNuJ3QgcGFydCBvZiB0aGUg dGlwCnRyZWUuIEknbGwgaGF2ZSB0byBsb29rIGludG8gaG93IHRvIGhhbmRsZSB0aGF0IG9uZS4K ClRoYW5rcywKVG9tCgo+IAo+IENocmlzdG9waGUKPiAKPiAKPj4KPj4gQ2M6IFRob21hcyBHbGVp eG5lciA8dGdseEBsaW51dHJvbml4LmRlPgo+PiBDYzogSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhh dC5jb20+Cj4+IENjOiBCb3Jpc2xhdiBQZXRrb3YgPGJwQGFsaWVuOC5kZT4KPj4gQ2M6IERhdmUg SGFuc2VuIDxkYXZlLmhhbnNlbkBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBBbmR5IEx1dG9taXJz a2kgPGx1dG9Aa2VybmVsLm9yZz4KPj4gQ2M6IFBldGVyIFppamxzdHJhIDxwZXRlcnpAaW5mcmFk ZWFkLm9yZz4KPj4gQ2M6IERhdmlkIEFpcmxpZSA8YWlybGllZEBsaW51eC5pZT4KPj4gQ2M6IERh bmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPj4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBNYXhpbWUgUmlwYXJkIDxt cmlwYXJkQGtlcm5lbC5vcmc+Cj4+IENjOiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1hbm5A c3VzZS5kZT4KPj4gQ2M6IFZNd2FyZSBHcmFwaGljcyA8bGludXgtZ3JhcGhpY3MtbWFpbnRhaW5l ckB2bXdhcmUuY29tPgo+PiBDYzogSm9lcmcgUm9lZGVsIDxqb3JvQDhieXRlcy5vcmc+Cj4+IENj OiBXaWxsIERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgo+PiBDYzogRGF2ZSBZb3VuZyA8ZHlvdW5n QHJlZGhhdC5jb20+Cj4+IENjOiBCYW9xdWFuIEhlIDxiaGVAcmVkaGF0LmNvbT4KPj4gU2lnbmVk LW9mZi1ieTogVG9tIExlbmRhY2t5IDx0aG9tYXMubGVuZGFja3lAYW1kLmNvbT4KPj4gLS0tCj4+ IMKgIGFyY2gveDg2L2tlcm5lbC9oZWFkNjQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8IDQgKystLQo+PiDCoCBhcmNoL3g4Ni9tbS9pb3JlbWFwLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfCA0ICsrLS0KPj4gwqAgYXJjaC94ODYvbW0vbWVtX2VuY3J5cHQu Y8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA1ICsrLS0tCj4+IMKgIGFyY2gveDg2L21t L3BhdC9zZXRfbWVtb3J5LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArKy0KPj4gwqAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jIHwgNCArKystCj4+IMKgIGRyaXZl cnMvZ3B1L2RybS9kcm1fY2FjaGUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKystLQo+ PiDCoCBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuY8KgwqDCoMKgIHwgNCArKy0t Cj4+IMKgIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X21zZy5jwqDCoMKgwqAgfCA2ICsr Ky0tLQo+PiDCoCBkcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8IDMgKystCj4+IMKgIGRyaXZlcnMvaW9tbXUvYW1kL2lvbW11X3YyLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgMyArKy0KPj4gwqAgZHJpdmVycy9pb21tdS9pb21tdS5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMyArKy0KPj4gwqAgZnMvcHJvYy92bWNv cmUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsr Ky0tLQo+PiDCoCBrZXJuZWwvZG1hL3N3aW90bGIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgNCArKy0tCj4+IMKgIDEzIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlv bnMoKyksIDI0IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVs L2hlYWQ2NC5jIGIvYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jCj4+IGluZGV4IGRlMDE5MDNjMzcz NS4uY2FmZWQ2NDU2ZDQ1IDEwMDY0NAo+PiAtLS0gYS9hcmNoL3g4Ni9rZXJuZWwvaGVhZDY0LmMK Pj4gKysrIGIvYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jCj4+IEBAIC0xOSw3ICsxOSw3IEBACj4+ IMKgICNpbmNsdWRlIDxsaW51eC9zdGFydF9rZXJuZWwuaD4KPj4gwqAgI2luY2x1ZGUgPGxpbnV4 L2lvLmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9tZW1ibG9jay5oPgo+PiAtI2luY2x1ZGUgPGxp bnV4L21lbV9lbmNyeXB0Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcHJvdGVjdGVkX2d1ZXN0Lmg+ Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9wZ3RhYmxlLmg+Cj4+IMKgIMKgICNpbmNsdWRlIDxhc20v cHJvY2Vzc29yLmg+Cj4+IEBAIC0yODUsNyArMjg1LDcgQEAgdW5zaWduZWQgbG9uZyBfX2hlYWQg X19zdGFydHVwXzY0KHVuc2lnbmVkIGxvbmcKPj4gcGh5c2FkZHIsCj4+IMKgwqDCoMKgwqDCoCAq IHRoZXJlIGlzIG5vIG5lZWQgdG8gemVybyBpdCBhZnRlciBjaGFuZ2luZyB0aGUgbWVtb3J5IGVu Y3J5cHRpb24KPj4gwqDCoMKgwqDCoMKgICogYXR0cmlidXRlLgo+PiDCoMKgwqDCoMKgwqAgKi8K Pj4gLcKgwqDCoCBpZiAobWVtX2VuY3J5cHRfYWN0aXZlKCkpIHsKPj4gK8KgwqDCoCBpZiAocHJv dF9ndWVzdF9oYXMoUEFUVFJfTUVNX0VOQ1JZUFQpKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB2 YWRkciA9ICh1bnNpZ25lZCBsb25nKV9fc3RhcnRfYnNzX2RlY3J5cHRlZDsKPj4gwqDCoMKgwqDC oMKgwqDCoMKgIHZhZGRyX2VuZCA9ICh1bnNpZ25lZCBsb25nKV9fZW5kX2Jzc19kZWNyeXB0ZWQ7 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKDsgdmFkZHIgPCB2YWRkcl9lbmQ7IHZhZGRyICs9 IFBNRF9TSVpFKSB7Cj4+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9pb3JlbWFwLmMgYi9hcmNo L3g4Ni9tbS9pb3JlbWFwLmMKPj4gaW5kZXggMGYyZDVhY2U1OTg2Li41ZTFjMWY1Y2JiZTggMTAw NjQ0Cj4+IC0tLSBhL2FyY2gveDg2L21tL2lvcmVtYXAuYwo+PiArKysgYi9hcmNoL3g4Ni9tbS9p b3JlbWFwLmMKPj4gQEAgLTY5Myw3ICs2OTMsNyBAQCBzdGF0aWMgYm9vbCBfX2luaXQKPj4gZWFy bHlfbWVtcmVtYXBfaXNfc2V0dXBfZGF0YShyZXNvdXJjZV9zaXplX3QgcGh5c19hZGRyLAo+PiDC oCBib29sIGFyY2hfbWVtcmVtYXBfY2FuX3JhbV9yZW1hcChyZXNvdXJjZV9zaXplX3QgcGh5c19h ZGRyLCB1bnNpZ25lZAo+PiBsb25nIHNpemUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+PiDCoCB7Cj4+IC3CoMKgwqAgaWYgKCFt ZW1fZW5jcnlwdF9hY3RpdmUoKSkKPj4gK8KgwqDCoCBpZiAoIXByb3RfZ3Vlc3RfaGFzKFBBVFRS X01FTV9FTkNSWVBUKSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOwo+PiDCoCDC oMKgwqDCoMKgIGlmIChmbGFncyAmIE1FTVJFTUFQX0VOQykKPj4gQEAgLTcyMyw3ICs3MjMsNyBA QCBwZ3Byb3RfdCBfX2luaXQKPj4gZWFybHlfbWVtcmVtYXBfcGdwcm90X2FkanVzdChyZXNvdXJj ZV9zaXplX3QgcGh5c19hZGRyLAo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgYm9vbCBlbmNyeXB0ZWRf cHJvdDsKPj4gwqAgLcKgwqDCoCBpZiAoIW1lbV9lbmNyeXB0X2FjdGl2ZSgpKQo+PiArwqDCoMKg IGlmICghcHJvdF9ndWVzdF9oYXMoUEFUVFJfTUVNX0VOQ1JZUFQpKQo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIHByb3Q7Cj4+IMKgIMKgwqDCoMKgwqAgZW5jcnlwdGVkX3Byb3QgPSB0cnVl Owo+PiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0vbWVtX2VuY3J5cHQuYyBiL2FyY2gveDg2L21t L21lbV9lbmNyeXB0LmMKPj4gaW5kZXggNDUxZGU4ZTg0ZmNlLi4wZjE1MzNkYmU4MWMgMTAwNjQ0 Cj4+IC0tLSBhL2FyY2gveDg2L21tL21lbV9lbmNyeXB0LmMKPj4gKysrIGIvYXJjaC94ODYvbW0v bWVtX2VuY3J5cHQuYwo+PiBAQCAtMzY0LDggKzM2NCw3IEBAIGludCBfX2luaXQgZWFybHlfc2V0 X21lbW9yeV9lbmNyeXB0ZWQodW5zaWduZWQgbG9uZwo+PiB2YWRkciwgdW5zaWduZWQgbG9uZyBz aXplKQo+PiDCoCAvKgo+PiDCoMKgICogU01FIGFuZCBTRVYgYXJlIHZlcnkgc2ltaWxhciBidXQg dGhleSBhcmUgbm90IHRoZSBzYW1lLCBzbyB0aGVyZSBhcmUKPj4gwqDCoCAqIHRpbWVzIHRoYXQg dGhlIGtlcm5lbCB3aWxsIG5lZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBTTUUgYW5kIFNFVi4K Pj4gVGhlCj4+IC0gKiBzbWVfYWN0aXZlKCkgYW5kIHNldl9hY3RpdmUoKSBmdW5jdGlvbnMgYXJl IHVzZWQgZm9yIHRoaXMuwqAgV2hlbiBhCj4+IC0gKiBkaXN0aW5jdGlvbiBpc24ndCBuZWVkZWQs IHRoZSBtZW1fZW5jcnlwdF9hY3RpdmUoKSBmdW5jdGlvbiBjYW4gYmUKPj4gdXNlZC4KPj4gKyAq IHNtZV9hY3RpdmUoKSBhbmQgc2V2X2FjdGl2ZSgpIGZ1bmN0aW9ucyBhcmUgdXNlZCBmb3IgdGhp cy4KPj4gwqDCoCAqCj4+IMKgwqAgKiBUaGUgdHJhbXBvbGluZSBjb2RlIGlzIGEgZ29vZCBleGFt cGxlIGZvciB0aGlzIHJlcXVpcmVtZW50LsKgIEJlZm9yZQo+PiDCoMKgICogcGFnaW5nIGlzIGFj dGl2YXRlZCwgU01FIHdpbGwgYWNjZXNzIGFsbCBtZW1vcnkgYXMgZGVjcnlwdGVkLCBidXQgU0VW Cj4+IEBAIC00NTEsNyArNDUwLDcgQEAgdm9pZCBfX2luaXQgbWVtX2VuY3J5cHRfZnJlZV9kZWNy eXB0ZWRfbWVtKHZvaWQpCj4+IMKgwqDCoMKgwqDCoCAqIFRoZSB1bnVzZWQgbWVtb3J5IHJhbmdl IHdhcyBtYXBwZWQgZGVjcnlwdGVkLCBjaGFuZ2UgdGhlCj4+IGVuY3J5cHRpb24KPj4gwqDCoMKg wqDCoMKgICogYXR0cmlidXRlIGZyb20gZGVjcnlwdGVkIHRvIGVuY3J5cHRlZCBiZWZvcmUgZnJl ZWluZyBpdC4KPj4gwqDCoMKgwqDCoMKgICovCj4+IC3CoMKgwqAgaWYgKG1lbV9lbmNyeXB0X2Fj dGl2ZSgpKSB7Cj4+ICvCoMKgwqAgaWYgKHNtZV9tZV9tYXNrKSB7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoCByID0gc2V0X21lbW9yeV9lbmNyeXB0ZWQodmFkZHIsIG5wYWdlcyk7Cj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAocikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcl93YXJu KCJmYWlsZWQgdG8gZnJlZSB1bnVzZWQgZGVjcnlwdGVkIHBhZ2VzXG4iKTsKPj4gZGlmZiAtLWdp dCBhL2FyY2gveDg2L21tL3BhdC9zZXRfbWVtb3J5LmMgYi9hcmNoL3g4Ni9tbS9wYXQvc2V0X21l bW9yeS5jCj4+IGluZGV4IGFkOGE1YzU4NmEzNS4uNjkyNWYyYmI0YmUxIDEwMDY0NAo+PiAtLS0g YS9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jCj4+ICsrKyBiL2FyY2gveDg2L21tL3BhdC9z ZXRfbWVtb3J5LmMKPj4gQEAgLTE4LDYgKzE4LDcgQEAKPj4gwqAgI2luY2x1ZGUgPGxpbnV4L2xp Ym52ZGltbS5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvdm1zdGF0Lmg+Cj4+IMKgICNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wcm90ZWN0ZWRfZ3Vlc3QuaD4K Pj4gwqAgwqAgI2luY2x1ZGUgPGFzbS9lODIwL2FwaS5oPgo+PiDCoCAjaW5jbHVkZSA8YXNtL3By b2Nlc3Nvci5oPgo+PiBAQCAtMTk4Niw3ICsxOTg3LDcgQEAgc3RhdGljIGludCBfX3NldF9tZW1v cnlfZW5jX2RlYyh1bnNpZ25lZCBsb25nCj4+IGFkZHIsIGludCBudW1wYWdlcywgYm9vbCBlbmMp Cj4+IMKgwqDCoMKgwqAgaW50IHJldDsKPj4gwqAgwqDCoMKgwqDCoCAvKiBOb3RoaW5nIHRvIGRv IGlmIG1lbW9yeSBlbmNyeXB0aW9uIGlzIG5vdCBhY3RpdmUgKi8KPj4gLcKgwqDCoCBpZiAoIW1l bV9lbmNyeXB0X2FjdGl2ZSgpKQo+PiArwqDCoMKgIGlmICghcHJvdF9ndWVzdF9oYXMoUEFUVFJf TUVNX0VOQ1JZUFQpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgIMKgwqDC oMKgwqAgLyogU2hvdWxkIG5vdCBiZSB3b3JraW5nIG9uIHVuYWxpZ25lZCBhZGRyZXNzZXMgKi8K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+ PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+PiBpbmRleCBhYmI5 Mjg4OTRlYWMuLjg0MDcyMjQ3MTdkZiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9kcnYuYwo+PiBAQCAtMzgsNiArMzgsNyBAQAo+PiDCoCAjaW5jbHVkZSA8ZHJtL2Ry bV9wcm9iZV9oZWxwZXIuaD4KPj4gwqAgI2luY2x1ZGUgPGxpbnV4L21tdV9ub3RpZmllci5oPgo+ PiDCoCAjaW5jbHVkZSA8bGludXgvc3VzcGVuZC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3Byb3Rl Y3RlZF9ndWVzdC5oPgo+PiDCoCDCoCAjaW5jbHVkZSAiYW1kZ3B1LmgiCj4+IMKgICNpbmNsdWRl ICJhbWRncHVfaXJxLmgiCj4+IEBAIC0xMjM5LDcgKzEyNDAsOCBAQCBzdGF0aWMgaW50IGFtZGdw dV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCj4+IMKgwqDCoMKgwqDCoCAqIGhvd2V2 ZXIsIFNNRSByZXF1aXJlcyBhbiBpbmRpcmVjdCBJT01NVSBtYXBwaW5nIGJlY2F1c2UgdGhlCj4+ IGVuY3J5cHRpb24KPj4gwqDCoMKgwqDCoMKgICogYml0IGlzIGJleW9uZCB0aGUgRE1BIG1hc2sg b2YgdGhlIGNoaXAuCj4+IMKgwqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgIGlmIChtZW1fZW5jcnlw dF9hY3RpdmUoKSAmJiAoKGZsYWdzICYgQU1EX0FTSUNfTUFTSykgPT0gQ0hJUF9SQVZFTikpIHsK Pj4gK8KgwqDCoCBpZiAocHJvdF9ndWVzdF9oYXMoUEFUVFJfTUVNX0VOQ1JZUFQpICYmCj4+ICvC oMKgwqDCoMKgwqDCoCAoKGZsYWdzICYgQU1EX0FTSUNfTUFTSykgPT0gQ0hJUF9SQVZFTikpIHsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRldl9pbmZvKCZwZGV2LT5kZXYsCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIlNNRSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFJBVkVOXG4iKTsK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PVFNVUFA7Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2NhY2hlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NhY2hlLmMK Pj4gaW5kZXggNTQ2NTk5ZjE5YTkzLi40ZDAxZDQ0MDEyZmQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fY2FjaGUuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NhY2hl LmMKPj4gQEAgLTMxLDcgKzMxLDcgQEAKPj4gwqAgI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFw Lmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4KPj4gwqAgI2luY2x1ZGUgPGxpbnV4 L2hpZ2htZW0uaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9tZW1fZW5jcnlwdC5oPgo+PiArI2luY2x1 ZGUgPGxpbnV4L3Byb3RlY3RlZF9ndWVzdC5oPgo+PiDCoCAjaW5jbHVkZSA8eGVuL3hlbi5oPgo+ PiDCoCDCoCAjaW5jbHVkZSA8ZHJtL2RybV9jYWNoZS5oPgo+PiBAQCAtMjA0LDcgKzIwNCw3IEBA IGJvb2wgZHJtX25lZWRfc3dpb3RsYihpbnQgZG1hX2JpdHMpCj4+IMKgwqDCoMKgwqDCoCAqIEVu Zm9yY2UgZG1hX2FsbG9jX2NvaGVyZW50IHdoZW4gbWVtb3J5IGVuY3J5cHRpb24gaXMgYWN0aXZl IGFzCj4+IHdlbGwKPj4gwqDCoMKgwqDCoMKgICogZm9yIHRoZSBzYW1lIHJlYXNvbnMgYXMgZm9y IFhlbiBwYXJhdmlydHVhbCBob3N0cy4KPj4gwqDCoMKgwqDCoMKgICovCj4+IC3CoMKgwqAgaWYg KG1lbV9lbmNyeXB0X2FjdGl2ZSgpKQo+PiArwqDCoMKgIGlmIChwcm90X2d1ZXN0X2hhcyhQQVRU Ul9NRU1fRU5DUllQVCkpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsKPj4gwqAg wqDCoMKgwqDCoCBmb3IgKHRtcCA9IGlvbWVtX3Jlc291cmNlLmNoaWxkOyB0bXA7IHRtcCA9IHRt cC0+c2libGluZykKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2Rydi5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMKPj4gaW5kZXgg ZGRlOGIzNWJiOTUwLi4wNmVjOTVhNjUwYmEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X2Rydi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X2Rydi5jCj4+IEBAIC0yOSw3ICsyOSw3IEBACj4+IMKgICNpbmNsdWRlIDxsaW51eC9kbWEt bWFwcGluZy5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+IMKgICNpbmNsdWRl IDxsaW51eC9wY2kuaD4KPj4gLSNpbmNsdWRlIDxsaW51eC9tZW1fZW5jcnlwdC5oPgo+PiArI2lu Y2x1ZGUgPGxpbnV4L3Byb3RlY3RlZF9ndWVzdC5oPgo+PiDCoCDCoCAjaW5jbHVkZSA8ZHJtL3R0 bS90dG1fcmFuZ2VfbWFuYWdlci5oPgo+PiDCoCAjaW5jbHVkZSA8ZHJtL2RybV9hcGVydHVyZS5o Pgo+PiBAQCAtNjM0LDcgKzYzNCw3IEBAIHN0YXRpYyBpbnQgdm13X2RtYV9zZWxlY3RfbW9kZShz dHJ1Y3Qgdm13X3ByaXZhdGUKPj4gKmRldl9wcml2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgW3Zt d19kbWFfbWFwX2JpbmRdID0gIkdpdmluZyB1cCBETUEgbWFwcGluZ3MgZWFybHkuIn07Cj4+IMKg IMKgwqDCoMKgwqAgLyogVFRNIGN1cnJlbnRseSBkb2Vzbid0IGZ1bGx5IHN1cHBvcnQgU0VWIGVu Y3J5cHRpb24uICovCj4+IC3CoMKgwqAgaWYgKG1lbV9lbmNyeXB0X2FjdGl2ZSgpKQo+PiArwqDC oMKgIGlmIChwcm90X2d1ZXN0X2hhcyhQQVRUUl9NRU1fRU5DUllQVCkpCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gwqAgwqDCoMKgwqDCoCBpZiAodm13X2ZvcmNlX2Nv aGVyZW50KQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfbXNn LmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9tc2cuYwo+PiBpbmRleCAzZDA4 ZjU3MDBiZGIuLjBjNzA1NzNkM2RjZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfbXNnLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf bXNnLmMKPj4gQEAgLTI4LDcgKzI4LDcgQEAKPj4gwqAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o Pgo+PiDCoCAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+Cj4+IC0jaW5jbHVkZSA8bGludXgvbWVtX2VuY3J5cHQuaD4KPj4gKyNpbmNsdWRlIDxs aW51eC9wcm90ZWN0ZWRfZ3Vlc3QuaD4KPj4gwqAgwqAgI2luY2x1ZGUgPGFzbS9oeXBlcnZpc29y Lmg+Cj4+IMKgIEBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgdm13X3Bv cnRfaGJfb3V0KHN0cnVjdAo+PiBycGNfY2hhbm5lbCAqY2hhbm5lbCwKPj4gwqDCoMKgwqDCoCB1 bnNpZ25lZCBsb25nIG1zZ19sZW4gPSBzdHJsZW4obXNnKTsKPj4gwqAgwqDCoMKgwqDCoCAvKiBI QiBwb3J0IGNhbid0IGFjY2VzcyBlbmNyeXB0ZWQgbWVtb3J5LiAqLwo+PiAtwqDCoMKgIGlmICho YiAmJiAhbWVtX2VuY3J5cHRfYWN0aXZlKCkpIHsKPj4gK8KgwqDCoCBpZiAoaGIgJiYgIXByb3Rf Z3Vlc3RfaGFzKFBBVFRSX01FTV9FTkNSWVBUKSkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdW5z aWduZWQgbG9uZyBicCA9IGNoYW5uZWwtPmNvb2tpZV9oaWdoOwo+PiDCoCDCoMKgwqDCoMKgwqDC oMKgwqAgc2kgPSAodWludHB0cl90KSBtc2c7Cj4+IEBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGlj IHVuc2lnbmVkIGxvbmcgdm13X3BvcnRfaGJfaW4oc3RydWN0Cj4+IHJwY19jaGFubmVsICpjaGFu bmVsLCBjaGFyICpyZXBseSwKPj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHNpLCBkaSwgZWF4 LCBlYngsIGVjeCwgZWR4Owo+PiDCoCDCoMKgwqDCoMKgIC8qIEhCIHBvcnQgY2FuJ3QgYWNjZXNz IGVuY3J5cHRlZCBtZW1vcnkgKi8KPj4gLcKgwqDCoCBpZiAoaGIgJiYgIW1lbV9lbmNyeXB0X2Fj dGl2ZSgpKSB7Cj4+ICvCoMKgwqAgaWYgKGhiICYmICFwcm90X2d1ZXN0X2hhcyhQQVRUUl9NRU1f RU5DUllQVCkpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgYnAgPSBjaGFu bmVsLT5jb29raWVfbG93Owo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgc2kgPSBjaGFubmVsLT5j b29raWVfaGlnaDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11LmMgYi9k cml2ZXJzL2lvbW11L2FtZC9pb21tdS5jCj4+IGluZGV4IDgxMWE0OWE5NWQwNC4uZGVmNjNhOGRl YWI0IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2lvbW11L2FtZC9pb21tdS5jCj4+ICsrKyBiL2Ry aXZlcnMvaW9tbXUvYW1kL2lvbW11LmMKPj4gQEAgLTMxLDYgKzMxLDcgQEAKPj4gwqAgI2luY2x1 ZGUgPGxpbnV4L2lycWRvbWFpbi5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvcGVyY3B1Lmg+Cj4+ IMKgICNpbmNsdWRlIDxsaW51eC9pby1wZ3RhYmxlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcHJv dGVjdGVkX2d1ZXN0Lmg+Cj4+IMKgICNpbmNsdWRlIDxhc20vaXJxX3JlbWFwcGluZy5oPgo+PiDC oCAjaW5jbHVkZSA8YXNtL2lvX2FwaWMuaD4KPj4gwqAgI2luY2x1ZGUgPGFzbS9hcGljLmg+Cj4+ IEBAIC0yMTc4LDcgKzIxNzksNyBAQCBzdGF0aWMgaW50IGFtZF9pb21tdV9kZWZfZG9tYWluX3R5 cGUoc3RydWN0IGRldmljZQo+PiAqZGV2KQo+PiDCoMKgwqDCoMKgwqAgKiBhY3RpdmUsIGJlY2F1 c2Ugc29tZSBvZiB0aG9zZSBkZXZpY2VzIChBTUQgR1BVcykgZG9uJ3QgaGF2ZSB0aGUKPj4gwqDC oMKgwqDCoMKgICogZW5jcnlwdGlvbiBiaXQgaW4gdGhlaXIgRE1BLW1hc2sgYW5kIHJlcXVpcmUg cmVtYXBwaW5nLgo+PiDCoMKgwqDCoMKgwqAgKi8KPj4gLcKgwqDCoCBpZiAoIW1lbV9lbmNyeXB0 X2FjdGl2ZSgpICYmIGRldl9kYXRhLT5pb21tdV92MikKPj4gK8KgwqDCoCBpZiAoIXByb3RfZ3Vl c3RfaGFzKFBBVFRSX01FTV9FTkNSWVBUKSAmJiBkZXZfZGF0YS0+aW9tbXVfdjIpCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gSU9NTVVfRE9NQUlOX0lERU5USVRZOwo+PiDCoCDCoMKgwqDC oMKgIHJldHVybiAwOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWQvaW9tbXVfdjIu YyBiL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11X3YyLmMKPj4gaW5kZXggZjhkNGFkNDIxZTA3Li5h YzM1OWJjOTg1MjMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kL2lvbW11X3YyLmMK Pj4gKysrIGIvZHJpdmVycy9pb21tdS9hbWQvaW9tbXVfdjIuYwo+PiBAQCAtMTYsNiArMTYsNyBA QAo+PiDCoCAjaW5jbHVkZSA8bGludXgvd2FpdC5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvcGNp Lmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9nZnAuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wcm90 ZWN0ZWRfZ3Vlc3QuaD4KPj4gwqAgwqAgI2luY2x1ZGUgImFtZF9pb21tdS5oIgo+PiDCoCBAQCAt NzQxLDcgKzc0Miw3IEBAIGludCBhbWRfaW9tbXVfaW5pdF9kZXZpY2Uoc3RydWN0IHBjaV9kZXYg KnBkZXYsCj4+IGludCBwYXNpZHMpCj4+IMKgwqDCoMKgwqDCoCAqIFdoZW4gbWVtb3J5IGVuY3J5 cHRpb24gaXMgYWN0aXZlIHRoZSBkZXZpY2UgaXMgbGlrZWx5IG5vdCBpbiBhCj4+IMKgwqDCoMKg wqDCoCAqIGRpcmVjdC1tYXBwZWQgZG9tYWluLiBGb3JiaWQgdXNpbmcgSU9NTVV2MiBmdW5jdGlv bmFsaXR5IGZvciBub3cuCj4+IMKgwqDCoMKgwqDCoCAqLwo+PiAtwqDCoMKgIGlmIChtZW1fZW5j cnlwdF9hY3RpdmUoKSkKPj4gK8KgwqDCoCBpZiAocHJvdF9ndWVzdF9oYXMoUEFUVFJfTUVNX0VO Q1JZUFQpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+IMKgIMKgwqDC oMKgwqAgaWYgKCFhbWRfaW9tbXVfdjJfc3VwcG9ydGVkKCkpCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2lvbW11L2lvbW11LmMgYi9kcml2ZXJzL2lvbW11L2lvbW11LmMKPj4gaW5kZXggNTQxOWM0 YjlmMjdhLi5kZGJlZGIxYjViNmIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvaW9tbXUvaW9tbXUu Ywo+PiArKysgYi9kcml2ZXJzL2lvbW11L2lvbW11LmMKPj4gQEAgLTIzLDYgKzIzLDcgQEAKPj4g wqAgI2luY2x1ZGUgPGxpbnV4L3Byb3BlcnR5Lmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9mc2wv bWMuaD4KPj4gwqAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L3Byb3RlY3RlZF9ndWVzdC5oPgo+PiDCoCAjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL2lvbW11Lmg+ Cj4+IMKgIMKgIHN0YXRpYyBzdHJ1Y3Qga3NldCAqaW9tbXVfZ3JvdXBfa3NldDsKPj4gQEAgLTEy Nyw3ICsxMjgsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBpb21tdV9zdWJzeXNfaW5pdCh2b2lkKQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgZWxzZQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp b21tdV9zZXRfZGVmYXVsdF90cmFuc2xhdGVkKGZhbHNlKTsKPj4gwqAgLcKgwqDCoMKgwqDCoMKg IGlmIChpb21tdV9kZWZhdWx0X3Bhc3N0aHJvdWdoKCkgJiYgbWVtX2VuY3J5cHRfYWN0aXZlKCkp IHsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpb21tdV9kZWZhdWx0X3Bhc3N0aHJvdWdoKCkgJiYK Pj4gcHJvdF9ndWVzdF9oYXMoUEFUVFJfTUVNX0VOQ1JZUFQpKSB7Cj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHByX2luZm8oIk1lbW9yeSBlbmNyeXB0aW9uIGRldGVjdGVkIC0gRGlzYWJs aW5nIGRlZmF1bHQKPj4gSU9NTVUgUGFzc3Rocm91Z2hcbiIpOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpb21tdV9zZXRfZGVmYXVsdF90cmFuc2xhdGVkKGZhbHNlKTsKPj4gwqDCoMKg wqDCoMKgwqDCoMKgIH0KPj4gZGlmZiAtLWdpdCBhL2ZzL3Byb2Mvdm1jb3JlLmMgYi9mcy9wcm9j L3ZtY29yZS5jCj4+IGluZGV4IDlhMTUzMzRkYTIwOC4uYjQ2NmY1NDNkYzAwIDEwMDY0NAo+PiAt LS0gYS9mcy9wcm9jL3ZtY29yZS5jCj4+ICsrKyBiL2ZzL3Byb2Mvdm1jb3JlLmMKPj4gQEAgLTI2 LDcgKzI2LDcgQEAKPj4gwqAgI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KPj4gwqAgI2luY2x1 ZGUgPGxpbnV4L3BhZ2VtYXAuaD4KPj4gwqAgI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KPj4g LSNpbmNsdWRlIDxsaW51eC9tZW1fZW5jcnlwdC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3Byb3Rl Y3RlZF9ndWVzdC5oPgo+PiDCoCAjaW5jbHVkZSA8YXNtL2lvLmg+Cj4+IMKgICNpbmNsdWRlICJp bnRlcm5hbC5oIgo+PiDCoCBAQCAtMTc3LDcgKzE3Nyw3IEBAIHNzaXplX3QgX193ZWFrIGVsZmNv cmVoZHJfcmVhZChjaGFyICpidWYsIHNpemVfdAo+PiBjb3VudCwgdTY0ICpwcG9zKQo+PiDCoMKg ICovCj4+IMKgIHNzaXplX3QgX193ZWFrIGVsZmNvcmVoZHJfcmVhZF9ub3RlcyhjaGFyICpidWYs IHNpemVfdCBjb3VudCwgdTY0ICpwcG9zKQo+PiDCoCB7Cj4+IC3CoMKgwqAgcmV0dXJuIHJlYWRf ZnJvbV9vbGRtZW0oYnVmLCBjb3VudCwgcHBvcywgMCwgbWVtX2VuY3J5cHRfYWN0aXZlKCkpOwo+ PiArwqDCoMKgIHJldHVybiByZWFkX2Zyb21fb2xkbWVtKGJ1ZiwgY291bnQsIHBwb3MsIDAsCj4+ IHByb3RfZ3Vlc3RfaGFzKFBBVFRSX01FTV9FTkNSWVBUKSk7Cj4+IMKgIH0KPj4gwqAgwqAgLyoK Pj4gQEAgLTM3OCw3ICszNzgsNyBAQCBzdGF0aWMgc3NpemVfdCBfX3JlYWRfdm1jb3JlKGNoYXIg KmJ1ZmZlciwgc2l6ZV90Cj4+IGJ1ZmxlbiwgbG9mZl90ICpmcG9zLAo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBidWZsZW4pOwo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzdGFydCA9IG0tPnBhZGRyICsgKmZwb3MgLSBtLT5vZmZzZXQ7 Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRtcCA9IHJlYWRfZnJvbV9vbGRtZW0oYnVm ZmVyLCB0c3osICZzdGFydCwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdXNlcmJ1ZiwgbWVtX2VuY3J5cHRfYWN0aXZlKCkpOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1c2VyYnVm LCBwcm90X2d1ZXN0X2hhcyhQQVRUUl9NRU1fRU5DUllQVCkpOwo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAodG1wIDwgMCkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gdG1wOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBidWZsZW4gLT0g dHN6Owo+PiBkaWZmIC0tZ2l0IGEva2VybmVsL2RtYS9zd2lvdGxiLmMgYi9rZXJuZWwvZG1hL3N3 aW90bGIuYwo+PiBpbmRleCBlNTBkZjhkOGY4N2UuLjJlOGRlZTIzYTYyNCAxMDA2NDQKPj4gLS0t IGEva2VybmVsL2RtYS9zd2lvdGxiLmMKPj4gKysrIGIva2VybmVsL2RtYS9zd2lvdGxiLmMKPj4g QEAgLTM0LDcgKzM0LDcgQEAKPj4gwqAgI2luY2x1ZGUgPGxpbnV4L2hpZ2htZW0uaD4KPj4gwqAg I2luY2x1ZGUgPGxpbnV4L2dmcC5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3Qu aD4KPj4gLSNpbmNsdWRlIDxsaW51eC9tZW1fZW5jcnlwdC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L3Byb3RlY3RlZF9ndWVzdC5oPgo+PiDCoCAjaW5jbHVkZSA8bGludXgvc2V0X21lbW9yeS5oPgo+ PiDCoCAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCj4+IMKgICNpbmNsdWRlIDxsaW51eC9kZWJ1Z2Zz Lmg+Cj4+IEBAIC01MTUsNyArNTE1LDcgQEAgcGh5c19hZGRyX3Qgc3dpb3RsYl90YmxfbWFwX3Np bmdsZShzdHJ1Y3QgZGV2aWNlCj4+ICpkZXYsIHBoeXNfYWRkcl90IG9yaWdfYWRkciwKPj4gwqDC oMKgwqDCoCBpZiAoIW1lbSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHBhbmljKCJDYW4gbm90IGFs bG9jYXRlIFNXSU9UTEIgYnVmZmVyIGVhcmxpZXIgYW5kIGNhbid0IG5vdwo+PiBwcm92aWRlIHlv dSB3aXRoIHRoZSBETUEgYm91bmNlIGJ1ZmZlciIpOwo+PiDCoCAtwqDCoMKgIGlmIChtZW1fZW5j cnlwdF9hY3RpdmUoKSkKPj4gK8KgwqDCoCBpZiAocHJvdF9ndWVzdF9oYXMoUEFUVFJfTUVNX0VO Q1JZUFQpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfd2Fybl9vbmNlKCJNZW1vcnkgZW5jcnlw dGlvbiBpcyBhY3RpdmUgYW5kIHN5c3RlbSBpcyB1c2luZwo+PiBETUEgYm91bmNlIGJ1ZmZlcnNc biIpOwo+PiDCoCDCoMKgwqDCoMKgIGlmIChtYXBwaW5nX3NpemUgPiBhbGxvY19zaXplKSB7Cj4+ CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwprZXhlYyBt YWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCg==