From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH] x86/boot: Make alternative patching NMI-safe Date: Mon, 5 Feb 2018 10:24:58 +0000 Message-ID: <1517826298-5607-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: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org RHVyaW5nIHBhdGNoaW5nLCB0aGVyZSBpcyBhIHZlcnkgc2xpbSByaXNrIHRoYXQgYW4gTk1JIG9y IE1DRSBpbnRlcnJ1cHQgaW4gdGhlCm1pZGRsZSBvZiBhbHRlcmluZyB0aGUgY29kZSBpbiB0aGUg Tk1JL01DRSBwYXRocywgaW4gd2hpY2ggY2FzZSBiYWQgdGhpbmdzCndpbGwgaGFwcGVuLgoKVGhl IE5NSSByaXNrIGNhbiBiZSBlbGltaW5hdGVkIGJ5IHJ1bm5pbmcgdGhlIHBhdGNoaW5nIGxvb3Ag aW4gTk1JIGNvbnRleHQsIGF0CndoaWNoIHBvaW50IHRoZSBDUFUgd2lsbCBkZWZlciBmdXJ0aGVy IE5NSXMgdW50aWwgcGF0Y2hpbmcgaXMgY29tcGxldGUuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcg Q29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxK QmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvYWx0ZXJuYXRpdmUuYyB8IDYxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA0MiBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvYWx0ZXJuYXRpdmUuYyBiL3hlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5jCmluZGV4 IGVlMThlNmMuLjUyMWY4OTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5j CisrKyBiL3hlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5jCkBAIC0xNiw2ICsxNiw3IEBACiAgKi8K IAogI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9hcGljLmg+CiAjaW5jbHVk ZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS5oPgogI2luY2x1 ZGUgPHhlbi9pbml0Lmg+CkBAIC04MiwxMSArODMsNiBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQg Y2hhciAqIGNvbnN0IHA2X25vcHNbQVNNX05PUF9NQVgrMV0gaW5pdF9vcl9saXZlcGF0Y2hfY29u cwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqIGNvbnN0ICppZGVhbF9ub3BzIGluaXRf b3JfbGl2ZXBhdGNoX2RhdGEgPSBwNl9ub3BzOwogCi1zdGF0aWMgaW50IF9faW5pdCBtYXNrX25t aV9jYWxsYmFjayhjb25zdCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgaW50IGNwdSkKLXsK LSAgICByZXR1cm4gMTsKLX0KLQogc3RhdGljIHZvaWQgX19pbml0IGFyY2hfaW5pdF9pZGVhbF9u b3BzKHZvaWQpCiB7CiAgICAgc3dpdGNoICggYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yICkKQEAg LTIwMywyNCArMTk5LDUwIEBAIHZvaWQgaW5pdF9vcl9saXZlcGF0Y2ggYXBwbHlfYWx0ZXJuYXRp dmVzKGNvbnN0IHN0cnVjdCBhbHRfaW5zdHIgKnN0YXJ0LAogfQogCiAvKgorICogQXQgYm9vdCB0 aW1lLCB3ZSBwYXRjaCBhbHRlcm5hdGl2ZXMgaW4gTk1JIGNvbnRleHQuICBUaGlzIG1lYW5zIHRo YXQgdGhlCisgKiBhY3RpdmUgTk1JLXNoYWRvdyB3aWxsIGRlZmVyIGFueSBmdXJ0aGVyIE5NSXMs IHJlbW92aW5nIHRoZSBzbGltIHJhY2UKKyAqIGNvbmRpdGlvbiB3aGVyZSBhbiBOTUkgaGl0cyB3 aGlsZSB3ZSBhcmUgbWlkd2F5IHRob3VnaCBwYXRjaGluZyBzb21lCisgKiBpbnN0cnVjdGlvbnMg aW4gdGhlIE5NSSBwYXRoLgorICovCitzdGF0aWMgaW50IF9faW5pdCBubWlfYXBwbHlfYWx0ZXJu YXRpdmVzKGNvbnN0IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY3B1KQoreworICAgIHN0YXRpYyBib29sIF9f aW5pdGRhdGEgb25jZTsKKworICAgIC8qCisgICAgICogTW9yZSB0aGFuIG9uZSBOTUkgbWF5IG9j Y3VyIGJldHdlZW4gdGhlIHR3byBzZXRfbm1pX2NhbGxiYWNrKCkgYmVsb3cuCisgICAgICogV2Ug b25seSBuZWVkIHRvIGFwcGx5IGFsdGVybmF0aXZlcyBvbmNlLgorICAgICAqLworICAgIGlmICgg IW9uY2UgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBjcjA7CisKKyAgICAgICAgb25j ZSA9IHRydWU7CisKKyAgICAgICAgY3IwID0gcmVhZF9jcjAoKTsKKworICAgICAgICAvKiBEaXNh YmxlIFdQIHRvIGFsbG93IHBhdGNoaW5nIHJlYWQtb25seSBwYWdlcy4gKi8KKyAgICAgICAgd3Jp dGVfY3IwKGNyMCAmIH5YODZfQ1IwX1dQKTsKKworICAgICAgICBhcHBseV9hbHRlcm5hdGl2ZXMo X19hbHRfaW5zdHJ1Y3Rpb25zLCBfX2FsdF9pbnN0cnVjdGlvbnNfZW5kKTsKKworICAgICAgICB3 cml0ZV9jcjAoY3IwKTsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyoKICAqIFRoaXMg cm91dGluZSBpcyBjYWxsZWQgd2l0aCBsb2NhbCBpbnRlcnJ1cHQgZGlzYWJsZWQgYW5kIHVzZWQg ZHVyaW5nCiAgKiBib290dXAuCiAgKi8KIHZvaWQgX19pbml0IGFsdGVybmF0aXZlX2luc3RydWN0 aW9ucyh2b2lkKQogewogICAgIG5taV9jYWxsYmFja190ICpzYXZlZF9ubWlfY2FsbGJhY2s7Ci0g ICAgdW5zaWduZWQgbG9uZyBjcjAgPSByZWFkX2NyMCgpOwogCiAgICAgYXJjaF9pbml0X2lkZWFs X25vcHMoKTsKIAogICAgIC8qCi0gICAgICogVGhlIHBhdGNoaW5nIGlzIG5vdCBmdWxseSBhdG9t aWMsIHNvIHRyeSB0byBhdm9pZCBsb2NhbCBpbnRlcnJ1cHRpb25zCi0gICAgICogdGhhdCBtaWdo dCBleGVjdXRlIHRoZSB0byBiZSBwYXRjaGVkIGNvZGUuCi0gICAgICogT3RoZXIgQ1BVcyBhcmUg bm90IHJ1bm5pbmcuCi0gICAgICovCi0gICAgc2F2ZWRfbm1pX2NhbGxiYWNrID0gc2V0X25taV9j YWxsYmFjayhtYXNrX25taV9jYWxsYmFjayk7Ci0KLSAgICAvKgogICAgICAqIERvbid0IHN0b3Ag bWFjaGluZSBjaGVjayBleGNlcHRpb25zIHdoaWxlIHBhdGNoaW5nLgogICAgICAqIE1DRXMgb25s eSBoYXBwZW4gd2hlbiBzb21ldGhpbmcgZ290IGNvcnJ1cHRlZCBhbmQgaW4gdGhpcwogICAgICAq IGNhc2Ugd2UgbXVzdCBkbyBzb21ldGhpbmcgYWJvdXQgdGhlIGNvcnJ1cHRpb24uCkBAIC0yMzIs MTMgKzI1NCwxNCBAQCB2b2lkIF9faW5pdCBhbHRlcm5hdGl2ZV9pbnN0cnVjdGlvbnModm9pZCkK ICAgICAgKi8KICAgICBBU1NFUlQoIWxvY2FsX2lycV9pc19lbmFibGVkKCkpOwogCi0gICAgLyog RGlzYWJsZSBXUCB0byBhbGxvdyBhcHBsaWNhdGlvbiBvZiBhbHRlcm5hdGl2ZXMgdG8gcmVhZC1v bmx5IHBhZ2VzLiAqLwotICAgIHdyaXRlX2NyMChjcjAgJiB+WDg2X0NSMF9XUCk7Ci0KLSAgICBh cHBseV9hbHRlcm5hdGl2ZXMoX19hbHRfaW5zdHJ1Y3Rpb25zLCBfX2FsdF9pbnN0cnVjdGlvbnNf ZW5kKTsKKyAgICAvKgorICAgICAqIEFzIHNvb24gYXMgdGhlIGNhbGxiYWNrIGlzIHNldCB1cCwg dGhlIG5leHQgTk1JIHdpbGwgdHJpZ2dlciBwYXRjaGluZywKKyAgICAgKiBldmVuIGFuIE5NSSBh aGVhZCBvZiBvdXIgZXhwbGljaXQgc2VsZi1OTUkuCisgICAgICovCisgICAgc2F2ZWRfbm1pX2Nh bGxiYWNrID0gc2V0X25taV9jYWxsYmFjayhubWlfYXBwbHlfYWx0ZXJuYXRpdmVzKTsKIAotICAg IC8qIFJlaW5zdGF0ZSBXUC4gKi8KLSAgICB3cml0ZV9jcjAoY3IwKTsKKyAgICAvKiBTZW5kIG91 cnNlbHZlcyBhbiBOTUkgdG8gdHJpZ2dlciB0aGUgY2FsbGJhY2suICovCisgICAgc2VsZl9ubWko KTsKIAogICAgIHNldF9ubWlfY2FsbGJhY2soc2F2ZWRfbm1pX2NhbGxiYWNrKTsKIH0KLS0gCjIu MS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==