From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH for-4.10] x86: Avoid corruption on migrate for vcpus using CPUID Faulting Date: Sat, 25 Nov 2017 18:15:28 +0000 Message-ID: <1511633728-680-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: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Julien Grall , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org WGVuIDQuOCBhbmQgbGF0ZXIgdmlydHVhbGlzZXMgQ1BVSUQgRmF1bHRpbmcgc3VwcG9ydCBmb3Ig Z3Vlc3RzLiAgSG93ZXZlciwgdGhlCnZhbHVlIG9mIE1TUl9NSVNDX0ZFQVRVUkVTX0VOQUJMRVMg aXMgb21pdHRlZCBmcm9tIHRoZSB2Y3B1IHN0YXRlLCBtZWFuaW5nCnRoYXQgdGhlIGN1cnJlbnQg Y3B1aWQgZmF1bHRpbmcgc2V0dGluZyBpcyBsb3N0IG9uIG1pZ3JhdGUvc3VzcGVuZC9yZXN1bWUu CgpUbyBtb3ZlIHRoaXMgTVNSLCB1c2UgdGhlIG5ldyBndWVzdF97cmQsd3J9bXNyKCkgaW5mcmFz dHJ1Y3R1cmUuICBUaGlzIGF2b2lkcwpkdXBsaWNhdGluZyBvciBvcGVuY29kaW5nIHRoZSBmZWF0 dXJlIGNoZWNrIGFuZCB2YWx1ZSBsb2dpYywgYXMgd2VsbCBhcwphYnN0cmFjdGluZyBhd2F5IHRo ZSBpbnRlcm5hbCB2YWx1ZSByZXByZXNlbnRhdGlvbi4gIE9uZSBzbWFsbCBhZGp1c3RtZW50IHRv Cmd1ZXN0X3dybXNyKCkgaXMgcmVxdWlyZWQgdG8gY29wZSB3aXRoIGJlaW5nIGNhbGxlZCBpbiB0 b29sc3RhY2sgY29udGV4dC4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5j b29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29t PgpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IEp1bGllbiBHcmFsbCA8anVs aWVuLmdyYWxsQGFybS5jb20+CgpUaGlzIG5lZWRzIGJhY2twb3J0aW5nIHRvIDQuOCBhbmQgbGF0 ZXIsIGFuZCB0aGVyZWZvcmUgc2hvdWxkIGJlIGNvbnNpZGVyZWQKZm9yIDQuMTAgYXQgdGhpcyBw b2ludC4KLS0tCiB4ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgIHwgNDYgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAg ICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9hcmNo L3g4Ni9tc3IuYyAgICAgICAgfCAgMyArKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvbXNyLmggfCAg MyArKysKIDQgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMgYi94ZW4vYXJjaC94ODYvZG9tY3Rs LmMKaW5kZXggODBiNGRmOS4uZTk4YzRhMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWN0 bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwpAQCAtMTI4Niw3ICsxMjg2LDcgQEAgbG9u ZyBhcmNoX2RvX2RvbWN0bCgKICAgICAgICAgc3RydWN0IHhlbl9kb21jdGxfdmNwdV9tc3JzICp2 bXNycyA9ICZkb21jdGwtPnUudmNwdV9tc3JzOwogICAgICAgICBzdHJ1Y3QgeGVuX2RvbWN0bF92 Y3B1X21zciBtc3I7CiAgICAgICAgIHN0cnVjdCB2Y3B1ICp2OwotICAgICAgICB1aW50MzJfdCBu cl9tc3JzID0gMDsKKyAgICAgICAgdWludDMyX3QgbnJfbXNycyA9IDE7CiAKICAgICAgICAgcmV0 ID0gLUVTUkNIOwogICAgICAgICBpZiAoICh2bXNycy0+dmNwdSA+PSBkLT5tYXhfdmNwdXMpIHx8 CkBAIC0xMzExLDEwICsxMzExLDQ5IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCiAgICAgICAgICAg ICAgICAgdm1zcnMtPm1zcl9jb3VudCA9IG5yX21zcnM7CiAgICAgICAgICAgICBlbHNlCiAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1zcnNbXSA9 IHsKKyAgICAgICAgICAgICAgICAgICAgTVNSX0lOVEVMX01JU0NfRkVBVFVSRVNfRU5BQkxFUywK KyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBqOworCiAg ICAgICAgICAgICAgICAgaSA9IDA7CiAKICAgICAgICAgICAgICAgICB2Y3B1X3BhdXNlKHYpOwog CisgICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBBUlJBWV9TSVpFKG1zcnMpOyArK2og KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgdmFsOwor ICAgICAgICAgICAgICAgICAgICBpbnQgcmMgPSBndWVzdF9yZG1zcih2LCBtc3JzW2pdLCAmdmFs KTsKKworICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgKiBJdCBp cyB0aGUgcHJvZ3JhbW1lcnMgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoYXQKKyAgICAgICAg ICAgICAgICAgICAgICogbXNyc1tdIGNvbnRhaW4gZ2VuZXJhbGx5LXJlYWRhYmxlIE1TUnMuCisg ICAgICAgICAgICAgICAgICAgICAqIFg4NkVNVUxfRVhDRVBUSU9OIGhlcmUgaW1wbGllcyBhIG1p c3NpbmcgZmVhdHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAg ICAgIGlmICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQorICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09L QVkgKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NF UlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FTlhJTzsK KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisK KyAgICAgICAgICAgICAgICAgICAgaWYgKCAhdmFsICkKKyAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRpbnVlOyAvKiBTa2lwIGVtcHR5IE1TUnMuICovCisKKyAgICAgICAgICAgICAgICAgICAg aWYgKCBpIDwgdm1zcnMtPm1zcl9jb3VudCAmJiAhcmV0ICkKKyAgICAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgICAgbXNyLmluZGV4ID0gbXNyc1tqXTsKKyAgICAgICAg ICAgICAgICAgICAgICAgIG1zci5yZXNlcnZlZCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAg ICBtc3IudmFsdWUgPSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvcHlfdG9f Z3Vlc3Rfb2Zmc2V0KHZtc3JzLT5tc3JzLCBpLCAmbXNyLCAxKSApCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0ID0gLUVGQVVMVDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAg aWYgKCBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfREJFWFQpICkKICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBqOwpAQCAtMTM3NSw2ICsxNDE0LDEx IEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCiAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKCBtc3Iu aW5kZXggKQogICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIE1TUl9JTlRF TF9NSVNDX0ZFQVRVUkVTX0VOQUJMRVM6CisgICAgICAgICAgICAgICAgICAgIGlmICggZ3Vlc3Rf d3Jtc3IodiwgbXNyLmluZGV4LCBtc3IudmFsdWUpICE9IFg4NkVNVUxfT0tBWSApCisgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisK ICAgICAgICAgICAgICAgICBjYXNlIE1TUl9BTUQ2NF9EUjBfQUREUkVTU19NQVNLOgogICAgICAg ICAgICAgICAgICAgICBpZiAoICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfREJFWFQpIHx8CiAg ICAgICAgICAgICAgICAgICAgICAgICAgKG1zci52YWx1ZSA+PiAzMikgKQpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggYzc2 NWE1ZS4uN2YxOGYzYiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94 ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC0xMzIyLDExICsxMzIyLDE0IEBAIHN0YXRpYyBpbnQg aHZtX2xvYWRfY3B1X3hzYXZlX3N0YXRlcyhzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2Nv bnRleHRfdCAqaCkKIH0KIAogI2RlZmluZSBIVk1fQ1BVX01TUl9TSVpFKGNudCkgb2Zmc2V0b2Yo c3RydWN0IGh2bV9tc3IsIG1zcltjbnRdKQotc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9z dGx5IG1zcl9jb3VudF9tYXg7CitzdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgbXNy X2NvdW50X21heCA9IDE7CiAKIHN0YXRpYyBpbnQgaHZtX3NhdmVfY3B1X21zcnMoc3RydWN0IGRv bWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiB7CiAgICAgc3RydWN0IHZjcHUgKnY7 CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IG1zcnNbXSA9IHsKKyAgICAgICAgTVNSX0lOVEVM X01JU0NfRkVBVFVSRVNfRU5BQkxFUywKKyAgICB9OwogCiAgICAgZm9yX2VhY2hfdmNwdSAoIGQs IHYgKQogICAgIHsKQEAgLTEzNDAsNiArMTM0MywzMiBAQCBzdGF0aWMgaW50IGh2bV9zYXZlX2Nw dV9tc3JzKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgICAg ICBjdHh0ID0gKHN0cnVjdCBodm1fbXNyICopJmgtPmRhdGFbaC0+Y3VyXTsKICAgICAgICAgY3R4 dC0+Y291bnQgPSAwOwogCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShtc3Jz KTsgKytpICkKKyAgICAgICAgeworICAgICAgICAgICAgdWludDY0X3QgdmFsOworICAgICAgICAg ICAgaW50IHJjID0gZ3Vlc3RfcmRtc3IodiwgbXNyc1tpXSwgJnZhbCk7CisKKyAgICAgICAgICAg IC8qCisgICAgICAgICAgICAgKiBJdCBpcyB0aGUgcHJvZ3JhbW1lcnMgcmVzcG9uc2liaWxpdHkg dG8gZW5zdXJlIHRoYXQgbXNyc1tdCisgICAgICAgICAgICAgKiBjb250YWluIGdlbmVyYWxseS1y ZWFkYWJsZSBNU1JzLiAgWDg2RU1VTF9FWENFUFRJT04gaGVyZQorICAgICAgICAgICAgICogaW1w bGllcyBhIG1pc3NpbmcgZmVhdHVyZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYg KCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiApCisgICAgICAgICAgICAgICAgY29udGludWU7CisK KyAgICAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICByZXR1 cm4gLUVOWElPOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoICF2YWwgKQorICAg ICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBTa2lwIGVtcHR5IE1TUnMuICovCisKKyAgICAgICAg ICAgIGN0eHQtPm1zcltjdHh0LT5jb3VudF0uaW5kZXggPSBtc3JzW2ldOworICAgICAgICAgICAg Y3R4dC0+bXNyW2N0eHQtPmNvdW50KytdLnZhbCA9IHZhbDsKKyAgICAgICAgfQorCiAgICAgICAg IGlmICggaHZtX2Z1bmNzLnNhdmVfbXNyICkKICAgICAgICAgICAgIGh2bV9mdW5jcy5zYXZlX21z cih2LCBjdHh0KTsKIApAQCAtMTQyNiw2ICsxNDU1LDE1IEBAIHN0YXRpYyBpbnQgaHZtX2xvYWRf Y3B1X21zcnMoc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCiAgICAg ewogICAgICAgICBzd2l0Y2ggKCBjdHh0LT5tc3JbaV0uaW5kZXggKQogICAgICAgICB7CisgICAg ICAgICAgICBpbnQgcmM7CisKKyAgICAgICAgY2FzZSBNU1JfSU5URUxfTUlTQ19GRUFUVVJFU19F TkFCTEVTOgorICAgICAgICAgICAgcmMgPSBndWVzdF93cm1zcih2LCBjdHh0LT5tc3JbaV0uaW5k ZXgsIGN0eHQtPm1zcltpXS52YWwpOworCisgICAgICAgICAgICBpZiAoIHJjICE9IFg4NkVNVUxf T0tBWSApCisgICAgICAgICAgICAgICAgZXJyID0gLUVOWElPOworICAgICAgICAgICAgYnJlYWs7 CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmICggIWN0eHQtPm1zcltpXS5fcnN2 ZCApCiAgICAgICAgICAgICAgICAgZXJyID0gLUVOWElPOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21zci5jIGIveGVuL2FyY2gveDg2L21zci5jCmluZGV4IGJhYmE0NGYuLjMxOTgzZWQgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tc3IuYworKysgYi94ZW4vYXJjaC94ODYvbXNyLmMKQEAg LTE1MCw2ICsxNTAsNyBAQCBpbnQgZ3Vlc3RfcmRtc3IoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVp bnQzMl90IG1zciwgdWludDY0X3QgKnZhbCkKIAogaW50IGd1ZXN0X3dybXNyKHN0cnVjdCB2Y3B1 ICp2LCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90IHZhbCkKIHsKKyAgICBjb25zdCBzdHJ1Y3QgdmNw dSAqY3VyciA9IGN1cnJlbnQ7CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKICAg ICBzdHJ1Y3QgbXNyX2RvbWFpbl9wb2xpY3kgKmRwID0gZC0+YXJjaC5tc3I7CiAgICAgc3RydWN0 IG1zcl92Y3B1X3BvbGljeSAqdnAgPSB2LT5hcmNoLm1zcjsKQEAgLTE3Niw3ICsxNzcsNyBAQCBp bnQgZ3Vlc3Rfd3Jtc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IG1zciwgdWludDY0X3QgdmFs KQogICAgICAgICB2cC0+bWlzY19mZWF0dXJlc19lbmFibGVzLmNwdWlkX2ZhdWx0aW5nID0KICAg ICAgICAgICAgIHZhbCAmIE1TUl9NSVNDX0ZFQVRVUkVTX0NQVUlEX0ZBVUxUSU5HOwogCi0gICAg ICAgIGlmICggaXNfaHZtX2RvbWFpbihkKSAmJiBjcHVfaGFzX2NwdWlkX2ZhdWx0aW5nICYmCisg ICAgICAgIGlmICggdiA9PSBjdXJyICYmIGlzX2h2bV9kb21haW4oZCkgJiYgY3B1X2hhc19jcHVp ZF9mYXVsdGluZyAmJgogICAgICAgICAgICAgIChvbGRfY3B1aWRfZmF1bHRpbmcgXiB2cC0+bWlz Y19mZWF0dXJlc19lbmFibGVzLmNwdWlkX2ZhdWx0aW5nKSApCiAgICAgICAgICAgICBjdHh0X3N3 aXRjaF9sZXZlbGxpbmcodik7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9tc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLmgKaW5kZXggNzUxZmEy NS4uNDE3MzJhNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3IuaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L21zci5oCkBAIC0yMzEsNiArMjMxLDkgQEAgaW50IGluaXRfdmNw dV9tc3JfcG9saWN5KHN0cnVjdCB2Y3B1ICp2KTsKICAqIG5vdCAoeWV0KSBoYW5kbGVkIGJ5IGl0 IGFuZCBtdXN0IGJlIHByb2Nlc3NlZCBieSBsZWdhY3kgaGFuZGxlcnMuIFN1Y2gKICAqIGJlaGF2 aW91ciBpcyBuZWVkZWQgZm9yIHRyYW5zaXRpb24gcGVyaW9kIHVudGlsIGFsbCByZC93cm1zciBh cmUgaGFuZGxlZAogICogYnkgdGhlIG5ldyBNU1IgaW5mcmFzdHJ1Y3R1cmUuCisgKgorICogVGhl c2UgZnVuY3Rpb25zIGFyZSBhbHNvIHVzZWQgYnkgdGhlIG1pZ3JhdGlvbiBsb2dpYywgc28gbmVl ZCB0byBjb3BlIHdpdGgKKyAqIGJlaW5nIHVzZWQgb3V0c2lkZSBvZiB2J3MgY29udGV4dC4KICAq LwogaW50IGd1ZXN0X3JkbXNyKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBtc3IsIHVp bnQ2NF90ICp2YWwpOwogaW50IGd1ZXN0X3dybXNyKHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBt c3IsIHVpbnQ2NF90IHZhbCk7Ci0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=