From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 13/19] x86/shadow: Avoid raising faults behind the emulators back Date: Mon, 28 Nov 2016 11:13:30 +0000 Message-ID: <1480331616-6165-14-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: Andrew Cooper , Tim Deegan , Jan Beulich List-Id: xen-devel@lists.xenproject.org VXNlIHg4Nl9lbXVsX3tod19leGNlcHRpb24scGFnZWZhdWx0fSgpIHJhdGhlciB0aGFuCntwdixo dm19X2luamVjdF9wYWdlX2ZhdWx0KCkgYW5kIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKCkgdG8g Y2F1c2UgcmFpc2VkCmZhdWx0cyB0byBiZSBrbm93biB0byB0aGUgZW11bGF0b3IuICBUaGlzIHJl cXVpcmVzIGFsdGVyaW5nIHRoZSBjYWxsZXJzIG9mCng4Nl9lbXVsYXRlKCkgdG8gcHJvcGVybHkg cmUtaW5qZWN0IHRoZSBldmVudC4KCldoaWxlIGZpeGluZyB0aGlzLCBmaXggdGhlIHNpbmdsZXN0 ZXAgYmVoYXZpb3VyLiAgUHJldmlvdXNseSwgYW4gb3RoZXJ3aXNlCnN1Y2Nlc3NmdWwgZW11bGF0 aW9uIHdvdWxkIGZhaWwgaWYgc2luZ2xlc3RlcHBpbmcgd2FzIGFjdGl2ZSwgYXMgdGhlIGVtdWxh dG9yCmNvdWxkbid0IHJhaXNlICNEQi4gIFRoaXMgaXMgdW5yZWFzb25hYmxlIGZyb20gdGhlIHBv aW50IG9mIHZpZXcgb2YgdGhlIGd1ZXN0LgoKV2UgdGhlcmVmb3JlIHRvbGVyYXRlICNQRi8jR1Av U1MgYW5kICNEQiBiZWluZyByYWlzZWQgYnkgdGhlIGVtdWxhdG9yLCBidXQKcmVqZWN0IGFueXRo aW5nIGVsc2UgYXMgdW5leHBlY3RlZC4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFu ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1 c2UuY29tPgpDQzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Cgp2MjoKICogTmV3Ci0tLQogeGVu L2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyB8IDEzICsrKystLS0tLQogeGVuL2FyY2gveDg2 L21tL3NoYWRvdy9tdWx0aS5jICB8IDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyBiL3hlbi9h cmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKaW5kZXggZjA3ODAzYi4uZTUwOWNjMSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYworKysgYi94ZW4vYXJjaC94ODYv bW0vc2hhZG93L2NvbW1vbi5jCkBAIC0xNjIsOCArMTYyLDkgQEAgc3RhdGljIGludCBodm1fdHJh bnNsYXRlX2xpbmVhcl9hZGRyKAogCiAgICAgaWYgKCAhb2theSApCiAgICAgewotICAgICAgICBo dm1faW5qZWN0X2h3X2V4Y2VwdGlvbigKLSAgICAgICAgICAgIChzZWcgPT0geDg2X3NlZ19zcykg PyBUUkFQX3N0YWNrX2Vycm9yIDogVFJBUF9ncF9mYXVsdCwgMCk7CisgICAgICAgIHg4Nl9lbXVs X2h3X2V4Y2VwdGlvbigKKyAgICAgICAgICAgIChzZWcgPT0geDg2X3NlZ19zcykgPyBUUkFQX3N0 YWNrX2Vycm9yIDogVFJBUF9ncF9mYXVsdCwKKyAgICAgICAgICAgIDAsICZzaF9jdHh0LT5jdHh0 KTsKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogICAgIH0KIApAQCAtMzIzLDcg KzMyNCw3IEBAIHB2X2VtdWxhdGVfcmVhZChlbnVtIHg4Nl9zZWdtZW50IHNlZywKIAogICAgIGlm ICggKHJjID0gY29weV9mcm9tX3VzZXIocF9kYXRhLCAodm9pZCAqKW9mZnNldCwgYnl0ZXMpKSAh PSAwICkKICAgICB7Ci0gICAgICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KDAsIG9mZnNldCArIGJ5 dGVzIC0gcmMpOyAvKiBSZWFkIGZhdWx0LiAqLworICAgICAgICB4ODZfZW11bF9wYWdlZmF1bHQo MCwgb2Zmc2V0ICsgYnl0ZXMgLSByYywgY3R4dCk7IC8qIFJlYWQgZmF1bHQuICovCiAgICAgICAg IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKICAgICB9CiAKQEAgLTE3MjAsMTAgKzE3MjEsOCBA QCBzdGF0aWMgbWZuX3QgZW11bGF0ZV9ndmFfdG9fbWZuKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25l ZCBsb25nIHZhZGRyLAogICAgIGdmbiA9IHBhZ2luZ19nZXRfaG9zdG1vZGUodiktPmd2YV90b19n Zm4odiwgTlVMTCwgdmFkZHIsICZwZmVjKTsKICAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElE X0dGTikgKQogICAgIHsKLSAgICAgICAgaWYgKCBpc19odm1fdmNwdSh2KSApCi0gICAgICAgICAg ICBodm1faW5qZWN0X3BhZ2VfZmF1bHQocGZlYywgdmFkZHIpOwotICAgICAgICBlbHNlCi0gICAg ICAgICAgICBwdl9pbmplY3RfcGFnZV9mYXVsdChwZmVjLCB2YWRkcik7CisgICAgICAgIHg4Nl9l bXVsX3BhZ2VmYXVsdChwZmVjLCB2YWRkciwgJnNoX2N0eHQtPmN0eHQpOworCiAgICAgICAgIHJl dHVybiBfbWZuKEJBRF9HVkFfVE9fR0ZOKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwpp bmRleCAxM2ZhMWJmLi41MDcwNWEwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93 L211bHRpLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCkBAIC0zMzkwLDcg KzMzOTAsNyBAQCBzdGF0aWMgaW50IHNoX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsCiAgICAg ICogd291bGQgYmUgYSBnb29kIHVuc2hhZG93IGhpbnQuIElmIHdlICpkbyogZGVjaWRlIHRvIHVu c2hhZG93LW9uLWZhdWx0CiAgICAgICogdGhlbiBpdCBtdXN0IGJlICdmYWlsYWJsZSc6IHdlIGNh bm5vdCByZXF1aXJlIHRoZSB1bnNoYWRvdyB0byBzdWNjZWVkLgogICAgICAqLwotICAgIGlmICgg ciA9PSBYODZFTVVMX1VOSEFORExFQUJMRSB8fCBlbXVsX2N0eHQuY3R4dC5ldmVudF9wZW5kaW5n ICkKKyAgICBpZiAoIHIgPT0gWDg2RU1VTF9VTkhBTkRMRUFCTEUgKQogICAgIHsKICAgICAgICAg cGVyZmNfaW5jcihzaGFkb3dfZmF1bHRfZW11bGF0ZV9mYWlsZWQpOwogI2lmIFNIQURPV19PUFRJ TUlaQVRJT05TICYgU0hPUFRfRkFTVF9FTVVMQVRJT04KQEAgLTM0MzQsNiArMzQzNCwzNCBAQCBz dGF0aWMgaW50IHNoX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsCiAgICAgICAgIHYtPmFyY2gu cGFnaW5nLmxhc3Rfd3JpdGVfZW11bF9vayA9IDA7CiAjZW5kaWYKIAorICAgIGlmICggciA9PSBY ODZFTVVMX0VYQ0VQVElPTiAmJiBlbXVsX2N0eHQuY3R4dC5ldmVudF9wZW5kaW5nICkKKyAgICB7 CisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXMgZW11bGF0aW9uIGNvdmVycyB3cml0ZXMgdG8g c2hhZG93IHBhZ2V0YWJsZXMuICBXZSB0b2xlcmF0ZSAjUEYKKyAgICAgICAgICogKGZyb20gaGl0 dGluZyBhZGphY2VudCBwYWdlcyksICNHUC8jU1MgKGZyb20gc2VnbWVudGF0aW9uIGVycm9ycyks CisgICAgICAgICAqIGFuZCAjREIgKGZyb20gc2luZ2xlc3RlcHBpbmcpLiAgQW55dGhpbmcgZWxz ZSBpcyBhbiBlbXVsYXRpb24gYnVnLAorICAgICAgICAgKiBvciBhIGd1ZXN0IHBsYXlpbmcgd2l0 aCB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIHVuZGVyIFhlbidzIGZlZXQuCisgICAgICAgICAqLwor ICAgICAgICBpZiAoIGVtdWxfY3R4dC5jdHh0LmV2ZW50LnR5cGUgPT0gWDg2X0VWRU5UVFlQRV9I V19FWENFUFRJT04gJiYKKyAgICAgICAgICAgICAoZW11bF9jdHh0LmN0eHQuZXZlbnQudmVjdG9y IDwgMzIpICYmCisgICAgICAgICAgICAgKCgxdSA8PCBlbXVsX2N0eHQuY3R4dC5ldmVudC52ZWN0 b3IpICYKKyAgICAgICAgICAgICAgKCgxdSA8PCBUUkFQX2RlYnVnKSB8ICgxdSA8PCBUUkFQX3N0 YWNrX2Vycm9yKSB8CisgICAgICAgICAgICAgICAoMXUgPDwgVFJBUF9ncF9mYXVsdCkgfCAoMXUg PDwgVFJBUF9wYWdlX2ZhdWx0KSkpICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCBpc19o dm1fdmNwdSh2KSApCisgICAgICAgICAgICAgICAgaHZtX2luamVjdF9ldmVudCgmZW11bF9jdHh0 LmN0eHQuZXZlbnQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHB2X2luamVj dF9ldmVudCgmZW11bF9jdHh0LmN0eHQuZXZlbnQpOworICAgICAgICB9CisgICAgICAgIGVsc2UK KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCBpc19odm1fdmNwdSh2KSApCisgICAgICAgICAg ICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CisgICAgICAg ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcHZfaW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dw X2ZhdWx0LCAwKTsKKyAgICAgICAgfQorICAgIH0KKwogI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMg PT0gMyAvKiBQQUUgZ3Vlc3QgKi8KICAgICBpZiAoIHIgPT0gWDg2RU1VTF9PS0FZICkgewogICAg ICAgICBpbnQgaSwgZW11bGF0aW9uX2NvdW50PTA7CkBAIC0zNDc1LDYgKzM1MDMsMzcgQEAgc3Rh dGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAogICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgIHBlcmZjX2luY3Ioc2hhZG93X2VtX2V4X2ZhaWwpOwogICAgICAgICAgICAg ICAgIFRSQUNFX1NIQURPV19QQVRIX0ZMQUcoVFJDRV9TRkxBR19FTVVMQVRJT05fTEFTVF9GQUlM RUQpOworCisgICAgICAgICAgICAgICAgaWYgKCByID09IFg4NkVNVUxfRVhDRVBUSU9OICYmIGVt dWxfY3R4dC5jdHh0LmV2ZW50X3BlbmRpbmcgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICogVGhpcyBlbXVsYXRpb24gY292 ZXJzIHdyaXRlcyB0byBzaGFkb3cgcGFnZXRhYmxlcy4gIFdlCisgICAgICAgICAgICAgICAgICAg ICAqIHRvbGVyYXRlICNQRiAoZnJvbSBoaXR0aW5nIGFkamFjZW50IHBhZ2VzKSwgI0dQLyNTUwor ICAgICAgICAgICAgICAgICAgICAgKiAoZnJvbSBzZWdtZW50YXRpb24gZXJyb3JzKSwgYW5kICNE QiAoZnJvbQorICAgICAgICAgICAgICAgICAgICAgKiBzaW5nbGVzdGVwcGluZykuICBBbnl0aGlu ZyBlbHNlIGlzIGFuIGVtdWxhdGlvbiBidWcsIG9yCisgICAgICAgICAgICAgICAgICAgICAqIGEg Z3Vlc3QgcGxheWluZyB3aXRoIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0gdW5kZXIgWGVuJ3MKKyAg ICAgICAgICAgICAgICAgICAgICogZmVldC4KKyAgICAgICAgICAgICAgICAgICAgICovCisgICAg ICAgICAgICAgICAgICAgIGlmICggZW11bF9jdHh0LmN0eHQuZXZlbnQudHlwZSA9PSBYODZfRVZF TlRUWVBFX0hXX0VYQ0VQVElPTiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIChlbXVsX2N0 eHQuY3R4dC5ldmVudC52ZWN0b3IgPCAzMikgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAo KDF1IDw8IGVtdWxfY3R4dC5jdHh0LmV2ZW50LnZlY3RvcikgJgorICAgICAgICAgICAgICAgICAg ICAgICAgICAoKDF1IDw8IFRSQVBfZGVidWcpIHwgKDF1IDw8IFRSQVBfc3RhY2tfZXJyb3IpIHwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICgxdSA8PCBUUkFQX2dwX2ZhdWx0KSB8ICgxdSA8 PCBUUkFQX3BhZ2VfZmF1bHQpKSkgKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoIGlzX2h2bV92Y3B1KHYpICkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBodm1faW5qZWN0X2V2ZW50KCZlbXVsX2N0eHQuY3R4dC5ldmVudCk7CisgICAgICAg ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHZfaW5q ZWN0X2V2ZW50KCZlbXVsX2N0eHQuY3R4dC5ldmVudCk7CisgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgICAgICBpZiAoIGlzX2h2bV92Y3B1KHYpICkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw dl9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOworICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIERv bid0IGVtdWxhdGUgYWdhaW4gaWYgd2UgZmFpbGVkISAqLwogICAgICAgICAgICAgfQogICAgICAg ICB9Ci0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=