From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v3 22/24] x86/hvm: Avoid __hvm_copy() raising #PF behind the emulators back Date: Wed, 30 Nov 2016 13:50:39 +0000 Message-ID: <1480513841-7565-23-git-send-email-andrew.cooper3@citrix.com> References: <1480513841-7565-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: <1480513841-7565-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 , Paul Durrant List-Id: xen-devel@lists.xenproject.org RHJvcCB0aGUgY2FsbCB0byBodm1faW5qZWN0X3BhZ2VfZmF1bHQoKSBpbiBfX2h2bV9jb3B5KCks IGFuZCByZXF1aXJlIGNhbGxlcnMKdG8gaW5qZWN0IHRoZSBwYWdlZmF1bHQgdGhlbXNlbHZlcy4K ClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ CkFja2VkLWJ5OiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KQWNrZWQtYnk6IEtldmluIFRpYW4g PGtldmluLnRpYW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNo QHN1c2UuY29tPgotLS0KQ0M6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+ Cgp2MzoKICogQ29ycmVjdCBwYXRjaCBkZXNjcmlwdGlvbgogKiBGaXggcmViYXNpbmcgZXJyb3Ig b3ZlciBwcmV2aW91cyBUU1Mgc2VyaWVzCi0tLQogeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMg ICAgICAgIHwgIDIgKysKIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICB8IDE0ICsr KysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMgICAgICAgfCAyMCArKysr KysrKysrKysrKystLS0tLQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyAgIHwgIDEg KwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3VwcG9ydC5oIHwgIDQgKy0tLQogNSBmaWxlcyBj aGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCmlu ZGV4IDAzNWI2NTQuLmNjZjNhYTIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0 ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCkBAIC03OTksNiArNzk5LDcgQEAg c3RhdGljIGludCBfX2h2bWVtdWxfcmVhZCgKICAgICBjYXNlIEhWTUNPUFlfb2theToKICAgICAg ICAgYnJlYWs7CiAgICAgY2FzZSBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuOgorICAgICAgICB4ODZf ZW11bF9wYWdlZmF1bHQocGZpbmZvLmVjLCBwZmluZm8ubGluZWFyLCAmaHZtZW11bF9jdHh0LT5j dHh0KTsKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogICAgIGNhc2UgSFZNQ09Q WV9iYWRfZ2ZuX3RvX21mbjoKICAgICAgICAgaWYgKCBhY2Nlc3NfdHlwZSA9PSBodm1fYWNjZXNz X2luc25fZmV0Y2ggKQpAQCAtOTA1LDYgKzkwNiw3IEBAIHN0YXRpYyBpbnQgaHZtZW11bF93cml0 ZSgKICAgICBjYXNlIEhWTUNPUFlfb2theToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBIVk1D T1BZX2JhZF9ndmFfdG9fZ2ZuOgorICAgICAgICB4ODZfZW11bF9wYWdlZmF1bHQocGZpbmZvLmVj LCBwZmluZm8ubGluZWFyLCAmaHZtZW11bF9jdHh0LT5jdHh0KTsKICAgICAgICAgcmV0dXJuIFg4 NkVNVUxfRVhDRVBUSU9OOwogICAgIGNhc2UgSFZNQ09QWV9iYWRfZ2ZuX3RvX21mbjoKICAgICAg ICAgcmV0dXJuIGh2bWVtdWxfbGluZWFyX21taW9fd3JpdGUoYWRkciwgYnl0ZXMsIHBfZGF0YSwg cGZlYywgaHZtZW11bF9jdHh0LCAwKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZt LmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4IDM3ZWFlZTIuLjM1OTZmMmMgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0u YwpAQCAtMjkyNyw2ICsyOTI3LDggQEAgdm9pZCBodm1fdGFza19zd2l0Y2goCiAKICAgICByYyA9 IGh2bV9jb3B5X2Zyb21fZ3Vlc3RfbGluZWFyKAogICAgICAgICAmdHNzLCBwcmV2X3RyLmJhc2Us IHNpemVvZih0c3MpLCBQRkVDX3BhZ2VfcHJlc2VudCwgJnBmaW5mbyk7CisgICAgaWYgKCByYyA9 PSBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuICkKKyAgICAgICAgaHZtX2luamVjdF9wYWdlX2ZhdWx0 KHBmaW5mby5lYywgcGZpbmZvLmxpbmVhcik7CiAgICAgaWYgKCByYyAhPSBIVk1DT1BZX29rYXkg KQogICAgICAgICBnb3RvIG91dDsKIApAQCAtMjk2NSwxMSArMjk2NywxNSBAQCB2b2lkIGh2bV90 YXNrX3N3aXRjaCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZih0 eXBlb2YodHNzKSwgdHJhY2UpIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv ZmZzZXRvZih0eXBlb2YodHNzKSwgZWlwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQRkVDX3BhZ2VfcHJlc2VudCwgJnBmaW5mbyk7CisgICAgaWYgKCByYyA9PSBIVk1DT1BZ X2JhZF9ndmFfdG9fZ2ZuICkKKyAgICAgICAgaHZtX2luamVjdF9wYWdlX2ZhdWx0KHBmaW5mby5l YywgcGZpbmZvLmxpbmVhcik7CiAgICAgaWYgKCByYyAhPSBIVk1DT1BZX29rYXkgKQogICAgICAg ICBnb3RvIG91dDsKIAogICAgIHJjID0gaHZtX2NvcHlfZnJvbV9ndWVzdF9saW5lYXIoCiAgICAg ICAgICZ0c3MsIHRyLmJhc2UsIHNpemVvZih0c3MpLCBQRkVDX3BhZ2VfcHJlc2VudCwgJnBmaW5m byk7CisgICAgaWYgKCByYyA9PSBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuICkKKyAgICAgICAgaHZt X2luamVjdF9wYWdlX2ZhdWx0KHBmaW5mby5lYywgcGZpbmZvLmxpbmVhcik7CiAgICAgLyoKICAg ICAgKiBOb3RlOiBUaGUgSFZNQ09QWV9nZm5fc2hhcmVkIGNhc2UgY291bGQgYmUgb3B0aW1pc2Vk LCBpZiB0aGUgY2FsbGVlCiAgICAgICogZnVuY3Rpb25zIGtuZXcgd2Ugd2FudCBSTyBhY2Nlc3Mu CkBAIC0zMDEyLDcgKzMwMTgsMTAgQEAgdm9pZCBodm1fdGFza19zd2l0Y2goCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0c3MuYmFja19saW5rLCBzaXplb2YodHNzLmJh Y2tfbGluayksIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwZmlu Zm8pOwogICAgICAgICBpZiAoIHJjID09IEhWTUNPUFlfYmFkX2d2YV90b19nZm4gKQorICAgICAg ICB7CisgICAgICAgICAgICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZpbmZvLmVjLCBwZmluZm8u bGluZWFyKTsKICAgICAgICAgICAgIGV4bl9yYWlzZWQgPSAxOworICAgICAgICB9CiAgICAgICAg IGVsc2UgaWYgKCByYyAhPSBIVk1DT1BZX29rYXkgKQogICAgICAgICAgICAgZ290byBvdXQ7CiAg ICAgfQpAQCAtMzA1MCw3ICszMDU5LDEwIEBAIHZvaWQgaHZtX3Rhc2tfc3dpdGNoKAogICAgICAg ICAgICAgcmMgPSBodm1fY29weV90b19ndWVzdF9saW5lYXIobGluZWFyX2FkZHIsICZlcnJjb2Rl LCBvcHN6LCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBm aW5mbyk7CiAgICAgICAgICAgICBpZiAoIHJjID09IEhWTUNPUFlfYmFkX2d2YV90b19nZm4gKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGh2bV9pbmplY3RfcGFnZV9mYXVsdChwZmlu Zm8uZWMsIHBmaW5mby5saW5lYXIpOwogICAgICAgICAgICAgICAgIGV4bl9yYWlzZWQgPSAxOwor ICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoIHJjICE9IEhWTUNPUFlfb2theSAp CiAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgIH0KQEAgLTMxMTQsOCArMzEyNiw2 IEBAIHN0YXRpYyBlbnVtIGh2bV9jb3B5X3Jlc3VsdCBfX2h2bV9jb3B5KAogICAgICAgICAgICAg ICAgIHsKICAgICAgICAgICAgICAgICAgICAgcGZpbmZvLT5saW5lYXIgPSBhZGRyOwogICAgICAg ICAgICAgICAgICAgICBwZmluZm8tPmVjID0gcGZlYzsKLQotICAgICAgICAgICAgICAgICAgICBo dm1faW5qZWN0X3BhZ2VfZmF1bHQocGZlYywgYWRkcik7CiAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgIHJldHVybiBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuOwogICAgICAgICAgICAg fQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jIGIveGVuL2FyY2gveDg2 L2h2bS92bXgvdnZteC5jCmluZGV4IGZkN2VhMGEuLmU2ZTllYmQgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9odm0vdm14L3Z2bXguYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14LmMK QEAgLTM5Niw3ICszOTYsNiBAQCBzdGF0aWMgaW50IGRlY29kZV92bXhfaW5zdChzdHJ1Y3QgY3B1 X3VzZXJfcmVncyAqcmVncywKICAgICBzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7CiAgICAgdW5p b24gdm14X2luc3RfaW5mbyBpbmZvOwogICAgIHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyIHNlZzsK LSAgICBwYWdlZmF1bHRfaW5mb190IHBmaW5mbzsKICAgICB1bnNpZ25lZCBsb25nIGJhc2UsIGlu ZGV4LCBzZWdfYmFzZSwgZGlzcCwgb2Zmc2V0OwogICAgIGludCBzY2FsZSwgc2l6ZTsKIApAQCAt NDUxLDEwICs0NTAsMTcgQEAgc3RhdGljIGludCBkZWNvZGVfdm14X2luc3Qoc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MsCiAgICAgICAgICAgICAgIG9mZnNldCArIHNpemUgLSAxID4gc2VnLmxp bWl0KSApCiAgICAgICAgICAgICBnb3RvIGdwX2ZhdWx0OwogCi0gICAgICAgIGlmICggcG9wZXJh bmRTICE9IE5VTEwgJiYKLSAgICAgICAgICAgICBodm1fY29weV9mcm9tX2d1ZXN0X2xpbmVhcihw b3BlcmFuZFMsIGJhc2UsIHNpemUsIDAsICZwZmluZm8pCi0gICAgICAgICAgICAgICAgICAhPSBI Vk1DT1BZX29rYXkgKQotICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworICAg ICAgICBpZiAoIHBvcGVyYW5kUyAhPSBOVUxMICkKKyAgICAgICAgeworICAgICAgICAgICAgcGFn ZWZhdWx0X2luZm9fdCBwZmluZm87CisgICAgICAgICAgICBpbnQgcmMgPSBodm1fY29weV9mcm9t X2d1ZXN0X2xpbmVhcihwb3BlcmFuZFMsIGJhc2UsIHNpemUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAmcGZpbmZvKTsKKworICAgICAgICAgICAg aWYgKCByYyA9PSBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuICkKKyAgICAgICAgICAgICAgICBodm1f aW5qZWN0X3BhZ2VfZmF1bHQocGZpbmZvLmVjLCBwZmluZm8ubGluZWFyKTsKKyAgICAgICAgICAg IGlmICggcmMgIT0gSFZNQ09QWV9va2F5ICkKKyAgICAgICAgICAgICAgICByZXR1cm4gWDg2RU1V TF9FWENFUFRJT047CisgICAgICAgIH0KICAgICAgICAgZGVjb2RlLT5tZW0gPSBiYXNlOwogICAg ICAgICBkZWNvZGUtPmxlbiA9IHNpemU7CiAgICAgfQpAQCAtMTYyMyw2ICsxNjI5LDggQEAgaW50 IG52bXhfaGFuZGxlX3ZtcHRyc3Qoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAgZ3Bh ID0gbnZjcHUtPm52X3Z2bWN4YWRkcjsKIAogICAgIHJjID0gaHZtX2NvcHlfdG9fZ3Vlc3RfbGlu ZWFyKGRlY29kZS5tZW0sICZncGEsIGRlY29kZS5sZW4sIDAsICZwZmluZm8pOworICAgIGlmICgg cmMgPT0gSFZNQ09QWV9iYWRfZ3ZhX3RvX2dmbiApCisgICAgICAgIGh2bV9pbmplY3RfcGFnZV9m YXVsdChwZmluZm8uZWMsIHBmaW5mby5saW5lYXIpOwogICAgIGlmICggcmMgIT0gSFZNQ09QWV9v a2F5ICkKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogCkBAIC0xNjk0LDYgKzE3 MDIsOCBAQCBpbnQgbnZteF9oYW5kbGVfdm1yZWFkKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdz KQogICAgIHN3aXRjaCAoIGRlY29kZS50eXBlICkgewogICAgIGNhc2UgVk1YX0lOU1RfTUVNUkVH X1RZUEVfTUVNT1JZOgogICAgICAgICByYyA9IGh2bV9jb3B5X3RvX2d1ZXN0X2xpbmVhcihkZWNv ZGUubWVtLCAmdmFsdWUsIGRlY29kZS5sZW4sIDAsICZwZmluZm8pOworICAgICAgICBpZiAoIHJj ID09IEhWTUNPUFlfYmFkX2d2YV90b19nZm4gKQorICAgICAgICAgICAgaHZtX2luamVjdF9wYWdl X2ZhdWx0KHBmaW5mby5lYywgcGZpbmZvLmxpbmVhcik7CiAgICAgICAgIGlmICggcmMgIT0gSFZN Q09QWV9va2F5ICkKICAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKICAgICAg ICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jIGIv eGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwppbmRleCAwNzYwZTc2Li5mYmU0OWUxIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCisrKyBiL3hlbi9hcmNo L3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKQEAgLTE5OCw2ICsxOTgsNyBAQCBodm1fcmVhZChlbnVt IHg4Nl9zZWdtZW50IHNlZywKICAgICBjYXNlIEhWTUNPUFlfb2theToKICAgICAgICAgcmV0dXJu IFg4NkVNVUxfT0tBWTsKICAgICBjYXNlIEhWTUNPUFlfYmFkX2d2YV90b19nZm46CisgICAgICAg IHg4Nl9lbXVsX3BhZ2VmYXVsdChwZmluZm8uZWMsIHBmaW5mby5saW5lYXIsICZzaF9jdHh0LT5j dHh0KTsKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogICAgIGNhc2UgSFZNQ09Q WV9iYWRfZ2ZuX3RvX21mbjoKICAgICBjYXNlIEhWTUNPUFlfdW5oYW5kbGVhYmxlOgpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3VwcG9ydC5oIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vc3VwcG9ydC5oCmluZGV4IDc4MzQ5ZjguLjNkNzY3ZDcgMTAwNjQ0Ci0tLSBhL3hl bi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2 L2h2bS9zdXBwb3J0LmgKQEAgLTg1LDkgKzg1LDcgQEAgZW51bSBodm1fY29weV9yZXN1bHQgaHZt X2NvcHlfZnJvbV9ndWVzdF9waHlzKAogICogIEhWTUNPUFlfYmFkX2d2YV90b19nZm46IFNvbWUg Z3Vlc3QgdmlydHVhbCBhZGRyZXNzIGRpZCBub3QgaGF2ZSBhIHZhbGlkCiAgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgbWFwcGluZyB0byBhIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MuICBUaGUK ICAqICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlZmF1bHRfaW5mb190IHN0cnVjdHVyZSB3 aWxsIGJlIGZpbGxlZCBpbiBpZgotICogICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVk LCBhbmQgYSBwYWdlIGZhdWx0IGV4Y2VwdGlvbiBpcwotICogICAgICAgICAgICAgICAgICAgICAg ICAgIGF1dG9tYXRpY2FsbHkgcXVldWVkIGZvciBpbmplY3Rpb24gaW50byB0aGUKLSAqICAgICAg ICAgICAgICAgICAgICAgICAgICBjdXJyZW50IEhWTSBWQ1BVLgorICogICAgICAgICAgICAgICAg ICAgICAgICAgIHByb3ZpZGVkLgogICovCiB0eXBlZGVmIHN0cnVjdCBwYWdlZmF1bHRfaW5mbwog ewotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBz Oi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK