From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 5/6] x86/hvm: Break out __hvm_copy()'s translation logic Date: Wed, 21 Jun 2017 16:12:31 +0100 Message-ID: <1498057952-13556-6-git-send-email-andrew.cooper3@citrix.com> References: <1498057952-13556-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: <1498057952-13556-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 SXQgd2lsbCBiZSByZXVzZWQgYnkgbGF0ZXIgY2hhbmdlcy4KClNpZ25lZC1vZmYtYnk6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2gg PEpCZXVsaWNoQHN1c2UuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAg ICB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vc3VwcG9ydC5oIHwgIDEyICsrKysKIDIgZmlsZXMgY2hhbmdlZCwgOTUg aW5zZXJ0aW9ucygrKSwgNTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggYzgyMmQzYi4uMGE1Njk3 YSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYv aHZtL2h2bS5jCkBAIC0zMDcyLDYgKzMwNzIsODAgQEAgdm9pZCBodm1fdGFza19zd2l0Y2goCiAg ICAgaHZtX3VubWFwX2VudHJ5KG5wdHNzX2Rlc2MpOwogfQogCitlbnVtIGh2bV90cmFuc2xhdGlv bl9yZXN1bHQgaHZtX3RyYW5zbGF0ZV9nZXRfcGFnZSgKKyAgICBzdHJ1Y3QgdmNwdSAqdiwgdW5z aWduZWQgbG9uZyBhZGRyLCBib29sIGxpbmVhciwgdWludDMyX3QgcGZlYywKKyAgICBwYWdlZmF1 bHRfaW5mb190ICpwZmluZm8sIHN0cnVjdCBwYWdlX2luZm8gKipfcGFnZSwKKyAgICBnZm5fdCAq X19nZm4sIHAybV90eXBlX3QgKl9wMm10KQoreworICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7 CisgICAgcDJtX3R5cGVfdCBwMm10OworICAgIGdmbl90IGdmbjsKKworICAgIGlmICggbGluZWFy ICkKKyAgICB7CisgICAgICAgIGdmbiA9IF9nZm4ocGFnaW5nX2d2YV90b19nZm4odiwgYWRkciwg JnBmZWMpKTsKKworICAgICAgICBpZiAoIGdmbl9lcShnZm4sIElOVkFMSURfR0ZOKSApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGlmICggcGZlYyAmIFBGRUNfcGFnZV9wYWdlZCApCisgICAgICAg ICAgICAgICAgcmV0dXJuIEhWTVRSQU5TX2dmbl9wYWdlZF9vdXQ7CisKKyAgICAgICAgICAgIGlm ICggcGZlYyAmIFBGRUNfcGFnZV9zaGFyZWQgKQorICAgICAgICAgICAgICAgIHJldHVybiBIVk1U UkFOU19nZm5fc2hhcmVkOworCisgICAgICAgICAgICBpZiAoIHBmaW5mbyApCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgcGZpbmZvLT5saW5lYXIgPSBhZGRyOworICAgICAgICAgICAg ICAgIHBmaW5mby0+ZWMgPSBwZmVjICYgflBGRUNfaW1wbGljaXQ7CisgICAgICAgICAgICB9CisK KyAgICAgICAgICAgIHJldHVybiBIVk1UUkFOU19iYWRfbGluZWFyX3RvX2dmbjsKKyAgICAgICAg fQorICAgIH0KKyAgICBlbHNlCisgICAgICAgIGdmbiA9IF9nZm4oYWRkciA+PiBQQUdFX1NISUZU KTsKKworICAgIC8qCisgICAgICogTm8gbmVlZCB0byBkbyB0aGUgUDJNIGxvb2t1cCBmb3IgaW50 ZXJuYWxseSBoYW5kbGVkIE1NSU8sIGJlbmVmaXRpbmcKKyAgICAgKiAtIDMyLWJpdCBXaW5YUCAo JiBvbGRlciBXaW5kb3dzKSBvbiBBTUQgQ1BVcyBmb3IgTEFQSUMgYWNjZXNzZXMsCisgICAgICog LSBuZXdlciBXaW5kb3dzIChsaWtlIFNlcnZlciAyMDEyKSBmb3IgSFBFVCBhY2Nlc3Nlcy4KKyAg ICAgKi8KKyAgICBpZiAoIHYgPT0gY3VycmVudCAmJiBpc19odm1fdmNwdSh2KQorICAgICAgICAg JiYgIW5lc3RlZGh2bV92Y3B1X2luX2d1ZXN0bW9kZSh2KQorICAgICAgICAgJiYgaHZtX21taW9f aW50ZXJuYWwoZ2ZuX3goZ2ZuKSA8PCBQQUdFX1NISUZUKSApCisgICAgICAgIHJldHVybiBIVk1U UkFOU19iYWRfZ2ZuX3RvX21mbjsKKworICAgIHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbih2LT5k b21haW4sIGdmbl94KGdmbiksICZwMm10LCBQMk1fVU5TSEFSRSk7CisKKyAgICBpZiAoICFwYWdl ICkKKyAgICAgICAgcmV0dXJuIEhWTVRSQU5TX2JhZF9nZm5fdG9fbWZuOworCisgICAgaWYgKCBw Mm1faXNfcGFnaW5nKHAybXQpICkKKyAgICB7CisgICAgICAgIHB1dF9wYWdlKHBhZ2UpOworICAg ICAgICBwMm1fbWVtX3BhZ2luZ19wb3B1bGF0ZSh2LT5kb21haW4sIGdmbl94KGdmbikpOworICAg ICAgICByZXR1cm4gSFZNVFJBTlNfZ2ZuX3BhZ2VkX291dDsKKyAgICB9CisgICAgaWYgKCBwMm1f aXNfc2hhcmVkKHAybXQpICkKKyAgICB7CisgICAgICAgIHB1dF9wYWdlKHBhZ2UpOworICAgICAg ICByZXR1cm4gSFZNVFJBTlNfZ2ZuX3NoYXJlZDsKKyAgICB9CisgICAgaWYgKCBwMm1faXNfZ3Jh bnQocDJtdCkgKQorICAgIHsKKyAgICAgICAgcHV0X3BhZ2UocGFnZSk7CisgICAgICAgIHJldHVy biBIVk1UUkFOU191bmhhbmRsZWFibGU7CisgICAgfQorCisgICAgKl9wYWdlID0gcGFnZTsKKyAg ICBpZiAoIF9fZ2ZuICkKKyAgICAgICAgKl9fZ2ZuID0gZ2ZuOworICAgIGlmICggX3AybXQgKQor ICAgICAgICAqX3AybXQgPSBwMm10OworCisgICAgcmV0dXJuIEhWTVRSQU5TX29rYXk7Cit9CisK ICNkZWZpbmUgSFZNQ09QWV9mcm9tX2d1ZXN0ICgwdTw8MCkKICNkZWZpbmUgSFZNQ09QWV90b19n dWVzdCAgICgxdTw8MCkKICNkZWZpbmUgSFZNQ09QWV9waHlzICAgICAgICgwdTw8MikKQEAgLTMw ODAsNyArMzE1NCw3IEBAIHN0YXRpYyBlbnVtIGh2bV90cmFuc2xhdGlvbl9yZXN1bHQgX19odm1f Y29weSgKICAgICB2b2lkICpidWYsIHBhZGRyX3QgYWRkciwgaW50IHNpemUsIHN0cnVjdCB2Y3B1 ICp2LCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgdWludDMyX3QgcGZlYywgcGFnZWZhdWx0X2lu Zm9fdCAqcGZpbmZvKQogewotICAgIHVuc2lnbmVkIGxvbmcgZ2ZuOworICAgIGdmbl90IGdmbjsK ICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwogICAgIHAybV90eXBlX3QgcDJtdDsKICAgICBj aGFyICpwOwpAQCAtMzEwNiw2NSArMzE4MCwxNSBAQCBzdGF0aWMgZW51bSBodm1fdHJhbnNsYXRp b25fcmVzdWx0IF9faHZtX2NvcHkoCiAKICAgICB3aGlsZSAoIHRvZG8gPiAwICkKICAgICB7Cisg ICAgICAgIGVudW0gaHZtX3RyYW5zbGF0aW9uX3Jlc3VsdCByZXM7CiAgICAgICAgIHBhZGRyX3Qg Z3BhID0gYWRkciAmIH5QQUdFX01BU0s7CiAKICAgICAgICAgY291bnQgPSBtaW5fdChpbnQsIFBB R0VfU0laRSAtIGdwYSwgdG9kbyk7CiAKLSAgICAgICAgaWYgKCBmbGFncyAmIEhWTUNPUFlfbGlu ZWFyICkKLSAgICAgICAgewotICAgICAgICAgICAgZ2ZuID0gcGFnaW5nX2d2YV90b19nZm4odiwg YWRkciwgJnBmZWMpOwotICAgICAgICAgICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4p ICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIHBmZWMgJiBQRkVDX3BhZ2Vf cGFnZWQgKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSFZNVFJBTlNfZ2ZuX3BhZ2VkX291 dDsKLSAgICAgICAgICAgICAgICBpZiAoIHBmZWMgJiBQRkVDX3BhZ2Vfc2hhcmVkICkKLSAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIEhWTVRSQU5TX2dmbl9zaGFyZWQ7Ci0gICAgICAgICAgICAg ICAgaWYgKCBwZmluZm8gKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg cGZpbmZvLT5saW5lYXIgPSBhZGRyOwotICAgICAgICAgICAgICAgICAgICBwZmluZm8tPmVjID0g cGZlYyAmIH5QRkVDX2ltcGxpY2l0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICByZXR1cm4gSFZNVFJBTlNfYmFkX2xpbmVhcl90b19nZm47Ci0gICAgICAgICAgICB9Ci0gICAg ICAgICAgICBncGEgfD0gKHBhZGRyX3QpZ2ZuIDw8IFBBR0VfU0hJRlQ7Ci0gICAgICAgIH0KLSAg ICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBnZm4gPSBhZGRyID4+IFBBR0VfU0hJ RlQ7Ci0gICAgICAgICAgICBncGEgPSBhZGRyOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoKLSAg ICAgICAgICogTm8gbmVlZCB0byBkbyB0aGUgUDJNIGxvb2t1cCBmb3IgaW50ZXJuYWxseSBoYW5k bGVkIE1NSU8sIGJlbmVmaXRpbmcKLSAgICAgICAgICogLSAzMi1iaXQgV2luWFAgKCYgb2xkZXIg V2luZG93cykgb24gQU1EIENQVXMgZm9yIExBUElDIGFjY2Vzc2VzLAotICAgICAgICAgKiAtIG5l d2VyIFdpbmRvd3MgKGxpa2UgU2VydmVyIDIwMTIpIGZvciBIUEVUIGFjY2Vzc2VzLgotICAgICAg ICAgKi8KLSAgICAgICAgaWYgKCB2ID09IGN1cnJlbnQgJiYgaXNfaHZtX3ZjcHUodikKLSAgICAg ICAgICAgICAmJiAhbmVzdGVkaHZtX3ZjcHVfaW5fZ3Vlc3Rtb2RlKHYpCi0gICAgICAgICAgICAg JiYgaHZtX21taW9faW50ZXJuYWwoZ3BhKSApCi0gICAgICAgICAgICByZXR1cm4gSFZNVFJBTlNf YmFkX2dmbl90b19tZm47Ci0KLSAgICAgICAgcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKHYtPmRv bWFpbiwgZ2ZuLCAmcDJtdCwgUDJNX1VOU0hBUkUpOwotCi0gICAgICAgIGlmICggIXBhZ2UgKQot ICAgICAgICAgICAgcmV0dXJuIEhWTVRSQU5TX2JhZF9nZm5fdG9fbWZuOwotCi0gICAgICAgIGlm ICggcDJtX2lzX3BhZ2luZyhwMm10KSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHB1dF9wYWdl KHBhZ2UpOwotICAgICAgICAgICAgcDJtX21lbV9wYWdpbmdfcG9wdWxhdGUodi0+ZG9tYWluLCBn Zm4pOwotICAgICAgICAgICAgcmV0dXJuIEhWTVRSQU5TX2dmbl9wYWdlZF9vdXQ7Ci0gICAgICAg IH0KLSAgICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKHAybXQpICkKLSAgICAgICAgewotICAgICAg ICAgICAgcHV0X3BhZ2UocGFnZSk7Ci0gICAgICAgICAgICByZXR1cm4gSFZNVFJBTlNfZ2ZuX3No YXJlZDsKLSAgICAgICAgfQotICAgICAgICBpZiAoIHAybV9pc19ncmFudChwMm10KSApCi0gICAg ICAgIHsKLSAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIEhW TVRSQU5TX3VuaGFuZGxlYWJsZTsKLSAgICAgICAgfQorICAgICAgICByZXMgPSBodm1fdHJhbnNs YXRlX2dldF9wYWdlKHYsIGFkZHIsIGZsYWdzICYgSFZNQ09QWV9saW5lYXIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZlYywgcGZpbmZvLCAmcGFnZSwgJmdmbiwgJnAy bXQpOworICAgICAgICBpZiAoIHJlcyAhPSBIVk1UUkFOU19va2F5ICkKKyAgICAgICAgICAgIHJl dHVybiByZXM7CiAKICAgICAgICAgcCA9IChjaGFyICopX19tYXBfZG9tYWluX3BhZ2UocGFnZSkg KyAoYWRkciAmIH5QQUdFX01BU0spOwogCkBAIC0zMTczLDEwICszMTk3LDExIEBAIHN0YXRpYyBl bnVtIGh2bV90cmFuc2xhdGlvbl9yZXN1bHQgX19odm1fY29weSgKICAgICAgICAgICAgIGlmICgg cDJtX2lzX2Rpc2NhcmRfd3JpdGUocDJtdCkgKQogICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxhc3RwYWdlOwotICAgICAgICAgICAgICAgIGlmICgg eGNoZygmbGFzdHBhZ2UsIGdmbikgIT0gZ2ZuICkKKworICAgICAgICAgICAgICAgIGlmICggeGNo ZygmbGFzdHBhZ2UsIGdmbl94KGdmbikpICE9IGdmbl94KGdmbikgKQogICAgICAgICAgICAgICAg ICAgICBkcHJpbnRrKFhFTkxPR19HX0RFQlVHLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIlcHYgYXR0ZW1wdGVkIHdyaXRlIHRvIHJlYWQtb25seSBnZm4gJSNseCAobWZuPSUjbHgpXG4i LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsIGdmbiwgcGFnZV90b19tZm4ocGFnZSkp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsIGdmbl94KGdmbiksIHBhZ2VfdG9fbWZu KHBhZ2UpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQuaCBiL3hlbi9pbmNs dWRlL2FzbS14ODYvaHZtL3N1cHBvcnQuaAppbmRleCBhMTc5OWEzLi40MmNjY2YwIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdXBwb3J0LmgKKysrIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vc3VwcG9ydC5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8eGVuL3Nj aGVkLmg+CiAjaW5jbHVkZSA8eGVuL2h2bS9zYXZlLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nv ci5oPgorI2luY2x1ZGUgPGFzbS9wMm0uaD4KIAogI2lmbmRlZiBOREVCVUcKICNkZWZpbmUgREJH X0xFVkVMXzAgICAgICAgICAgICAgICAgICgxIDw8IDApCkBAIC0xMDMsNiArMTA0LDE3IEBAIGVu dW0gaHZtX3RyYW5zbGF0aW9uX3Jlc3VsdCBodm1fZmV0Y2hfZnJvbV9ndWVzdF9saW5lYXIoCiAg ICAgdm9pZCAqYnVmLCB1bnNpZ25lZCBsb25nIGFkZHIsIGludCBzaXplLCB1aW50MzJfdCBwZmVj LAogICAgIHBhZ2VmYXVsdF9pbmZvX3QgKnBmaW5mbyk7CiAKKy8qCisgKiBHZXQgYSByZWZlcmVu Y2Ugb24gdGhlIHBhZ2UgdW5kZXIgYW4gSFZNIHBoeXNpY2FsIG9yIGxpbmVhciBhZGRyZXNzLiAg SWYKKyAqIGxpbmVhciwgYSBwYWdld2FsayBpcyBwZXJmb3JtZWQgdXNpbmcgcGZlYyAoZmF1bHQg ZGV0YWlscyBvcHRpb25hbGx5IGluCisgKiBwZmluZm8pLgorICogT24gc3VjY2VzcywgcmV0dXJu cyBIVk1UUkFOU19va2F5IHdpdGggYSByZWZlcmVuY2UgdGFrZW4gb24gKipfcGFnZS4KKyAqLwor ZW51bSBodm1fdHJhbnNsYXRpb25fcmVzdWx0IGh2bV90cmFuc2xhdGVfZ2V0X3BhZ2UoCisgICAg c3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBsaW5lYXIsIHVpbnQzMl90 IHBmZWMsCisgICAgcGFnZWZhdWx0X2luZm9fdCAqcGZpbmZvLCBzdHJ1Y3QgcGFnZV9pbmZvICoq X3BhZ2UsCisgICAgZ2ZuX3QgKl9fZ2ZuLCBwMm1fdHlwZV90ICpfcDJtdCk7CisKICNkZWZpbmUg SFZNX0hDQUxMX2NvbXBsZXRlZCAgMCAvKiBoeXBlcmNhbGwgY29tcGxldGVkIC0gbm8gZnVydGhl ciBhY3Rpb24gKi8KICNkZWZpbmUgSFZNX0hDQUxMX3ByZWVtcHRlZCAgMSAvKiBoeXBlcmNhbGwg cHJlZW1wdGVkIC0gcmUtZXhlY3V0ZSBWTUNBTEwgKi8KIGludCBodm1faHlwZXJjYWxsKHN0cnVj dCBjcHVfdXNlcl9yZWdzICpyZWdzKTsKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==