From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 2/6] x86/cpuid: Introduce recalculate_xstate() Date: Mon, 16 Jan 2017 11:40:26 +0000 Message-ID: <1484566830-13916-3-git-send-email-andrew.cooper3@citrix.com> References: <1484566830-13916-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: <1484566830-13916-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 QWxsIGRhdGEgaW4gdGhlIHhzdGF0ZSB1bmlvbiwgb3RoZXIgdGhhbiB0aGUgRGExIGZlYXR1cmUg d29yZCwgaXMgZGVyaXZlZCBmcm9tCm90aGVyIHN0YXRlOyBlaXRoZXIgZmVhdHVyZSBiaXRzIGZy b20gb3RoZXIgd29yZHMsIG9yIGxheW91dCBpbmZvcm1hdGlvbiB3aGljaApoYXMgYWxyZWFkeSBi ZWVuIGNvbGxlY3RlZCBieSBYZW4ncyB4c3RhdGUgZHJpdmVyLgoKUmVjYWxjdWxhdGUgdGhlIHhz dGF0ZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBwb2xpY3kgb2JqZWN0IHdoZW4gdGhlIGZlYXR1cmUK Yml0cyBtYXkgaGF2ZSBjaGFuZ2VkLgoKVGhlIFhTVEFURV9YU0FWRVNfT05MWSBkZWZpbmUgbmVl ZHMgZXh0ZW5kaW5nIHRvIGEgNjRiaXQgdmFsdWUgdG8gYXZvaWQKcHJvYmxlbXMgd2hlbiB0YWtp bmcgaXRzIGNvbnZlcnNlIGZvciBtYXNraW5nIHB1cnBvc2VzLgoKU2lnbmVkLW9mZi1ieTogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGlj aCA8SkJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdWlkLmMgICAgICAgICB8 IDEwMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5j bHVkZS9hc20teDg2L2NwdWlkLmggIHwgIDE3ICsrKysrLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2 L3hzdGF0ZS5oIHwgICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCA3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHVpZC5jIGIveGVuL2Fy Y2gveDg2L2NwdWlkLmMKaW5kZXggOTUwNDBmOS4uMzAzNTY4ZCAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L2NwdWlkLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdWlkLmMKQEAgLTgwLDYgKzgwLDEw MyBAQCBzdGF0aWMgdm9pZCBzYW5pdGlzZV9mZWF0dXJlc2V0KHVpbnQzMl90ICpmcykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGZzW0ZFQVRVUkVTRVRfZTFkXSAmIH5DUFVJRF9DT01NT05f MURfRkVBVFVSRVMpKTsKIH0KIAorc3RhdGljIHZvaWQgcmVjYWxjdWxhdGVfeHN0YXRlKHN0cnVj dCBjcHVpZF9wb2xpY3kgKnApCit7CisgICAgdWludDY0X3QgeHN0YXRlcyA9IFhTVEFURV9GUF9T U0U7CisgICAgdWludDMyX3QgeHN0YXRlX3NpemUgPSBYU1RBVEVfQVJFQV9NSU5fU0laRTsKKyAg ICB1bnNpZ25lZCBpbnQgaSwgRGExID0gcC0+eHN0YXRlLkRhMTsKKworICAgIC8qCisgICAgICog VGhlIERhMSBsZWFmIGlzIHRoZSBvbmx5IHBpZWNlIGlmIGluZm9ybWF0aW9uIHByZXNlcnZlZC4g IEV2ZXJ5dGhpbmcKKyAgICAgKiBlbHNlIGlzIGRlcml2ZWQgZnJvbSBvdGhlciBmZWF0dXJlIHN0 YXRlLgorICAgICAqLworICAgIG1lbXNldCgmcC0+eHN0YXRlLCAwLCBzaXplb2YocC0+eHN0YXRl KSk7CisKKyAgICBpZiAoICFwLT5iYXNpYy54c2F2ZSApCisgICAgICAgIHJldHVybjsKKworICAg IGlmICggcC0+YmFzaWMuYXZ4ICkKKyAgICB7CisgICAgICAgIHhzdGF0ZXMgfD0gWFNUQVRFX1lN TTsKKyAgICAgICAgeHN0YXRlX3NpemUgPSBtYXgoeHN0YXRlX3NpemUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHhzdGF0ZV9vZmZzZXRzW19YU1RBVEVfWU1NXSArCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHhzdGF0ZV9zaXplc1tfWFNUQVRFX1lNTV0pOworICAgIH0KKworICAgIGlm ICggcC0+ZmVhdC5tcHggKQorICAgIHsKKyAgICAgICAgeHN0YXRlcyB8PSBYU1RBVEVfQk5EUkVH UyB8IFhTVEFURV9CTkRDU1I7CisgICAgICAgIHhzdGF0ZV9zaXplID0gbWF4KHhzdGF0ZV9zaXpl LAorICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfb2Zmc2V0c1tfWFNUQVRFX0JORENT Ul0gKworICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfc2l6ZXNbX1hTVEFURV9CTkRD U1JdKTsKKyAgICB9CisKKyAgICBpZiAoIHAtPmZlYXQuYXZ4NTEyZiApCisgICAgeworICAgICAg ICB4c3RhdGVzIHw9IFhTVEFURV9PUE1BU0sgfCBYU1RBVEVfWk1NIHwgWFNUQVRFX0hJX1pNTTsK KyAgICAgICAgeHN0YXRlX3NpemUgPSBtYXgoeHN0YXRlX3NpemUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIHhzdGF0ZV9vZmZzZXRzW19YU1RBVEVfSElfWk1NXSArCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHhzdGF0ZV9zaXplc1tfWFNUQVRFX0hJX1pNTV0pOworICAgIH0KKworICAg IGlmICggcC0+ZmVhdC5wa3UgKQorICAgIHsKKyAgICAgICAgeHN0YXRlcyB8PSBYU1RBVEVfUEtS VTsKKyAgICAgICAgeHN0YXRlX3NpemUgPSBtYXgoeHN0YXRlX3NpemUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHhzdGF0ZV9vZmZzZXRzW19YU1RBVEVfUEtSVV0gKworICAgICAgICAgICAg ICAgICAgICAgICAgICB4c3RhdGVfc2l6ZXNbX1hTVEFURV9QS1JVXSk7CisgICAgfQorCisgICAg aWYgKCBwLT5leHRkLmx3cCApCisgICAgeworICAgICAgICB4c3RhdGVzIHw9IFhTVEFURV9MV1A7 CisgICAgICAgIHhzdGF0ZV9zaXplID0gbWF4KHhzdGF0ZV9zaXplLAorICAgICAgICAgICAgICAg ICAgICAgICAgICB4c3RhdGVfb2Zmc2V0c1tfWFNUQVRFX0xXUF0gKworICAgICAgICAgICAgICAg ICAgICAgICAgICB4c3RhdGVfc2l6ZXNbX1hTVEFURV9MV1BdKTsKKyAgICB9CisKKyAgICAvKiBT YW5pdHkgY2hlY2sgd2UgYXJlbid0IGFkdmVydGlzaW5nIHVua25vd24gc3RhdGVzLiAqLworICAg IEFTU0VSVCgoeHN0YXRlcyAmIH5YQ05UWFRfTUFTSykgPT0gMCk7CisKKyAgICBwLT54c3RhdGUu bWF4X3NpemUgID0gIHhzdGF0ZV9zaXplOworICAgIHAtPnhzdGF0ZS54Y3IwX2xvdyAgPSAgeHN0 YXRlcyAmIH5YU1RBVEVfWFNBVkVTX09OTFk7CisgICAgcC0+eHN0YXRlLnhjcjBfaGlnaCA9ICh4 c3RhdGVzICYgflhTVEFURV9YU0FWRVNfT05MWSkgPj4gMzI7CisKKyAgICBwLT54c3RhdGUuRGEx ID0gRGExOworICAgIGlmICggcC0+eHN0YXRlLnhzYXZlcyApCisgICAgeworICAgICAgICBwLT54 c3RhdGUueHNzX2xvdyAgID0gIHhzdGF0ZXMgJiBYU1RBVEVfWFNBVkVTX09OTFk7CisgICAgICAg IHAtPnhzdGF0ZS54c3NfaGlnaCAgPSAoeHN0YXRlcyAmIFhTVEFURV9YU0FWRVNfT05MWSkgPj4g MzI7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgeHN0YXRlcyAmPSB+WFNUQVRFX1hTQVZFU19P TkxZOworCisgICAgZm9yICggaSA9IDI7IGkgPCBtaW4oNjN1bCwgQVJSQVlfU0laRShwLT54c3Rh dGUuY29tcCkpOyArK2kgKQorICAgIHsKKyAgICAgICAgdWludDY0X3QgY3Vycl94c3RhdGUgPSAx dWwgPDwgaTsKKworICAgICAgICBpZiAoICEoeHN0YXRlcyAmIGN1cnJfeHN0YXRlKSApCisgICAg ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBwLT54c3RhdGUuY29tcFtpXS5zaXplICAgPSB4 c3RhdGVfc2l6ZXNbaV07CisgICAgICAgIHAtPnhzdGF0ZS5jb21wW2ldLm9mZnNldCA9IHhzdGF0 ZV9vZmZzZXRzW2ldOworICAgICAgICBwLT54c3RhdGUuY29tcFtpXS54c3MgICAgPSBjdXJyX3hz dGF0ZSAmIFhTVEFURV9YU0FWRVNfT05MWTsKKyAgICAgICAgcC0+eHN0YXRlLmNvbXBbaV0uYWxp Z24gID0gY3Vycl94c3RhdGUgJiB4c3RhdGVfYWxpZ247CisKKyAgICAgICAgLyoKKyAgICAgICAg ICogU2FuaXR5IGNoZWNrczoKKyAgICAgICAgICogLSBBbGwgdmFsaWQgY29tcG9uZW50cyBzaG91 bGQgaGF2ZSBub24temVybyBzaXplLgorICAgICAgICAgKiAtIEFsbCB4Y3IwIGNvbXBvbmVudHMg c2hvdWxkIGhhdmUgbm9uLXplcm8gb2Zmc2V0LgorICAgICAgICAgKiAtIEFsbCB4c3MgY29tcG9u ZW50cyBzaG91bGQgcmVwb3J0IDAgb2Zmc2V0LgorICAgICAgICAgKi8KKyAgICAgICAgQVNTRVJU KHhzdGF0ZV9zaXplc1tpXSk7CisgICAgICAgIGlmICggY3Vycl94c3RhdGUgJiBYU1RBVEVfWFNB VkVTX09OTFkgKQorICAgICAgICAgICAgQVNTRVJUKHhzdGF0ZV9vZmZzZXRzW2ldID09IDApOwor ICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlQoeHN0YXRlX29mZnNldHNbaV0pOworICAg IH0KK30KKwogc3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9yYXdfcG9saWN5KHZvaWQpCiB7 CiAgICAgc3RydWN0IGNwdWlkX3BvbGljeSAqcCA9ICZyYXdfcG9saWN5OwpAQCAtMTQ3LDYgKzI0 NCw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVfaG9zdF9wb2xpY3kodm9pZCkKICAg ICAgICAgICAgICAgMHg4MDAwMDAwMHUgKyBBUlJBWV9TSVpFKHAtPmV4dGQucmF3KSAtIDEpOwog CiAgICAgY3B1aWRfZmVhdHVyZXNldF90b19wb2xpY3koYm9vdF9jcHVfZGF0YS54ODZfY2FwYWJp bGl0eSwgcCk7CisgICAgcmVjYWxjdWxhdGVfeHN0YXRlKHApOwogfQogCiBzdGF0aWMgdm9pZCBf X2luaXQgY2FsY3VsYXRlX3B2X21heF9wb2xpY3kodm9pZCkKQEAgLTE2Niw2ICsyNjQsNyBAQCBz dGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX3B2X21heF9wb2xpY3kodm9pZCkKIAogICAgIHNh bml0aXNlX2ZlYXR1cmVzZXQocHZfZmVhdHVyZXNldCk7CiAgICAgY3B1aWRfZmVhdHVyZXNldF90 b19wb2xpY3kocHZfZmVhdHVyZXNldCwgcCk7CisgICAgcmVjYWxjdWxhdGVfeHN0YXRlKHApOwog fQogCiBzdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX2h2bV9tYXhfcG9saWN5KHZvaWQpCkBA IC0yMTksNiArMzE4LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9odm1fbWF4X3Bv bGljeSh2b2lkKQogCiAgICAgc2FuaXRpc2VfZmVhdHVyZXNldChodm1fZmVhdHVyZXNldCk7CiAg ICAgY3B1aWRfZmVhdHVyZXNldF90b19wb2xpY3koaHZtX2ZlYXR1cmVzZXQsIHApOworICAgIHJl Y2FsY3VsYXRlX3hzdGF0ZShwKTsKIH0KIAogdm9pZCBfX2luaXQgaW5pdF9ndWVzdF9jcHVpZCh2 b2lkKQpAQCAtMzI2LDYgKzQyNiw3IEBAIHZvaWQgcmVjYWxjdWxhdGVfY3B1aWRfcG9saWN5KHN0 cnVjdCBkb21haW4gKmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsX2ZlYXR1 cmVzW0ZFQVRVUkVTRVRfN2IwXSk7CiAKICAgICBjcHVpZF9mZWF0dXJlc2V0X3RvX3BvbGljeShm cywgcCk7CisgICAgcmVjYWxjdWxhdGVfeHN0YXRlKHApOwogfQogCiBpbnQgaW5pdF9kb21haW5f Y3B1aWRfcG9saWN5KHN0cnVjdCBkb21haW4gKmQpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20teDg2L2NwdWlkLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmgKaW5kZXggYjM1OWIz OC4uM2Y5Mjk1NSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaApAQCAtNzcsMTggKzc3LDE1IEBAIHN0cnVjdCBj cHVpZF9wb2xpY3kKICAgICAgKgogICAgICAqIEdsb2JhbCAqX3BvbGljeSBvYmplY3RzOgogICAg ICAqCi0gICAgICogLSBIb3N0IGFjY3VyYXRlOgotICAgICAqICAgLSB7eGNyMCx4c3N9X3toaWdo LGxvd30KLSAgICAgKgogICAgICAqIC0gR3Vlc3QgYWNjdXJhdGU6Ci0gICAgICogICAtIEFsbCBv ZiB0aGUgZmVhdCB1bmlvbgorICAgICAqICAgLSBBbGwgb2YgdGhlIGZlYXQgYW5kIHhzdGF0ZSB1 bmlvbnMKICAgICAgKiAgIC0gbWF4X3ssc3VifWxlYWYKICAgICAgKiAgIC0gQWxsIEZFQVRVUkVT RVRfKiB3b3JkcwogICAgICAqCiAgICAgICogUGVyLWRvbWFpbiBvYmplY3RzOgogICAgICAqCiAg ICAgICogLSBHdWVzdCBhY2N1cmF0ZToKLSAgICAgKiAgIC0gQWxsIG9mIHRoZSBmZWF0IHVuaW9u CisgICAgICogICAtIEFsbCBvZiB0aGUgZmVhdCBhbmQgeHN0YXRlIHVuaW9ucwogICAgICAqICAg LSBtYXhfeyxzdWJ9bGVhZgogICAgICAqICAgLSBBbGwgRkVBVFVSRVNFVF8qIHdvcmRzCiAgICAg ICoKQEAgLTE0Myw5ICsxNDAsMTAgQEAgc3RydWN0IGNwdWlkX3BvbGljeQogICAgIC8qIFhzdGF0 ZSBmZWF0dXJlIGxlYWY6IDB4MDAwMDAwMERbeHhdICovCiAgICAgdW5pb24gewogICAgICAgICBz dHJ1Y3QgY3B1aWRfbGVhZiByYXdbQ1BVSURfR1VFU1RfTlJfWFNUQVRFXTsKKwogICAgICAgICBz dHJ1Y3QgewogICAgICAgICAgICAgLyogU3VibGVhZiAwLiAqLwotICAgICAgICAgICAgdWludDMy X3QgeGNyMF9sb3csIC8qIGIgKi86MzIsIC8qIGMgKi86MzIsIHhjcjBfaGlnaDsKKyAgICAgICAg ICAgIHVpbnQzMl90IHhjcjBfbG93LCAvKiBiICovOjMyLCBtYXhfc2l6ZSwgeGNyMF9oaWdoOwog CiAgICAgICAgICAgICAvKiBTdWJsZWFmIDEuICovCiAgICAgICAgICAgICB1bmlvbiB7CkBAIC0x NTQsNiArMTUyLDEzIEBAIHN0cnVjdCBjcHVpZF9wb2xpY3kKICAgICAgICAgICAgIH07CiAgICAg ICAgICAgICB1aW50MzJfdCAvKiBiICovOjMyLCB4c3NfbG93LCB4c3NfaGlnaDsKICAgICAgICAg fTsKKworICAgICAgICAvKiBQZXItY29tcG9uZW50IGNvbW1vbiBzdGF0ZS4gIFZhbGlkIGZvciBp ID49IDIuICovCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCBzaXplLCBv ZmZzZXQ7CisgICAgICAgICAgICBib29sIHhzczoxLCBhbGlnbjoxOworICAgICAgICAgICAgdWlu dDMyX3QgLyogYyAqLzozMCwgLyogZCAqLzozMjsKKyAgICAgICAgfSBjb21wW0NQVUlEX0dVRVNU X05SX1hTVEFURV07CiAgICAgfSB4c3RhdGU7CiAKICAgICAvKiBFeHRlbmRlZCBsZWF2ZXM6IDB4 ODAwMDAweHggKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRlLmggYi94 ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0ZS5oCmluZGV4IGEzZDM3YjguLmMyNzczNWEgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRlLmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni94c3RhdGUuaApAQCAtNTUsNyArNTUsNyBAQAogI2RlZmluZSBYU1RBVEVfTk9OTEFaWSAo WFNUQVRFX0xXUCB8IFhTVEFURV9CTkRSRUdTIHwgWFNUQVRFX0JORENTUiB8IFwKICAgICAgICAg ICAgICAgICAgICAgICAgIFhTVEFURV9QS1JVKQogI2RlZmluZSBYU1RBVEVfTEFaWSAgICAoWFNU QVRFX0FMTCAmIH5YU1RBVEVfTk9OTEFaWSkKLSNkZWZpbmUgWFNUQVRFX1hTQVZFU19PTkxZICAg ICAgICAgMAorI2RlZmluZSBYU1RBVEVfWFNBVkVTX09OTFkgICAgICAgICAwVUxMCiAjZGVmaW5l IFhTVEFURV9DT01QQUNUSU9OX0VOQUJMRUQgICgxVUxMIDw8IDYzKQogCiAjZGVmaW5lIFhTVEFU RV9BTElHTjY0ICgxVSA8PCAxKQotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK