From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Lendacky Subject: [PATCH v8 27/38] iommu/amd: Allow the AMD IOMMU to work with memory encryption Date: Tue, 27 Jun 2017 10:00:56 -0500 Message-ID: <20170627150056.15908.79730.stgit__46260.045891586$1498575772$gmane$org@tlendack-t1.amdoffice.net> References: <20170627145607.15908.26571.stgit@tlendack-t1.amdoffice.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170627145607.15908.26571.stgit@tlendack-t1.amdoffice.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: linux-arch@vger.kernel.org, linux-efi@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, x86@kernel.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, xen-devel@lists.xen.org, linux-mm@kvack.org, iommu@lists.linux-foundation.org Cc: Brijesh Singh , Toshimitsu Kani , "Michael S. Tsirkin" , Matt Fleming , Alexander Potapenko , "H. Peter Anvin" , Boris Ostrovsky , Jonathan Corbet , Joerg Roedel , Radim =?utf-8?b?S3LEjW3DocWZ?= , Larry Woodman , Ingo Molnar , Andrey Ryabinin , Dave Young , Rik van Riel , Arnd Bergmann , Borislav Petkov , Andy Lutomirski , Thomas Gleixner , Dmitry Vyukov , Juergen Gross , Paolo Bonzini List-Id: xen-devel@lists.xenproject.org VGhlIElPTU1VIGlzIHByb2dyYW1tZWQgd2l0aCBwaHlzaWNhbCBhZGRyZXNzZXMgZm9yIHRoZSB2 YXJpb3VzIHRhYmxlcwphbmQgYnVmZmVycyB0aGF0IGFyZSB1c2VkIHRvIGNvbW11bmljYXRlIGJl dHdlZW4gdGhlIGRldmljZSBhbmQgdGhlCmRyaXZlci4gV2hlbiB0aGUgZHJpdmVyIGFsbG9jYXRl cyB0aGlzIG1lbW9yeSBpdCBpcyBlbmNyeXB0ZWQuIEluIG9yZGVyCmZvciB0aGUgSU9NTVUgdG8g YWNjZXNzIHRoZSBtZW1vcnkgYXMgZW5jcnlwdGVkIHRoZSBlbmNyeXB0aW9uIG1hc2sgbmVlZHMK dG8gYmUgaW5jbHVkZWQgaW4gdGhlc2UgcGh5c2ljYWwgYWRkcmVzc2VzIGR1cmluZyBjb25maWd1 cmF0aW9uLgoKVGhlIFBURSBlbnRyaWVzIGNyZWF0ZWQgYnkgdGhlIElPTU1VIHNob3VsZCBhbHNv IGluY2x1ZGUgdGhlIGVuY3J5cHRpb24KbWFzayBzbyB0aGF0IHdoZW4gdGhlIGRldmljZSBiZWhp bmQgdGhlIElPTU1VIHBlcmZvcm1zIGEgRE1BLCB0aGUgRE1BCndpbGwgYmUgcGVyZm9ybWVkIHRv IGVuY3J5cHRlZCBtZW1vcnkuCgpSZXZpZXdlZC1ieTogQm9yaXNsYXYgUGV0a292IDxicEBzdXNl LmRlPgpTaWduZWQtb2ZmLWJ5OiBUb20gTGVuZGFja3kgPHRob21hcy5sZW5kYWNreUBhbWQuY29t PgotLS0KIGRyaXZlcnMvaW9tbXUvYW1kX2lvbW11LmMgICAgICAgfCAgIDMwICsrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9pb21tdS9hbWRfaW9tbXVfaW5pdC5jICB8ICAg MzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogZHJpdmVycy9pb21tdS9hbWRf aW9tbXVfcHJvdG8uaCB8ICAgMTAgKysrKysrKysrKwogZHJpdmVycy9pb21tdS9hbWRfaW9tbXVf dHlwZXMuaCB8ICAgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgMjEg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWRfaW9tbXUuYyBiL2Ry aXZlcnMvaW9tbXUvYW1kX2lvbW11LmMKaW5kZXggNTAzODQ5ZC4uMTZjYzU0YiAxMDA2NDQKLS0t IGEvZHJpdmVycy9pb21tdS9hbWRfaW9tbXUuYworKysgYi9kcml2ZXJzL2lvbW11L2FtZF9pb21t dS5jCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9kdGVfZW50cnkodTE2IGRl dmlkKQogCiBzdGF0aWMgdm9pZCBkdW1wX2NvbW1hbmQodW5zaWduZWQgbG9uZyBwaHlzX2FkZHIp CiB7Ci0Jc3RydWN0IGlvbW11X2NtZCAqY21kID0gcGh5c190b192aXJ0KHBoeXNfYWRkcik7CisJ c3RydWN0IGlvbW11X2NtZCAqY21kID0gaW9tbXVfcGh5c190b192aXJ0KHBoeXNfYWRkcik7CiAJ aW50IGk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgNDsgKytpKQpAQCAtODY1LDExICs4NjUsMTMgQEAg c3RhdGljIHZvaWQgY29weV9jbWRfdG9fYnVmZmVyKHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11LAog CiBzdGF0aWMgdm9pZCBidWlsZF9jb21wbGV0aW9uX3dhaXQoc3RydWN0IGlvbW11X2NtZCAqY21k LCB1NjQgYWRkcmVzcykKIHsKKwl1NjQgcGFkZHIgPSBpb21tdV92aXJ0X3RvX3BoeXMoKHZvaWQg KilhZGRyZXNzKTsKKwogCVdBUk5fT04oYWRkcmVzcyAmIDB4N1VMTCk7CiAKIAltZW1zZXQoY21k LCAwLCBzaXplb2YoKmNtZCkpOwotCWNtZC0+ZGF0YVswXSA9IGxvd2VyXzMyX2JpdHMoX19wYShh ZGRyZXNzKSkgfCBDTURfQ09NUExfV0FJVF9TVE9SRV9NQVNLOwotCWNtZC0+ZGF0YVsxXSA9IHVw cGVyXzMyX2JpdHMoX19wYShhZGRyZXNzKSk7CisJY21kLT5kYXRhWzBdID0gbG93ZXJfMzJfYml0 cyhwYWRkcikgfCBDTURfQ09NUExfV0FJVF9TVE9SRV9NQVNLOworCWNtZC0+ZGF0YVsxXSA9IHVw cGVyXzMyX2JpdHMocGFkZHIpOwogCWNtZC0+ZGF0YVsyXSA9IDE7CiAJQ01EX1NFVF9UWVBFKGNt ZCwgQ01EX0NPTVBMX1dBSVQpOwogfQpAQCAtMTMyOCw3ICsxMzMwLDcgQEAgc3RhdGljIGJvb2wg aW5jcmVhc2VfYWRkcmVzc19zcGFjZShzdHJ1Y3QgcHJvdGVjdGlvbl9kb21haW4gKmRvbWFpbiwK IAkJcmV0dXJuIGZhbHNlOwogCiAJKnB0ZSAgICAgICAgICAgICA9IFBNX0xFVkVMX1BERShkb21h aW4tPm1vZGUsCi0JCQkJCXZpcnRfdG9fcGh5cyhkb21haW4tPnB0X3Jvb3QpKTsKKwkJCQkJaW9t bXVfdmlydF90b19waHlzKGRvbWFpbi0+cHRfcm9vdCkpOwogCWRvbWFpbi0+cHRfcm9vdCAgPSBw dGU7CiAJZG9tYWluLT5tb2RlICAgICs9IDE7CiAJZG9tYWluLT51cGRhdGVkICA9IHRydWU7CkBA IC0xMzY1LDcgKzEzNjcsNyBAQCBzdGF0aWMgdTY0ICphbGxvY19wdGUoc3RydWN0IHByb3RlY3Rp b25fZG9tYWluICpkb21haW4sCiAJCQlpZiAoIXBhZ2UpCiAJCQkJcmV0dXJuIE5VTEw7CiAKLQkJ CV9fbnB0ZSA9IFBNX0xFVkVMX1BERShsZXZlbCwgdmlydF90b19waHlzKHBhZ2UpKTsKKwkJCV9f bnB0ZSA9IFBNX0xFVkVMX1BERShsZXZlbCwgaW9tbXVfdmlydF90b19waHlzKHBhZ2UpKTsKIAog CQkJLyogcHRlIGNvdWxkIGhhdmUgYmVlbiBjaGFuZ2VkIHNvbWV3aGVyZS4gKi8KIAkJCWlmIChj bXB4Y2hnNjQocHRlLCBfX3B0ZSwgX19ucHRlKSAhPSBfX3B0ZSkgewpAQCAtMTQ4MSwxMCArMTQ4 MywxMCBAQCBzdGF0aWMgaW50IGlvbW11X21hcF9wYWdlKHN0cnVjdCBwcm90ZWN0aW9uX2RvbWFp biAqZG9tLAogCQkJcmV0dXJuIC1FQlVTWTsKIAogCWlmIChjb3VudCA+IDEpIHsKLQkJX19wdGUg PSBQQUdFX1NJWkVfUFRFKHBoeXNfYWRkciwgcGFnZV9zaXplKTsKKwkJX19wdGUgPSBQQUdFX1NJ WkVfUFRFKF9fc21lX3NldChwaHlzX2FkZHIpLCBwYWdlX3NpemUpOwogCQlfX3B0ZSB8PSBQTV9M RVZFTF9FTkMoNykgfCBJT01NVV9QVEVfUCB8IElPTU1VX1BURV9GQzsKIAl9IGVsc2UKLQkJX19w dGUgPSBwaHlzX2FkZHIgfCBJT01NVV9QVEVfUCB8IElPTU1VX1BURV9GQzsKKwkJX19wdGUgPSBf X3NtZV9zZXQocGh5c19hZGRyKSB8IElPTU1VX1BURV9QIHwgSU9NTVVfUFRFX0ZDOwogCiAJaWYg KHByb3QgJiBJT01NVV9QUk9UX0lSKQogCQlfX3B0ZSB8PSBJT01NVV9QVEVfSVI7CkBAIC0xNzAw LDcgKzE3MDIsNyBAQCBzdGF0aWMgdm9pZCBmcmVlX2djcjNfdGJsX2xldmVsMSh1NjQgKnRibCkK IAkJaWYgKCEodGJsW2ldICYgR0NSM19WQUxJRCkpCiAJCQljb250aW51ZTsKIAotCQlwdHIgPSBf X3ZhKHRibFtpXSAmIFBBR0VfTUFTSyk7CisJCXB0ciA9IGlvbW11X3BoeXNfdG9fdmlydCh0Ymxb aV0gJiBQQUdFX01BU0spOwogCiAJCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylwdHIpOwogCX0K QEAgLTE3MTUsNyArMTcxNyw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfZ2NyM190YmxfbGV2ZWwyKHU2 NCAqdGJsKQogCQlpZiAoISh0YmxbaV0gJiBHQ1IzX1ZBTElEKSkKIAkJCWNvbnRpbnVlOwogCi0J CXB0ciA9IF9fdmEodGJsW2ldICYgUEFHRV9NQVNLKTsKKwkJcHRyID0gaW9tbXVfcGh5c190b192 aXJ0KHRibFtpXSAmIFBBR0VfTUFTSyk7CiAKIAkJZnJlZV9nY3IzX3RibF9sZXZlbDEocHRyKTsK IAl9CkBAIC0xODA3LDcgKzE4MDksNyBAQCBzdGF0aWMgdm9pZCBzZXRfZHRlX2VudHJ5KHUxNiBk ZXZpZCwgc3RydWN0IHByb3RlY3Rpb25fZG9tYWluICpkb21haW4sIGJvb2wgYXRzKQogCXU2NCBm bGFncyA9IDA7CiAKIAlpZiAoZG9tYWluLT5tb2RlICE9IFBBR0VfTU9ERV9OT05FKQotCQlwdGVf cm9vdCA9IHZpcnRfdG9fcGh5cyhkb21haW4tPnB0X3Jvb3QpOworCQlwdGVfcm9vdCA9IGlvbW11 X3ZpcnRfdG9fcGh5cyhkb21haW4tPnB0X3Jvb3QpOwogCiAJcHRlX3Jvb3QgfD0gKGRvbWFpbi0+ bW9kZSAmIERFVl9FTlRSWV9NT0RFX01BU0spCiAJCSAgICA8PCBERVZfRU5UUllfTU9ERV9TSElG VDsKQEAgLTE4MTksNyArMTgyMSw3IEBAIHN0YXRpYyB2b2lkIHNldF9kdGVfZW50cnkodTE2IGRl dmlkLCBzdHJ1Y3QgcHJvdGVjdGlvbl9kb21haW4gKmRvbWFpbiwgYm9vbCBhdHMpCiAJCWZsYWdz IHw9IERURV9GTEFHX0lPVExCOwogCiAJaWYgKGRvbWFpbi0+ZmxhZ3MgJiBQRF9JT01NVVYyX01B U0spIHsKLQkJdTY0IGdjcjMgPSBfX3BhKGRvbWFpbi0+Z2NyM190YmwpOworCQl1NjQgZ2NyMyA9 IGlvbW11X3ZpcnRfdG9fcGh5cyhkb21haW4tPmdjcjNfdGJsKTsKIAkJdTY0IGdseCAgPSBkb21h aW4tPmdseDsKIAkJdTY0IHRtcDsKIApAQCAtMzQ3MCwxMCArMzQ3MiwxMCBAQCBzdGF0aWMgdTY0 ICpfX2dldF9nY3IzX3B0ZSh1NjQgKnJvb3QsIGludCBsZXZlbCwgaW50IHBhc2lkLCBib29sIGFs bG9jKQogCQkJaWYgKHJvb3QgPT0gTlVMTCkKIAkJCQlyZXR1cm4gTlVMTDsKIAotCQkJKnB0ZSA9 IF9fcGEocm9vdCkgfCBHQ1IzX1ZBTElEOworCQkJKnB0ZSA9IGlvbW11X3ZpcnRfdG9fcGh5cyhy b290KSB8IEdDUjNfVkFMSUQ7CiAJCX0KIAotCQlyb290ID0gX192YSgqcHRlICYgUEFHRV9NQVNL KTsKKwkJcm9vdCA9IGlvbW11X3BoeXNfdG9fdmlydCgqcHRlICYgUEFHRV9NQVNLKTsKIAogCQls ZXZlbCAtPSAxOwogCX0KQEAgLTM2NTIsNyArMzY1NCw3IEBAIHN0YXRpYyB2b2lkIHNldF9kdGVf aXJxX2VudHJ5KHUxNiBkZXZpZCwgc3RydWN0IGlycV9yZW1hcF90YWJsZSAqdGFibGUpCiAKIAlk dGUJPSBhbWRfaW9tbXVfZGV2X3RhYmxlW2RldmlkXS5kYXRhWzJdOwogCWR0ZQkmPSB+RFRFX0lS UV9QSFlTX0FERFJfTUFTSzsKLQlkdGUJfD0gdmlydF90b19waHlzKHRhYmxlLT50YWJsZSk7CisJ ZHRlCXw9IGlvbW11X3ZpcnRfdG9fcGh5cyh0YWJsZS0+dGFibGUpOwogCWR0ZQl8PSBEVEVfSVJR X1JFTUFQX0lOVENUTDsKIAlkdGUJfD0gRFRFX0lSUV9UQUJMRV9MRU47CiAJZHRlCXw9IERURV9J UlFfUkVNQVBfRU5BQkxFOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9hbWRfaW9tbXVfaW5p dC5jIGIvZHJpdmVycy9pb21tdS9hbWRfaW9tbXVfaW5pdC5jCmluZGV4IDVhMTEzMjguLjI2ODYy ZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kX2lvbW11X2luaXQuYworKysgYi9kcml2 ZXJzL2lvbW11L2FtZF9pb21tdV9pbml0LmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxs aW51eC9leHBvcnQuaD4KICNpbmNsdWRlIDxsaW51eC9pb21tdS5oPgogI2luY2x1ZGUgPGxpbnV4 L2ttZW1sZWFrLmg+CisjaW5jbHVkZSA8bGludXgvbWVtX2VuY3J5cHQuaD4KICNpbmNsdWRlIDxh c20vcGNpLWRpcmVjdC5oPgogI2luY2x1ZGUgPGFzbS9pb21tdS5oPgogI2luY2x1ZGUgPGFzbS9n YXJ0Lmg+CkBAIC0zNDYsNyArMzQ3LDcgQEAgc3RhdGljIHZvaWQgaW9tbXVfc2V0X2RldmljZV90 YWJsZShzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSkKIAogCUJVR19PTihpb21tdS0+bW1pb19iYXNl ID09IE5VTEwpOwogCi0JZW50cnkgPSB2aXJ0X3RvX3BoeXMoYW1kX2lvbW11X2Rldl90YWJsZSk7 CisJZW50cnkgPSBpb21tdV92aXJ0X3RvX3BoeXMoYW1kX2lvbW11X2Rldl90YWJsZSk7CiAJZW50 cnkgfD0gKGRldl90YWJsZV9zaXplID4+IDEyKSAtIDE7CiAJbWVtY3B5X3RvaW8oaW9tbXUtPm1t aW9fYmFzZSArIE1NSU9fREVWX1RBQkxFX09GRlNFVCwKIAkJCSZlbnRyeSwgc2l6ZW9mKGVudHJ5 KSk7CkBAIC02MDIsNyArNjAzLDcgQEAgc3RhdGljIHZvaWQgaW9tbXVfZW5hYmxlX2NvbW1hbmRf YnVmZmVyKHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11KQogCiAJQlVHX09OKGlvbW11LT5jbWRfYnVm ID09IE5VTEwpOwogCi0JZW50cnkgPSAodTY0KXZpcnRfdG9fcGh5cyhpb21tdS0+Y21kX2J1Zik7 CisJZW50cnkgPSBpb21tdV92aXJ0X3RvX3BoeXMoaW9tbXUtPmNtZF9idWYpOwogCWVudHJ5IHw9 IE1NSU9fQ01EX1NJWkVfNTEyOwogCiAJbWVtY3B5X3RvaW8oaW9tbXUtPm1taW9fYmFzZSArIE1N SU9fQ01EX0JVRl9PRkZTRVQsCkBAIC02MzEsNyArNjMyLDcgQEAgc3RhdGljIHZvaWQgaW9tbXVf ZW5hYmxlX2V2ZW50X2J1ZmZlcihzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSkKIAogCUJVR19PTihp b21tdS0+ZXZ0X2J1ZiA9PSBOVUxMKTsKIAotCWVudHJ5ID0gKHU2NCl2aXJ0X3RvX3BoeXMoaW9t bXUtPmV2dF9idWYpIHwgRVZUX0xFTl9NQVNLOworCWVudHJ5ID0gaW9tbXVfdmlydF90b19waHlz KGlvbW11LT5ldnRfYnVmKSB8IEVWVF9MRU5fTUFTSzsKIAogCW1lbWNweV90b2lvKGlvbW11LT5t bWlvX2Jhc2UgKyBNTUlPX0VWVF9CVUZfT0ZGU0VULAogCQkgICAgJmVudHJ5LCBzaXplb2YoZW50 cnkpKTsKQEAgLTY2NCw3ICs2NjUsNyBAQCBzdGF0aWMgdm9pZCBpb21tdV9lbmFibGVfcHByX2xv ZyhzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSkKIAlpZiAoaW9tbXUtPnBwcl9sb2cgPT0gTlVMTCkK IAkJcmV0dXJuOwogCi0JZW50cnkgPSAodTY0KXZpcnRfdG9fcGh5cyhpb21tdS0+cHByX2xvZykg fCBQUFJfTE9HX1NJWkVfNTEyOworCWVudHJ5ID0gaW9tbXVfdmlydF90b19waHlzKGlvbW11LT5w cHJfbG9nKSB8IFBQUl9MT0dfU0laRV81MTI7CiAKIAltZW1jcHlfdG9pbyhpb21tdS0+bW1pb19i YXNlICsgTU1JT19QUFJfTE9HX09GRlNFVCwKIAkJICAgICZlbnRyeSwgc2l6ZW9mKGVudHJ5KSk7 CkBAIC03NDQsMTAgKzc0NSwxMCBAQCBzdGF0aWMgaW50IGlvbW11X2luaXRfZ2FfbG9nKHN0cnVj dCBhbWRfaW9tbXUgKmlvbW11KQogCWlmICghaW9tbXUtPmdhX2xvZ190YWlsKQogCQlnb3RvIGVy cl9vdXQ7CiAKLQllbnRyeSA9ICh1NjQpdmlydF90b19waHlzKGlvbW11LT5nYV9sb2cpIHwgR0Ff TE9HX1NJWkVfNTEyOworCWVudHJ5ID0gaW9tbXVfdmlydF90b19waHlzKGlvbW11LT5nYV9sb2cp IHwgR0FfTE9HX1NJWkVfNTEyOwogCW1lbWNweV90b2lvKGlvbW11LT5tbWlvX2Jhc2UgKyBNTUlP X0dBX0xPR19CQVNFX09GRlNFVCwKIAkJICAgICZlbnRyeSwgc2l6ZW9mKGVudHJ5KSk7Ci0JZW50 cnkgPSAoKHU2NCl2aXJ0X3RvX3BoeXMoaW9tbXUtPmdhX2xvZykgJiAweEZGRkZGRkZGRkZGRkZV TEwpICYgfjdVTEw7CisJZW50cnkgPSAoaW9tbXVfdmlydF90b19waHlzKGlvbW11LT5nYV9sb2cp ICYgMHhGRkZGRkZGRkZGRkZGVUxMKSAmIH43VUxMOwogCW1lbWNweV90b2lvKGlvbW11LT5tbWlv X2Jhc2UgKyBNTUlPX0dBX0xPR19UQUlMX09GRlNFVCwKIAkJICAgICZlbnRyeSwgc2l6ZW9mKGVu dHJ5KSk7CiAJd3JpdGVsKDB4MDAsIGlvbW11LT5tbWlvX2Jhc2UgKyBNTUlPX0dBX0hFQURfT0ZG U0VUKTsKQEAgLTI1MzUsNiArMjUzNiwyNCBAQCBzdGF0aWMgaW50IF9faW5pdCBhbWRfaW9tbXVf aW5pdCh2b2lkKQogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBib29sIGFtZF9pb21tdV9zdXBw b3J0c19zbWUodm9pZCkKK3sKKwlpZiAoIXNtZV9hY3RpdmUoKSB8fCAoYm9vdF9jcHVfZGF0YS54 ODYgIT0gMHgxNykpCisJCXJldHVybiB0cnVlOworCisJLyogRm9yIEZhbTE3aCwgYSBzcGVjaWZp YyBsZXZlbCBvZiBzdXBwb3J0IGlzIHJlcXVpcmVkICovCisJaWYgKGJvb3RfY3B1X2RhdGEubWlj cm9jb2RlID49IDB4MDgwMDEyMDUpCisJCXJldHVybiB0cnVlOworCisJaWYgKChib290X2NwdV9k YXRhLm1pY3JvY29kZSA+PSAweDA4MDAxMTI2KSAmJgorCSAgICAoYm9vdF9jcHVfZGF0YS5taWNy b2NvZGUgPD0gMHgwODAwMTFmZikpCisJCXJldHVybiB0cnVlOworCisJcHJfbm90aWNlKCJBTUQt Vmk6IElPTU1VIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIHdoZW4gU01FIGlzIGFjdGl2ZVxuIik7 CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogRWFy bHkgZGV0ZWN0IGNvZGUuIFRoaXMgY29kZSBydW5zIGF0IElPTU1VIGRldGVjdGlvbiB0aW1lIGlu IHRoZSBETUEKQEAgLTI1NTIsNiArMjU3MSw5IEBAIGludCBfX2luaXQgYW1kX2lvbW11X2RldGVj dCh2b2lkKQogCWlmIChhbWRfaW9tbXVfZGlzYWJsZWQpCiAJCXJldHVybiAtRU5PREVWOwogCisJ aWYgKCFhbWRfaW9tbXVfc3VwcG9ydHNfc21lKCkpCisJCXJldHVybiAtRU5PREVWOworCiAJcmV0 ID0gaW9tbXVfZ29fdG9fc3RhdGUoSU9NTVVfSVZSU19ERVRFQ1RFRCk7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYW1kX2lvbW11X3Byb3RvLmgg Yi9kcml2ZXJzL2lvbW11L2FtZF9pb21tdV9wcm90by5oCmluZGV4IDQ2NjI2MGYuLjNmMTJmYjIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYW1kX2lvbW11X3Byb3RvLmgKKysrIGIvZHJpdmVy cy9pb21tdS9hbWRfaW9tbXVfcHJvdG8uaApAQCAtODcsNCArODcsMTQgQEAgc3RhdGljIGlubGlu ZSBib29sIGlvbW11X2ZlYXR1cmUoc3RydWN0IGFtZF9pb21tdSAqaW9tbXUsIHU2NCBmKQogCXJl dHVybiAhIShpb21tdS0+ZmVhdHVyZXMgJiBmKTsKIH0KIAorc3RhdGljIGlubGluZSB1NjQgaW9t bXVfdmlydF90b19waHlzKHZvaWQgKnZhZGRyKQoreworCXJldHVybiAodTY0KV9fc21lX3NldCh2 aXJ0X3RvX3BoeXModmFkZHIpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkICppb21tdV9waHlz X3RvX3ZpcnQodW5zaWduZWQgbG9uZyBwYWRkcikKK3sKKwlyZXR1cm4gcGh5c190b192aXJ0KF9f c21lX2NscihwYWRkcikpOworfQorCiAjZW5kaWYgLyogX0FTTV9YODZfQU1EX0lPTU1VX1BST1RP X0ggICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FtZF9pb21tdV90eXBlcy5oIGIvZHJp dmVycy9pb21tdS9hbWRfaW9tbXVfdHlwZXMuaAppbmRleCA0ZGU4ZjQxLi4zY2U1ODdkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2lvbW11L2FtZF9pb21tdV90eXBlcy5oCisrKyBiL2RyaXZlcnMvaW9t bXUvYW1kX2lvbW11X3R5cGVzLmgKQEAgLTM0Myw3ICszNDMsNyBAQAogCiAjZGVmaW5lIElPTU1V X1BBR0VfTUFTSyAoKCgxVUxMIDw8IDUyKSAtIDEpICYgfjB4ZmZmVUxMKQogI2RlZmluZSBJT01N VV9QVEVfUFJFU0VOVChwdGUpICgocHRlKSAmIElPTU1VX1BURV9QKQotI2RlZmluZSBJT01NVV9Q VEVfUEFHRShwdGUpIChwaHlzX3RvX3ZpcnQoKHB0ZSkgJiBJT01NVV9QQUdFX01BU0spKQorI2Rl ZmluZSBJT01NVV9QVEVfUEFHRShwdGUpIChpb21tdV9waHlzX3RvX3ZpcnQoKHB0ZSkgJiBJT01N VV9QQUdFX01BU0spKQogI2RlZmluZSBJT01NVV9QVEVfTU9ERShwdGUpICgoKHB0ZSkgPj4gOSkg JiAweDA3KQogCiAjZGVmaW5lIElPTU1VX1BST1RfTUFTSyAweDAzCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==