From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 3/3] x86/emul: Support CPUID faulting via a speculative MSR read Date: Mon, 20 Feb 2017 10:28:49 +0000 Message-ID: <1487586529-27092-4-git-send-email-andrew.cooper3@citrix.com> References: <1487586529-27092-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: <1487586529-27092-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 , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBldmVyeSBjcHVpZCgpIGVtdWxhdGlvbiBob29rIHRv IGluZGl2aWR1YWxseSBzdXBwb3J0CkNQVUlEIGZhdWx0aW5nLgoKU2lnbmVkLW9mZi1ieTogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGlj aCA8SkJldWxpY2hAc3VzZS5jb20+CkNDOiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRy aXguY29tPgoKdjI6CiAqIFN1YnN0YW50aWFsIHJlYmFzZQogKiBSZWltcGxlbWVudCBzcGVjdWxh dGl2ZSByZWFkaW5nIGJ5IHNxdWFzaGluZyB0aGUgZXhjZXB0aW9uIHJhdGhlciB0aGFuCiAgIHRy eWluZyB0byBwcmV2ZW50IGl0IGJ5IHVzaW5nIGFuIGV4dHJhIGZ1bmN0aW9uIHBhcmFtZXRlci4K LS0tCiB4ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyAgICAgICAgICAgICB8ICA5IC0tLS0tLS0t LQogeGVuL2FyY2gveDg2L3RyYXBzLmMgICAgICAgICAgICAgICAgICAgfCAxOCArLS0tLS0tLS0t LS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIHwgMTkgKysr KysrKysrKysrKysrKystLQogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgg fCAgNyArLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDM0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jIGIveGVuL2Fy Y2gveDg2L2h2bS9lbXVsYXRlLmMKaW5kZXggZWRjYWU1ZS4uZjI0ZDI4OSAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRl LmMKQEAgLTE1NzUsMTUgKzE1NzUsNiBAQCBzdGF0aWMgaW50IGh2bWVtdWxfd2JpbnZkKAogaW50 IGh2bWVtdWxfY3B1aWQodWludDMyX3QgbGVhZiwgdWludDMyX3Qgc3VibGVhZiwKICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBjcHVpZF9sZWFmICpyZXMsIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0 ICpjdHh0KQogewotICAgIC8qCi0gICAgICogeDg2X2VtdWxhdGUgdXNlcyB0aGlzIGZ1bmN0aW9u IHRvIHF1ZXJ5IENQVSBmZWF0dXJlcyBmb3IgaXRzIG93biBpbnRlcm5hbAotICAgICAqIHVzZS4g TWFrZSBzdXJlIHdlJ3JlIGFjdHVhbGx5IGVtdWxhdGluZyBDUFVJRCBiZWZvcmUgZW11bGF0aW5n IENQVUlECi0gICAgICogZmF1bHRpbmcuCi0gICAgICovCi0gICAgaWYgKCBjdHh0LT5vcGNvZGUg PT0gWDg2RU1VTF9PUEMoMHgwZiwgMHhhMikgJiYKLSAgICAgICAgIGh2bV9jaGVja19jcHVpZF9m YXVsdGluZyhjdXJyZW50KSApCi0gICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKLQog ICAgIGd1ZXN0X2NwdWlkKGN1cnJlbnQsIGxlYWYsIHN1YmxlYWYsIHJlcyk7CiAgICAgcmV0dXJu IFg4NkVNVUxfT0tBWTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90cmFwcy5jIGIveGVu L2FyY2gveDg2L3RyYXBzLmMKaW5kZXggZWM4YjAwMi4uNzVjODllYiAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L3RyYXBzLmMKKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKQEAgLTI4ODQsMjMg KzI4ODQsNyBAQCBzdGF0aWMgaW50IHByaXZfb3Bfd2JpbnZkKHN0cnVjdCB4ODZfZW11bGF0ZV9j dHh0ICpjdHh0KQogaW50IHB2X2VtdWxfY3B1aWQodWludDMyX3QgbGVhZiwgdWludDMyX3Qgc3Vi bGVhZiwKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVpZF9sZWFmICpyZXMsIHN0cnVjdCB4 ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQogewotICAgIGNvbnN0IHN0cnVjdCB2Y3B1ICpjdXJyID0g Y3VycmVudDsKLQotICAgIC8qCi0gICAgICogeDg2X2VtdWxhdGUgdXNlcyB0aGlzIGZ1bmN0aW9u IHRvIHF1ZXJ5IENQVSBmZWF0dXJlcyBmb3IgaXRzIG93bgotICAgICAqIGludGVybmFsIHVzZS4g TWFrZSBzdXJlIHdlJ3JlIGFjdHVhbGx5IGVtdWxhdGluZyBDUFVJRCBiZWZvcmUgY2hlY2tpbmcK LSAgICAgKiBmb3IgZW11bGF0ZWQgQ1BVSUQgZmF1bHRpbmcuCi0gICAgICovCi0gICAgaWYgKCBj dHh0LT5vcGNvZGUgPT0gWDg2RU1VTF9PUEMoMHgwZiwgMHhhMikgKQotICAgIHsKLQotICAgICAg ICAvKiBJZiBjcHVpZCBmYXVsdGluZyBpcyBlbmFibGVkIGFuZCBDUEw+MCBsZWF2ZSB0aGUgI0dQ IHVudG91Y2hlZC4gKi8KLSAgICAgICAgaWYgKCBjdXJyLT5hcmNoLmNwdWlkX2ZhdWx0aW5nICYm Ci0gICAgICAgICAgICAgIWd1ZXN0X2tlcm5lbF9tb2RlKGN1cnIsIGN0eHQtPnJlZ3MpICkKLSAg ICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKLSAgICB9Ci0KLSAgICBndWVzdF9j cHVpZChjdXJyLCBsZWFmLCBzdWJsZWFmLCByZXMpOworICAgIGd1ZXN0X2NwdWlkKGN1cnJlbnQs IGxlYWYsIHN1YmxlYWYsIHJlcyk7CiAKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogfQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgYi94ZW4vYXJj aC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwppbmRleCBmMzM5ZDM2Li5jM2ZjMjZhIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYworKysgYi94 ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtNTQyNCwxMCArNTQyNCwy NSBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFg4NkVNVUxfT1BD KDB4MGYsIDB4YTIpOiAvKiBjcHVpZCAqLworICAgICAgICBtc3JfdmFsID0gMDsKICAgICAgICAg ZmFpbF9pZihvcHMtPmNwdWlkID09IE5VTEwpOworCisgICAgICAgIC8qIFNwZWN1bGF0aXZlbHkg cmVhZCBNU1JfSU5URUxfTUlTQ19GRUFUVVJFU19FTkFCTEVTLiAqLworICAgICAgICBpZiAoIG9w cy0+cmVhZF9tc3IgJiYKKyAgICAgICAgICAgICAocmMgPSBvcHMtPnJlYWRfbXNyKE1TUl9JTlRF TF9NSVNDX0ZFQVRVUkVTX0VOQUJMRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmbXNyX3ZhbCwgY3R4dCkpID09IFg4NkVNVUxfRVhDRVBUSU9OICkKKyAgICAgICAgeworICAg ICAgICAgICAgLyogTm90IGltcGxlbWVudGVkLiAgU3F1YXNoIHRoZSBleGNlcHRpb24gYW5kIHBy b2NlZWQgbm9ybWFsbHkuICovCisgICAgICAgICAgICB4ODZfZW11bF9yZXNldF9ldmVudChjdHh0 KTsKKyAgICAgICAgICAgIHJjID0gWDg2RU1VTF9PS0FZOworICAgICAgICB9CisgICAgICAgIGlm ICggcmMgIT0gWDg2RU1VTF9PS0FZICkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKworICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb25faWYoKG1zcl92YWwgJiBNU1JfTUlTQ19GRUFUVVJFU19DUFVJ RF9GQVVMVElORykgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFtb2RlX3Jpbmcw KCksIEVYQ19HUCwgMCk7IC8qIEZhdWx0aW5nIGFjdGl2ZT8gKi8KKwogICAgICAgICByYyA9IG9w cy0+Y3B1aWQoX3JlZ3MuX2VheCwgX3JlZ3MuX2VjeCwgJmNwdWlkX2xlYWYsIGN0eHQpOwotICAg ICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYocmMgPT0gWDg2RU1VTF9FWENFUFRJT04sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfR1AsIDApOyAvKiBDUFVJRCBGYXVsdGluZz8g Ki8KICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQogICAgICAgICAgICAgZ290byBk b25lOwogICAgICAgICBfcmVncy5yKGF4KSA9IGNwdWlkX2xlYWYuYTsKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oIGIveGVuL2FyY2gveDg2L3g4Nl9l bXVsYXRlL3g4Nl9lbXVsYXRlLmgKaW5kZXggMDcxNjY4ZC4uYzM1ODczZSAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKKysrIGIveGVuL2FyY2gveDg2 L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKQEAgLTQxMywxMiArNDEzLDcgQEAgc3RydWN0IHg4 Nl9lbXVsYXRlX29wcwogICAgIGludCAoKndiaW52ZCkoCiAgICAgICAgIHN0cnVjdCB4ODZfZW11 bGF0ZV9jdHh0ICpjdHh0KTsKIAotICAgIC8qCi0gICAgICogY3B1aWQ6IEVtdWxhdGUgQ1BVSUQg dmlhIGdpdmVuIHNldCBvZiBFQVgtRURYIGlucHV0cy9vdXRwdXRzLgotICAgICAqCi0gICAgICog TWF5IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTiwgd2hpY2ggY2F1c2VzIHRoZSBlbXVsYXRvciB0 byBpbmplY3QKLSAgICAgKiAjR1BbMF0uICBVc2VkIHRvIGltcGxlbWVudCBDUFVJRCBmYXVsdGlu Zy4KLSAgICAgKi8KKyAgICAvKiBjcHVpZDogRW11bGF0ZSBDUFVJRCB2aWEgZ2l2ZW4gc2V0IG9m IEVBWC1FRFggaW5wdXRzL291dHB1dHMuICovCiAgICAgaW50ICgqY3B1aWQpKAogICAgICAgICB1 aW50MzJfdCBsZWFmLAogICAgICAgICB1aW50MzJfdCBzdWJsZWFmLAotLSAKMi4xLjQKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK