From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH] x86/hvm: Fix mapping corner case during task switching. Date: Tue, 28 Aug 2018 19:17:38 +0100 Message-ID: <1535480258-26918-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 , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org aHZtX21hcF9lbnRyeSgpIGNhbiBmYWlsIGZvciBhIG51bWJlciBvZiByZWFzb25zLCBpbmNsdWRp bmcgZm9yIGEgbWlzYWxpZ25lZApMRFQvR0RUIGFjY2VzcyB3aGljaCBjcm9zc2VzIGEgNEsgYm91 bmRhcnkuICBBcmNoaXRlY3R1cmFsbHkgc3BlYWtpbmcsIHRoaXMKc2hvdWxkIGJlIGZpeGVkLCBi dXQgTG9uZyBNb2RlIGRvZXNuJ3Qgc3VwcG9ydCB0YXNrIHN3aXRjaGVzLCBhbmQgbm8gMzJiaXQg T1MKaXMgZ29pbmcgdG8gbWlzYWxpZ24gaXRzIExEVC9HRFQgYmFzZSwgd2hpY2ggaXMgd2h5IHRo aXMgdGFzayBpc24ndCB2ZXJ5IGhpZ2gKb24gdGhlIFRPRE8gbGlzdC4KCkhvd2V2ZXIsIHRoZSBo dm1fbWFwX2ZhaWwgZXJyb3IgbGFiZWwgcmV0dXJucyBmYWlsdXJlIHdpdGhvdXQgcmFpc2luZyBh bgpleGNlcHRpb24sIHdoaWNoIGludGVyZmVyZXMgd2l0aCBodm1fdGFza19zd2l0Y2goKSdzIGV4 Y2VwdGlvbiB0cmFja2luZywgYW5kCmNhbiBjYXVzZSBpdCB0byBmaW5pc2ggYW5kIHJldHVybiB0 byBndWVzdCBjb250ZXh0IGFzIGlmIHRoZSB0YXNrIHN3aXRjaCBoYWQKY29tcGxldGVkIHN1Y2Nl c3NmdWxseS4KClJlc29sdmUgdGhpcyBjb3JuZXIgY2FzZSBieSBmb2xkaW5nIGFsbCB0aGUgZmFp bHVyZSBwYXRocyB0b2dldGhlciwgd2hpY2gKY2F1c2VzIGFuIGh2bV9tYXBfZW50cnkoKSBmYWls dXJlIHRvIHJlc3VsdCBpbiAjVFNbU0VMXS4gIGh2bV91bm1hcF9lbnRyeSgpCmNvcGVzIGZpbmUg d2l0aCBhIE5VTEwgcG9pbnRlciBzbyBjYW4gYmUgY2FsbGVkIHVuY29uZGl0aW9uYWxseS4KCklu IHByYWN0aWNlLCB0aGlzIGlzIGp1c3QgYSBsYXRlbnQgY29ybmVyIGNhc2UgYXMgYWxsIGh2bV9t YXBfZW50cnkoKSBmYWlsdXJlcwpjcmFzaCB0aGUgZG9tYWluLCBidXQgaXQgc2hvdWxkIGJlIGZp eGVkIG5ldmVydGhlbGVzcy4KCkZpbmFsbHksIHJlbmFtZSBodm1fbG9hZF9zZWdtZW50X3NlbGVj dG9yKCkgdG8gdGFza19zd2l0Y2hfbG9hZF9zZWcoKSB0byBhdm9pZApnaXZpbmcgdGhlIGltcHJl c3Npb24gdGhhdCBpdCBpcyB1c2FibGUgZm9yIGdlbmVyYWwgc2VnbWVudCBsb2FkaW5nLgoKU2ln bmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0t CkNDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+CkNDOiBXZWkgTGl1IDx3ZWkubGl1 MkBjaXRyaXguY29tPgpDQzogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ Ci0tLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyB8IDUxICsrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9u cygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0u YyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggNzJjNTFmYS4uMmVhYWJmMSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5j CkBAIC0yNzA0LDExICsyNzA0LDExIEBAIHN0YXRpYyB2b2lkIGh2bV91bm1hcF9lbnRyeSh2b2lk ICpwKQogICAgIGh2bV91bm1hcF9ndWVzdF9mcmFtZShwLCAwKTsKIH0KIAotc3RhdGljIGludCBo dm1fbG9hZF9zZWdtZW50X3NlbGVjdG9yKAorc3RhdGljIGludCB0YXNrX3N3aXRjaF9sb2FkX3Nl ZygKICAgICBlbnVtIHg4Nl9zZWdtZW50IHNlZywgdWludDE2X3Qgc2VsLCB1bnNpZ25lZCBpbnQg Y3BsLCB1bnNpZ25lZCBpbnQgZWZsYWdzKQogewogICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVy IGRlc2N0YWIsIHNlZ3I7Ci0gICAgc3RydWN0IGRlc2Nfc3RydWN0ICpwZGVzYywgZGVzYzsKKyAg ICBzdHJ1Y3QgZGVzY19zdHJ1Y3QgKnBkZXNjID0gTlVMTCwgZGVzYzsKICAgICB1OCBkcGwsIHJw bDsKICAgICBib29sX3Qgd3JpdGFibGU7CiAgICAgaW50IGZhdWx0X3R5cGUgPSBUUkFQX2ludmFs aWRfdHNzOwpAQCAtMjcyOCw3ICsyNzI4LDcgQEAgc3RhdGljIGludCBodm1fbG9hZF9zZWdtZW50 X3NlbGVjdG9yKAogICAgIGlmICggKHNlbCAmIDB4ZmZmYykgPT0gMCApCiAgICAgewogICAgICAg ICBpZiAoIChzZWcgPT0geDg2X3NlZ19jcykgfHwgKHNlZyA9PSB4ODZfc2VnX3NzKSApCi0gICAg ICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICBnb3RvIGZhdWx0OwogICAgICAgICBtZW1z ZXQoJnNlZ3IsIDAsIHNpemVvZihzZWdyKSk7CiAgICAgICAgIHNlZ3Iuc2VsID0gc2VsOwogICAg ICAgICBodm1fc2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgc2VnLCAmc2Vncik7CkBAIC0yNzM3LDI5 ICsyNzM3LDI5IEBAIHN0YXRpYyBpbnQgaHZtX2xvYWRfc2VnbWVudF9zZWxlY3RvcigKIAogICAg IC8qIExEVCBkZXNjcmlwdG9yIG11c3QgYmUgaW4gdGhlIEdEVC4gKi8KICAgICBpZiAoIChzZWcg PT0geDg2X3NlZ19sZHRyKSAmJiAoc2VsICYgNCkgKQotICAgICAgICBnb3RvIGZhaWw7CisgICAg ICAgIGdvdG8gZmF1bHQ7CiAKICAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIoCiAgICAgICAg IHYsIChzZWwgJiA0KSA/IHg4Nl9zZWdfbGR0ciA6IHg4Nl9zZWdfZ2R0ciwgJmRlc2N0YWIpOwog CiAgICAgLyogU2VnbWVudCBub3QgdmFsaWQgZm9yIHVzZSAoY29va2VkIG1lYW5pbmcgb2YgLnAp PyAqLwogICAgIGlmICggIWRlc2N0YWIucCApCi0gICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAg Z290byBmYXVsdDsKIAogICAgIC8qIENoZWNrIGFnYWluc3QgZGVzY3JpcHRvciB0YWJsZSBsaW1p dC4gKi8KICAgICBpZiAoICgoc2VsICYgMHhmZmY4KSArIDcpID4gZGVzY3RhYi5saW1pdCApCi0g ICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgZ290byBmYXVsdDsKIAogICAgIHBkZXNjID0gaHZt X21hcF9lbnRyeShkZXNjdGFiLmJhc2UgKyAoc2VsICYgMHhmZmY4KSwgJndyaXRhYmxlKTsKICAg ICBpZiAoIHBkZXNjID09IE5VTEwgKQotICAgICAgICBnb3RvIGh2bV9tYXBfZmFpbDsKKyAgICAg ICAgZ290byBmYXVsdDsKIAogICAgIGRvIHsKICAgICAgICAgZGVzYyA9ICpwZGVzYzsKIAogICAg ICAgICAvKiBMRFQgZGVzY3JpcHRvciBpcyBhIHN5c3RlbSBzZWdtZW50LiBBbGwgb3RoZXJzIGFy ZSBjb2RlL2RhdGEuICovCiAgICAgICAgIGlmICggKGRlc2MuYiAmICgxdTw8MTIpKSA9PSAoKHNl ZyA9PSB4ODZfc2VnX2xkdHIpIDw8IDEyKSApCi0gICAgICAgICAgICBnb3RvIHVubWFwX2FuZF9m YWlsOworICAgICAgICAgICAgZ290byBmYXVsdDsKIAogICAgICAgICBkcGwgPSAoZGVzYy5iID4+ IDEzKSAmIDM7CiAgICAgICAgIHJwbCA9IHNlbCAmIDM7CkBAIC0yNzY5LDI3ICsyNzY5LDI3IEBA IHN0YXRpYyBpbnQgaHZtX2xvYWRfc2VnbWVudF9zZWxlY3RvcigKICAgICAgICAgY2FzZSB4ODZf c2VnX2NzOgogICAgICAgICAgICAgLyogQ29kZSBzZWdtZW50PyAqLwogICAgICAgICAgICAgaWYg KCAhKGRlc2MuYiAmIF9TRUdNRU5UX0NPREUpICkKLSAgICAgICAgICAgICAgICBnb3RvIHVubWFw X2FuZF9mYWlsOworICAgICAgICAgICAgICAgIGdvdG8gZmF1bHQ7CiAgICAgICAgICAgICAvKiBO b24tY29uZm9ybWluZyBzZWdtZW50OiBjaGVjayBEUEwgYWdhaW5zdCBSUEwuICovCiAgICAgICAg ICAgICBpZiAoICEoZGVzYy5iICYgX1NFR01FTlRfRUMpICYmIChkcGwgIT0gcnBsKSApCi0gICAg ICAgICAgICAgICAgZ290byB1bm1hcF9hbmRfZmFpbDsKKyAgICAgICAgICAgICAgICBnb3RvIGZh dWx0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgeDg2X3NlZ19zczoKICAgICAg ICAgICAgIC8qIFdyaXRhYmxlIGRhdGEgc2VnbWVudD8gKi8KICAgICAgICAgICAgIGlmICggKGRl c2MuYiAmIChfU0VHTUVOVF9DT0RFfF9TRUdNRU5UX1dSKSkgIT0gX1NFR01FTlRfV1IgKQotICAg ICAgICAgICAgICAgIGdvdG8gdW5tYXBfYW5kX2ZhaWw7CisgICAgICAgICAgICAgICAgZ290byBm YXVsdDsKICAgICAgICAgICAgIGlmICggKGRwbCAhPSBjcGwpIHx8IChkcGwgIT0gcnBsKSApCi0g ICAgICAgICAgICAgICAgZ290byB1bm1hcF9hbmRfZmFpbDsKKyAgICAgICAgICAgICAgICBnb3Rv IGZhdWx0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgeDg2X3NlZ19sZHRyOgog ICAgICAgICAgICAgLyogTERUIHN5c3RlbSBzZWdtZW50PyAqLwogICAgICAgICAgICAgaWYgKCAo ZGVzYy5iICYgX1NFR01FTlRfVFlQRSkgIT0gKDJ1PDw4KSApCi0gICAgICAgICAgICAgICAgZ290 byB1bm1hcF9hbmRfZmFpbDsKKyAgICAgICAgICAgICAgICBnb3RvIGZhdWx0OwogICAgICAgICAg ICAgZ290byBza2lwX2FjY2Vzc2VkX2ZsYWc7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg ICAvKiBSZWFkYWJsZSBjb2RlIG9yIGRhdGEgc2VnbWVudD8gKi8KICAgICAgICAgICAgIGlmICgg KGRlc2MuYiAmIChfU0VHTUVOVF9DT0RFfF9TRUdNRU5UX1dSKSkgPT0gX1NFR01FTlRfQ09ERSAp Ci0gICAgICAgICAgICAgICAgZ290byB1bm1hcF9hbmRfZmFpbDsKKyAgICAgICAgICAgICAgICBn b3RvIGZhdWx0OwogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIERhdGEgb3Igbm9uLWNv bmZvcm1pbmcgY29kZSBzZWdtZW50OgogICAgICAgICAgICAgICogY2hlY2sgRFBMIGFnYWluc3Qg UlBMIGFuZCBDUEwuCkBAIC0yNzk3LDcgKzI3OTcsNyBAQCBzdGF0aWMgaW50IGh2bV9sb2FkX3Nl Z21lbnRfc2VsZWN0b3IoCiAgICAgICAgICAgICBpZiAoICgoZGVzYy5iICYgKF9TRUdNRU5UX0VD fF9TRUdNRU5UX0NPREUpKSAhPQogICAgICAgICAgICAgICAgICAgKF9TRUdNRU5UX0VDfF9TRUdN RU5UX0NPREUpKQogICAgICAgICAgICAgICAgICAmJiAoKGRwbCA8IGNwbCkgfHwgKGRwbCA8IHJw bCkpICkKLSAgICAgICAgICAgICAgICBnb3RvIHVubWFwX2FuZF9mYWlsOworICAgICAgICAgICAg ICAgIGdvdG8gZmF1bHQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yODA2 LDcgKzI4MDYsNyBAQCBzdGF0aWMgaW50IGh2bV9sb2FkX3NlZ21lbnRfc2VsZWN0b3IoCiAgICAg ICAgIHsKICAgICAgICAgICAgIGZhdWx0X3R5cGUgPSAoc2VnICE9IHg4Nl9zZWdfc3MpID8gVFJB UF9ub19zZWdtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6IFRSQVBfc3RhY2tfZXJyb3I7Ci0gICAgICAgICAgICBnb3RvIHVubWFwX2FuZF9mYWlsOwor ICAgICAgICAgICAgZ290byBmYXVsdDsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKCAhKGRlc2Mu YiAmIDB4MTAwKSAmJiAvKiBFbnN1cmUgQWNjZXNzZWQgZmxhZyBpcyBzZXQgKi8KICAgICAgICAg ICAgICAgd3JpdGFibGUgJiYgLyogZXhjZXB0IGlmIHdlIGFyZSB0byBkaXNjYXJkIHdyaXRlcyAq LwpAQCAtMjgzMSwxMSArMjgzMSwxMCBAQCBzdGF0aWMgaW50IGh2bV9sb2FkX3NlZ21lbnRfc2Vs ZWN0b3IoCiAKICAgICByZXR1cm4gMDsKIAotIHVubWFwX2FuZF9mYWlsOgorIGZhdWx0OgogICAg IGh2bV91bm1hcF9lbnRyeShwZGVzYyk7Ci0gZmFpbDoKICAgICBodm1faW5qZWN0X2h3X2V4Y2Vw dGlvbihmYXVsdF90eXBlLCBzZWwgJiAweGZmZmMpOwotIGh2bV9tYXBfZmFpbDoKKwogICAgIHJl dHVybiAxOwogfQogCkBAIC0zMDA4LDcgKzMwMDcsNyBAQCB2b2lkIGh2bV90YXNrX3N3aXRjaCgK IAogICAgIG5ld19jcGwgPSB0c3MuZWZsYWdzICYgWDg2X0VGTEFHU19WTSA/IDMgOiB0c3MuY3Mg JiAzOwogCi0gICAgaWYgKCBodm1fbG9hZF9zZWdtZW50X3NlbGVjdG9yKHg4Nl9zZWdfbGR0ciwg dHNzLmxkdCwgbmV3X2NwbCwgMCkgKQorICAgIGlmICggdGFza19zd2l0Y2hfbG9hZF9zZWcoeDg2 X3NlZ19sZHRyLCB0c3MubGR0LCBuZXdfY3BsLCAwKSApCiAgICAgICAgIGdvdG8gb3V0OwogCiAg ICAgcmMgPSBodm1fc2V0X2NyMyh0c3MuY3IzLCAxKTsKQEAgLTMwMjksMTIgKzMwMjgsMTIgQEAg dm9pZCBodm1fdGFza19zd2l0Y2goCiAgICAgcmVncy0+cmRpICAgID0gdHNzLmVkaTsKIAogICAg IGV4bl9yYWlzZWQgPSAwOwotICAgIGlmICggaHZtX2xvYWRfc2VnbWVudF9zZWxlY3Rvcih4ODZf c2VnX2VzLCB0c3MuZXMsIG5ld19jcGwsIHRzcy5lZmxhZ3MpIHx8Ci0gICAgICAgICBodm1fbG9h ZF9zZWdtZW50X3NlbGVjdG9yKHg4Nl9zZWdfY3MsIHRzcy5jcywgbmV3X2NwbCwgdHNzLmVmbGFn cykgfHwKLSAgICAgICAgIGh2bV9sb2FkX3NlZ21lbnRfc2VsZWN0b3IoeDg2X3NlZ19zcywgdHNz LnNzLCBuZXdfY3BsLCB0c3MuZWZsYWdzKSB8fAotICAgICAgICAgaHZtX2xvYWRfc2VnbWVudF9z ZWxlY3Rvcih4ODZfc2VnX2RzLCB0c3MuZHMsIG5ld19jcGwsIHRzcy5lZmxhZ3MpIHx8Ci0gICAg ICAgICBodm1fbG9hZF9zZWdtZW50X3NlbGVjdG9yKHg4Nl9zZWdfZnMsIHRzcy5mcywgbmV3X2Nw bCwgdHNzLmVmbGFncykgfHwKLSAgICAgICAgIGh2bV9sb2FkX3NlZ21lbnRfc2VsZWN0b3IoeDg2 X3NlZ19ncywgdHNzLmdzLCBuZXdfY3BsLCB0c3MuZWZsYWdzKSApCisgICAgaWYgKCB0YXNrX3N3 aXRjaF9sb2FkX3NlZyh4ODZfc2VnX2VzLCB0c3MuZXMsIG5ld19jcGwsIHRzcy5lZmxhZ3MpIHx8 CisgICAgICAgICB0YXNrX3N3aXRjaF9sb2FkX3NlZyh4ODZfc2VnX2NzLCB0c3MuY3MsIG5ld19j cGwsIHRzcy5lZmxhZ3MpIHx8CisgICAgICAgICB0YXNrX3N3aXRjaF9sb2FkX3NlZyh4ODZfc2Vn X3NzLCB0c3Muc3MsIG5ld19jcGwsIHRzcy5lZmxhZ3MpIHx8CisgICAgICAgICB0YXNrX3N3aXRj aF9sb2FkX3NlZyh4ODZfc2VnX2RzLCB0c3MuZHMsIG5ld19jcGwsIHRzcy5lZmxhZ3MpIHx8Cisg ICAgICAgICB0YXNrX3N3aXRjaF9sb2FkX3NlZyh4ODZfc2VnX2ZzLCB0c3MuZnMsIG5ld19jcGws IHRzcy5lZmxhZ3MpIHx8CisgICAgICAgICB0YXNrX3N3aXRjaF9sb2FkX3NlZyh4ODZfc2VnX2dz LCB0c3MuZ3MsIG5ld19jcGwsIHRzcy5lZmxhZ3MpICkKICAgICAgICAgZXhuX3JhaXNlZCA9IDE7 CiAKICAgICBpZiAoIHRhc2tzd2l0Y2hfcmVhc29uID09IFRTV19jYWxsX29yX2ludCApCi0tIAoy LjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=