From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 17/19] x86/hvm: Avoid __hvm_copy() raising #PF behind the emulators back Date: Mon, 28 Nov 2016 11:13:34 +0000 Message-ID: <1480331616-6165-18-git-send-email-andrew.cooper3@citrix.com> References: <1480331616-6165-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: <1480331616-6165-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: Kevin Tian , Jan Beulich , Andrew Cooper , Tim Deegan , Paul Durrant , Jun Nakajima List-Id: xen-devel@lists.xenproject.org RHJvcCB0aGUgY2FsbCB0byBodm1faW5qZWN0X3BhZ2VfZmF1bHQoKSBpbiBfX2h2bV9jb3B5KCks IGFuZCByZXF1aXJlIGNhbGxlcnMKdG8gaW5qZWN0IHRoZSBwYWdlZmF1bHQgdGhlbXNlbHZlcy4K Ck5vIGZ1bmN0aW9uYWwgY2hhbmdlLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5k cmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3Vz ZS5jb20+CkNDOiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpDQzogVGlt IERlZWdhbiA8dGltQHhlbi5vcmc+CkNDOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRl bC5jb20+CkNDOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KLS0tCiB4ZW4vYXJj aC94ODYvaHZtL2VtdWxhdGUuYyAgICAgICAgfCAgMiArKwogeGVuL2FyY2gveDg2L2h2bS9odm0u YyAgICAgICAgICAgIHwgMTEgKysrKysrKysrLS0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXgu YyAgICAgICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCiB4ZW4vYXJjaC94ODYvbW0vc2hhZG93 L2NvbW1vbi5jICAgfCAgMSArCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdXBwb3J0LmggfCAg NCArLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2 L2h2bS9lbXVsYXRlLmMKaW5kZXggZWZkNmQzMi4uZjA3YzAyNiAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKQEAg LTc5OSw2ICs3OTksNyBAQCBzdGF0aWMgaW50IF9faHZtZW11bF9yZWFkKAogICAgIGNhc2UgSFZN Q09QWV9va2F5OgogICAgICAgICBicmVhazsKICAgICBjYXNlIEhWTUNPUFlfYmFkX2d2YV90b19n Zm46CisgICAgICAgIHg4Nl9lbXVsX3BhZ2VmYXVsdChwZmluZm8uZWMsIHBmaW5mby5saW5lYXIs ICZodm1lbXVsX2N0eHQtPmN0eHQpOwogICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047 CiAgICAgY2FzZSBIVk1DT1BZX2JhZF9nZm5fdG9fbWZuOgogICAgICAgICBpZiAoIGFjY2Vzc190 eXBlID09IGh2bV9hY2Nlc3NfaW5zbl9mZXRjaCApCkBAIC05MDUsNiArOTA2LDcgQEAgc3RhdGlj IGludCBodm1lbXVsX3dyaXRlKAogICAgIGNhc2UgSFZNQ09QWV9va2F5OgogICAgICAgICBicmVh azsKICAgICBjYXNlIEhWTUNPUFlfYmFkX2d2YV90b19nZm46CisgICAgICAgIHg4Nl9lbXVsX3Bh Z2VmYXVsdChwZmluZm8uZWMsIHBmaW5mby5saW5lYXIsICZodm1lbXVsX2N0eHQtPmN0eHQpOwog ICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAgICAgY2FzZSBIVk1DT1BZX2JhZF9n Zm5fdG9fbWZuOgogICAgICAgICByZXR1cm4gaHZtZW11bF9saW5lYXJfbW1pb193cml0ZShhZGRy LCBieXRlcywgcF9kYXRhLCBwZmVjLCBodm1lbXVsX2N0eHQsIDApOwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggMzdlYWVl Mi4uY2U3NzUyMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4v YXJjaC94ODYvaHZtL2h2bS5jCkBAIC0yOTI3LDYgKzI5MjcsOCBAQCB2b2lkIGh2bV90YXNrX3N3 aXRjaCgKIAogICAgIHJjID0gaHZtX2NvcHlfZnJvbV9ndWVzdF9saW5lYXIoCiAgICAgICAgICZ0 c3MsIHByZXZfdHIuYmFzZSwgc2l6ZW9mKHRzcyksIFBGRUNfcGFnZV9wcmVzZW50LCAmcGZpbmZv KTsKKyAgICBpZiAoIHJjID09IEhWTUNPUFlfYmFkX2d2YV90b19nZm4gKQorICAgICAgICBodm1f aW5qZWN0X3BhZ2VfZmF1bHQocGZpbmZvLmVjLCBwZmluZm8ubGluZWFyKTsKICAgICBpZiAoIHJj ICE9IEhWTUNPUFlfb2theSApCiAgICAgICAgIGdvdG8gb3V0OwogCkBAIC0yOTY1LDExICsyOTY3 LDE1IEBAIHZvaWQgaHZtX3Rhc2tfc3dpdGNoKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mZnNldG9mKHR5cGVvZih0c3MpLCB0cmFjZSkgLQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVvZih0c3MpLCBlaXApLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBGRUNfcGFnZV9wcmVzZW50LCAmcGZpbmZvKTsKKyAgICBp ZiAoIHJjID09IEhWTUNPUFlfYmFkX2d2YV90b19nZm4gKQorICAgICAgICBodm1faW5qZWN0X3Bh Z2VfZmF1bHQocGZpbmZvLmVjLCBwZmluZm8ubGluZWFyKTsKICAgICBpZiAoIHJjICE9IEhWTUNP UFlfb2theSApCiAgICAgICAgIGdvdG8gb3V0OwogCiAgICAgcmMgPSBodm1fY29weV9mcm9tX2d1 ZXN0X2xpbmVhcigKICAgICAgICAgJnRzcywgdHIuYmFzZSwgc2l6ZW9mKHRzcyksIFBGRUNfcGFn ZV9wcmVzZW50LCAmcGZpbmZvKTsKKyAgICBpZiAoIHJjID09IEhWTUNPUFlfYmFkX2d2YV90b19n Zm4gKQorICAgICAgICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZpbmZvLmVjLCBwZmluZm8ubGlu ZWFyKTsKICAgICAvKgogICAgICAqIE5vdGU6IFRoZSBIVk1DT1BZX2dmbl9zaGFyZWQgY2FzZSBj b3VsZCBiZSBvcHRpbWlzZWQsIGlmIHRoZSBjYWxsZWUKICAgICAgKiBmdW5jdGlvbnMga25ldyB3 ZSB3YW50IFJPIGFjY2Vzcy4KQEAgLTMwMTIsNyArMzAxOCwxMCBAQCB2b2lkIGh2bV90YXNrX3N3 aXRjaCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRzcy5iYWNrX2xp bmssIHNpemVvZih0c3MuYmFja19saW5rKSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnBmaW5mbyk7CiAgICAgICAgIGlmICggcmMgPT0gSFZNQ09QWV9iYWRfZ3Zh X3RvX2dmbiApCisgICAgICAgIHsKKyAgICAgICAgICAgIGh2bV9pbmplY3RfcGFnZV9mYXVsdChw ZmluZm8uZWMsIHBmaW5mby5saW5lYXIpOwogICAgICAgICAgICAgZXhuX3JhaXNlZCA9IDE7Cisg ICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIHJjICE9IEhWTUNPUFlfb2theSApCiAgICAgICAg ICAgICBnb3RvIG91dDsKICAgICB9CkBAIC0zMTE0LDggKzMxMjMsNiBAQCBzdGF0aWMgZW51bSBo dm1fY29weV9yZXN1bHQgX19odm1fY29weSgKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgIHBmaW5mby0+bGluZWFyID0gYWRkcjsKICAgICAgICAgICAgICAgICAgICAgcGZp bmZvLT5lYyA9IHBmZWM7Ci0KLSAgICAgICAgICAgICAgICAgICAgaHZtX2luamVjdF9wYWdlX2Zh dWx0KHBmZWMsIGFkZHIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1 cm4gSFZNQ09QWV9iYWRfZ3ZhX3RvX2dmbjsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYwpp bmRleCBmZDdlYTBhLi5lNmU5ZWJkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92 dm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCkBAIC0zOTYsNyArMzk2LDYg QEAgc3RhdGljIGludCBkZWNvZGVfdm14X2luc3Qoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Ms CiAgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OwogICAgIHVuaW9uIHZteF9pbnN0X2luZm8g aW5mbzsKICAgICBzdHJ1Y3Qgc2VnbWVudF9yZWdpc3RlciBzZWc7Ci0gICAgcGFnZWZhdWx0X2lu Zm9fdCBwZmluZm87CiAgICAgdW5zaWduZWQgbG9uZyBiYXNlLCBpbmRleCwgc2VnX2Jhc2UsIGRp c3AsIG9mZnNldDsKICAgICBpbnQgc2NhbGUsIHNpemU7CiAKQEAgLTQ1MSwxMCArNDUwLDE3IEBA IHN0YXRpYyBpbnQgZGVjb2RlX3ZteF9pbnN0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAog ICAgICAgICAgICAgICBvZmZzZXQgKyBzaXplIC0gMSA+IHNlZy5saW1pdCkgKQogICAgICAgICAg ICAgZ290byBncF9mYXVsdDsKIAotICAgICAgICBpZiAoIHBvcGVyYW5kUyAhPSBOVUxMICYmCi0g ICAgICAgICAgICAgaHZtX2NvcHlfZnJvbV9ndWVzdF9saW5lYXIocG9wZXJhbmRTLCBiYXNlLCBz aXplLCAwLCAmcGZpbmZvKQotICAgICAgICAgICAgICAgICAgIT0gSFZNQ09QWV9va2F5ICkKLSAg ICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKyAgICAgICAgaWYgKCBwb3BlcmFu ZFMgIT0gTlVMTCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHBhZ2VmYXVsdF9pbmZvX3QgcGZp bmZvOworICAgICAgICAgICAgaW50IHJjID0gaHZtX2NvcHlfZnJvbV9ndWVzdF9saW5lYXIocG9w ZXJhbmRTLCBiYXNlLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMCwgJnBmaW5mbyk7CisKKyAgICAgICAgICAgIGlmICggcmMgPT0gSFZNQ09Q WV9iYWRfZ3ZhX3RvX2dmbiApCisgICAgICAgICAgICAgICAgaHZtX2luamVjdF9wYWdlX2ZhdWx0 KHBmaW5mby5lYywgcGZpbmZvLmxpbmVhcik7CisgICAgICAgICAgICBpZiAoIHJjICE9IEhWTUNP UFlfb2theSApCisgICAgICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworICAg ICAgICB9CiAgICAgICAgIGRlY29kZS0+bWVtID0gYmFzZTsKICAgICAgICAgZGVjb2RlLT5sZW4g PSBzaXplOwogICAgIH0KQEAgLTE2MjMsNiArMTYyOSw4IEBAIGludCBudm14X2hhbmRsZV92bXB0 cnN0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIGdwYSA9IG52Y3B1LT5udl92dm1j eGFkZHI7CiAKICAgICByYyA9IGh2bV9jb3B5X3RvX2d1ZXN0X2xpbmVhcihkZWNvZGUubWVtLCAm Z3BhLCBkZWNvZGUubGVuLCAwLCAmcGZpbmZvKTsKKyAgICBpZiAoIHJjID09IEhWTUNPUFlfYmFk X2d2YV90b19nZm4gKQorICAgICAgICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZpbmZvLmVjLCBw ZmluZm8ubGluZWFyKTsKICAgICBpZiAoIHJjICE9IEhWTUNPUFlfb2theSApCiAgICAgICAgIHJl dHVybiBYODZFTVVMX0VYQ0VQVElPTjsKIApAQCAtMTY5NCw2ICsxNzAyLDggQEAgaW50IG52bXhf aGFuZGxlX3ZtcmVhZChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICBzd2l0Y2ggKCBk ZWNvZGUudHlwZSApIHsKICAgICBjYXNlIFZNWF9JTlNUX01FTVJFR19UWVBFX01FTU9SWToKICAg ICAgICAgcmMgPSBodm1fY29weV90b19ndWVzdF9saW5lYXIoZGVjb2RlLm1lbSwgJnZhbHVlLCBk ZWNvZGUubGVuLCAwLCAmcGZpbmZvKTsKKyAgICAgICAgaWYgKCByYyA9PSBIVk1DT1BZX2JhZF9n dmFfdG9fZ2ZuICkKKyAgICAgICAgICAgIGh2bV9pbmplY3RfcGFnZV9mYXVsdChwZmluZm8uZWMs IHBmaW5mby5saW5lYXIpOwogICAgICAgICBpZiAoIHJjICE9IEhWTUNPUFlfb2theSApCiAgICAg ICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAgICAgICAgIGJyZWFrOwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyBiL3hlbi9hcmNoL3g4Ni9tbS9z aGFkb3cvY29tbW9uLmMKaW5kZXggMDc2MGU3Ni4uZmJlNDllMSAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L21tL3NoYWRvdy9jb21tb24uYworKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2Nv bW1vbi5jCkBAIC0xOTgsNiArMTk4LDcgQEAgaHZtX3JlYWQoZW51bSB4ODZfc2VnbWVudCBzZWcs CiAgICAgY2FzZSBIVk1DT1BZX29rYXk6CiAgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7CiAg ICAgY2FzZSBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuOgorICAgICAgICB4ODZfZW11bF9wYWdlZmF1 bHQocGZpbmZvLmVjLCBwZmluZm8ubGluZWFyLCAmc2hfY3R4dC0+Y3R4dCk7CiAgICAgICAgIHJl dHVybiBYODZFTVVMX0VYQ0VQVElPTjsKICAgICBjYXNlIEhWTUNPUFlfYmFkX2dmbl90b19tZm46 CiAgICAgY2FzZSBIVk1DT1BZX3VuaGFuZGxlYWJsZToKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL3N1cHBvcnQuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQu aAppbmRleCA3ODM0OWY4Li4zZDc2N2Q3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2 L2h2bS9zdXBwb3J0LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3VwcG9ydC5oCkBA IC04NSw5ICs4NSw3IEBAIGVudW0gaHZtX2NvcHlfcmVzdWx0IGh2bV9jb3B5X2Zyb21fZ3Vlc3Rf cGh5cygKICAqICBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuOiBTb21lIGd1ZXN0IHZpcnR1YWwgYWRk cmVzcyBkaWQgbm90IGhhdmUgYSB2YWxpZAogICogICAgICAgICAgICAgICAgICAgICAgICAgIG1h cHBpbmcgdG8gYSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzLiAgVGhlCiAgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFnZWZhdWx0X2luZm9fdCBzdHJ1Y3R1cmUgd2lsbCBiZSBmaWxsZWQgaW4g aWYKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCwgYW5kIGEgcGFnZSBmYXVs dCBleGNlcHRpb24gaXMKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5 IHF1ZXVlZCBmb3IgaW5qZWN0aW9uIGludG8gdGhlCi0gKiAgICAgICAgICAgICAgICAgICAgICAg ICAgY3VycmVudCBIVk0gVkNQVS4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRl ZC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgcGFnZWZhdWx0X2luZm8KIHsKLS0gCjIuMS40CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==