From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH for-4.7 v3 2/2] xen/x86: Introduce a new VMASSIST for architectural behaviour of iopl Date: Fri, 8 Apr 2016 10:30:45 +0100 Message-ID: <1460107845-17989-1-git-send-email-andrew.cooper3@citrix.com> References: <5706E55902000078000E602F@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5706E55902000078000E602F@prv-mh.provo.novell.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 List-Id: xen-devel@lists.xenproject.org VGhlIGV4aXN0aW5nIHZJT1BMIGludGVyZmFjZSBpcyBoYXJkIHRvIHVzZSwgYW5kIG5lZWQgbm90 IGJlLgoKSW50cm9kdWNlIGEgVk1BU1NJU1Qgd2l0aCB3aGljaCBhIGd1ZXN0IGNhbiBvcHQtaW4g dG8gaGF2aW5nIHZJT1BMIGJlaGF2aW91cgpjb25zaXN0ZW5seSB3aXRoIG5hdGl2ZSBoYXJkd2Fy ZS4KClNwZWNpZmljYWxseToKIC0gdmlydHVhbCBpb3BsIHVwZGF0ZWQgZnJvbSBkb19pcmV0KCkg aHlwZXJjYWxscy4KIC0gdmlydHVhbCBpb3BsIHJlcG9ydGVkIGluIGJvdW5jZSBmcmFtZXMuCiAt IGd1ZXN0IGtlcm5lbHMgYXNzdW1lZCB0byBiZSBsZXZlbCAwIGZvciB0aGUgcHVycG9zZSBvZiBp b3BsIGNoZWNrcy4KCnYtPmFyY2gucHZfdmNwdS5pb3BsIGlzIGFsdGVyZWQgdG8gc3RvcmUgSU9Q TCBzaGlmdGVkIGFzIGl0IHdvdWxkIGV4aXN0CmVmbGFncywgZm9yIHRoZSBiZW5lZml0IG9mIHRo ZSBhc3NlbWJseSBjb2RlLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv b3BlcjNAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNl LmNvbT4KLS0tCnYyOgogKiBTaGlmdCB2Y3B1LmlvcGwgdG8gbWF0Y2ggZWZsYWdzLgogKiBGYWN0 b3Igb3V0IGlvcGxfb2soKS4KICogVXNlIENNT1ZjYyBpbiBhc3NlbWJseSBjb2RlLgp2MzoKICog RG9uJ3QgY2xlYXIgQUMgZm9yIDMyYml0IGZhaWxzYWZlIGNhbGxiYWNrLgoKQWxvbmcgd2l0aCB0 aGlzLCBJIGhhdmUgZnVuY3Rpb25hbCB0ZXN0cyBmb3IgYm90aCB2SU9QTCBpbnRlcmZhY2VzIGlu IFBWCmd1ZXN0cy4KLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgICAgICAgIHwgMTUg KysrKysrKysrKy0tLS0tCiB4ZW4vYXJjaC94ODYvcGh5c2Rldi5jICAgICAgICAgICAgIHwgIDIg Ky0KIHhlbi9hcmNoL3g4Ni90cmFwcy5jICAgICAgICAgICAgICAgfCAxNSArKysrKysrKysrKysr LS0KIHhlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYyAgfCAgMyArKysKIHhlbi9hcmNo L3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMgfCAgNyArKysrKystCiB4ZW4vYXJjaC94ODYveDg2 XzY0L2NvbXBhdC90cmFwcy5jIHwgIDQgKysrKwogeGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5T ICAgICAgICB8ICA3ICsrKysrKy0KIHhlbi9hcmNoL3g4Ni94ODZfNjQvdHJhcHMuYyAgICAgICAg fCAgMyArKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvY29uZmlnLmggICAgICAgfCAgMSArCiB4ZW4v aW5jbHVkZS9hc20teDg2L2RvbWFpbi5oICAgICAgIHwgIDQgKysrLQogeGVuL2luY2x1ZGUvcHVi bGljL3hlbi5oICAgICAgICAgICB8ICA4ICsrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA1OCBp bnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv ZG9tYWluLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKaW5kZXggYTRmNmRiMi4uOWU0MzZlZiAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21h aW4uYwpAQCAtOTk0LDcgKzk5NCw3IEBAIGludCBhcmNoX3NldF9pbmZvX2d1ZXN0KAogICAgIGlu aXRfaW50ODBfZGlyZWN0X3RyYXAodik7CiAKICAgICAvKiBJT1BMIHByaXZpbGVnZXMgYXJlIHZp cnR1YWxpc2VkLiAqLwotICAgIHYtPmFyY2gucHZfdmNwdS5pb3BsID0gKHYtPmFyY2gudXNlcl9y ZWdzLmVmbGFncyA+PiAxMikgJiAzOworICAgIHYtPmFyY2gucHZfdmNwdS5pb3BsID0gdi0+YXJj aC51c2VyX3JlZ3MuZWZsYWdzICYgWDg2X0VGTEFHU19JT1BMOwogICAgIHYtPmFyY2gudXNlcl9y ZWdzLmVmbGFncyAmPSB+WDg2X0VGTEFHU19JT1BMOwogCiAgICAgLyogRW5zdXJlIHJlYWwgaGFy ZHdhcmUgaW50ZXJydXB0cyBhcmUgZW5hYmxlZC4gKi8KQEAgLTE3MzUsOCArMTczNSwxMCBAQCBz dGF0aWMgdm9pZCBsb2FkX3NlZ21lbnRzKHN0cnVjdCB2Y3B1ICpuKQogICAgICAgICAgICAgY3Nf YW5kX21hc2sgPSAodW5zaWduZWQgc2hvcnQpcmVncy0+Y3MgfAogICAgICAgICAgICAgICAgICgo dW5zaWduZWQgaW50KXZjcHVfaW5mbyhuLCBldnRjaG5fdXBjYWxsX21hc2spIDw8IDE2KTsKICAg ICAgICAgICAgIC8qIEZvbGQgdXBjYWxsIG1hc2sgaW50byBSRkxBR1MuSUYuICovCi0gICAgICAg ICAgICBlZmxhZ3MgID0gcmVncy0+X2VmbGFncyAmIH5YODZfRUZMQUdTX0lGOworICAgICAgICAg ICAgZWZsYWdzICA9IHJlZ3MtPl9lZmxhZ3MgJiB+KFg4Nl9FRkxBR1NfSUZ8WDg2X0VGTEFHU19J T1BMKTsKICAgICAgICAgICAgIGVmbGFncyB8PSAhdmNwdV9pbmZvKG4sIGV2dGNobl91cGNhbGxf bWFzaykgPDwgOTsKKyAgICAgICAgICAgIGlmICggVk1fQVNTSVNUKG4tPmRvbWFpbiwgYXJjaGl0 ZWN0dXJhbF9pb3BsKSApCisgICAgICAgICAgICAgICAgZWZsYWdzIHw9IG4tPmFyY2gucHZfdmNw dS5pb3BsOwogCiAgICAgICAgICAgICBpZiAoICFyaW5nXzEocmVncykgKQogICAgICAgICAgICAg ewpAQCAtMTc2Myw3ICsxNzY1LDggQEAgc3RhdGljIHZvaWQgbG9hZF9zZWdtZW50cyhzdHJ1Y3Qg dmNwdSAqbikKICAgICAgICAgICAgICAgICB2Y3B1X2luZm8obiwgZXZ0Y2huX3VwY2FsbF9tYXNr KSA9IDE7CiAKICAgICAgICAgICAgIHJlZ3MtPmVudHJ5X3ZlY3RvciB8PSBUUkFQX3N5c2NhbGw7 Ci0gICAgICAgICAgICByZWdzLT5fZWZsYWdzICAgICAgJj0gMHhGRkZDQkVGRlVMOworICAgICAg ICAgICAgcmVncy0+X2VmbGFncyAgICAgICY9IH4oWDg2X0VGTEFHU19WTXxYODZfRUZMQUdTX1JG fFg4Nl9FRkxBR1NfTlR8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYODZf RUZMQUdTX0lPUEx8WDg2X0VGTEFHU19URik7CiAgICAgICAgICAgICByZWdzLT5zcyAgICAgICAg ICAgID0gRkxBVF9DT01QQVRfS0VSTkVMX1NTOwogICAgICAgICAgICAgcmVncy0+X2VzcCAgICAg ICAgICA9ICh1bnNpZ25lZCBsb25nKShlc3AtNyk7CiAgICAgICAgICAgICByZWdzLT5jcyAgICAg ICAgICAgID0gRkxBVF9DT01QQVRfS0VSTkVMX0NTOwpAQCAtMTc4MSw4ICsxNzg0LDEwIEBAIHN0 YXRpYyB2b2lkIGxvYWRfc2VnbWVudHMoc3RydWN0IHZjcHUgKm4pCiAgICAgICAgICAgICAoKHVu c2lnbmVkIGxvbmcpdmNwdV9pbmZvKG4sIGV2dGNobl91cGNhbGxfbWFzaykgPDwgMzIpOwogCiAg ICAgICAgIC8qIEZvbGQgdXBjYWxsIG1hc2sgaW50byBSRkxBR1MuSUYuICovCi0gICAgICAgIHJm bGFncyAgPSByZWdzLT5yZmxhZ3MgJiB+WDg2X0VGTEFHU19JRjsKKyAgICAgICAgcmZsYWdzICA9 IHJlZ3MtPnJmbGFncyAmIH4oWDg2X0VGTEFHU19JRnxYODZfRUZMQUdTX0lPUEwpOwogICAgICAg ICByZmxhZ3MgfD0gIXZjcHVfaW5mbyhuLCBldnRjaG5fdXBjYWxsX21hc2spIDw8IDk7CisgICAg ICAgIGlmICggVk1fQVNTSVNUKG4tPmRvbWFpbiwgYXJjaGl0ZWN0dXJhbF9pb3BsKSApCisgICAg ICAgICAgICByZmxhZ3MgfD0gbi0+YXJjaC5wdl92Y3B1LmlvcGw7CiAKICAgICAgICAgaWYgKCBw dXRfdXNlcihyZWdzLT5zcywgICAgICAgICAgICByc3AtIDEpIHwKICAgICAgICAgICAgICBwdXRf dXNlcihyZWdzLT5yc3AsICAgICAgICAgICByc3AtIDIpIHwKQEAgLTE4MDYsNyArMTgxMSw3IEBA IHN0YXRpYyB2b2lkIGxvYWRfc2VnbWVudHMoc3RydWN0IHZjcHUgKm4pCiAKICAgICAgICAgcmVn cy0+ZW50cnlfdmVjdG9yIHw9IFRSQVBfc3lzY2FsbDsKICAgICAgICAgcmVncy0+cmZsYWdzICAg ICAgICY9IH4oWDg2X0VGTEFHU19BQ3xYODZfRUZMQUdTX1ZNfFg4Nl9FRkxBR1NfUkZ8Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg4Nl9FRkxBR1NfTlR8WDg2X0VGTEFHU19URik7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFg4Nl9FRkxBR1NfTlR8WDg2X0VGTEFH U19JT1BMfFg4Nl9FRkxBR1NfVEYpOwogICAgICAgICByZWdzLT5zcyAgICAgICAgICAgID0gRkxB VF9LRVJORUxfU1M7CiAgICAgICAgIHJlZ3MtPnJzcCAgICAgICAgICAgPSAodW5zaWduZWQgbG9u ZykocnNwLTExKTsKICAgICAgICAgcmVncy0+Y3MgICAgICAgICAgICA9IEZMQVRfS0VSTkVMX0NT OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3BoeXNkZXYuYyBiL3hlbi9hcmNoL3g4Ni9waHlz ZGV2LmMKaW5kZXggMWNiOWI1OC4uNWE0OTc5NiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bo eXNkZXYuYworKysgYi94ZW4vYXJjaC94ODYvcGh5c2Rldi5jCkBAIC01MjksNyArNTI5LDcgQEAg cmV0X3QgZG9fcGh5c2Rldl9vcChpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQp IGFyZykKICAgICAgICAgaWYgKCBzZXRfaW9wbC5pb3BsID4gMyApCiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgcmV0ID0gMDsKLSAgICAgICAgY3Vyci0+YXJjaC5wdl92Y3B1LmlvcGwgPSBz ZXRfaW9wbC5pb3BsOworICAgICAgICBjdXJyLT5hcmNoLnB2X3ZjcHUuaW9wbCA9IE1BU0tfSU5T UihzZXRfaW9wbC5pb3BsLCBYODZfRUZMQUdTX0lPUEwpOwogICAgICAgICBicmVhazsKICAgICB9 CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIveGVuL2FyY2gveDg2L3RyYXBz LmMKaW5kZXggODEyNWM1My4uNzg2MWEzYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3RyYXBz LmMKKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKQEAgLTE3NzksNiArMTc3OSwxNyBAQCBzdGF0 aWMgaW50IHJlYWRfZ2F0ZV9kZXNjcmlwdG9yKHVuc2lnbmVkIGludCBnYXRlX3NlbCwKICAgICBy ZXR1cm4gMTsKIH0KIAorLyogUGVyZm9ybSBJT1BMIGNoZWNrIGJldHdlZW4gdGhlIHZjcHUncyBz aGFkb3dlZCBJT1BMLCBhbmQgdGhlIGFzc3VtZWQgY3BsLiAqLworc3RhdGljIGJvb2xfdCBpb3Bs X29rKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCBjb25zdCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn cykKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3BsID0gZ3Vlc3Rfa2VybmVsX21vZGUodiwgcmVncykg PworICAgICAgICAoVk1fQVNTSVNUKHYtPmRvbWFpbiwgYXJjaGl0ZWN0dXJhbF9pb3BsKSA/IDAg OiAxKSA6IDM7CisKKyAgICBBU1NFUlQoKHYtPmFyY2gucHZfdmNwdS5pb3BsICYgflg4Nl9FRkxB R1NfSU9QTCkgPT0gMCk7CisKKyAgICByZXR1cm4gSU9QTChjcGwpIDw9IHYtPmFyY2gucHZfdmNw dS5pb3BsOworfQorCiAvKiBIYXMgdGhlIGd1ZXN0IHJlcXVlc3RlZCBzdWZmaWNpZW50IHBlcm1p c3Npb24gZm9yIHRoaXMgSS9PIGFjY2Vzcz8gKi8KIHN0YXRpYyBpbnQgZ3Vlc3RfaW9fb2theSgK ICAgICB1bnNpZ25lZCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IGJ5dGVzLApAQCAtMTc4OCw3ICsx Nzk5LDcgQEAgc3RhdGljIGludCBndWVzdF9pb19va2F5KAogICAgIGludCB1c2VyX21vZGUgPSAh KHYtPmFyY2guZmxhZ3MgJiBURl9rZXJuZWxfbW9kZSk7CiAjZGVmaW5lIFRPR0dMRV9NT0RFKCkg aWYgKCB1c2VyX21vZGUgKSB0b2dnbGVfZ3Vlc3RfbW9kZSh2KQogCi0gICAgaWYgKCB2LT5hcmNo LnB2X3ZjcHUuaW9wbCA+PSAoZ3Vlc3Rfa2VybmVsX21vZGUodiwgcmVncykgPyAxIDogMykgKQor ICAgIGlmICggaW9wbF9vayh2LCByZWdzKSApCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgaWYg KCB2LT5hcmNoLnB2X3ZjcHUuaW9ibXBfbGltaXQgPiAocG9ydCArIGJ5dGVzKSApCkBAIC0yMzQ2 LDcgKzIzNTcsNyBAQCBzdGF0aWMgaW50IGVtdWxhdGVfcHJpdmlsZWdlZF9vcChzdHJ1Y3QgY3B1 X3VzZXJfcmVncyAqcmVncykKIAogICAgIGNhc2UgMHhmYTogLyogQ0xJICovCiAgICAgY2FzZSAw eGZiOiAvKiBTVEkgKi8KLSAgICAgICAgaWYgKCB2LT5hcmNoLnB2X3ZjcHUuaW9wbCA8IChndWVz dF9rZXJuZWxfbW9kZSh2LCByZWdzKSA/IDEgOiAzKSApCisgICAgICAgIGlmICggIWlvcGxfb2so diwgcmVncykgKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAvKgogICAgICAgICAg KiBUaGlzIGlzIGp1c3QgdG9vIGRhbmdlcm91cyB0byBhbGxvdywgaW4gbXkgb3Bpbmlvbi4gQ29u c2lkZXIgaWYgdGhlCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRz LmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMKaW5kZXggNDQ3YzY1MC4uZmEz N2VlMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jCisrKyBi L3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYwpAQCAtODYsNiArODYsNyBAQCB2b2lk IF9fZHVtbXlfXyh2b2lkKQogICAgIE9GRlNFVChWQ1BVX3RyYXBfY3R4dCwgc3RydWN0IHZjcHUs IGFyY2gucHZfdmNwdS50cmFwX2N0eHQpOwogICAgIE9GRlNFVChWQ1BVX2tlcm5lbF9zcCwgc3Ry dWN0IHZjcHUsIGFyY2gucHZfdmNwdS5rZXJuZWxfc3ApOwogICAgIE9GRlNFVChWQ1BVX2tlcm5l bF9zcywgc3RydWN0IHZjcHUsIGFyY2gucHZfdmNwdS5rZXJuZWxfc3MpOworICAgIE9GRlNFVChW Q1BVX2lvcGwsIHN0cnVjdCB2Y3B1LCBhcmNoLnB2X3ZjcHUuaW9wbCk7CiAgICAgT0ZGU0VUKFZD UFVfZ3Vlc3RfY29udGV4dF9mbGFncywgc3RydWN0IHZjcHUsIGFyY2gudmdjX2ZsYWdzKTsKICAg ICBPRkZTRVQoVkNQVV9ubWlfcGVuZGluZywgc3RydWN0IHZjcHUsIG5taV9wZW5kaW5nKTsKICAg ICBPRkZTRVQoVkNQVV9tY2VfcGVuZGluZywgc3RydWN0IHZjcHUsIG1jZV9wZW5kaW5nKTsKQEAg LTE2Niw0ICsxNjcsNiBAQCB2b2lkIF9fZHVtbXlfXyh2b2lkKQogICAgIE9GRlNFVChNQl9mbGFn cywgbXVsdGlib290X2luZm9fdCwgZmxhZ3MpOwogICAgIE9GRlNFVChNQl9jbWRsaW5lLCBtdWx0 aWJvb3RfaW5mb190LCBjbWRsaW5lKTsKICAgICBPRkZTRVQoTUJfbWVtX2xvd2VyLCBtdWx0aWJv b3RfaW5mb190LCBtZW1fbG93ZXIpOworCisgICAgT0ZGU0VUKERPTUFJTl92bV9hc3Npc3QsIHN0 cnVjdCBkb21haW4sIHZtX2Fzc2lzdCk7CiB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2 XzY0L2NvbXBhdC9lbnRyeS5TIGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvZW50cnkuUwpp bmRleCBmZDI1ZTg0Li4wZmY2ODE4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L2Nv bXBhdC9lbnRyeS5TCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5LlMKQEAg LTI2Myw2ICsyNjMsNyBAQCBjb21wYXRfY3JlYXRlX2JvdW5jZV9mcmFtZToKICAgICAgICAgbW92 bCAgVVJFR1NfcnNwKzgoJXJzcCksJWVzaQogLkxmdDQ6ICBtb3YgICBVUkVHU19zcys4KCVyc3Ap LCVmcwogMjoKKyAgICAgICAgbW92cSAgVkNQVV9kb21haW4oJXJieCksJXI4CiAgICAgICAgIHN1 YmwgICQzKjQsJWVzaQogICAgICAgICBtb3ZxICBWQ1BVX3ZjcHVfaW5mbyglcmJ4KSwlcmF4CiAg ICAgICAgIHB1c2hxIENPTVBBVF9WQ1BVSU5GT191cGNhbGxfbWFzayglcmF4KQpAQCAtMjc3LDkg KzI3OCwxMyBAQCBjb21wYXRfY3JlYXRlX2JvdW5jZV9mcmFtZToKICAgICAgICAgdGVzdGIgJWFs LCVhbCAgICAgICAgICAgICAgICAgICAjIEJpdHMgMC03OiBzYXZlZF91cGNhbGxfbWFzawogICAg ICAgICBzZXR6ICAlY2ggICAgICAgICAgICAgICAgICAgICAgICMgJWNoID09ICFzYXZlZF91cGNh bGxfbWFzawogICAgICAgICBtb3ZsICBVUkVHU19lZmxhZ3MrOCglcnNwKSwlZWF4Ci0gICAgICAg IGFuZGwgICR+WDg2X0VGTEFHU19JRiwlZWF4CisgICAgICAgIGFuZGwgICR+KFg4Nl9FRkxBR1Nf SUZ8WDg2X0VGTEFHU19JT1BMKSwlZWF4CiAgICAgICAgIGFkZGIgICVjaCwlY2ggICAgICAgICAg ICAgICAgICAgIyBCaXQgOSAoRUZMQUdTLklGKQogICAgICAgICBvcmIgICAlY2gsJWFoICAgICAg ICAgICAgICAgICAgICMgRm9sZCBFRkxBR1MuSUYgaW50byAlZWF4CisgICAgICAgIHhvcmwgICVl Y3gsJWVjeCAgICAgICAgICAgICAgICAgIyBpZiAoIFZNX0FTU0lTVCh2LT5kb21haW4sIGFyY2hp dGVjdHVyYWxfaW9wbCkgKQorICAgICAgICB0ZXN0YiAkMSA8PCBWTUFTU1RfVFlQRV9hcmNoaXRl Y3R1cmFsX2lvcGwsRE9NQUlOX3ZtX2Fzc2lzdCglcjgpCisgICAgICAgIGNtb3ZuemwgVkNQVV9p b3BsKCVyYngpLCVlY3ggICAgIyBCaXRzIDEzOjEyIChFRkxBR1MuSU9QTCkKKyAgICAgICAgb3Js ICAgJWVjeCwlZWF4ICAgICAgICAgICAgICAgICAjIEZvbGQgRUZMQUdTLklPUEwgaW50byAlZWF4 CiAuTGZ0NjogIG1vdmwgICVlYXgsJWZzOjIqNCglcnNpKSAgICAgICAgIyBFRkxBR1MKICAgICAg ICAgbW92bCAgVVJFR1NfcmlwKzgoJXJzcCksJWVheAogLkxmdDc6ICBtb3ZsICAlZWF4LCVmczoo JXJzaSkgICAgICAgICAgICMgRUlQCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2Nv bXBhdC90cmFwcy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvdHJhcHMuYwppbmRleCBi YmYxOGU0Li5hNmFmYjI2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC90 cmFwcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0L3RyYXBzLmMKQEAgLTk5LDYg Kzk5LDEwIEBAIHVuc2lnbmVkIGludCBjb21wYXRfaXJldCh2b2lkKQogICAgICAgICBkb21haW5f Y3Jhc2godi0+ZG9tYWluKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgaWYgKCBW TV9BU1NJU1Qodi0+ZG9tYWluLCBhcmNoaXRlY3R1cmFsX2lvcGwpICkKKyAgICAgICAgdi0+YXJj aC5wdl92Y3B1LmlvcGwgPSBlZmxhZ3MgJiBYODZfRUZMQUdTX0lPUEw7CisKICAgICByZWdzLT5f ZWZsYWdzID0gKGVmbGFncyAmIH5YODZfRUZMQUdTX0lPUEwpIHwgWDg2X0VGTEFHU19JRjsKIAog ICAgIGlmICggdW5saWtlbHkoZWZsYWdzICYgWDg2X0VGTEFHU19WTSkgKQpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TIGIveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5T CmluZGV4IGIwZTcyNTcuLjY4NjZlOGYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQv ZW50cnkuUworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMKQEAgLTM0Niw2ICszNDYs NyBAQCBfX1VOTElLRUxZX0VORChjcmVhdGVfYm91bmNlX2ZyYW1lX2JhZF9zcCkKICAgICAgICAg c3VicSAgJDQwLCVyc2kKICAgICAgICAgbW92cSAgVVJFR1Nfc3MrOCglcnNwKSwlcmF4CiAgICAg ICAgIEFTTV9TVEFDCisgICAgICAgIG1vdnEgIFZDUFVfZG9tYWluKCVyYngpLCVyZGkKIC5MZnQy OiAgbW92cSAgJXJheCwzMiglcnNpKSAgICAgICAgICAgICAjIFNTCiAgICAgICAgIG1vdnEgIFVS RUdTX3JzcCs4KCVyc3ApLCVyYXgKIC5MZnQzOiAgbW92cSAgJXJheCwyNCglcnNpKSAgICAgICAg ICAgICAjIFJTUApAQCAtMzYyLDkgKzM2MywxMyBAQCBfX1VOTElLRUxZX0VORChjcmVhdGVfYm91 bmNlX2ZyYW1lX2JhZF9zcCkKICAgICAgICAgdGVzdGIgJDB4RkYsJWFsICAgICAgICAgICAgICAg ICAjIEJpdHMgMC03OiBzYXZlZF91cGNhbGxfbWFzawogICAgICAgICBzZXR6ICAlY2ggICAgICAg ICAgICAgICAgICAgICAgICMgJWNoID09ICFzYXZlZF91cGNhbGxfbWFzawogICAgICAgICBtb3Zs ICBVUkVHU19lZmxhZ3MrOCglcnNwKSwlZWF4Ci0gICAgICAgIGFuZGwgICR+WDg2X0VGTEFHU19J RiwlZWF4CisgICAgICAgIGFuZGwgICR+KFg4Nl9FRkxBR1NfSUZ8WDg2X0VGTEFHU19JT1BMKSwl ZWF4CiAgICAgICAgIGFkZGIgICVjaCwlY2ggICAgICAgICAgICAgICAgICAgIyBCaXQgOSAoRUZM QUdTLklGKQogICAgICAgICBvcmIgICAlY2gsJWFoICAgICAgICAgICAgICAgICAgICMgRm9sZCBF RkxBR1MuSUYgaW50byAlZWF4CisgICAgICAgIHhvcmwgICVlY3gsJWVjeCAgICAgICAgICAgICAg ICAgIyBpZiAoIFZNX0FTU0lTVCh2LT5kb21haW4sIGFyY2hpdGVjdHVyYWxfaW9wbCkgKQorICAg ICAgICB0ZXN0YiAkMSA8PCBWTUFTU1RfVFlQRV9hcmNoaXRlY3R1cmFsX2lvcGwsRE9NQUlOX3Zt X2Fzc2lzdCglcmRpKQorICAgICAgICBjbW92bnpsIFZDUFVfaW9wbCglcmJ4KSwlZWN4ICAgICMg Qml0cyAxMzoxMiAoRUZMQUdTLklPUEwpCisgICAgICAgIG9ybCAgICVlY3gsJWVheCAgICAgICAg ICAgICAgICAgIyBGb2xkIEVGTEFHUy5JT1BMIGludG8gJWVheAogLkxmdDU6ICBtb3ZxICAlcmF4 LDE2KCVyc2kpICAgICAgICAgICAgICMgUkZMQUdTCiAgICAgICAgIG1vdnEgIFVSRUdTX3JpcCs4 KCVyc3ApLCVyYXgKIC5MZnQ2OiAgbW92cSAgJXJheCwoJXJzaSkgICAgICAgICAgICAgICAjIFJJ UApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC90cmFwcy5jIGIveGVuL2FyY2gveDg2 L3g4Nl82NC90cmFwcy5jCmluZGV4IDI2ZTJkZDcuLjE5ZjU4YTEgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni94ODZfNjQvdHJhcHMuYworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMK QEAgLTMxMCw2ICszMTAsOSBAQCB1bnNpZ25lZCBsb25nIGRvX2lyZXQodm9pZCkKICAgICAgICAg dG9nZ2xlX2d1ZXN0X21vZGUodik7CiAgICAgfQogCisgICAgaWYgKCBWTV9BU1NJU1Qodi0+ZG9t YWluLCBhcmNoaXRlY3R1cmFsX2lvcGwpICkKKyAgICAgICAgdi0+YXJjaC5wdl92Y3B1LmlvcGwg PSBpcmV0X3NhdmVkLnJmbGFncyAmIFg4Nl9FRkxBR1NfSU9QTDsKKwogICAgIHJlZ3MtPnJpcCAg ICA9IGlyZXRfc2F2ZWQucmlwOwogICAgIHJlZ3MtPmNzICAgICA9IGlyZXRfc2F2ZWQuY3MgfCAz OyAvKiBmb3JjZSBndWVzdCBwcml2aWxlZ2UgKi8KICAgICByZWdzLT5yZmxhZ3MgPSAoKGlyZXRf c2F2ZWQucmZsYWdzICYgfihYODZfRUZMQUdTX0lPUEx8WDg2X0VGTEFHU19WTSkpCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9j b25maWcuaAppbmRleCBmNmY1YTEwLi5jMTAxMjlkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9h c20teDg2L2NvbmZpZy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY29uZmlnLmgKQEAgLTMz MSw2ICszMzEsNyBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyB4ZW5fcGh5c19zdGFydDsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMVVMIDw8IFZNQVNTVF9UWVBFXzRnYl9zZWdt ZW50c19ub3RpZnkpIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxVUwg PDwgVk1BU1NUX1RZUEVfd3JpdGFibGVfcGFnZXRhYmxlcykgfCBcCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKDFVTCA8PCBWTUFTU1RfVFlQRV9wYWVfZXh0ZW5kZWRfY3IzKSAg ICB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMVVMIDw8IFZNQVNTVF9U WVBFX2FyY2hpdGVjdHVyYWxfaW9wbCkgIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgxVUwgPDwgVk1BU1NUX1RZUEVfbTJwX3N0cmljdCkpCiAjZGVmaW5lIFZNX0FTU0lT VF9WQUxJRCAgICAgICAgICBOQVRJVkVfVk1fQVNTSVNUX1ZBTElECiAjZGVmaW5lIENPTVBBVF9W TV9BU1NJU1RfVkFMSUQgICAoTkFUSVZFX1ZNX0FTU0lTVF9WQUxJRCAmIFwKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFp bi5oCmluZGV4IGRlNjBkZWYuLjVmMmYyN2YgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaApAQCAtNDcwLDcg KzQ3MCw5IEBAIHN0cnVjdCBwdl92Y3B1CiAgICAgLyogSS9PLXBvcnQgYWNjZXNzIGJpdG1hcC4g Ki8KICAgICBYRU5fR1VFU1RfSEFORExFKHVpbnQ4KSBpb2JtcDsgLyogR3Vlc3Qga2VybmVsIHZh ZGRyIG9mIHRoZSBiaXRtYXAuICovCiAgICAgdW5zaWduZWQgaW50IGlvYm1wX2xpbWl0OyAvKiBO dW1iZXIgb2YgcG9ydHMgcmVwcmVzZW50ZWQgaW4gdGhlIGJpdG1hcC4gKi8KLSAgICB1bnNpZ25l ZCBpbnQgaW9wbDsgICAgICAgIC8qIEN1cnJlbnQgSU9QTCBmb3IgdGhpcyBWQ1BVLiAqLworI2Rl ZmluZSBJT1BMKHZhbCkgTUFTS19JTlNSKHZhbCwgWDg2X0VGTEFHU19JT1BMKQorICAgIHVuc2ln bmVkIGludCBpb3BsOyAgICAgICAgLyogQ3VycmVudCBJT1BMIGZvciB0aGlzIFZDUFUsIHNoaWZ0 ZWQgbGVmdCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMTIgdG8gbWF0Y2gg dGhlIGVmbGFncyByZWdpc3Rlci4gKi8KIAogICAgIC8qIEN1cnJlbnQgTERUIGRldGFpbHMuICov CiAgICAgdW5zaWduZWQgbG9uZyBzaGFkb3dfbGR0X21hcGNudDsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3B1YmxpYy94ZW4uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAppbmRleCA0MzVk Nzg5Li45N2E1YWU1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgKKysrIGIv eGVuL2luY2x1ZGUvcHVibGljL3hlbi5oCkBAIC01MDMsNiArNTAzLDE0IEBAIERFRklORV9YRU5f R1VFU1RfSEFORExFKG1tdWV4dF9vcF90KTsKICNkZWZpbmUgVk1BU1NUX1RZUEVfcGFlX2V4dGVu ZGVkX2NyMyAgICAgMwogCiAvKgorICogeDg2IGd1ZXN0czogU2FuZSBiZWhhdmlvdXIgZm9yIHZp cnR1YWwgaW9wbAorICogIC0gdmlydHVhbCBpb3BsIHVwZGF0ZWQgZnJvbSBkb19pcmV0KCkgaHlw ZXJjYWxscy4KKyAqICAtIHZpcnR1YWwgaW9wbCByZXBvcnRlZCBpbiBib3VuY2UgZnJhbWVzLgor ICogIC0gZ3Vlc3Qga2VybmVscyBhc3N1bWVkIHRvIGJlIGxldmVsIDAgZm9yIHRoZSBwdXJwb3Nl IG9mIGlvcGwgY2hlY2tzLgorICovCisjZGVmaW5lIFZNQVNTVF9UWVBFX2FyY2hpdGVjdHVyYWxf aW9wbCAgIDQKKworLyoKICAqIHg4Ni82NCBndWVzdHM6IHN0cmljdGx5IGhpZGUgTTJQIGZyb20g dXNlciBtb2RlLgogICogVGhpcyBhbGxvd3MgdGhlIGd1ZXN0IHRvIGNvbnRyb2wgcmVzcGVjdGl2 ZSBoeXBlcnZpc29yIGJlaGF2aW9yOgogICogLSB3aGVuIG5vdCBzZXQsIEw0IHRhYmxlcyBnZXQg Y3JlYXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHNsb3QgYmxhbmssCi0tIAoyLjEuNAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==