From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 22/27] x86/cpuid: Perform max_leaf calculations in guest_cpuid() Date: Wed, 4 Jan 2017 12:39:39 +0000 Message-ID: <1483533584-8015-23-git-send-email-andrew.cooper3@citrix.com> References: <1483533584-8015-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: <1483533584-8015-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 Q2xhbXAgdGhlIHRvb2xzdGFjay1wcm92aWRpZWQgbWF4X2xlYWYgdmFsdWVzIGluIHJlY2FsY3Vs YXRlX2NwdWlkX3BvbGljeSgpLApjYXVzaW5nIHRoZSBwZXItZG9tYWluIHBvbGljeSB0byBoYXZl IGd1ZXN0LWFjY3VyYXRlIGRhdGEuCgpIYXZlIGd1ZXN0X2NwdWlkKCkgZXhpdCBlYXJseSBpZiBh IHJlcXVlc3RlZCBsZWFmIGlzIG91dCBvZiByYW5nZSwgcmF0aGVyIHRoYW4KZmFsbGluZyBpbnRv IHRoZSBsZWdhY3kgcGF0aC4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5j b29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29t PgotLS0KIHhlbi9hcmNoL3g4Ni9jcHVpZC5jICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgIHwgMjEgLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvdHJhcHMuYyAgICAgICAgfCAyMyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oIHwgIDEgKwog NCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvY3B1aWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCmluZGV4 IDAxYmI5MDYuLmQxNDA0ODIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCisrKyBi L3hlbi9hcmNoL3g4Ni9jcHVpZC5jCkBAIC0yNzksNiArMjc5LDEwIEBAIHZvaWQgcmVjYWxjdWxh dGVfY3B1aWRfcG9saWN5KHN0cnVjdCBkb21haW4gKmQpCiAgICAgdWludDMyX3QgZnNbRlNDQVBJ TlRTXSwgbWF4X2ZzW0ZTQ0FQSU5UU107CiAgICAgdW5zaWduZWQgaW50IGk7CiAKKyAgICBwLT5i YXNpYy5tYXhfbGVhZiAgID0gbWluKHAtPmJhc2ljLm1heF9sZWFmLCAgIG1heC0+YmFzaWMubWF4 X2xlYWYpOworICAgIHAtPmZlYXQubWF4X3N1YmxlYWYgPSBtaW4ocC0+ZmVhdC5tYXhfc3VibGVh ZiwgbWF4LT5mZWF0Lm1heF9zdWJsZWFmKTsKKyAgICBwLT5leHRkLm1heF9sZWFmICAgID0gbWlu KHAtPmV4dGQubWF4X2xlYWYsICAgIG1heC0+ZXh0ZC5tYXhfbGVhZik7CisKICAgICBjcHVpZF9w b2xpY3lfdG9fZmVhdHVyZXNldChwLCBmcyk7CiAgICAgY3B1aWRfcG9saWN5X3RvX2ZlYXR1cmVz ZXQobWF4LCBtYXhfZnMpOwogCkBAIC0zMDYsNiArMzEwLDkgQEAgdm9pZCByZWNhbGN1bGF0ZV9j cHVpZF9wb2xpY3koc3RydWN0IGRvbWFpbiAqZCkKICAgICBpZiAoICFkLT5kaXNhYmxlX21pZ3Jh dGUgJiYgIWQtPmFyY2gudnRzYyApCiAgICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX0lU U0MsIGZzKTsKIAorICAgIGlmICggcC0+YmFzaWMubWF4X2xlYWYgPCAweGQgKQorICAgICAgICBf X2NsZWFyX2JpdChYODZfRkVBVFVSRV9YU0FWRSwgZnMpOworCiAgICAgLyogRm9sZCBob3N0J3Mg RkRQX0VYQ1BfT05MWSBhbmQgTk9fRlBVX1NFTCBpbnRvIGd1ZXN0J3Mgdmlldy4gKi8KICAgICBm c1tGRUFUVVJFU0VUXzdiMF0gJj0gfnNwZWNpYWxfZmVhdHVyZXNbRkVBVFVSRVNFVF83YjBdOwog ICAgIGZzW0ZFQVRVUkVTRVRfN2IwXSB8PSAoaG9zdF9wb2xpY3kuZmVhdC5fN2IwICYKQEAgLTMz MywyMSArMzQwLDUwIEBAIHZvaWQgZ3Vlc3RfY3B1aWQoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVu c2lnbmVkIGludCBsZWFmLAogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3VibGVhZiwg c3RydWN0IGNwdWlkX2xlYWYgKnJlcykKIHsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkID0g di0+ZG9tYWluOworICAgIGNvbnN0IHN0cnVjdCBjcHVpZF9wb2xpY3kgKnAgPSBkLT5hcmNoLmNw dWlkOwogCiAgICAgKnJlcyA9IEVNUFRZX0xFQUY7CiAKICAgICAvKgogICAgICAqIEZpcnN0IHBh c3M6CiAgICAgICogLSBEaXNwYXRjaCB0aGUgdmlydHVhbGlzZWQgbGVhdmVzIHRvIHRoZWlyIHJl c3BlY3RpdmUgaGFuZGxlcnMuCisgICAgICogLSBQZXJmb3JtIG1heF9sZWFmL3N1YmxlYWYgY2Fs Y3VsYXRpb25zLCBtYXliZSByZXR1cm5pbmcgZWFybHkuCiAgICAgICovCiAgICAgc3dpdGNoICgg bGVhZiApCiAgICAgeworICAgIGNhc2UgMHgwIC4uLiAweDY6CisgICAgY2FzZSAweDggLi4uIDB4 YzoKKyNpZiAwIC8qIEZvciB3aGVuIENQVUlEX0dVRVNUX05SX0JBU0lDIGlzbid0IDB4ZCAqLwor ICAgIGNhc2UgMHhlIC4uLiBDUFVJRF9HVUVTVF9OUl9CQVNJQyAtIDE6CisjZW5kaWYKKyAgICAg ICAgaWYgKCBsZWFmID4gcC0+YmFzaWMubWF4X2xlYWYgKQorICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICBicmVhazsKKworICAgIGNhc2UgMHg3OgorICAgICAgICBpZiAoIHN1YmxlYWYgPiBw LT5mZWF0Lm1heF9zdWJsZWFmICkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYnJlYWs7 CisKKyAgICBjYXNlIDB4ZDoKKyAgICAgICAgaWYgKCBzdWJsZWFmID4gQVJSQVlfU0laRShwLT54 c3RhdGUucmF3KSApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJyZWFrOworCiAgICAg Y2FzZSAweDQwMDAwMDAwIC4uLiAweDQwMDAwMGZmOgogICAgICAgICBpZiAoIGlzX3ZpcmlkaWFu X2RvbWFpbihkKSApCiAgICAgICAgICAgICByZXR1cm4gY3B1aWRfdmlyaWRpYW5fbGVhdmVzKHYs IGxlYWYsIHN1YmxlYWYsIHJlcyk7CiAgICAgICAgIC8qIEZhbGx0aHJvdWdoLiAqLwogICAgIGNh c2UgMHg0MDAwMDEwMCAuLi4gMHg0ZmZmZmZmZjoKICAgICAgICAgcmV0dXJuIGNwdWlkX2h5cGVy dmlzb3JfbGVhdmVzKHYsIGxlYWYsIHN1YmxlYWYsIHJlcyk7CisKKyAgICBjYXNlIDB4ODAwMDAw MDAgLi4uIDB4ODAwMDAwMDAgKyBDUFVJRF9HVUVTVF9OUl9FWFREIC0gMToKKyAgICAgICAgaWYg KCBsZWFmID4gcC0+ZXh0ZC5tYXhfbGVhZiApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg IGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8q IHtwdixodm19X2NwdWlkKCkgaGF2ZSB0aGlzIGV4cGVjdGF0aW9uLiAqLwpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggN2Nk YTUzZi4uMWRkOTJlMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94 ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC0zMzA1LDI3ICszMzA1LDYgQEAgdm9pZCBodm1fY3B1 aWQodW5zaWduZWQgaW50IGlucHV0LCB1bnNpZ25lZCBpbnQgKmVheCwgdW5zaWduZWQgaW50ICpl YngsCiAgICAgaWYgKCAhZWR4ICkKICAgICAgICAgZWR4ID0gJmR1bW15OwogCi0gICAgaWYgKCBp bnB1dCAmIDB4N2ZmZmZmZmYgKQotICAgIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogUmVxdWVz dHMgb3V0c2lkZSB0aGUgc3VwcG9ydGVkIGxlYWYgcmFuZ2VzIHJldHVybiB6ZXJvIG9uIEFNRAot ICAgICAgICAgKiBhbmQgdGhlIGhpZ2hlc3QgYmFzaWMgbGVhZiBvdXRwdXQgb24gSW50ZWwuIFVu aWZvcm1seSBmb2xsb3cKLSAgICAgICAgICogdGhlIEFNRCBtb2RlbCBhcyB0aGUgbW9yZSBzYW5l IG9uZS4KLSAgICAgICAgICovCi0gICAgICAgIHVuc2lnbmVkIGludCBsaW1pdDsKLQotICAgICAg ICBkb21haW5fY3B1aWQoZCwgKGlucHV0ID4+IDE2KSAhPSAweDgwMDAgPyAwIDogMHg4MDAwMDAw MCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICZsaW1pdCwgJmR1bW15LCAmZHVtbXksICZkdW1t eSk7Ci0gICAgICAgIGlmICggaW5wdXQgPiBsaW1pdCApCi0gICAgICAgIHsKLSAgICAgICAgICAg ICplYXggPSAwOwotICAgICAgICAgICAgKmVieCA9IDA7Ci0gICAgICAgICAgICAqZWN4ID0gMDsK LSAgICAgICAgICAgICplZHggPSAwOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g ICAgfQotCiAgICAgZG9tYWluX2NwdWlkKGQsIGlucHV0LCBjb3VudCwgZWF4LCBlYngsIGVjeCwg ZWR4KTsKIAogICAgIHN3aXRjaCAoIGlucHV0ICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90 cmFwcy5jIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKaW5kZXggMWMzODRjZi4uYWVkOTZjMyAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L3RyYXBzLmMKKysrIGIveGVuL2FyY2gveDg2L3RyYXBzLmMK QEAgLTEwMzIsMjkgKzEwMzIsNiBAQCB2b2lkIHB2X2NwdWlkKHN0cnVjdCBjcHVfdXNlcl9yZWdz ICpyZWdzKQogICAgIHN1YmxlYWYgPSBjID0gcmVncy0+X2VjeDsKICAgICBkID0gcmVncy0+X2Vk eDsKIAotICAgIGlmICggbGVhZiAmIDB4N2ZmZmZmZmYgKQotICAgIHsKLSAgICAgICAgLyoKLSAg ICAgICAgICogUmVxdWVzdHMgb3V0c2lkZSB0aGUgc3VwcG9ydGVkIGxlYWYgcmFuZ2VzIHJldHVy biB6ZXJvIG9uIEFNRAotICAgICAgICAgKiBhbmQgdGhlIGhpZ2hlc3QgYmFzaWMgbGVhZiBvdXRw dXQgb24gSW50ZWwuIFVuaWZvcm1seSBmb2xsb3cKLSAgICAgICAgICogdGhlIEFNRCBtb2RlbCBh cyB0aGUgbW9yZSBzYW5lIG9uZS4KLSAgICAgICAgICovCi0gICAgICAgIHVuc2lnbmVkIGludCBs aW1pdCA9IChsZWFmID4+IDE2KSAhPSAweDgwMDAgPyAwIDogMHg4MDAwMDAwMCwgZHVtbXk7Ci0K LSAgICAgICAgaWYgKCAhaXNfY29udHJvbF9kb21haW4oY3VycmQpICYmICFpc19oYXJkd2FyZV9k b21haW4oY3VycmQpICkKLSAgICAgICAgICAgIGRvbWFpbl9jcHVpZChjdXJyZCwgbGltaXQsIDAs ICZsaW1pdCwgJmR1bW15LCAmZHVtbXksICZkdW1teSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg ICAgIGxpbWl0ID0gY3B1aWRfZWF4KGxpbWl0KTsKLSAgICAgICAgaWYgKCBsZWFmID4gbGltaXQg KQotICAgICAgICB7Ci0gICAgICAgICAgICByZWdzLT5yYXggPSAwOwotICAgICAgICAgICAgcmVn cy0+cmJ4ID0gMDsKLSAgICAgICAgICAgIHJlZ3MtPnJjeCA9IDA7Ci0gICAgICAgICAgICByZWdz LT5yZHggPSAwOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCiAgICAg aWYgKCAhaXNfY29udHJvbF9kb21haW4oY3VycmQpICYmICFpc19oYXJkd2FyZV9kb21haW4oY3Vy cmQpICkKICAgICAgICAgZG9tYWluX2NwdWlkKGN1cnJkLCBsZWFmLCBzdWJsZWFmLCAmYSwgJmIs ICZjLCAmZCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVp ZC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oCmluZGV4IGM2MjFhNmYuLjczNjMyNjMg MTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaAorKysgYi94ZW4vaW5jbHVk ZS9hc20teDg2L2NwdWlkLmgKQEAgLTg3LDYgKzg3LDcgQEAgc3RydWN0IGNwdWlkX3BvbGljeQog ICAgICAqIFBlci1kb21haW4gb2JqZWN0czoKICAgICAgKgogICAgICAqIC0gR3Vlc3QgYWNjdXJh dGU6CisgICAgICogICAtIG1heF97LHN1Yn1sZWFmCiAgICAgICogICAtIEFsbCBGRUFUVVJFU0VU Xyogd29yZHMKICAgICAgKgogICAgICAqIEV2ZXJ5dGhpbmcgZWxzZSBzaG91bGQgYmUgY29uc2lk ZXJlZCBpbmFjY3VyYXRlLCBhbmQgbm90IG5lY2Vzc2VyaWx5IDAuCi0tIAoyLjEuNAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=