From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH for-4.7 v2 2/2] xen/x86: Introduce a new VMASSIST for architectural behaviour of iopl Date: Thu, 7 Apr 2016 22:39:18 +0100 Message-ID: <1460065158-24027-2-git-send-email-andrew.cooper3@citrix.com> References: <1460065158-24027-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1460065158-24027-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhlIGV4aXN0aW5nIHZJT1BMIGludGVyZmFjZSBpcyBoYXJkIHRvIHVzZSwgYW5kIG5lZWQgbm90 IGJlLgoKSW50cm9kdWNlIGEgVk1BU1NJU1Qgd2l0aCB3aGljaCBhIGd1ZXN0IGNhbiBvcHQtaW4g dG8gaGF2aW5nIHZJT1BMIGJlaGF2aW91cgpjb25zaXN0ZW5seSB3aXRoIG5hdGl2ZSBoYXJkd2Fy ZS4KClNwZWNpZmljYWxseToKIC0gdmlydHVhbCBpb3BsIHVwZGF0ZWQgZnJvbSBkb19pcmV0KCkg aHlwZXJjYWxscy4KIC0gdmlydHVhbCBpb3BsIHJlcG9ydGVkIGluIGJvdW5jZSBmcmFtZXMuCiAt IGd1ZXN0IGtlcm5lbHMgYXNzdW1lZCB0byBiZSBsZXZlbCAwIGZvciB0aGUgcHVycG9zZSBvZiBp b3BsIGNoZWNrcy4KCnYtPmFyY2gucHZfdmNwdS5pb3BsIGlzIGFsdGVyZWQgdG8gc3RvcmUgSU9Q TCBzaGlmdGVkIGFzIGl0IHdvdWxkIGV4aXN0CmVmbGFncywgZm9yIHRoZSBiZW5lZml0IG9mIHRo ZSBhc3NlbWJseSBjb2RlLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv b3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+ Cgp2MjoKICogU2hpZnQgdmNwdS5pb3BsIHRvIG1hdGNoIGVmbGFncy4KICogRmFjdG9yIG91dCBp b3BsX29rKCkuCiAqIFVzZSBDTU9WY2MgaW4gYXNzZW1ibHkgY29kZS4KCkFsb25nIHdpdGggdGhp cywgSSBoYXZlIGZ1bmN0aW9uYWwgdGVzdHMgZm9yIGJvdGggdklPUEwgaW50ZXJmYWNlcyBpbiBQ VgpndWVzdHMuCi0tLQogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgICAgICAgICB8IDE1ICsr KysrKysrKystLS0tLQogeGVuL2FyY2gveDg2L3BoeXNkZXYuYyAgICAgICAgICAgICB8ICAyICst CiB4ZW4vYXJjaC94ODYvdHJhcHMuYyAgICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKy0t CiB4ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgIHwgIDMgKysrCiB4ZW4vYXJjaC94 ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5TIHwgIDcgKysrKysrLQogeGVuL2FyY2gveDg2L3g4Nl82 NC9jb21wYXQvdHJhcHMuYyB8ICA0ICsrKysKIHhlbi9hcmNoL3g4Ni94ODZfNjQvZW50cnkuUyAg ICAgICAgfCAgNyArKysrKystCiB4ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMgICAgICAgIHwg IDMgKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oICAgICAgIHwgIDEgKwogeGVuL2lu Y2x1ZGUvYXNtLXg4Ni9kb21haW4uaCAgICAgICB8ICA0ICsrKy0KIHhlbi9pbmNsdWRlL3B1Ymxp Yy94ZW4uaCAgICAgICAgICAgfCAgOCArKysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgNTggaW5z ZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Rv bWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IGE0ZjZkYjIuLjhjNTkwZjMgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWlu LmMKQEAgLTk5NCw3ICs5OTQsNyBAQCBpbnQgYXJjaF9zZXRfaW5mb19ndWVzdCgKICAgICBpbml0 X2ludDgwX2RpcmVjdF90cmFwKHYpOwogCiAgICAgLyogSU9QTCBwcml2aWxlZ2VzIGFyZSB2aXJ0 dWFsaXNlZC4gKi8KLSAgICB2LT5hcmNoLnB2X3ZjcHUuaW9wbCA9ICh2LT5hcmNoLnVzZXJfcmVn cy5lZmxhZ3MgPj4gMTIpICYgMzsKKyAgICB2LT5hcmNoLnB2X3ZjcHUuaW9wbCA9IHYtPmFyY2gu dXNlcl9yZWdzLmVmbGFncyAmIFg4Nl9FRkxBR1NfSU9QTDsKICAgICB2LT5hcmNoLnVzZXJfcmVn cy5lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfSU9QTDsKIAogICAgIC8qIEVuc3VyZSByZWFsIGhhcmR3 YXJlIGludGVycnVwdHMgYXJlIGVuYWJsZWQuICovCkBAIC0xNzM1LDggKzE3MzUsMTAgQEAgc3Rh dGljIHZvaWQgbG9hZF9zZWdtZW50cyhzdHJ1Y3QgdmNwdSAqbikKICAgICAgICAgICAgIGNzX2Fu ZF9tYXNrID0gKHVuc2lnbmVkIHNob3J0KXJlZ3MtPmNzIHwKICAgICAgICAgICAgICAgICAoKHVu c2lnbmVkIGludCl2Y3B1X2luZm8obiwgZXZ0Y2huX3VwY2FsbF9tYXNrKSA8PCAxNik7CiAgICAg ICAgICAgICAvKiBGb2xkIHVwY2FsbCBtYXNrIGludG8gUkZMQUdTLklGLiAqLwotICAgICAgICAg ICAgZWZsYWdzICA9IHJlZ3MtPl9lZmxhZ3MgJiB+WDg2X0VGTEFHU19JRjsKKyAgICAgICAgICAg IGVmbGFncyAgPSByZWdzLT5fZWZsYWdzICYgfihYODZfRUZMQUdTX0lGfFg4Nl9FRkxBR1NfSU9Q TCk7CiAgICAgICAgICAgICBlZmxhZ3MgfD0gIXZjcHVfaW5mbyhuLCBldnRjaG5fdXBjYWxsX21h c2spIDw8IDk7CisgICAgICAgICAgICBpZiAoIFZNX0FTU0lTVChuLT5kb21haW4sIGFyY2hpdGVj dHVyYWxfaW9wbCkgKQorICAgICAgICAgICAgICAgIGVmbGFncyB8PSBuLT5hcmNoLnB2X3ZjcHUu aW9wbDsKIAogICAgICAgICAgICAgaWYgKCAhcmluZ18xKHJlZ3MpICkKICAgICAgICAgICAgIHsK QEAgLTE3NjMsNyArMTc2NSw4IEBAIHN0YXRpYyB2b2lkIGxvYWRfc2VnbWVudHMoc3RydWN0IHZj cHUgKm4pCiAgICAgICAgICAgICAgICAgdmNwdV9pbmZvKG4sIGV2dGNobl91cGNhbGxfbWFzaykg PSAxOwogCiAgICAgICAgICAgICByZWdzLT5lbnRyeV92ZWN0b3IgfD0gVFJBUF9zeXNjYWxsOwot ICAgICAgICAgICAgcmVncy0+X2VmbGFncyAgICAgICY9IDB4RkZGQ0JFRkZVTDsKKyAgICAgICAg ICAgIHJlZ3MtPl9lZmxhZ3MgICAgICAmPSB+KFg4Nl9FRkxBR1NfQUN8WDg2X0VGTEFHU19WTXxY ODZfRUZMQUdTX1JGfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0VG TEFHU19OVHxYODZfRUZMQUdTX0lPUEx8WDg2X0VGTEFHU19URik7CiAgICAgICAgICAgICByZWdz LT5zcyAgICAgICAgICAgID0gRkxBVF9DT01QQVRfS0VSTkVMX1NTOwogICAgICAgICAgICAgcmVn cy0+X2VzcCAgICAgICAgICA9ICh1bnNpZ25lZCBsb25nKShlc3AtNyk7CiAgICAgICAgICAgICBy ZWdzLT5jcyAgICAgICAgICAgID0gRkxBVF9DT01QQVRfS0VSTkVMX0NTOwpAQCAtMTc4MSw4ICsx Nzg0LDEwIEBAIHN0YXRpYyB2b2lkIGxvYWRfc2VnbWVudHMoc3RydWN0IHZjcHUgKm4pCiAgICAg ICAgICAgICAoKHVuc2lnbmVkIGxvbmcpdmNwdV9pbmZvKG4sIGV2dGNobl91cGNhbGxfbWFzaykg PDwgMzIpOwogCiAgICAgICAgIC8qIEZvbGQgdXBjYWxsIG1hc2sgaW50byBSRkxBR1MuSUYuICov Ci0gICAgICAgIHJmbGFncyAgPSByZWdzLT5yZmxhZ3MgJiB+WDg2X0VGTEFHU19JRjsKKyAgICAg ICAgcmZsYWdzICA9IHJlZ3MtPnJmbGFncyAmIH4oWDg2X0VGTEFHU19JRnxYODZfRUZMQUdTX0lP UEwpOwogICAgICAgICByZmxhZ3MgfD0gIXZjcHVfaW5mbyhuLCBldnRjaG5fdXBjYWxsX21hc2sp IDw8IDk7CisgICAgICAgIGlmICggVk1fQVNTSVNUKG4tPmRvbWFpbiwgYXJjaGl0ZWN0dXJhbF9p b3BsKSApCisgICAgICAgICAgICByZmxhZ3MgfD0gbi0+YXJjaC5wdl92Y3B1LmlvcGw7CiAKICAg ICAgICAgaWYgKCBwdXRfdXNlcihyZWdzLT5zcywgICAgICAgICAgICByc3AtIDEpIHwKICAgICAg ICAgICAgICBwdXRfdXNlcihyZWdzLT5yc3AsICAgICAgICAgICByc3AtIDIpIHwKQEAgLTE4MDYs NyArMTgxMSw3IEBAIHN0YXRpYyB2b2lkIGxvYWRfc2VnbWVudHMoc3RydWN0IHZjcHUgKm4pCiAK ICAgICAgICAgcmVncy0+ZW50cnlfdmVjdG9yIHw9IFRSQVBfc3lzY2FsbDsKICAgICAgICAgcmVn cy0+cmZsYWdzICAgICAgICY9IH4oWDg2X0VGTEFHU19BQ3xYODZfRUZMQUdTX1ZNfFg4Nl9FRkxB R1NfUkZ8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg4Nl9FRkxBR1NfTlR8WDg2 X0VGTEFHU19URik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg4Nl9FRkxBR1Nf TlR8WDg2X0VGTEFHU19JT1BMfFg4Nl9FRkxBR1NfVEYpOwogICAgICAgICByZWdzLT5zcyAgICAg ICAgICAgID0gRkxBVF9LRVJORUxfU1M7CiAgICAgICAgIHJlZ3MtPnJzcCAgICAgICAgICAgPSAo dW5zaWduZWQgbG9uZykocnNwLTExKTsKICAgICAgICAgcmVncy0+Y3MgICAgICAgICAgICA9IEZM QVRfS0VSTkVMX0NTOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3BoeXNkZXYuYyBiL3hlbi9h cmNoL3g4Ni9waHlzZGV2LmMKaW5kZXggMWNiOWI1OC4uNWE0OTc5NiAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L3BoeXNkZXYuYworKysgYi94ZW4vYXJjaC94ODYvcGh5c2Rldi5jCkBAIC01Mjks NyArNTI5LDcgQEAgcmV0X3QgZG9fcGh5c2Rldl9vcChpbnQgY21kLCBYRU5fR1VFU1RfSEFORExF X1BBUkFNKHZvaWQpIGFyZykKICAgICAgICAgaWYgKCBzZXRfaW9wbC5pb3BsID4gMyApCiAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgcmV0ID0gMDsKLSAgICAgICAgY3Vyci0+YXJjaC5wdl92 Y3B1LmlvcGwgPSBzZXRfaW9wbC5pb3BsOworICAgICAgICBjdXJyLT5hcmNoLnB2X3ZjcHUuaW9w bCA9IE1BU0tfSU5TUihzZXRfaW9wbC5pb3BsLCBYODZfRUZMQUdTX0lPUEwpOwogICAgICAgICBi cmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIveGVuL2Fy Y2gveDg2L3RyYXBzLmMKaW5kZXggODEyNWM1My4uNzg2MWEzYyAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L3RyYXBzLmMKKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKQEAgLTE3NzksNiArMTc3 OSwxNyBAQCBzdGF0aWMgaW50IHJlYWRfZ2F0ZV9kZXNjcmlwdG9yKHVuc2lnbmVkIGludCBnYXRl X3NlbCwKICAgICByZXR1cm4gMTsKIH0KIAorLyogUGVyZm9ybSBJT1BMIGNoZWNrIGJldHdlZW4g dGhlIHZjcHUncyBzaGFkb3dlZCBJT1BMLCBhbmQgdGhlIGFzc3VtZWQgY3BsLiAqLworc3RhdGlj IGJvb2xfdCBpb3BsX29rKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCBjb25zdCBzdHJ1Y3QgY3B1X3Vz ZXJfcmVncyAqcmVncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3BsID0gZ3Vlc3Rfa2VybmVsX21v ZGUodiwgcmVncykgPworICAgICAgICAoVk1fQVNTSVNUKHYtPmRvbWFpbiwgYXJjaGl0ZWN0dXJh bF9pb3BsKSA/IDAgOiAxKSA6IDM7CisKKyAgICBBU1NFUlQoKHYtPmFyY2gucHZfdmNwdS5pb3Bs ICYgflg4Nl9FRkxBR1NfSU9QTCkgPT0gMCk7CisKKyAgICByZXR1cm4gSU9QTChjcGwpIDw9IHYt PmFyY2gucHZfdmNwdS5pb3BsOworfQorCiAvKiBIYXMgdGhlIGd1ZXN0IHJlcXVlc3RlZCBzdWZm aWNpZW50IHBlcm1pc3Npb24gZm9yIHRoaXMgSS9PIGFjY2Vzcz8gKi8KIHN0YXRpYyBpbnQgZ3Vl c3RfaW9fb2theSgKICAgICB1bnNpZ25lZCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IGJ5dGVzLApA QCAtMTc4OCw3ICsxNzk5LDcgQEAgc3RhdGljIGludCBndWVzdF9pb19va2F5KAogICAgIGludCB1 c2VyX21vZGUgPSAhKHYtPmFyY2guZmxhZ3MgJiBURl9rZXJuZWxfbW9kZSk7CiAjZGVmaW5lIFRP R0dMRV9NT0RFKCkgaWYgKCB1c2VyX21vZGUgKSB0b2dnbGVfZ3Vlc3RfbW9kZSh2KQogCi0gICAg aWYgKCB2LT5hcmNoLnB2X3ZjcHUuaW9wbCA+PSAoZ3Vlc3Rfa2VybmVsX21vZGUodiwgcmVncykg PyAxIDogMykgKQorICAgIGlmICggaW9wbF9vayh2LCByZWdzKSApCiAgICAgICAgIHJldHVybiAx OwogCiAgICAgaWYgKCB2LT5hcmNoLnB2X3ZjcHUuaW9ibXBfbGltaXQgPiAocG9ydCArIGJ5dGVz KSApCkBAIC0yMzQ2LDcgKzIzNTcsNyBAQCBzdGF0aWMgaW50IGVtdWxhdGVfcHJpdmlsZWdlZF9v cChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIAogICAgIGNhc2UgMHhmYTogLyogQ0xJICov CiAgICAgY2FzZSAweGZiOiAvKiBTVEkgKi8KLSAgICAgICAgaWYgKCB2LT5hcmNoLnB2X3ZjcHUu aW9wbCA8IChndWVzdF9rZXJuZWxfbW9kZSh2LCByZWdzKSA/IDEgOiAzKSApCisgICAgICAgIGlm ICggIWlvcGxfb2sodiwgcmVncykgKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAv KgogICAgICAgICAgKiBUaGlzIGlzIGp1c3QgdG9vIGRhbmdlcm91cyB0byBhbGxvdywgaW4gbXkg b3Bpbmlvbi4gQ29uc2lkZXIgaWYgdGhlCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0 L2FzbS1vZmZzZXRzLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMKaW5kZXgg NDQ3YzY1MC4uZmEzN2VlMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zm c2V0cy5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYwpAQCAtODYsNiAr ODYsNyBAQCB2b2lkIF9fZHVtbXlfXyh2b2lkKQogICAgIE9GRlNFVChWQ1BVX3RyYXBfY3R4dCwg c3RydWN0IHZjcHUsIGFyY2gucHZfdmNwdS50cmFwX2N0eHQpOwogICAgIE9GRlNFVChWQ1BVX2tl cm5lbF9zcCwgc3RydWN0IHZjcHUsIGFyY2gucHZfdmNwdS5rZXJuZWxfc3ApOwogICAgIE9GRlNF VChWQ1BVX2tlcm5lbF9zcywgc3RydWN0IHZjcHUsIGFyY2gucHZfdmNwdS5rZXJuZWxfc3MpOwor ICAgIE9GRlNFVChWQ1BVX2lvcGwsIHN0cnVjdCB2Y3B1LCBhcmNoLnB2X3ZjcHUuaW9wbCk7CiAg ICAgT0ZGU0VUKFZDUFVfZ3Vlc3RfY29udGV4dF9mbGFncywgc3RydWN0IHZjcHUsIGFyY2gudmdj X2ZsYWdzKTsKICAgICBPRkZTRVQoVkNQVV9ubWlfcGVuZGluZywgc3RydWN0IHZjcHUsIG5taV9w ZW5kaW5nKTsKICAgICBPRkZTRVQoVkNQVV9tY2VfcGVuZGluZywgc3RydWN0IHZjcHUsIG1jZV9w ZW5kaW5nKTsKQEAgLTE2Niw0ICsxNjcsNiBAQCB2b2lkIF9fZHVtbXlfXyh2b2lkKQogICAgIE9G RlNFVChNQl9mbGFncywgbXVsdGlib290X2luZm9fdCwgZmxhZ3MpOwogICAgIE9GRlNFVChNQl9j bWRsaW5lLCBtdWx0aWJvb3RfaW5mb190LCBjbWRsaW5lKTsKICAgICBPRkZTRVQoTUJfbWVtX2xv d2VyLCBtdWx0aWJvb3RfaW5mb190LCBtZW1fbG93ZXIpOworCisgICAgT0ZGU0VUKERPTUFJTl92 bV9hc3Npc3QsIHN0cnVjdCBkb21haW4sIHZtX2Fzc2lzdCk7CiB9CmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5TIGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21w YXQvZW50cnkuUwppbmRleCBmZDI1ZTg0Li4wZmY2ODE4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5TCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0 L2VudHJ5LlMKQEAgLTI2Myw2ICsyNjMsNyBAQCBjb21wYXRfY3JlYXRlX2JvdW5jZV9mcmFtZToK ICAgICAgICAgbW92bCAgVVJFR1NfcnNwKzgoJXJzcCksJWVzaQogLkxmdDQ6ICBtb3YgICBVUkVH U19zcys4KCVyc3ApLCVmcwogMjoKKyAgICAgICAgbW92cSAgVkNQVV9kb21haW4oJXJieCksJXI4 CiAgICAgICAgIHN1YmwgICQzKjQsJWVzaQogICAgICAgICBtb3ZxICBWQ1BVX3ZjcHVfaW5mbygl cmJ4KSwlcmF4CiAgICAgICAgIHB1c2hxIENPTVBBVF9WQ1BVSU5GT191cGNhbGxfbWFzayglcmF4 KQpAQCAtMjc3LDkgKzI3OCwxMyBAQCBjb21wYXRfY3JlYXRlX2JvdW5jZV9mcmFtZToKICAgICAg ICAgdGVzdGIgJWFsLCVhbCAgICAgICAgICAgICAgICAgICAjIEJpdHMgMC03OiBzYXZlZF91cGNh bGxfbWFzawogICAgICAgICBzZXR6ICAlY2ggICAgICAgICAgICAgICAgICAgICAgICMgJWNoID09 ICFzYXZlZF91cGNhbGxfbWFzawogICAgICAgICBtb3ZsICBVUkVHU19lZmxhZ3MrOCglcnNwKSwl ZWF4Ci0gICAgICAgIGFuZGwgICR+WDg2X0VGTEFHU19JRiwlZWF4CisgICAgICAgIGFuZGwgICR+ KFg4Nl9FRkxBR1NfSUZ8WDg2X0VGTEFHU19JT1BMKSwlZWF4CiAgICAgICAgIGFkZGIgICVjaCwl Y2ggICAgICAgICAgICAgICAgICAgIyBCaXQgOSAoRUZMQUdTLklGKQogICAgICAgICBvcmIgICAl Y2gsJWFoICAgICAgICAgICAgICAgICAgICMgRm9sZCBFRkxBR1MuSUYgaW50byAlZWF4CisgICAg ICAgIHhvcmwgICVlY3gsJWVjeCAgICAgICAgICAgICAgICAgIyBpZiAoIFZNX0FTU0lTVCh2LT5k b21haW4sIGFyY2hpdGVjdHVyYWxfaW9wbCkgKQorICAgICAgICB0ZXN0YiAkMSA8PCBWTUFTU1Rf VFlQRV9hcmNoaXRlY3R1cmFsX2lvcGwsRE9NQUlOX3ZtX2Fzc2lzdCglcjgpCisgICAgICAgIGNt b3ZuemwgVkNQVV9pb3BsKCVyYngpLCVlY3ggICAgIyBCaXRzIDEzOjEyIChFRkxBR1MuSU9QTCkK KyAgICAgICAgb3JsICAgJWVjeCwlZWF4ICAgICAgICAgICAgICAgICAjIEZvbGQgRUZMQUdTLklP UEwgaW50byAlZWF4CiAuTGZ0NjogIG1vdmwgICVlYXgsJWZzOjIqNCglcnNpKSAgICAgICAgIyBF RkxBR1MKICAgICAgICAgbW92bCAgVVJFR1NfcmlwKzgoJXJzcCksJWVheAogLkxmdDc6ICBtb3Zs ICAlZWF4LCVmczooJXJzaSkgICAgICAgICAgICMgRUlQCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYveDg2XzY0L2NvbXBhdC90cmFwcy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvdHJh cHMuYwppbmRleCBiYmYxOGU0Li5hNmFmYjI2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2 XzY0L2NvbXBhdC90cmFwcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0L3RyYXBz LmMKQEAgLTk5LDYgKzk5LDEwIEBAIHVuc2lnbmVkIGludCBjb21wYXRfaXJldCh2b2lkKQogICAg ICAgICBkb21haW5fY3Jhc2godi0+ZG9tYWluKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQor CisgICAgaWYgKCBWTV9BU1NJU1Qodi0+ZG9tYWluLCBhcmNoaXRlY3R1cmFsX2lvcGwpICkKKyAg ICAgICAgdi0+YXJjaC5wdl92Y3B1LmlvcGwgPSBlZmxhZ3MgJiBYODZfRUZMQUdTX0lPUEw7CisK ICAgICByZWdzLT5fZWZsYWdzID0gKGVmbGFncyAmIH5YODZfRUZMQUdTX0lPUEwpIHwgWDg2X0VG TEFHU19JRjsKIAogICAgIGlmICggdW5saWtlbHkoZWZsYWdzICYgWDg2X0VGTEFHU19WTSkgKQpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TIGIveGVuL2FyY2gveDg2L3g4 Nl82NC9lbnRyeS5TCmluZGV4IGIwZTcyNTcuLjY4NjZlOGYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfNjQvZW50cnkuUworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMKQEAg LTM0Niw2ICszNDYsNyBAQCBfX1VOTElLRUxZX0VORChjcmVhdGVfYm91bmNlX2ZyYW1lX2JhZF9z cCkKICAgICAgICAgc3VicSAgJDQwLCVyc2kKICAgICAgICAgbW92cSAgVVJFR1Nfc3MrOCglcnNw KSwlcmF4CiAgICAgICAgIEFTTV9TVEFDCisgICAgICAgIG1vdnEgIFZDUFVfZG9tYWluKCVyYngp LCVyZGkKIC5MZnQyOiAgbW92cSAgJXJheCwzMiglcnNpKSAgICAgICAgICAgICAjIFNTCiAgICAg ICAgIG1vdnEgIFVSRUdTX3JzcCs4KCVyc3ApLCVyYXgKIC5MZnQzOiAgbW92cSAgJXJheCwyNCgl cnNpKSAgICAgICAgICAgICAjIFJTUApAQCAtMzYyLDkgKzM2MywxMyBAQCBfX1VOTElLRUxZX0VO RChjcmVhdGVfYm91bmNlX2ZyYW1lX2JhZF9zcCkKICAgICAgICAgdGVzdGIgJDB4RkYsJWFsICAg ICAgICAgICAgICAgICAjIEJpdHMgMC03OiBzYXZlZF91cGNhbGxfbWFzawogICAgICAgICBzZXR6 ICAlY2ggICAgICAgICAgICAgICAgICAgICAgICMgJWNoID09ICFzYXZlZF91cGNhbGxfbWFzawog ICAgICAgICBtb3ZsICBVUkVHU19lZmxhZ3MrOCglcnNwKSwlZWF4Ci0gICAgICAgIGFuZGwgICR+ WDg2X0VGTEFHU19JRiwlZWF4CisgICAgICAgIGFuZGwgICR+KFg4Nl9FRkxBR1NfSUZ8WDg2X0VG TEFHU19JT1BMKSwlZWF4CiAgICAgICAgIGFkZGIgICVjaCwlY2ggICAgICAgICAgICAgICAgICAg IyBCaXQgOSAoRUZMQUdTLklGKQogICAgICAgICBvcmIgICAlY2gsJWFoICAgICAgICAgICAgICAg ICAgICMgRm9sZCBFRkxBR1MuSUYgaW50byAlZWF4CisgICAgICAgIHhvcmwgICVlY3gsJWVjeCAg ICAgICAgICAgICAgICAgIyBpZiAoIFZNX0FTU0lTVCh2LT5kb21haW4sIGFyY2hpdGVjdHVyYWxf aW9wbCkgKQorICAgICAgICB0ZXN0YiAkMSA8PCBWTUFTU1RfVFlQRV9hcmNoaXRlY3R1cmFsX2lv cGwsRE9NQUlOX3ZtX2Fzc2lzdCglcmRpKQorICAgICAgICBjbW92bnpsIFZDUFVfaW9wbCglcmJ4 KSwlZWN4ICAgICMgQml0cyAxMzoxMiAoRUZMQUdTLklPUEwpCisgICAgICAgIG9ybCAgICVlY3gs JWVheCAgICAgICAgICAgICAgICAgIyBGb2xkIEVGTEFHUy5JT1BMIGludG8gJWVheAogLkxmdDU6 ICBtb3ZxICAlcmF4LDE2KCVyc2kpICAgICAgICAgICAgICMgUkZMQUdTCiAgICAgICAgIG1vdnEg IFVSRUdTX3JpcCs4KCVyc3ApLCVyYXgKIC5MZnQ2OiAgbW92cSAgJXJheCwoJXJzaSkgICAgICAg ICAgICAgICAjIFJJUApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC90cmFwcy5jIGIv eGVuL2FyY2gveDg2L3g4Nl82NC90cmFwcy5jCmluZGV4IDI2ZTJkZDcuLjE5ZjU4YTEgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvdHJhcHMuYworKysgYi94ZW4vYXJjaC94ODYveDg2 XzY0L3RyYXBzLmMKQEAgLTMxMCw2ICszMTAsOSBAQCB1bnNpZ25lZCBsb25nIGRvX2lyZXQodm9p ZCkKICAgICAgICAgdG9nZ2xlX2d1ZXN0X21vZGUodik7CiAgICAgfQogCisgICAgaWYgKCBWTV9B U1NJU1Qodi0+ZG9tYWluLCBhcmNoaXRlY3R1cmFsX2lvcGwpICkKKyAgICAgICAgdi0+YXJjaC5w dl92Y3B1LmlvcGwgPSBpcmV0X3NhdmVkLnJmbGFncyAmIFg4Nl9FRkxBR1NfSU9QTDsKKwogICAg IHJlZ3MtPnJpcCAgICA9IGlyZXRfc2F2ZWQucmlwOwogICAgIHJlZ3MtPmNzICAgICA9IGlyZXRf c2F2ZWQuY3MgfCAzOyAvKiBmb3JjZSBndWVzdCBwcml2aWxlZ2UgKi8KICAgICByZWdzLT5yZmxh Z3MgPSAoKGlyZXRfc2F2ZWQucmZsYWdzICYgfihYODZfRUZMQUdTX0lPUEx8WDg2X0VGTEFHU19W TSkpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9jb25maWcuaAppbmRleCBmNmY1YTEwLi5jMTAxMjlkIDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY29u ZmlnLmgKQEAgLTMzMSw2ICszMzEsNyBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyB4ZW5fcGh5c19z dGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMVVMIDw8IFZNQVNTVF9U WVBFXzRnYl9zZWdtZW50c19ub3RpZnkpIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgxVUwgPDwgVk1BU1NUX1RZUEVfd3JpdGFibGVfcGFnZXRhYmxlcykgfCBcCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFVTCA8PCBWTUFTU1RfVFlQRV9wYWVfZXh0 ZW5kZWRfY3IzKSAgICB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMVVM IDw8IFZNQVNTVF9UWVBFX2FyY2hpdGVjdHVyYWxfaW9wbCkgIHwgXAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgxVUwgPDwgVk1BU1NUX1RZUEVfbTJwX3N0cmljdCkpCiAjZGVm aW5lIFZNX0FTU0lTVF9WQUxJRCAgICAgICAgICBOQVRJVkVfVk1fQVNTSVNUX1ZBTElECiAjZGVm aW5lIENPTVBBVF9WTV9BU1NJU1RfVkFMSUQgICAoTkFUSVZFX1ZNX0FTU0lTVF9WQUxJRCAmIFwK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmggYi94ZW4vaW5jbHVkZS9h c20teDg2L2RvbWFpbi5oCmluZGV4IGRlNjBkZWYuLjVmMmYyN2YgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL2FzbS14ODYvZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4u aApAQCAtNDcwLDcgKzQ3MCw5IEBAIHN0cnVjdCBwdl92Y3B1CiAgICAgLyogSS9PLXBvcnQgYWNj ZXNzIGJpdG1hcC4gKi8KICAgICBYRU5fR1VFU1RfSEFORExFKHVpbnQ4KSBpb2JtcDsgLyogR3Vl c3Qga2VybmVsIHZhZGRyIG9mIHRoZSBiaXRtYXAuICovCiAgICAgdW5zaWduZWQgaW50IGlvYm1w X2xpbWl0OyAvKiBOdW1iZXIgb2YgcG9ydHMgcmVwcmVzZW50ZWQgaW4gdGhlIGJpdG1hcC4gKi8K LSAgICB1bnNpZ25lZCBpbnQgaW9wbDsgICAgICAgIC8qIEN1cnJlbnQgSU9QTCBmb3IgdGhpcyBW Q1BVLiAqLworI2RlZmluZSBJT1BMKHZhbCkgTUFTS19JTlNSKHZhbCwgWDg2X0VGTEFHU19JT1BM KQorICAgIHVuc2lnbmVkIGludCBpb3BsOyAgICAgICAgLyogQ3VycmVudCBJT1BMIGZvciB0aGlz IFZDUFUsIHNoaWZ0ZWQgbGVmdCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICog MTIgdG8gbWF0Y2ggdGhlIGVmbGFncyByZWdpc3Rlci4gKi8KIAogICAgIC8qIEN1cnJlbnQgTERU IGRldGFpbHMuICovCiAgICAgdW5zaWduZWQgbG9uZyBzaGFkb3dfbGR0X21hcGNudDsKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4u aAppbmRleCA0MzVkNzg5Li45N2E1YWU1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMv eGVuLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oCkBAIC01MDMsNiArNTAzLDE0IEBA IERFRklORV9YRU5fR1VFU1RfSEFORExFKG1tdWV4dF9vcF90KTsKICNkZWZpbmUgVk1BU1NUX1RZ UEVfcGFlX2V4dGVuZGVkX2NyMyAgICAgMwogCiAvKgorICogeDg2IGd1ZXN0czogU2FuZSBiZWhh dmlvdXIgZm9yIHZpcnR1YWwgaW9wbAorICogIC0gdmlydHVhbCBpb3BsIHVwZGF0ZWQgZnJvbSBk b19pcmV0KCkgaHlwZXJjYWxscy4KKyAqICAtIHZpcnR1YWwgaW9wbCByZXBvcnRlZCBpbiBib3Vu Y2UgZnJhbWVzLgorICogIC0gZ3Vlc3Qga2VybmVscyBhc3N1bWVkIHRvIGJlIGxldmVsIDAgZm9y IHRoZSBwdXJwb3NlIG9mIGlvcGwgY2hlY2tzLgorICovCisjZGVmaW5lIFZNQVNTVF9UWVBFX2Fy Y2hpdGVjdHVyYWxfaW9wbCAgIDQKKworLyoKICAqIHg4Ni82NCBndWVzdHM6IHN0cmljdGx5IGhp ZGUgTTJQIGZyb20gdXNlciBtb2RlLgogICogVGhpcyBhbGxvd3MgdGhlIGd1ZXN0IHRvIGNvbnRy b2wgcmVzcGVjdGl2ZSBoeXBlcnZpc29yIGJlaGF2aW9yOgogICogLSB3aGVuIG5vdCBzZXQsIEw0 IHRhYmxlcyBnZXQgY3JlYXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHNsb3QgYmxhbmssCi0tIAoy LjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==