From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v8 13/17] x86/boot: Calculate the most appropriate BTI mitigation to use Date: Fri, 12 Jan 2018 18:01:03 +0000 Message-ID: <1515780067-31735-14-git-send-email-andrew.cooper3@citrix.com> References: <1515780067-31735-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: <1515780067-31735-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 LS0tCnY3OgogKiBzdGF0aWMsIGFuZCB0d2VhayBjb21tZW50Ci0tLQogZG9jcy9taXNjL3hlbi1j b21tYW5kLWxpbmUubWFya2Rvd24gfCAgIDYgKystCiB4ZW4vYXJjaC94ODYvc3BlY19jdHJsLmMg ICAgICAgICAgICB8IDEwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDIg ZmlsZXMgY2hhbmdlZCwgMTA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gYi9kb2NzL21pc2MveGVu LWNvbW1hbmQtbGluZS5tYXJrZG93bgppbmRleCBiNDJhYmM2Li4xYWExMjI1IDEwMDY0NAotLS0g YS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgorKysgYi9kb2NzL21pc2MveGVu LWNvbW1hbmQtbGluZS5tYXJrZG93bgpAQCAtMjQ2LDcgKzI0Niw3IEBAIGVub3VnaC4gU2V0dGlu ZyB0aGlzIHRvIGEgaGlnaCB2YWx1ZSBtYXkgY2F1c2UgYm9vdCBmYWlsdXJlLCBwYXJ0aWN1bGFy bHkgaWYKIHRoZSBOTUkgd2F0Y2hkb2cgaXMgYWxzbyBlbmFibGVkLgogCiAjIyMgYnRpICh4ODYp Ci0+IGA9IExpc3Qgb2YgWyB0aHVuaz1yZXRwb2xpbmV8bGZlbmNlfGptcCBdYAorPiBgPSBMaXN0 IG9mIFsgdGh1bms9cmV0cG9saW5lfGxmZW5jZXxqbXAsIGlicnM9PGJvb2w+IF1gCiAKIEJyYW5j aCBUYXJnZXQgSW5qZWN0aW9uIGNvbnRyb2xzLiAgQnkgZGVmYXVsdCwgWGVuIHdpbGwgcGljayB0 aGUgbW9zdAogYXBwcm9wcmlhdGUgQlRJIG1pdGlnYXRpb25zIGJhc2VkIG9uIGNvbXBpbGVkIGlu IHN1cHBvcnQsIGxvYWRlZCBtaWNyb2NvZGUsCkBAIC0yNjEsNiArMjYxLDEwIEBAIGxvY2F0aW9u cy4gIFRoZSBkZWZhdWx0IHRodW5rIGlzIGByZXRwb2xpbmVgIChnZW5lcmFsbHkgcHJlZmVycmVk IGZvciBJbnRlbAogaGFyZHdhcmUpLCB3aXRoIHRoZSBhbHRlcm5hdGl2ZXMgYmVpbmcgYGptcGAg KGEgYGptcCAqJXJlZ2AgZ2FkZ2V0LCBtaW5pbWFsCiBvdmVyaGVhZCksIGFuZCBgbGZlbmNlYCAo YW4gYGxmZW5jZTsgam1wIColcmVnYCBnYWRnZXQsIHByZWZlcnJlZCBmb3IgQU1EKS4KIAorT24g aGFyZHdhcmUgc3VwcG9ydGluZyBJQlJTLCB0aGUgYGlicnM9YCBvcHRpb24gY2FuIGJlIHVzZWQg dG8gZm9yY2Ugb3IKK3ByZXZlbnQgWGVuIHVzaW5nIHRoZSBmZWF0dXJlIGl0c2VsZi4gIElmIFhl biBpcyBub3QgdXNpbmcgSUJSUyBpdHNlbGYsCitmdW5jdGlvbmFsaXR5IGlzIHN0aWxsIHNldCB1 cCBzbyBJQlJTIGNhbiBiZSB2aXJ0dWFsaXNlZCBmb3IgZ3Vlc3RzLgorCiAjIyMgeGVuaGVhcFxf bWVnYWJ5dGVzIChhcm0zMikKID4gYD0gPHNpemU+YAogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvc3BlY19jdHJsLmMgYi94ZW4vYXJjaC94ODYvc3BlY19jdHJsLmMKaW5kZXggODllNzI4Ny4u N2IwZGFhZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NwZWNfY3RybC5jCisrKyBiL3hlbi9h cmNoL3g4Ni9zcGVjX2N0cmwuYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgPHhlbi9pbml0 Lmg+CiAjaW5jbHVkZSA8eGVuL2xpYi5oPgogCisjaW5jbHVkZSA8YXNtL21pY3JvY29kZS5oPgog I2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxhc20vc3BlY19jdHJsLmg+CiAK QEAgLTMxLDExICszMiwxMiBAQCBzdGF0aWMgZW51bSBpbmRfdGh1bmsgewogICAgIFRIVU5LX0xG RU5DRSwKICAgICBUSFVOS19KTVAsCiB9IG9wdF90aHVuayBfX2luaXRkYXRhID0gVEhVTktfREVG QVVMVDsKK3N0YXRpYyBpbnQgb3B0X2licnMgX19pbml0ZGF0YSA9IC0xOwogCiBzdGF0aWMgaW50 IF9faW5pdCBwYXJzZV9idGkoY29uc3QgY2hhciAqcykKIHsKICAgICBjb25zdCBjaGFyICpzczsK LSAgICBpbnQgcmMgPSAwOworICAgIGludCB2YWwsIHJjID0gMDsKIAogICAgIGRvIHsKICAgICAg ICAgc3MgPSBzdHJjaHIocywgJywnKTsKQEAgLTU1LDYgKzU3LDggQEAgc3RhdGljIGludCBfX2lu aXQgcGFyc2VfYnRpKGNvbnN0IGNoYXIgKnMpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg ICAgICAgcmMgPSAtRUlOVkFMOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCAodmFsID0g cGFyc2VfYm9vbGVhbigiaWJycyIsIHMsIHNzKSkgPj0gMCApCisgICAgICAgICAgICBvcHRfaWJy cyA9IHZhbDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwogCkBAIC05 MSwyNCArOTUsODIgQEAgc3RhdGljIHZvaWQgX19pbml0IHByaW50X2RldGFpbHMoZW51bSBpbmRf dGh1bmsgdGh1bmspCiAgICAgICAgIHByaW50ayhYRU5MT0dfREVCVUcgIiAgQ29tcGlsZWQtaW4g c3VwcG9ydDogSU5ESVJFQ1RfVEhVTktcbiIpOwogCiAgICAgcHJpbnRrKFhFTkxPR19JTkZPCi0g ICAgICAgICAgICJCVEkgbWl0aWdhdGlvbnM6IFRodW5rICVzXG4iLAorICAgICAgICAgICAiQlRJ IG1pdGlnYXRpb25zOiBUaHVuayAlcywgT3RoZXJzOiVzXG4iLAogICAgICAgICAgICB0aHVuayA9 PSBUSFVOS19OT05FICAgICAgPyAiTi9BIiA6CiAgICAgICAgICAgIHRodW5rID09IFRIVU5LX1JF VFBPTElORSA/ICJSRVRQT0xJTkUiIDoKICAgICAgICAgICAgdGh1bmsgPT0gVEhVTktfTEZFTkNF ICAgID8gIkxGRU5DRSIgOgotICAgICAgICAgICB0aHVuayA9PSBUSFVOS19KTVAgICAgICAgPyAi Sk1QIiA6ICI/Iik7CisgICAgICAgICAgIHRodW5rID09IFRIVU5LX0pNUCAgICAgICA/ICJKTVAi IDogIj8iLAorICAgICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfWEVOX0lCUlNfU0VU KSAgICA/ICIgSUJSUysiIDoKKyAgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1hF Tl9JQlJTX0NMRUFSKSAgPyAiIElCUlMtIiAgICAgIDogIiIpOworfQorCisvKiBDYWxjdWxhdGUg d2hldGhlciBSZXRwb2xpbmUgaXMga25vd24tc2FmZSBvbiB0aGlzIENQVS4gKi8KK3N0YXRpYyBi b29sIF9faW5pdCByZXRwb2xpbmVfc2FmZSh2b2lkKQoreworICAgIHVuc2lnbmVkIGludCB1Y29k ZV9yZXYgPSB0aGlzX2NwdSh1Y29kZV9jcHVfaW5mbykuY3B1X3NpZy5yZXY7CisKKyAgICBpZiAo IGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciA9PSBYODZfVkVORE9SX0FNRCApCisgICAgICAgIHJl dHVybiB0cnVlOworCisgICAgaWYgKCBib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgIT0gWDg2X1ZF TkRPUl9JTlRFTCB8fAorICAgICAgICAgYm9vdF9jcHVfZGF0YS54ODYgIT0gNiApCisgICAgICAg IHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoIGJvb3RfY3B1X2RhdGEueDg2X21vZGVsICkK KyAgICB7CisgICAgY2FzZSAweDE3OiAvKiBQZW5yeW4gKi8KKyAgICBjYXNlIDB4MWQ6IC8qIER1 bm5pbmd0b24gKi8KKyAgICBjYXNlIDB4MWU6IC8qIE5laGFsZW0gKi8KKyAgICBjYXNlIDB4MWY6 IC8qIEF1YnVybmRhbGUgLyBIYXZlbmRhbGUgKi8KKyAgICBjYXNlIDB4MWE6IC8qIE5laGFsZW0g RVAgKi8KKyAgICBjYXNlIDB4MmU6IC8qIE5laGFsZW0gRVggKi8KKyAgICBjYXNlIDB4MjU6IC8q IFdlc3RtZXJlICovCisgICAgY2FzZSAweDJjOiAvKiBXZXN0bWVyZSBFUCAqLworICAgIGNhc2Ug MHgyZjogLyogV2VzdG1lcmUgRVggKi8KKyAgICBjYXNlIDB4MmE6IC8qIFNhbmR5QnJpZGdlICov CisgICAgY2FzZSAweDJkOiAvKiBTYW5keUJyaWRnZSBFUC9FWCAqLworICAgIGNhc2UgMHgzYTog LyogSXZ5QnJpZGdlICovCisgICAgY2FzZSAweDNlOiAvKiBJdnlCcmlkZ2UgRVAvRVggKi8KKyAg ICBjYXNlIDB4M2M6IC8qIEhhc3dlbGwgKi8KKyAgICBjYXNlIDB4M2Y6IC8qIEhhc3dlbGwgRVgv RVAgKi8KKyAgICBjYXNlIDB4NDU6IC8qIEhhc3dlbGwgRCAqLworICAgIGNhc2UgMHg0NjogLyog SGFzd2VsbCBIICovCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8qCisgICAgICAg ICAqIEJyb2Fkd2VsbCBwcm9jZXNzb3JzIGFyZSByZXRwb2xpbmUtc2FmZSBhZnRlciBzcGVjaWZp YyBtaWNyb2NvZGUKKyAgICAgICAgICogdmVyc2lvbnMuCisgICAgICAgICAqLworICAgIGNhc2Ug MHgzZDogLyogQnJvYWR3ZWxsICovCisgICAgICAgIHJldHVybiB1Y29kZV9yZXYgPj0gMHgyODsK KyAgICBjYXNlIDB4NDc6IC8qIEJyb2Fkd2VsbCBIICovCisgICAgICAgIHJldHVybiB1Y29kZV9y ZXYgPj0gMHgxYjsKKyAgICBjYXNlIDB4NGY6IC8qIEJyb2Fkd2VsbCBFUC9FWCAqLworICAgICAg ICByZXR1cm4gdWNvZGVfcmV2ID49IDB4YjAwMDAyNTsKKyAgICBjYXNlIDB4NTY6IC8qIEJyb2Fk d2VsbCBEICovCisgICAgICAgIHJldHVybiBmYWxzZTsgLyogVEJELiAqLworCisgICAgICAgIC8q CisgICAgICAgICAqIFNreWxha2UgYW5kIGxhdGVyIHByb2Nlc3NvcnMgYXJlIG5vdCByZXRwb2xp bmUtc2FmZS4KKyAgICAgICAgICovCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl OworICAgIH0KIH0KIAogdm9pZCBfX2luaXQgaW5pdF9zcGVjdWxhdGlvbl9taXRpZ2F0aW9ucyh2 b2lkKQogewogICAgIGVudW0gaW5kX3RodW5rIHRodW5rID0gVEhVTktfREVGQVVMVDsKKyAgICBi b29sIGlicnMgPSBmYWxzZTsKIAogICAgIC8qCiAgICAgICogSGFzIHRoZSB1c2VyIHNwZWNpZmll ZCBhbnkgY3VzdG9tIEJUSSBtaXRpZ2F0aW9ucz8gIElmIHNvLCBmb2xsb3cgdGhlaXIKICAgICAg KiBpbnN0cnVjdGlvbnMgZXhhY3RseSBhbmQgZGlzYWJsZSBhbGwgaGV1cmlzdGljcy4KICAgICAg Ki8KLSAgICBpZiAoIG9wdF90aHVuayAhPSBUSFVOS19ERUZBVUxUICkKKyAgICBpZiAoIG9wdF90 aHVuayAhPSBUSFVOS19ERUZBVUxUIHx8IG9wdF9pYnJzICE9IC0xICkKICAgICB7CiAgICAgICAg IHRodW5rID0gb3B0X3RodW5rOworICAgICAgICBpYnJzICA9ICEhb3B0X2licnM7CiAgICAgfQog ICAgIGVsc2UKICAgICB7CkBAIC0xMjQsNyArMTg2LDIxIEBAIHZvaWQgX19pbml0IGluaXRfc3Bl Y3VsYXRpb25fbWl0aWdhdGlvbnModm9pZCkKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAg aWYgKCBjcHVfaGFzX2xmZW5jZV9kaXNwYXRjaCApCiAgICAgICAgICAgICAgICAgdGh1bmsgPSBU SFVOS19MRkVOQ0U7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogT24gSW50ZWwgaGFy ZHdhcmUsIHdlJ2QgbGlrZSB0byB1c2UgcmV0cG9saW5lIGluIHByZWZlcmVuY2UgdG8KKyAgICAg ICAgICAgICAqIElCUlMsIGJ1dCBvbmx5IGlmIGl0IGlzIHNhZmUgb24gdGhpcyBoYXJkd2FyZS4K KyAgICAgICAgICAgICAqLworICAgICAgICAgICAgZWxzZSBpZiAoIGJvb3RfY3B1X2hhcyhYODZf RkVBVFVSRV9JQlJTQikgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICggcmV0 cG9saW5lX3NhZmUoKSApCisgICAgICAgICAgICAgICAgICAgIHRodW5rID0gVEhVTktfUkVUUE9M SU5FOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaWJycyA9IHRy dWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLyogV2l0aG91dCBjb21waWxl ciB0aHVuayBzdXBwb3J0LCB1c2UgSUJSUyBpZiBhdmFpbGFibGUuICovCisgICAgICAgIGVsc2Ug aWYgKCBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJSU0IpICkKKyAgICAgICAgICAgIGlicnMg PSB0cnVlOwogICAgIH0KIAogICAgIC8qCkBAIC0xMzUsNiArMjExLDEzIEBAIHZvaWQgX19pbml0 IGluaXRfc3BlY3VsYXRpb25fbWl0aWdhdGlvbnModm9pZCkKICAgICAgICAgdGh1bmsgPSBUSFVO S19OT05FOwogCiAgICAgLyoKKyAgICAgKiBJZiBJQlJTIGlzIGluIHVzZSBhbmQgdGh1bmtzIGFy ZSBjb21waWxlZCBpbiwgdGhlcmUgaXMgbm8gcG9pbnQKKyAgICAgKiBzdWZmZXJpbmcgZXh0cmEg b3ZlcmhlYWQuICBTd2l0Y2ggdG8gdGhlIGxlYXN0LW92ZXJoZWFkIHRodW5rLgorICAgICAqLwor ICAgIGlmICggaWJycyAmJiB0aHVuayA9PSBUSFVOS19ERUZBVUxUICkKKyAgICAgICAgdGh1bmsg PSBUSFVOS19KTVA7CisKKyAgICAvKgogICAgICAqIElmIHRoZXJlIGFyZSBzdGlsbCBubyB0aHVu ayBwcmVmZXJlbmNlcywgdGhlIGNvbXBpbGVkIGRlZmF1bHQgaXMKICAgICAgKiBhY3R1YWxseSBy ZXRwb2xpbmUsIGFuZCBpdCBpcyBiZXR0ZXIgdGhhbiBub3RoaW5nLgogICAgICAqLwpAQCAtMTQ3 LDYgKzIzMCwxOSBAQCB2b2lkIF9faW5pdCBpbml0X3NwZWN1bGF0aW9uX21pdGlnYXRpb25zKHZv aWQpCiAgICAgZWxzZSBpZiAoIHRodW5rID09IFRIVU5LX0pNUCApCiAgICAgICAgIHNldHVwX2Zv cmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfSU5EX1RIVU5LX0pNUCk7CiAKKyAgICBpZiAoIGJvb3Rf Y3B1X2hhcyhYODZfRkVBVFVSRV9JQlJTQikgKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAg ICogRXZlbiBpZiB3ZSd2ZSBjaG9zZW4gdG8gbm90IGhhdmUgSUJSUyBzZXQgaW4gWGVuIGNvbnRl eHQsIHdlIHN0aWxsCisgICAgICAgICAqIG5lZWQgdGhlIElCUlMgZW50cnkvZXhpdCBsb2dpYyB0 byB2aXJ0dWFsaXNlIElCUlMgc3VwcG9ydCBmb3IKKyAgICAgICAgICogZ3Vlc3RzLgorICAgICAg ICAgKi8KKyAgICAgICAgaWYgKCBpYnJzICkKKyAgICAgICAgICAgIHNldHVwX2ZvcmNlX2NwdV9j YXAoWDg2X0ZFQVRVUkVfWEVOX0lCUlNfU0VUKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg c2V0dXBfZm9yY2VfY3B1X2NhcChYODZfRkVBVFVSRV9YRU5fSUJSU19DTEVBUik7CisgICAgfQor CiAgICAgcHJpbnRfZGV0YWlscyh0aHVuayk7CiB9CiAKLS0gCjIuMS40CgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==