From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v2 3/3] x86emul: consolidate CR4 handling Date: Tue, 06 Nov 2018 06:45:33 -0700 Message-ID: <5BE19AFD02000078001F8A10@prv1-mh.provo.novell.com> References: <5BDC7E5802000078001F75BA@prv1-mh.provo.novell.com> <5BE1981502000078001F89C7@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gK1fm-0006jm-T6 for xen-devel@lists.xenproject.org; Tue, 06 Nov 2018 13:45:38 +0000 In-Reply-To: <5BE1981502000078001F89C7@prv1-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: Andrew Cooper , Wei Liu List-Id: xen-devel@lists.xenproject.org Tm93IHRoYXQgdGhlcmUncyBhbiBhbG1vc3QgdW5jb25kaXRpb25hbCBDUjQgcmVhZCByaWdodCBh dCB0aGUgYmVnaW5uaW5nCm9mIHg4Nl9lbXVsYXRlKCksIGNlbnRyYWxpemUgaXRzIHJlYWRpbmcg dGhlcmUgYW5kIHVzZSByZXN1bHQgYW5kIHZhbHVlCmV2ZXJ5d2hlcmUgZWxzZSB3aXRob3V0IGZ1 cnRoZXIgaW52b2tpbmcgdGhlIGhvb2suCgpTdWJzZXF1ZW50bHkgd2UgbWF5IHdhbnQgdG8gY29u c2lkZXIgaGF2aW5nIHRoZSBjYWxsZXJzIHByb3ZpZGUKd2hpY2hldmVyIHZhbHVlIHRoZXkgZGVl bSBhcHByb3ByaWF0ZSBpbiB0aGVpciBjb250ZXh0cywgdG8gYXZvaWQKaW52b2tpbmcgdGhlIGhv b2sgYWx0b2dldGhlciBmb3IgdGhpcyBwdXJwb3NlLgoKU2lnbmVkLW9mZi1ieTogSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjI6IERvbid0IGFsbG93IDMyLWJpdCBQVVNIRi9Q T1BGIGluIFZNRSBtb2RlIHRvIGdldCBhd2F5IHdpdGhvdXQKICAgICNHUCgwKS4KCi0tLSBhL3hl bi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94 ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC0xMTYzLDEwICsxMTYzLDE5IEBAIGRvIHsKICAg ICBvcHMtPndyaXRlX3NlZ21lbnQoeDg2X3NlZ19jcywgY3MsIGN0eHQpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKIH0pCiAKKyNkZWZpbmUgY2hlY2tfY3I0KCkgKHsgICAgICAgICAgICAg ICAgICAgICAgXAorICAgIGlmICggdW5saWtlbHkoY3I0X3JjICE9IFg4NkVNVUxfT0tBWSkgKSBc CisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg cmMgPSBjcjRfcmM7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBnb3RvIGRvbmU7 ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKK30pCisKIHN0YXRpYyBpbnQgX2dldF9mcHUoCiAgICAgZW51bSB4 ODZfZW11bGF0ZV9mcHVfdHlwZSB0eXBlLAogICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0LAotICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgKm9wcykKKyAgICBjb25zdCBz dHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpvcHMsCisgICAgdW5zaWduZWQgbG9uZyBjcjQsIGludCBj cjRfcmMpCiB7CiAgICAgdWludDY0X3QgeGNyMDsKICAgICBpbnQgcmM7CkBAIC0xMjA4LDExICsx MjE3LDcgQEAgc3RhdGljIGludCBfZ2V0X2ZwdSgKICAgICAgICAgZmFpbF9pZighb3BzLT5yZWFk X2NyKTsKICAgICAgICAgaWYgKCB0eXBlID49IFg4NkVNVUxfRlBVX3htbSApCiAgICAgICAgIHsK LSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY3I0OwotCi0gICAgICAgICAgICByYyA9IG9wcy0+ cmVhZF9jcig0LCAmY3I0LCBjdHh0KTsKLSAgICAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9P S0FZICkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgICAgICBjaGVja19jcjQo KTsKICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighKGNyNCAmICgodHlwZSA9PSBY ODZFTVVMX0ZQVV94bW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPyBYODZfQ1I0X09TRlhTUiA6IFg4Nl9DUjRfT1NYU0FWRSkpLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVYQ19VRCk7CkBAIC0xMjQzLDcgKzEyNDgsNyBAQCBzdGF0aWMg aW50IF9nZXRfZnB1KAogCiAjZGVmaW5lIGdldF9mcHUodHlwZSkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAogZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByYyA9IF9nZXRfZnB1KGZw dV90eXBlID0gKHR5cGUpLCBjdHh0LCBvcHMpOyAgICAgICAgICAgICAgICBcCisgICAgcmMgPSBf Z2V0X2ZwdShmcHVfdHlwZSA9ICh0eXBlKSwgY3R4dCwgb3BzLCBjcjQsIGNyNF9yYyk7ICAgXAog ICAgIGlmICggcmMgKSBnb3RvIGRvbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKIH0gd2hpbGUgKDApCiAKQEAgLTE2MDMsMTMgKzE2MDgsOSBAQCBfbW9kZV9pb3Bs KAogICAgIF9pb3BsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogfSkK ICNkZWZpbmUgbW9kZV92aWYoKSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgY3I0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgIGlmICggb3BzLT5yZWFkX2NyICYmIGdldF9jcGwoY3R4dCwgb3Bz KSA9PSAzICkgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJjID0gb3BzLT5yZWFkX2NyKDQs ICZjcjQsIGN0eHQpOyAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoIHJjICE9IFg4 NkVNVUxfT0tBWSApIGdvdG8gZG9uZTsgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgISEo Y3I0ICYgKF9yZWdzLmVmbGFncyAmIFg4Nl9FRkxBR1NfVk0gPyBYODZfQ1I0X1ZNRSA6IFg4Nl9D UjRfUFZJKSk7IFwKKyAgICBjaGVja19jcjQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgZ2V0X2NwbChjdHh0LCBvcHMpID09IDMgJiYgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChjcjQgJiAoX3JlZ3MuZWZsYWdzICYgWDg2 X0VGTEFHU19WTSA/IFg4Nl9DUjRfVk1FIDogWDg2X0NSNF9QVkkpKTsgXAogfSkKIAogc3RhdGlj IGludCBpb3BvcnRfYWNjZXNzX2NoZWNrKApAQCAtMjE4NSwxNCArMjE4NiwxMSBAQCBzdGF0aWMg Ym9vbCBpc19icmFuY2hfc3RlcChzdHJ1Y3QgeDg2X2VtCiB9CiAKIHN0YXRpYyBib29sIHVtaXBf YWN0aXZlKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAotICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAqb3BzKQorICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAqb3BzLAorICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjcjQpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBjcjQ7 Ci0KICAgICAvKiBJbnRlbnRpb25hbGx5IG5vdCB1c2luZyBtb2RlX3JpbmcwKCkgaGVyZSB0byBh dm9pZCBpdHMgZmFpbF9pZigpLiAqLwotICAgIHJldHVybiBnZXRfY3BsKGN0eHQsIG9wcykgPiAw ICYmCi0gICAgICAgICAgIG9wcy0+cmVhZF9jciAmJiBvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4 dCkgPT0gWDg2RU1VTF9PS0FZICYmCi0gICAgICAgICAgIChjcjQgJiBYODZfQ1I0X1VNSVApOwor ICAgIHJldHVybiBnZXRfY3BsKGN0eHQsIG9wcykgPiAwICYmIChjcjQgJiBYODZfQ1I0X1VNSVAp OwogfQogCiBzdGF0aWMgdm9pZCBhZGp1c3RfYm5kKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0LApAQCAtMzIyNiw3ICszMjI0LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAgLyogU2hhZG93IGNv cHkgb2YgcmVnaXN0ZXIgc3RhdGUuIENvbW1pdHRlZCBvbiBzdWNjZXNzZnVsIGVtdWxhdGlvbi4g Ki8KICAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyBfcmVncyA9ICpjdHh0LT5yZWdzOwogICAgIHN0 cnVjdCB4ODZfZW11bGF0ZV9zdGF0ZSBzdGF0ZTsKLSAgICBpbnQgcmM7CisgICAgaW50IHJjLCBj cjRfcmM7CiAgICAgdWludDhfdCBiLCBkLCAqb3BjID0gTlVMTDsKICAgICB1bnNpZ25lZCBpbnQg Zmlyc3RfYnl0ZSA9IDAsIGluc25fYnl0ZXMgPSAwOwogICAgIGJvb2wgc2luZ2xlc3RlcCA9IChf cmVncy5lZmxhZ3MgJiBYODZfRUZMQUdTX1RGKSAmJgpAQCAtMzIzNCw3ICszMjMyLDcgQEAgeDg2 X2VtdWxhdGUoCiAgICAgYm9vbCBzZmVuY2UgPSBmYWxzZTsKICAgICBzdHJ1Y3Qgb3BlcmFuZCBz cmMgPSB7IC5yZWcgPSBQVFJfUE9JU09OIH07CiAgICAgc3RydWN0IG9wZXJhbmQgZHN0ID0geyAu cmVnID0gUFRSX1BPSVNPTiB9OwotICAgIHVuc2lnbmVkIGxvbmcgY3I0OworICAgIHVuc2lnbmVk IGxvbmcgY3I0ID0gMDsKICAgICBlbnVtIHg4Nl9lbXVsYXRlX2ZwdV90eXBlIGZwdV90eXBlID0g WDg2RU1VTF9GUFVfbm9uZTsKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfc3R1YiBzdHViID0ge307 CiAgICAgREVDTEFSRV9BTElHTkVEKG1tdmFsX3QsIG1tdmFsKTsKQEAgLTMyNDcsNiArMzI0NSw4 IEBAIHg4Nl9lbXVsYXRlKAogCiAgICAgQVNTRVJUKG9wcy0+cmVhZCk7CiAKKyAgICBjcjRfcmMg PSBvcHMtPnJlYWRfY3IgPyBvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4dCkgOiBYODZFTVVMX09L QVk7CisKICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoKG1vZGVfdmlmKCkgJiYKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChfcmVncy5lZmxhZ3MgJiBYODZfRUZMQUdTX1ZJRikgJiYKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChfcmVncy5lZmxhZ3MgJiBYODZfRUZMQUdTX1ZJUCkp LApAQCAtNDAwMCwxMyArNDAwMCwxMCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgaWYgKCAoX3Jl Z3MuZWZsYWdzICYgWDg2X0VGTEFHU19WTSkgJiYKICAgICAgICAgICAgICBNQVNLX0VYVFIoX3Jl Z3MuZWZsYWdzLCBYODZfRUZMQUdTX0lPUEwpICE9IDMgKQogICAgICAgICB7Ci0gICAgICAgICAg ICBjcjQgPSAwOwotICAgICAgICAgICAgaWYgKCBvcF9ieXRlcyA9PSAyICYmIG9wcy0+cmVhZF9j ciApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmMgPSBvcHMtPnJlYWRfY3IoNCwg JmNyNCwgY3R4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQot ICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg ICBpZiAoIG9wX2J5dGVzID09IDIgKQorICAgICAgICAgICAgICAgIGNoZWNrX2NyNCgpOworICAg ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNyNCA9IDA7CiAgICAgICAgICAgICBnZW5l cmF0ZV9leGNlcHRpb25faWYoIShjcjQgJiBYODZfQ1I0X1ZNRSksIEVYQ19HUCwgMCk7CiAgICAg ICAgICAgICBzcmMudmFsID0gKF9yZWdzLmZsYWdzICYgflg4Nl9FRkxBR1NfSUYpIHwgWDg2X0VG TEFHU19JT1BMOwogICAgICAgICAgICAgaWYgKCBfcmVncy5lZmxhZ3MgJiBYODZfRUZMQUdTX1ZJ RiApCkBAIC00MDE5LDE3ICs0MDE2LDE0IEBAIHg4Nl9lbXVsYXRlKAogICAgIGNhc2UgMHg5ZDog LyogcG9wZiAqLyB7CiAgICAgICAgIHVpbnQzMl90IG1hc2sgPSBYODZfRUZMQUdTX1ZJUCB8IFg4 Nl9FRkxBR1NfVklGIHwgWDg2X0VGTEFHU19WTTsKIAotICAgICAgICBjcjQgPSAwOwogICAgICAg ICBpZiAoICFtb2RlX3JpbmcwKCkgKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIF9yZWdz LmVmbGFncyAmIFg4Nl9FRkxBR1NfVk0gKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg IGlmICggb3BfYnl0ZXMgPT0gMiAmJiBvcHMtPnJlYWRfY3IgKQotICAgICAgICAgICAgICAgIHsK LSAgICAgICAgICAgICAgICAgICAgcmMgPSBvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4dCk7Ci0g ICAgICAgICAgICAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKLSAgICAgICAgICAg ICAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgaWYgKCBvcF9ieXRlcyA9PSAyICkKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tfY3I0KCk7 CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjcjQgPSAwOwogICAg ICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighKGNyNCAmIFg4Nl9DUjRfVk1FKSAm JgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVNLX0VYVFIoX3JlZ3Mu ZWZsYWdzLCBYODZfRUZMQUdTX0lPUEwpICE9IDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVYQ19HUCwgMCk7CkBAIC01MTE0LDcgKzUxMDgsNyBAQCB4ODZfZW11bGF0 ZSgKICAgICAgICAgc3dpdGNoICggbW9kcm1fcmVnICYgNiApCiAgICAgICAgIHsKICAgICAgICAg Y2FzZSAwOiAvKiBzbGR0IC8gc3RyICovCi0gICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25f aWYodW1pcF9hY3RpdmUoY3R4dCwgb3BzKSwgRVhDX0dQLCAwKTsKKyAgICAgICAgICAgIGdlbmVy YXRlX2V4Y2VwdGlvbl9pZih1bWlwX2FjdGl2ZShjdHh0LCBvcHMsIGNyNCksIEVYQ19HUCwgMCk7 CiAgICAgICAgICAgICBnb3RvIHN0b3JlX3NlbGVjdG9yOwogICAgICAgICBjYXNlIDI6IC8qIGxs ZHQgLyBsdHIgKi8KICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighbW9kZV9yaW5n MCgpLCBFWENfR1AsIDApOwpAQCAtNTE2OSwxMSArNTE2MywxMCBAQCB4ODZfZW11bGF0ZSgKICAg ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgMHhkMDogLyogeGdldGJ2ICovCi0gICAg ICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LnBmeCwgRVhDX1VEKTsKLSAgICAgICAg ICAgIGlmICggIW9wcy0+cmVhZF9jciB8fCAhb3BzLT5yZWFkX3hjciB8fAotICAgICAgICAgICAg ICAgICBvcHMtPnJlYWRfY3IoNCwgJmNyNCwgY3R4dCkgIT0gWDg2RU1VTF9PS0FZICkKLSAgICAg ICAgICAgICAgICBjcjQgPSAwOwotICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCEo Y3I0ICYgWDg2X0NSNF9PU1hTQVZFKSwgRVhDX1VEKTsKKyAgICAgICAgICAgIGdlbmVyYXRlX2V4 Y2VwdGlvbl9pZigodmV4LnBmeCB8fCAhb3BzLT5yZWFkX3hjciB8fAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjcjRfcmMgIT0gWDg2RU1VTF9PS0FZIHx8CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICEoY3I0ICYgWDg2X0NSNF9PU1hTQVZFKSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDX1VEKTsKICAgICAgICAgICAgIHJjID0g b3BzLT5yZWFkX3hjcihfcmVncy5lY3gsICZtc3JfdmFsLCBjdHh0KTsKICAgICAgICAgICAgIGlm ICggcmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CkBAIC01 MTgyLDExICs1MTc1LDEwIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgYnJlYWs7CiAKICAg ICAgICAgY2FzZSAweGQxOiAvKiB4c2V0YnYgKi8KLSAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2Vw dGlvbl9pZih2ZXgucGZ4LCBFWENfVUQpOwotICAgICAgICAgICAgaWYgKCAhb3BzLT5yZWFkX2Ny IHx8ICFvcHMtPndyaXRlX3hjciB8fAotICAgICAgICAgICAgICAgICBvcHMtPnJlYWRfY3IoNCwg JmNyNCwgY3R4dCkgIT0gWDg2RU1VTF9PS0FZICkKLSAgICAgICAgICAgICAgICBjcjQgPSAwOwot ICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCEoY3I0ICYgWDg2X0NSNF9PU1hTQVZF KSwgRVhDX1VEKTsKKyAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZigodmV4LnBmeCB8 fCAhb3BzLT53cml0ZV94Y3IgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3I0X3JjICE9IFg4NkVNVUxfT0tBWSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhKGNyNCAmIFg4Nl9DUjRfT1NYU0FWRSkpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVYQ19VRCk7CiAgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIW1v ZGVfcmluZzAoKSwgRVhDX0dQLCAwKTsKICAgICAgICAgICAgIHJjID0gb3BzLT53cml0ZV94Y3Io X3JlZ3MuZWN4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVncy5lYXggfCAo KHVpbnQ2NF90KV9yZWdzLmVkeCA8PCAzMiksIGN0eHQpOwpAQCAtNTMxMCw3ICs1MzAyLDcgQEAg eDg2X2VtdWxhdGUoCiAgICAgICAgIGNhc2UgR1JQN19NRU0oMCk6IC8qIHNnZHQgKi8KICAgICAg ICAgY2FzZSBHUlA3X01FTSgxKTogLyogc2lkdCAqLwogICAgICAgICAgICAgQVNTRVJUKGVhLnR5 cGUgPT0gT1BfTUVNKTsKLSAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih1bWlwX2Fj dGl2ZShjdHh0LCBvcHMpLCBFWENfR1AsIDApOworICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0 aW9uX2lmKHVtaXBfYWN0aXZlKGN0eHQsIG9wcywgY3I0KSwgRVhDX0dQLCAwKTsKICAgICAgICAg ICAgIGZhaWxfaWYoIW9wcy0+cmVhZF9zZWdtZW50IHx8ICFvcHMtPndyaXRlKTsKICAgICAgICAg ICAgIGlmICggKHJjID0gb3BzLT5yZWFkX3NlZ21lbnQoc2VnLCAmc3JlZywgY3R4dCkpICkKICAg ICAgICAgICAgICAgICBnb3RvIGRvbmU7CkBAIC01MzQ5LDcgKzUzNDEsNyBAQCB4ODZfZW11bGF0 ZSgKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR1JQN19BTEwoNCk6IC8qIHNt c3cgKi8KLSAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih1bWlwX2FjdGl2ZShjdHh0 LCBvcHMpLCBFWENfR1AsIDApOworICAgICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHVt aXBfYWN0aXZlKGN0eHQsIG9wcywgY3I0KSwgRVhDX0dQLCAwKTsKICAgICAgICAgICAgIGlmICgg ZWEudHlwZSA9PSBPUF9NRU0gKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGZhaWxf aWYoIW9wcy0+d3JpdGUpOwpAQCAtNTkzMiw4ICs1OTI0LDcgQEAgeDg2X2VtdWxhdGUoCiAgICAg ICAgIGlmICggIW1vZGVfcmluZzAoKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGZhaWxfaWYo b3BzLT5yZWFkX2NyID09IE5VTEwpOwotICAgICAgICAgICAgaWYgKCAocmMgPSBvcHMtPnJlYWRf Y3IoNCwgJmNyNCwgY3R4dCkpICkKLSAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAg ICAgICBjaGVja19jcjQoKTsKICAgICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihjcjQg JiBYODZfQ1I0X1RTRCwgRVhDX0dQLCAwKTsKICAgICAgICAgfQogICAgICAgICBmYWlsX2lmKG9w cy0+cmVhZF9tc3IgPT0gTlVMTCk7CkBAIC02OTY5LDggKzY5NjAsNiBAQCB4ODZfZW11bGF0ZSgK ICAgICAgICAgZmFpbF9pZihtb2RybV9tb2QgIT0gMyk7CiAgICAgICAgIGdlbmVyYXRlX2V4Y2Vw dGlvbl9pZigobW9kcm1fcmVnICYgNCkgfHwgIW1vZGVfNjRiaXQoKSwgRVhDX1VEKTsKICAgICAg ICAgZmFpbF9pZighb3BzLT5yZWFkX2NyKTsKLSAgICAgICAgaWYgKCAocmMgPSBvcHMtPnJlYWRf Y3IoNCwgJmNyNCwgY3R4dCkpICE9IFg4NkVNVUxfT0tBWSApCi0gICAgICAgICAgICBnb3RvIGRv bmU7CiAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighKGNyNCAmIFg4Nl9DUjRfRlNHU0JB U0UpLCBFWENfVUQpOwogICAgICAgICBzZWcgPSBtb2RybV9yZWcgJiAxID8geDg2X3NlZ19ncyA6 IHg4Nl9zZWdfZnM7CiAgICAgICAgIGZhaWxfaWYoIW9wcy0+cmVhZF9zZWdtZW50KTsKQEAgLTg5 NjEsMTMgKzg5NTAsOCBAQCB4ODZfZW11bGF0ZSgKICBlbXVsYXRpb25fc3R1Yl9mYWlsdXJlOgog ICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihzdHViX2V4bi5pbmZvLmZpZWxkcy50cmFwbnIgPT0g RVhDX01GLCBFWENfTUYpOwogICAgIGlmICggc3R1Yl9leG4uaW5mby5maWVsZHMudHJhcG5yID09 IEVYQ19YTSApCi0gICAgewotICAgICAgICB1bnNpZ25lZCBsb25nIGNyNDsKLQotICAgICAgICBp ZiAoICFvcHMtPnJlYWRfY3IgfHwgb3BzLT5yZWFkX2NyKDQsICZjcjQsIGN0eHQpICE9IFg4NkVN VUxfT0tBWSApCi0gICAgICAgICAgICBjcjQgPSBYODZfQ1I0X09TWE1NRVhDUFQ7Ci0gICAgICAg IGdlbmVyYXRlX2V4Y2VwdGlvbihjcjQgJiBYODZfQ1I0X09TWE1NRVhDUFQgPyBFWENfWE0gOiBF WENfVUQpOwotICAgIH0KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uKCFvcHMtPnJlYWRfY3Ig fHwgY3I0X3JjICE9IFg4NkVNVUxfT0tBWSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3I0ICYgWDg2X0NSNF9PU1hNTUVYQ1BUID8gRVhDX1hNIDogRVhDX1VEKTsKICAgICBncHJpbnRr KFhFTkxPR19XQVJOSU5HLAogICAgICAgICAgICAgImV4Y2VwdGlvbiAldSAoZWM9JTA0eCkgaW4g ZW11bGF0aW9uIHN0dWIgKGxpbmUgJXUpXG4iLAogICAgICAgICAgICAgc3R1Yl9leG4uaW5mby5m aWVsZHMudHJhcG5yLCBzdHViX2V4bi5pbmZvLmZpZWxkcy5lYywKCgoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v cmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=