From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v4 17/24] x86/pv: Avoid raising faults behind the emulators back Date: Thu, 1 Dec 2016 16:56:00 +0000 Message-ID: <1480611361-15294-5-git-send-email-andrew.cooper3@citrix.com> References: <1480611361-15294-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: <1480611361-15294-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 List-Id: xen-devel@lists.xenproject.org VXNlIHg4Nl9lbXVsX3BhZ2VmYXVsdCgpIHJhdGhlciB0aGFuIHB2X2luamVjdF9wYWdlX2ZhdWx0 KCkgdG8gY2F1c2UgcmFpc2VkCnBhZ2VmYXVsdHMgdG8gYmUga25vd24gdG8gdGhlIGVtdWxhdG9y LiAgVGhpcyByZXF1aXJlcyBhbHRlcmluZyB0aGUgY2FsbGVycyBvZgp4ODZfZW11bGF0ZSgpIHRv IHByb3Blcmx5IHJlLWluamVjdCB0aGUgZXZlbnQuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29v cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpBY2tlZC1ieTogVGltIERlZWdhbiA8dGlt QHhlbi5vcmc+ClJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0t LQp2NDoKICogVHdlYWsgY29tbWVudCB3b3JkaW5nLgogKiBEcm9wIGRlZmF1bHQgY2FzZXMuCnYz OgogKiBTcGxpdCBvdXQgI0RCIGhhbmRsaW5nIHRvIGFuIGVhcmxpZXIgcGFydCBvZiB0aGUgc2Vy aWVzCiAqIERvbid0IHJhaXNlICNHUCBmYXVsdHMgZm9yIHVuZXhwZWN0ZWQgZXZlbnRzLCBidXQg ZG8gcmV0dXJuIGJhY2sgdG8gdGhlCiAgIGd1ZXN0Lgp2MjoKICogTmV3Ci0tLQogeGVuL2FyY2gv eDg2L21tLmMgfCAxMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0u YwppbmRleCA1ZDU5NDc5Li4xNDU1MmExIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYwor KysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtNTEzNiw3ICs1MTM2LDcgQEAgc3RhdGljIGludCBw dHdyX2VtdWxhdGVkX3JlYWQoCiAgICAgaWYgKCAhX19hZGRyX29rKGFkZHIpIHx8CiAgICAgICAg ICAocmMgPSBfX2NvcHlfZnJvbV91c2VyKHBfZGF0YSwgKHZvaWQgKilhZGRyLCBieXRlcykpICkK ICAgICB7Ci0gICAgICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KDAsIGFkZHIgKyBieXRlcyAtIHJj KTsgLyogUmVhZCBmYXVsdC4gKi8KKyAgICAgICAgeDg2X2VtdWxfcGFnZWZhdWx0KDAsIGFkZHIg KyBieXRlcyAtIHJjLCBjdHh0KTsgIC8qIFJlYWQgZmF1bHQuICovCiAgICAgICAgIHJldHVybiBY ODZFTVVMX0VYQ0VQVElPTjsKICAgICB9CiAKQEAgLTUxNzcsOCArNTE3Nyw5IEBAIHN0YXRpYyBp bnQgcHR3cl9lbXVsYXRlZF91cGRhdGUoCiAgICAgICAgIGFkZHIgJj0gfihzaXplb2YocGFkZHJf dCktMSk7CiAgICAgICAgIGlmICggKHJjID0gY29weV9mcm9tX3VzZXIoJmZ1bGwsICh2b2lkICop YWRkciwgc2l6ZW9mKHBhZGRyX3QpKSkgIT0gMCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHB2 X2luamVjdF9wYWdlX2ZhdWx0KDAsIC8qIFJlYWQgZmF1bHQuICovCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhZGRyICsgc2l6ZW9mKHBhZGRyX3QpIC0gcmMpOworICAgICAgICAg ICAgeDg2X2VtdWxfcGFnZWZhdWx0KDAsIC8qIFJlYWQgZmF1bHQuICovCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWRkciArIHNpemVvZihwYWRkcl90KSAtIHJjLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZwdHdyX2N0eHQtPmN0eHQpOwogICAgICAgICAgICAgcmV0 dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogICAgICAgICB9CiAgICAgICAgIC8qIE1hc2sgb3V0IGJp dHMgcHJvdmlkZWQgYnkgY2FsbGVyLiAqLwpAQCAtNTM3OSwyNyArNTM4MCwzOCBAQCBpbnQgcHR3 cl9kb19wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAg cGFnZV91bmxvY2socGFnZSk7CiAgICAgcHV0X3BhZ2UocGFnZSk7CiAKLSAgICAvKgotICAgICAq IFRoZSBwcmV2aW91cyBsYWNrIG9mIGluamVjdF97c3csaHd9KigpIGhvb2tzIGNhdXNlZCBleGNl cHRpb25zIHJhaXNlZAotICAgICAqIGJ5IHRoZSBlbXVsYXRvciBpdHNlbGYgdG8gYmVjb21lIFg4 NkVNVUxfVU5IQU5ETEVBQkxFLiAgU3VjaCBleGNlcHRpb25zCi0gICAgICogbm93IHNldCBldmVu dF9wZW5kaW5nIGluc3RlYWQuICBFeGNlcHRpb25zIHJhaXNlZCBiZWhpbmQgdGhlIGJhY2sgb2YK LSAgICAgKiB0aGUgZW11bGF0b3IgZG9uJ3QgeWV0IHNldCBldmVudF9wZW5kaW5nLgotICAgICAq Ci0gICAgICogRm9yIG5vdywgY2F1c2Ugc3VjaCBjYXNlcyB0byByZXR1cm4gdG8gdGhlIFg4NkVN VUxfVU5IQU5ETEVBQkxFIHBhdGgsCi0gICAgICogZm9yIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIGZy b20gYmVmb3JlLiAgRnV0dXJlIHBhdGNoZXMgd2lsbCBmaXggdGhpcwotICAgICAqIHByb3Blcmx5 LgotICAgICAqLwotICAgIGlmICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gJiYgcHR3cl9jdHh0 LmN0eHQuZXZlbnRfcGVuZGluZyApCi0gICAgICAgIHJjID0gWDg2RU1VTF9VTkhBTkRMRUFCTEU7 CisgICAgLyogTW9yZSBzdHJpY3QgdGhhbiB4ODZfZW11bGF0ZV93cmFwcGVyKCksIGFzIHRoaXMg aXMgbm93IHRydWUgZm9yIFBWLiAqLworICAgIEFTU0VSVChwdHdyX2N0eHQuY3R4dC5ldmVudF9w ZW5kaW5nID09IChyYyA9PSBYODZFTVVMX0VYQ0VQVElPTikpOwogCi0gICAgaWYgKCByYyA9PSBY ODZFTVVMX1VOSEFORExFQUJMRSApCi0gICAgICAgIGdvdG8gYmFpbDsKKyAgICBzd2l0Y2ggKCBy YyApCisgICAgeworICAgIGNhc2UgWDg2RU1VTF9FWENFUFRJT046CisgICAgICAgIC8qCisgICAg ICAgICAqIFRoaXMgZW11bGF0aW9uIG9ubHkgY292ZXJzIHdyaXRlcyB0byBwYWdldGFibGVzIHdo aWNoIGFyZSBtYXJrZWQKKyAgICAgICAgICogcmVhZC1vbmx5IGJ5IFhlbi4gIFdlIHRvbGVyYXRl ICNQRiAoaW4gY2FzZSBhIGNvbmN1cnJlbnQgcGFnZXRhYmxlCisgICAgICAgICAqIHVwZGF0ZSBo YXMgc3VjY2VlZGVkIG9uIGEgZGlmZmVyZW50IHZjcHUpLiAgQW55dGhpbmcgZWxzZSBpcyBhbgor ICAgICAgICAgKiBlbXVsYXRpb24gYnVnLCBvciBhIGd1ZXN0IHBsYXlpbmcgd2l0aCB0aGUgaW5z dHJ1Y3Rpb24gc3RyZWFtIHVuZGVyCisgICAgICAgICAqIFhlbidzIGZlZXQuCisgICAgICAgICAq LworICAgICAgICBpZiAoIHB0d3JfY3R4dC5jdHh0LmV2ZW50LnR5cGUgPT0gWDg2X0VWRU5UVFlQ RV9IV19FWENFUFRJT04gJiYKKyAgICAgICAgICAgICBwdHdyX2N0eHQuY3R4dC5ldmVudC52ZWN0 b3IgPT0gVFJBUF9wYWdlX2ZhdWx0ICkKKyAgICAgICAgICAgIHB2X2luamVjdF9ldmVudCgmcHR3 cl9jdHh0LmN0eHQuZXZlbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZHByaW50ayhY RU5MT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIGV2ZW50ICh0 eXBlICV1LCB2ZWN0b3IgJSN4KSBmcm9tIGVtdWxhdGlvblxuIiwKKyAgICAgICAgICAgICAgICAg ICAgIHB0d3JfY3R4dC5jdHh0LmV2ZW50LnR5cGUsIHB0d3JfY3R4dC5jdHh0LmV2ZW50LnZlY3Rv cik7CiAKLSAgICBpZiAoIHB0d3JfY3R4dC5jdHh0LnJldGlyZS5zaW5nbGVzdGVwICkKLSAgICAg ICAgcHZfaW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2RlYnVnLCBYODZfRVZFTlRfTk9fRUMpOwor ICAgICAgICAvKiBGYWxsdGhyb3VnaCAqLworICAgIGNhc2UgWDg2RU1VTF9PS0FZOgogCi0gICAg cGVyZmNfaW5jcihwdHdyX2VtdWxhdGlvbnMpOwotICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4 ZWQ7CisgICAgICAgIGlmICggcHR3cl9jdHh0LmN0eHQucmV0aXJlLnNpbmdsZXN0ZXAgKQorICAg ICAgICAgICAgcHZfaW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2RlYnVnLCBYODZfRVZFTlRfTk9f RUMpOworCisgICAgICAgIC8qIEZhbGx0aHJvdWdoICovCisgICAgY2FzZSBYODZFTVVMX1JFVFJZ OgorICAgICAgICBwZXJmY19pbmNyKHB0d3JfZW11bGF0aW9ucyk7CisgICAgICAgIHJldHVybiBF WENSRVRfZmF1bHRfZml4ZWQ7CisgICAgfQogCiAgYmFpbDoKICAgICByZXR1cm4gMDsKQEAgLTU1 MTksMjYgKzU1MzEsMzkgQEAgaW50IG1taW9fcm9fZG9fcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAq diwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgIGVsc2UKICAgICAgICAgcmMgPSB4ODZfZW11bGF0 ZSgmY3R4dCwgJm1taW9fcm9fZW11bGF0ZV9vcHMpOwogCi0gICAgLyoKLSAgICAgKiBUaGUgcHJl dmlvdXMgbGFjayBvZiBpbmplY3Rfe3N3LGh3fSooKSBob29rcyBjYXVzZWQgZXhjZXB0aW9ucyBy YWlzZWQKLSAgICAgKiBieSB0aGUgZW11bGF0b3IgaXRzZWxmIHRvIGJlY29tZSBYODZFTVVMX1VO SEFORExFQUJMRS4gIFN1Y2ggZXhjZXB0aW9ucwotICAgICAqIG5vdyBzZXQgZXZlbnRfcGVuZGlu ZyBpbnN0ZWFkLiAgRXhjZXB0aW9ucyByYWlzZWQgYmVoaW5kIHRoZSBiYWNrIG9mCi0gICAgICog dGhlIGVtdWxhdG9yIGRvbid0IHlldCBzZXQgZXZlbnRfcGVuZGluZy4KLSAgICAgKgotICAgICAq IEZvciBub3csIGNhdXNlIHN1Y2ggY2FzZXMgdG8gcmV0dXJuIHRvIHRoZSBYODZFTVVMX1VOSEFO RExFQUJMRSBwYXRoLAotICAgICAqIGZvciBubyBmdW5jdGlvbmFsIGNoYW5nZSBmcm9tIGJlZm9y ZS4gIEZ1dHVyZSBwYXRjaGVzIHdpbGwgZml4IHRoaXMKLSAgICAgKiBwcm9wZXJseS4KLSAgICAg Ki8KLSAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICYmIGN0eHQuZXZlbnRfcGVuZGlu ZyApCi0gICAgICAgIHJjID0gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisgICAgLyogTW9yZSBzdHJp Y3QgdGhhbiB4ODZfZW11bGF0ZV93cmFwcGVyKCksIGFzIHRoaXMgaXMgbm93IHRydWUgZm9yIFBW LiAqLworICAgIEFTU0VSVChjdHh0LmV2ZW50X3BlbmRpbmcgPT0gKHJjID09IFg4NkVNVUxfRVhD RVBUSU9OKSk7CiAKLSAgICBpZiAoIHJjID09IFg4NkVNVUxfVU5IQU5ETEVBQkxFICkKLSAgICAg ICAgcmV0dXJuIDA7CisgICAgc3dpdGNoICggcmMgKQorICAgIHsKKyAgICBjYXNlIFg4NkVNVUxf RVhDRVBUSU9OOgorICAgICAgICAvKgorICAgICAgICAgKiBUaGlzIGVtdWxhdGlvbiBvbmx5IGNv dmVycyB3cml0ZXMgdG8gTU1DRkcgc3BhY2Ugb3IgcmVhZC1vbmx5IE1GTnMuCisgICAgICAgICAq IFdlIHRvbGVyYXRlICNQRiAoZnJvbSBoaXR0aW5nIGFuIGFkamFjZW50IHBhZ2Ugb3IgYSBzdWNj ZXNzZnVsCisgICAgICAgICAqIGNvbmN1cnJlbnQgcGFnZXRhYmxlIHVwZGF0ZSkuICBBbnl0aGlu ZyBlbHNlIGlzIGFuIGVtdWxhdGlvbiBidWcsCisgICAgICAgICAqIG9yIGEgZ3Vlc3QgcGxheWlu ZyB3aXRoIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0gdW5kZXIgWGVuJ3MgZmVldC4KKyAgICAgICAg ICovCisgICAgICAgIGlmICggY3R4dC5ldmVudC50eXBlID09IFg4Nl9FVkVOVFRZUEVfSFdfRVhD RVBUSU9OICYmCisgICAgICAgICAgICAgY3R4dC5ldmVudC52ZWN0b3IgPT0gVFJBUF9wYWdlX2Zh dWx0ICkKKyAgICAgICAgICAgIHB2X2luamVjdF9ldmVudCgmY3R4dC5ldmVudCk7CisgICAgICAg IGVsc2UKKyAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLAorICAgICAgICAgICAg ICAgICAgICAgIlVuZXhwZWN0ZWQgZXZlbnQgKHR5cGUgJXUsIHZlY3RvciAlI3gpIGZyb20gZW11 bGF0aW9uXG4iLAorICAgICAgICAgICAgICAgICAgICAgY3R4dC5ldmVudC50eXBlLCBjdHh0LmV2 ZW50LnZlY3Rvcik7CisKKyAgICAgICAgLyogRmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIFg4NkVN VUxfT0tBWToKIAotICAgIGlmICggY3R4dC5yZXRpcmUuc2luZ2xlc3RlcCApCi0gICAgICAgIHB2 X2luamVjdF9od19leGNlcHRpb24oVFJBUF9kZWJ1ZywgWDg2X0VWRU5UX05PX0VDKTsKKyAgICAg ICAgaWYgKCBjdHh0LnJldGlyZS5zaW5nbGVzdGVwICkKKyAgICAgICAgICAgIHB2X2luamVjdF9o d19leGNlcHRpb24oVFJBUF9kZWJ1ZywgWDg2X0VWRU5UX05PX0VDKTsKIAotICAgIHJldHVybiBF WENSRVRfZmF1bHRfZml4ZWQ7CisgICAgICAgIC8qIEZhbGx0aHJvdWdoICovCisgICAgY2FzZSBY ODZFTVVMX1JFVFJZOgorICAgICAgICBwZXJmY19pbmNyKHB0d3JfZW11bGF0aW9ucyk7CisgICAg ICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4ZWQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7CiB9 CiAKIHZvaWQgKmFsbG9jX3hlbl9wYWdldGFibGUodm9pZCkKLS0gCjIuMS40CgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==