From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v3 17/24] x86/pv: Avoid raising faults behind the emulators back Date: Wed, 30 Nov 2016 13:50:34 +0000 Message-ID: <1480513841-7565-18-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 , Tim Deegan , Jan Beulich List-Id: xen-devel@lists.xenproject.org VXNlIHg4Nl9lbXVsX3BhZ2VmYXVsdCgpIHJhdGhlciB0aGFuIHB2X2luamVjdF9wYWdlX2ZhdWx0 KCkgdG8gY2F1c2UgcmFpc2VkCnBhZ2VmYXVsdHMgdG8gYmUga25vd24gdG8gdGhlIGVtdWxhdG9y LiAgVGhpcyByZXF1aXJlcyBhbHRlcmluZyB0aGUgY2FsbGVycyBvZgp4ODZfZW11bGF0ZSgpIHRv IHByb3Blcmx5IHJlLWluamVjdCB0aGUgZXZlbnQuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29v cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1 bGljaEBzdXNlLmNvbT4KQ0M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgoKdjM6CiAqIFNwbGl0 IG91dCAjREIgaGFuZGxpbmcgdG8gYW4gZWFybGllciBwYXJ0IG9mIHRoZSBzZXJpZXMKICogRG9u J3QgcmFpc2UgI0dQIGZhdWx0cyBmb3IgdW5leHBlY3RlZCBldmVudHMsIGJ1dCBkbyByZXR1cm4g YmFjayB0byB0aGUKICAgZ3Vlc3QuCnYyOgogKiBOZXcKLS0tCiB4ZW4vYXJjaC94ODYvbW0uYyB8 IDEwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0KIDEgZmlsZSBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCmluZGV4IDVk NTk0NzkuLmNkZmE4NWUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9tbS5jCkBAIC01MTM2LDcgKzUxMzYsNyBAQCBzdGF0aWMgaW50IHB0d3JfZW11bGF0 ZWRfcmVhZCgKICAgICBpZiAoICFfX2FkZHJfb2soYWRkcikgfHwKICAgICAgICAgIChyYyA9IF9f Y29weV9mcm9tX3VzZXIocF9kYXRhLCAodm9pZCAqKWFkZHIsIGJ5dGVzKSkgKQogICAgIHsKLSAg ICAgICAgcHZfaW5qZWN0X3BhZ2VfZmF1bHQoMCwgYWRkciArIGJ5dGVzIC0gcmMpOyAvKiBSZWFk IGZhdWx0LiAqLworICAgICAgICB4ODZfZW11bF9wYWdlZmF1bHQoMCwgYWRkciArIGJ5dGVzIC0g cmMsIGN0eHQpOyAgLyogUmVhZCBmYXVsdC4gKi8KICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhD RVBUSU9OOwogICAgIH0KIApAQCAtNTE3Nyw4ICs1MTc3LDkgQEAgc3RhdGljIGludCBwdHdyX2Vt dWxhdGVkX3VwZGF0ZSgKICAgICAgICAgYWRkciAmPSB+KHNpemVvZihwYWRkcl90KS0xKTsKICAg ICAgICAgaWYgKCAocmMgPSBjb3B5X2Zyb21fdXNlcigmZnVsbCwgKHZvaWQgKilhZGRyLCBzaXpl b2YocGFkZHJfdCkpKSAhPSAwICkKICAgICAgICAgewotICAgICAgICAgICAgcHZfaW5qZWN0X3Bh Z2VfZmF1bHQoMCwgLyogUmVhZCBmYXVsdC4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFkZHIgKyBzaXplb2YocGFkZHJfdCkgLSByYyk7CisgICAgICAgICAgICB4ODZfZW11 bF9wYWdlZmF1bHQoMCwgLyogUmVhZCBmYXVsdC4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhZGRyICsgc2l6ZW9mKHBhZGRyX3QpIC0gcmMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnB0d3JfY3R4dC0+Y3R4dCk7CiAgICAgICAgICAgICByZXR1cm4gWDg2RU1V TF9FWENFUFRJT047CiAgICAgICAgIH0KICAgICAgICAgLyogTWFzayBvdXQgYml0cyBwcm92aWRl ZCBieSBjYWxsZXIuICovCkBAIC01Mzc5LDMwICs1MzgwLDQxIEBAIGludCBwdHdyX2RvX3BhZ2Vf ZmF1bHQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICBwYWdlX3VubG9j ayhwYWdlKTsKICAgICBwdXRfcGFnZShwYWdlKTsKIAotICAgIC8qCi0gICAgICogVGhlIHByZXZp b3VzIGxhY2sgb2YgaW5qZWN0X3tzdyxod30qKCkgaG9va3MgY2F1c2VkIGV4Y2VwdGlvbnMgcmFp c2VkCi0gICAgICogYnkgdGhlIGVtdWxhdG9yIGl0c2VsZiB0byBiZWNvbWUgWDg2RU1VTF9VTkhB TkRMRUFCTEUuICBTdWNoIGV4Y2VwdGlvbnMKLSAgICAgKiBub3cgc2V0IGV2ZW50X3BlbmRpbmcg aW5zdGVhZC4gIEV4Y2VwdGlvbnMgcmFpc2VkIGJlaGluZCB0aGUgYmFjayBvZgotICAgICAqIHRo ZSBlbXVsYXRvciBkb24ndCB5ZXQgc2V0IGV2ZW50X3BlbmRpbmcuCi0gICAgICoKLSAgICAgKiBG b3Igbm93LCBjYXVzZSBzdWNoIGNhc2VzIHRvIHJldHVybiB0byB0aGUgWDg2RU1VTF9VTkhBTkRM RUFCTEUgcGF0aCwKLSAgICAgKiBmb3Igbm8gZnVuY3Rpb25hbCBjaGFuZ2UgZnJvbSBiZWZvcmUu ICBGdXR1cmUgcGF0Y2hlcyB3aWxsIGZpeCB0aGlzCi0gICAgICogcHJvcGVybHkuCi0gICAgICov Ci0gICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiAmJiBwdHdyX2N0eHQuY3R4dC5ldmVu dF9wZW5kaW5nICkKLSAgICAgICAgcmMgPSBYODZFTVVMX1VOSEFORExFQUJMRTsKKyAgICAvKiBN b3JlIHN0cmljdCB0aGFuIHg4Nl9lbXVsYXRlX3dyYXBwZXIoKSwgYXMgdGhpcyBpcyBub3cgdHJ1 ZSBmb3IgUFYuICovCisgICAgQVNTRVJUKHB0d3JfY3R4dC5jdHh0LmV2ZW50X3BlbmRpbmcgPT0g KHJjID09IFg4NkVNVUxfRVhDRVBUSU9OKSk7CiAKLSAgICBpZiAoIHJjID09IFg4NkVNVUxfVU5I QU5ETEVBQkxFICkKLSAgICAgICAgZ290byBiYWlsOworICAgIHN3aXRjaCAoIHJjICkKKyAgICB7 CisgICAgY2FzZSBYODZFTVVMX0VYQ0VQVElPTjoKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhp cyBlbXVsYXRpb24gb25seSBjb3ZlcnMgd3JpdGVzIHRvIHBhZ2V0YWJsZXMgd2hpY2ggbWFya2Vk CisgICAgICAgICAqIHJlYWQtb25seSBieSBYZW4uICBXZSB0b2xlcmF0ZSAjUEYgKGZyb20gaGl0 dGluZyBhbiBhZGphY2VudCBwYWdlKS4KKyAgICAgICAgICogQW55dGhpbmcgZWxzZSBpcyBhbiBl bXVsYXRpb24gYnVnLCBvciBhIGd1ZXN0IHBsYXlpbmcgd2l0aCB0aGUKKyAgICAgICAgICogaW5z dHJ1Y3Rpb24gc3RyZWFtIHVuZGVyIFhlbidzIGZlZXQuCisgICAgICAgICAqLworICAgICAgICBp ZiAoIHB0d3JfY3R4dC5jdHh0LmV2ZW50LnR5cGUgPT0gWDg2X0VWRU5UVFlQRV9IV19FWENFUFRJ T04gJiYKKyAgICAgICAgICAgICBwdHdyX2N0eHQuY3R4dC5ldmVudC52ZWN0b3IgPT0gVFJBUF9w YWdlX2ZhdWx0ICkKKyAgICAgICAgICAgIHB2X2luamVjdF9ldmVudCgmcHR3cl9jdHh0LmN0eHQu ZXZlbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklO RywKKyAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIGV2ZW50ICh0eXBlICV1LCB2ZWN0 b3IgJSN4KSBmcm9tIGVtdWxhdGlvblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHB0d3JfY3R4 dC5jdHh0LmV2ZW50LnR5cGUsIHB0d3JfY3R4dC5jdHh0LmV2ZW50LnZlY3Rvcik7CisKKyAgICAg ICAgLyogRmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIFg4NkVNVUxfT0tBWToKIAotICAgIGlmICgg cHR3cl9jdHh0LmN0eHQucmV0aXJlLnNpbmdsZXN0ZXAgKQotICAgICAgICBwdl9pbmplY3RfaHdf ZXhjZXB0aW9uKFRSQVBfZGVidWcsIFg4Nl9FVkVOVF9OT19FQyk7CisgICAgICAgIGlmICggcHR3 cl9jdHh0LmN0eHQucmV0aXJlLnNpbmdsZXN0ZXAgKQorICAgICAgICAgICAgcHZfaW5qZWN0X2h3 X2V4Y2VwdGlvbihUUkFQX2RlYnVnLCBYODZfRVZFTlRfTk9fRUMpOwogCi0gICAgcGVyZmNfaW5j cihwdHdyX2VtdWxhdGlvbnMpOwotICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4ZWQ7CisgICAg ICAgIC8qIEZhbGx0aHJvdWdoICovCisgICAgY2FzZSBYODZFTVVMX1JFVFJZOgorICAgICAgICBw ZXJmY19pbmNyKHB0d3JfZW11bGF0aW9ucyk7CisgICAgICAgIHJldHVybiBFWENSRVRfZmF1bHRf Zml4ZWQ7CiAKICBiYWlsOgotICAgIHJldHVybiAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl dHVybiAwOworICAgIH0KIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTU1MTks MjYgKzU1MzEsNDAgQEAgaW50IG1taW9fcm9fZG9fcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwg dW5zaWduZWQgbG9uZyBhZGRyLAogICAgIGVsc2UKICAgICAgICAgcmMgPSB4ODZfZW11bGF0ZSgm Y3R4dCwgJm1taW9fcm9fZW11bGF0ZV9vcHMpOwogCi0gICAgLyoKLSAgICAgKiBUaGUgcHJldmlv dXMgbGFjayBvZiBpbmplY3Rfe3N3LGh3fSooKSBob29rcyBjYXVzZWQgZXhjZXB0aW9ucyByYWlz ZWQKLSAgICAgKiBieSB0aGUgZW11bGF0b3IgaXRzZWxmIHRvIGJlY29tZSBYODZFTVVMX1VOSEFO RExFQUJMRS4gIFN1Y2ggZXhjZXB0aW9ucwotICAgICAqIG5vdyBzZXQgZXZlbnRfcGVuZGluZyBp bnN0ZWFkLiAgRXhjZXB0aW9ucyByYWlzZWQgYmVoaW5kIHRoZSBiYWNrIG9mCi0gICAgICogdGhl IGVtdWxhdG9yIGRvbid0IHlldCBzZXQgZXZlbnRfcGVuZGluZy4KLSAgICAgKgotICAgICAqIEZv ciBub3csIGNhdXNlIHN1Y2ggY2FzZXMgdG8gcmV0dXJuIHRvIHRoZSBYODZFTVVMX1VOSEFORExF QUJMRSBwYXRoLAotICAgICAqIGZvciBubyBmdW5jdGlvbmFsIGNoYW5nZSBmcm9tIGJlZm9yZS4g IEZ1dHVyZSBwYXRjaGVzIHdpbGwgZml4IHRoaXMKLSAgICAgKiBwcm9wZXJseS4KLSAgICAgKi8K LSAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICYmIGN0eHQuZXZlbnRfcGVuZGluZyAp Ci0gICAgICAgIHJjID0gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisgICAgLyogTW9yZSBzdHJpY3Qg dGhhbiB4ODZfZW11bGF0ZV93cmFwcGVyKCksIGFzIHRoaXMgaXMgbm93IHRydWUgZm9yIFBWLiAq LworICAgIEFTU0VSVChjdHh0LmV2ZW50X3BlbmRpbmcgPT0gKHJjID09IFg4NkVNVUxfRVhDRVBU SU9OKSk7CiAKLSAgICBpZiAoIHJjID09IFg4NkVNVUxfVU5IQU5ETEVBQkxFICkKLSAgICAgICAg cmV0dXJuIDA7CisgICAgc3dpdGNoICggcmMgKQorICAgIHsKKyAgICBjYXNlIFg4NkVNVUxfRVhD RVBUSU9OOgorICAgICAgICAvKgorICAgICAgICAgKiBUaGlzIGVtdWxhdGlvbiBvbmx5IGNvdmVy cyB3cml0ZXMgdG8gTU1DRkcgc3BhY2Ugb3IgcmVhZC1vbmx5IE1GTnMuCisgICAgICAgICAqIFdl IHRvbGVyYXRlICNQRiAoZnJvbSBoaXR0aW5nIGFuIGFkamFjZW50IHBhZ2UpLiAgQW55dGhpbmcg ZWxzZSBpcworICAgICAgICAgKiBhbiBlbXVsYXRpb24gYnVnLCBvciBhIGd1ZXN0IHBsYXlpbmcg d2l0aCB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtCisgICAgICAgICAqIHVuZGVyIFhlbidzIGZlZXQu CisgICAgICAgICAqLworICAgICAgICBpZiAoIGN0eHQuZXZlbnQudHlwZSA9PSBYODZfRVZFTlRU WVBFX0hXX0VYQ0VQVElPTiAmJgorICAgICAgICAgICAgIGN0eHQuZXZlbnQudmVjdG9yID09IFRS QVBfcGFnZV9mYXVsdCApCisgICAgICAgICAgICBwdl9pbmplY3RfZXZlbnQoJmN0eHQuZXZlbnQp OworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywKKyAg ICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIGV2ZW50ICh0eXBlICV1LCB2ZWN0b3IgJSN4 KSBmcm9tIGVtdWxhdGlvblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGN0eHQuZXZlbnQudHlw ZSwgY3R4dC5ldmVudC52ZWN0b3IpOworCisgICAgICAgIC8qIEZhbGx0aHJvdWdoICovCisgICAg Y2FzZSBYODZFTVVMX09LQVk6CisKKyAgICAgICAgaWYgKCBjdHh0LnJldGlyZS5zaW5nbGVzdGVw ICkKKyAgICAgICAgICAgIHB2X2luamVjdF9od19leGNlcHRpb24oVFJBUF9kZWJ1ZywgWDg2X0VW RU5UX05PX0VDKTsKIAotICAgIGlmICggY3R4dC5yZXRpcmUuc2luZ2xlc3RlcCApCi0gICAgICAg IHB2X2luamVjdF9od19leGNlcHRpb24oVFJBUF9kZWJ1ZywgWDg2X0VWRU5UX05PX0VDKTsKKyAg ICAgICAgLyogRmFsbHRocm91Z2ggKi8KKyAgICBjYXNlIFg4NkVNVUxfUkVUUlk6CisgICAgICAg IHBlcmZjX2luY3IocHR3cl9lbXVsYXRpb25zKTsKKyAgICAgICAgcmV0dXJuIEVYQ1JFVF9mYXVs dF9maXhlZDsKIAotICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4ZWQ7CisgICAgZGVmYXVsdDoK KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogfQogCiB2b2lkICphbGxvY194ZW5fcGFnZXRhYmxl KHZvaWQpCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=