From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v6.5 22/26] x86/boot: Calculate the most appropriate BTI mitigation to use Date: Thu, 4 Jan 2018 00:15:51 +0000 Message-ID: <1515024955-13390-23-git-send-email-andrew.cooper3@citrix.com> References: <1515024955-13390-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: <1515024955-13390-1-git-send-email-andrew.cooper3@citrix.com> 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 List-Id: xen-devel@lists.xenproject.org U2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4K LS0tCnY0OgogKiBOZXcKdjU6CiAqIFdoaXRlc3BhY2UgZml4ZXMKLS0tCiBkb2NzL21pc2MveGVu LWNvbW1hbmQtbGluZS5tYXJrZG93biB8ICAgNiArKy0KIHhlbi9hcmNoL3g4Ni9zcGVjX2N0cmwu YyAgICAgICAgICAgIHwgMTAzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQog MiBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93biBiL2RvY3MvbWlzYy94 ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCmluZGV4IDE5ZTEyYWMuLjM0Mjk0ODQgMTAwNjQ0Ci0t LSBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCisrKyBiL2RvY3MvbWlzYy94 ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCkBAIC0yNDYsNyArMjQ2LDcgQEAgZW5vdWdoLiBTZXR0 aW5nIHRoaXMgdG8gYSBoaWdoIHZhbHVlIG1heSBjYXVzZSBib290IGZhaWx1cmUsIHBhcnRpY3Vs YXJseSBpZgogdGhlIE5NSSB3YXRjaGRvZyBpcyBhbHNvIGVuYWJsZWQuCiAKICMjIyBidGkgKHg4 NikKLT4gYD0gTGlzdCBvZiBbIHRodW5rPXJldHBvbGluZXxsZmVuY2V8cGxhaW4gXWAKKz4gYD0g TGlzdCBvZiBbIHRodW5rPXJldHBvbGluZXxsZmVuY2V8cGxhaW4sIGlicnM9PGJvb2w+IF1gCiAK IEJyYW5jaCBUYXJnZXQgSW5qZWN0aW9uIGNvbnRyb2xzLiAgQnkgZGVmYXVsdCwgWGVuIHdpbGwg cGljayB0aGUgbW9zdAogYXBwcm9wcmlhdGUgQlRJIG1pdGlnYXRpb25zIGJhc2VkIG9uIGNvbXBp bGVkIGluIHN1cHBvcnQsIGxvYWRlZCBtaWNyb2NvZGUsCkBAIC0yNTksNiArMjU5LDEwIEBAIHNl bGVjdCB3aGljaCBvZiB0aGUgdGh1bmtzIGdldHMgcGF0Y2hlZCBpbnRvIHRoZSBgX194ODYuaW5k aXJlY3RfdGh1bmsuJXJlZ2AKIGxvY2F0aW9ucy4gIFRoZSBkZWZhdWx0IHRodW5rIGlzIGByZXRw b2xpbmVgLCB3aXRoIHRoZSBhbHRlcm5hdGl2ZXMgYmVpbmcKIGBwbGFpbmAgKGEgYGptcCAqJXJl Z2AgZ2FkZ2V0KSwgYW5kIGBsZmVuY2VgIChhbiBgbGZlbmNlOyBqbXAgKiVyZWdgIGdhZGdldCku CiAKK09uIGhhcmR3YXJlIHN1cHBvcnRpbmcgSUJSUywgdGhlIGBpYnJzPWAgb3B0aW9uIGNhbiBi ZSB1c2VkIHRvIGZvcmNlIG9yCitwcmV2ZW50IFhlbiB1c2luZyB0aGUgZmVhdHVyZSBpdHNlbGYu ICBJZiBYZW4gaXMgbm90IHVzaW5nIElCUlMgaXRzZWxmLAorZnVuY3Rpb25hbGl0eSBpcyBzdGls bCBzZXQgdXAgc28gSUJSUyBjYW4gYmUgdmlydHVhbGlzZWQgZm9yIGd1ZXN0cy4KKwogIyMjIHhl bmhlYXBcX21lZ2FieXRlcyAoYXJtMzIpCiA+IGA9IDxzaXplPmAKIApkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L3NwZWNfY3RybC5jIGIveGVuL2FyY2gveDg2L3NwZWNfY3RybC5jCmluZGV4IGQ5 YWNlMmQuLjFjY2NiOGEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zcGVjX2N0cmwuYworKysg Yi94ZW4vYXJjaC94ODYvc3BlY19jdHJsLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlIDx4 ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhlbi9saWIuaD4KIAorI2luY2x1ZGUgPGFzbS9taWNyb2Nv ZGUuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL3NwZWNfY3Ry bC5oPgogCkBAIC0zMSwxMSArMzIsMTIgQEAgZW51bSBpbmRfdGh1bmsgewogICAgIFRIVU5LX0xG RU5DRSwKICAgICBUSFVOS19KTVAsCiB9IG9wdF90aHVuayBfX2luaXRkYXRhID0gVEhVTktfREVG QVVMVDsKK2ludCBvcHRfaWJycyBfX2luaXRkYXRhID0gLTE7CiAKIHN0YXRpYyBpbnQgX19pbml0 IHBhcnNlX2J0aShjb25zdCBjaGFyICpzKQogewogICAgIGNvbnN0IGNoYXIgKnNzOwotICAgIGlu dCByYyA9IDA7CisgICAgaW50IHZhbCwgcmMgPSAwOwogCiAgICAgZG8gewogICAgICAgICBzcyA9 IHN0cmNocihzLCAnLCcpOwpAQCAtNTUsNiArNTcsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJz ZV9idGkoY29uc3QgY2hhciAqcykKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBy YyA9IC1FSU5WQUw7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoICh2YWwgPSBwYXJzZV9i b29sZWFuKCJpYnJzIiwgcywgc3MpKSA+PSAwICkKKyAgICAgICAgICAgIG9wdF9pYnJzID0gdmFs OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByYyA9IC1FSU5WQUw7CiAKQEAgLTkxLDI0ICs5 NSw4MiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcHJpbnRfZGV0YWlscyhlbnVtIGluZF90aHVuayB0 aHVuaykKICAgICAgICAgcHJpbnRrKFhFTkxPR19ERUJVRyAiICBDb21waWxlZC1pbiBzdXBwb3J0 OiBJTkRJUkVDVF9USFVOS1xuIik7CiAKICAgICBwcmludGsoWEVOTE9HX0lORk8KLSAgICAgICAg ICAgIkJUSSBtaXRpZ2F0aW9uczogVGh1bmsgJXNcbiIsCisgICAgICAgICAgICJCVEkgbWl0aWdh dGlvbnM6IFRodW5rICVzLCBPdGhlcnM6JXNcbiIsCiAgICAgICAgICAgIHRodW5rID09IFRIVU5L X05PTkUgICAgICA/ICJOL0EiIDoKICAgICAgICAgICAgdGh1bmsgPT0gVEhVTktfUkVUUE9MSU5F ID8gIlJFVFBPTElORSIgOgogICAgICAgICAgICB0aHVuayA9PSBUSFVOS19MRkVOQ0UgICAgPyAi TEZFTkNFIiA6Ci0gICAgICAgICAgIHRodW5rID09IFRIVU5LX0pNUCAgICAgICA/ICJKTVAiIDog Ij8iKTsKKyAgICAgICAgICAgdGh1bmsgPT0gVEhVTktfSk1QICAgICAgID8gIkpNUCIgOiAiPyIs CisgICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9YRU5fSUJSU19TRVQpICAgID8g IiBJQlJTKyIgOgorICAgICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfWEVOX0lCUlNf Q0xFQVIpICA/ICIgSUJSUy0iICAgICAgOiAiIik7Cit9CisKKy8qIENhbGN1bGF0ZSB3aGV0aGVy IFJldHBvbGluZSBpcyBrbm93bi1zYWZlIG9uIHRoaXMgQ1BVLiAqLworc3RhdGljIGJvb2wgX19p bml0IHJldHBvbGluZV9zYWZlKHZvaWQpCit7CisgICAgdW5zaWduZWQgaW50IHVjb2RlX3JldiA9 IHRoaXNfY3B1KHVjb2RlX2NwdV9pbmZvKS5jcHVfc2lnLnJldjsKKworICAgIGlmICggYm9vdF9j cHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfQU1EICkKKyAgICAgICAgcmV0dXJuIHRy dWU7CisKKyAgICBpZiAoIGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciAhPSBYODZfVkVORE9SX0lO VEVMIHx8CisgICAgICAgICBib290X2NwdV9kYXRhLng4NiAhPSA2ICkKKyAgICAgICAgcmV0dXJu IGZhbHNlOworCisgICAgc3dpdGNoICggYm9vdF9jcHVfZGF0YS54ODZfbW9kZWwgKQorICAgIHsK KyAgICBjYXNlIDB4MTc6IC8qIFBlbnJ5biAqLworICAgIGNhc2UgMHgxZDogLyogRHVubmluZ3Rv biAqLworICAgIGNhc2UgMHgxZTogLyogTmVoYWxlbSAqLworICAgIGNhc2UgMHgxZjogLyogQXVi dXJuZGFsZSAvIEhhdmVuZGFsZSAqLworICAgIGNhc2UgMHgxYTogLyogTmVoYWxlbSBFUCAqLwor ICAgIGNhc2UgMHgyZTogLyogTmVoYWxlbSBFWCAqLworICAgIGNhc2UgMHgyNTogLyogV2VzdG1l cmUgKi8KKyAgICBjYXNlIDB4MmM6IC8qIFdlc3RtZXJlIEVQICovCisgICAgY2FzZSAweDJmOiAv KiBXZXN0bWVyZSBFWCAqLworICAgIGNhc2UgMHgyYTogLyogU2FuZHlCcmlkZ2UgKi8KKyAgICBj YXNlIDB4MmQ6IC8qIFNhbmR5QnJpZGdlIEVQL0VYICovCisgICAgY2FzZSAweDNhOiAvKiBJdnlC cmlkZ2UgKi8KKyAgICBjYXNlIDB4M2U6IC8qIEl2eUJyaWRnZSBFUC9FWCAqLworICAgIGNhc2Ug MHgzYzogLyogSGFzd2VsbCAqLworICAgIGNhc2UgMHgzZjogLyogSGFzd2VsbCBFWC9FUCAqLwor ICAgIGNhc2UgMHg0NTogLyogSGFzd2VsbCBEICovCisgICAgY2FzZSAweDQ2OiAvKiBIYXN3ZWxs IEggKi8KKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQnJv YWR3ZWxsIHByb2Nlc3NvcnMgYXJlIHJldHBvbGluZS1zYWZlIGFmdGVyIHNwZWNpZmljIG1pY3Jv Y29kZQorICAgICAgICAgKiB2ZXJzaW9ucy4KKyAgICAgICAgICovCisgICAgY2FzZSAweDNkOiAv KiBCcm9hZHdlbGwgKi8KKyAgICAgICAgcmV0dXJuIHVjb2RlX3JldiA+PSAweDI4OworICAgIGNh c2UgMHg0NzogLyogQnJvYWR3ZWxsIEggKi8KKyAgICAgICAgcmV0dXJuIHVjb2RlX3JldiA+PSAw eDFiOworICAgIGNhc2UgMHg0ZjogLyogQnJvYWR3ZWxsIEVQL0VYICovCisgICAgICAgIHJldHVy biB1Y29kZV9yZXYgPj0gMHhiMDAwMDI1OworICAgIGNhc2UgMHg1NjogLyogQnJvYWR3ZWxsIEQg Ki8KKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvKiBUQkQuICovCisKKyAgICAgICAgLyoKKyAgICAg ICAgICogU2t5bGFrZSBhbmQgbGF0ZXIgcHJvY2Vzc29ycyBhcmUgbm90IHJldHBvbGluZS1zYWZl LgorICAgICAgICAgKi8KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg fQogfQogCiB2b2lkIF9faW5pdCBpbml0X3NwZWN1bGF0aW9uX21pdGlnYXRpb25zKHZvaWQpCiB7 CiAgICAgZW51bSBpbmRfdGh1bmsgdGh1bmsgPSBUSFVOS19ERUZBVUxUOworICAgIGJvb2wgaWJy cyA9IGZhbHNlOwogCiAgICAgLyoKICAgICAgKiBIYXMgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBj dXN0b20gQlRJIG1pdGlnYXRpb25zPyAgSWYgc28sIGZvbGxvdyB0aGVpcgogICAgICAqIGluc3Ry dWN0aW9ucyBleGFjdGx5IGFuZCBkaXNhYmxlIGFsbCBoZXVyaXN0aWNzLgogICAgICAqLwotICAg IGlmICggb3B0X3RodW5rICE9IFRIVU5LX0RFRkFVTFQgKQorICAgIGlmICggb3B0X3RodW5rICE9 IFRIVU5LX0RFRkFVTFQgfHwgb3B0X2licnMgIT0gLTEgKQogICAgIHsKICAgICAgICAgdGh1bmsg PSBvcHRfdGh1bms7CisgICAgICAgIGlicnMgID0gISFvcHRfaWJyczsKICAgICB9CiAgICAgZWxz ZQogICAgIHsKQEAgLTEyNCw3ICsxODYsMjEgQEAgdm9pZCBfX2luaXQgaW5pdF9zcGVjdWxhdGlv bl9taXRpZ2F0aW9ucyh2b2lkKQogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoIGNw dV9oYXNfbGZlbmNlX2Rpc3BhdGNoICkKICAgICAgICAgICAgICAgICB0aHVuayA9IFRIVU5LX0xG RU5DRTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBPbiBJbnRlbCBoYXJkd2FyZSwg d2UnZCBsaWtlIHRvIHVzZSByZXRwb2xpbmUgaW4gcHJlZmVyZW5jZSB0bworICAgICAgICAgICAg ICogSUJSUywgYnV0IG9ubHkgaWYgaXQgaXMgc2FmZSBvbiB0aGlzIGhhcmR3YXJlLgorICAgICAg ICAgICAgICovCisgICAgICAgICAgICBlbHNlIGlmICggYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJF X0lCUlNCKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCByZXRwb2xpbmVf c2FmZSgpICkKKyAgICAgICAgICAgICAgICAgICAgdGh1bmsgPSBUSFVOS19SRVRQT0xJTkU7Cisg ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpYnJzID0gdHJ1ZTsKKyAg ICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvKiBXaXRob3V0IGNvbXBpbGVyIHRodW5r IHN1cHBvcnQsIHVzZSBJQlJTIGlmIGF2YWlsYWJsZS4gKi8KKyAgICAgICAgZWxzZSBpZiAoIGJv b3RfY3B1X2hhcyhYODZfRkVBVFVSRV9JQlJTQikgKQorICAgICAgICAgICAgaWJycyA9IHRydWU7 CiAgICAgfQogCiAgICAgLyoKQEAgLTEzNSw2ICsyMTEsMTMgQEAgdm9pZCBfX2luaXQgaW5pdF9z cGVjdWxhdGlvbl9taXRpZ2F0aW9ucyh2b2lkKQogICAgICAgICB0aHVuayA9IFRIVU5LX05PTkU7 CiAKICAgICAvKgorICAgICAqIElmIElCUlMgaXMgaW4gdXNlIGFuZCB0aHVua3MgYXJlIGNvbXBp bGVkIGluLCB0aGVyZSBpcyBubyBwb2ludAorICAgICAqIHN1ZmZlcmluZyBleHRyYSBvdmVyaGVh ZC4gIFN3aXRjaCB0byB0aGUgbGVhc3Qtb3ZlcmhlYWQgdGh1bmsuCisgICAgICovCisgICAgaWYg KCBpYnJzICYmIHRodW5rID09IFRIVU5LX0RFRkFVTFQgKQorICAgICAgICB0aHVuayA9IFRIVU5L X0pNUDsKKworICAgIC8qCiAgICAgICogSWYgdGhlcmUgYXJlIHN0aWxsIG5vIHRodW5rIHByZWZl cmVuY2VzLCB0aGUgY29tcGlsZWQgZGVmYXVsdCBpcwogICAgICAqIGFjdHVhbGx5IHJldHBvbGlu ZSwgYW5kIGl0IGlzIGJldHRlciB0aGFuIG5vdGhpbmcuCiAgICAgICovCkBAIC0xNDcsNiArMjMw LDE4IEBAIHZvaWQgX19pbml0IGluaXRfc3BlY3VsYXRpb25fbWl0aWdhdGlvbnModm9pZCkKICAg ICBlbHNlIGlmICggdGh1bmsgPT0gVEhVTktfSk1QICkKICAgICAgICAgc2V0dXBfZm9yY2VfY3B1 X2NhcChYODZfRkVBVFVSRV9JTkRfVEhVTktfSk1QKTsKIAorICAgIC8qCisgICAgICogRXZlbiBp ZiB3ZSd2ZSBjaG9zZW4gbm90IHRvIHVzZSBJQlJTIGZvciBYZW4gaXRzZWxmLCB3ZSBzdGlsbCBu ZWVkIHRoZQorICAgICAqIElCUlMgZW50cnkvZXhpdCBsb2dpYyB0byB2aXJ0dWFsaXNlIElCUlMg c3VwcG9ydCBmb3IgZ3Vlc3RzLgorICAgICAqLworICAgIGlmICggYm9vdF9jcHVfaGFzKFg4Nl9G RUFUVVJFX0lCUlNCKSApCisgICAgeworICAgICAgICBpZiAoIGlicnMgKQorICAgICAgICAgICAg c2V0dXBfZm9yY2VfY3B1X2NhcChYODZfRkVBVFVSRV9YRU5fSUJSU19TRVQpOworICAgICAgICBl bHNlCisgICAgICAgICAgICBzZXR1cF9mb3JjZV9jcHVfY2FwKFg4Nl9GRUFUVVJFX1hFTl9JQlJT X0NMRUFSKTsKKyAgICB9CisKICAgICBwcmludF9kZXRhaWxzKHRodW5rKTsKIH0KIAotLSAKMi4x LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs