From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v8 05/17] x86: Introduce alternative indirect thunks Date: Fri, 12 Jan 2018 18:00:55 +0000 Message-ID: <1515780067-31735-6-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 RGVwZW5kaW5nIG9uIGhhcmR3YXJlIGFuZCBtaWNyb2NvZGUgYXZhaWxhYmlsaXR5LCB3ZSB3aWxs IHdhbnQgdG8gcmVwbGFjZQpJTkRfVEhVTktfUkVQT0xJTkUgd2l0aCBvdGhlciBpbXBsZW1lbnRh dGlvbnMuCgpGb3IgQU1EIGhhcmR3YXJlLCBjaG9vc2UgSU5EX1RIVU5LX0xGRU5DRSBpbiBwcmVm ZXJlbmNlIHRvIHJldHBvbGluZSBpZiBsZmVuY2UKaXMga25vd24gdG8gYmUgKG9yIHdhcyBzdWNj ZXNzZnVsbHkgbWFkZSkgZGlzcGF0Y2ggc2VyaWFsaXNpbmcuCgpTaWduZWQtb2ZmLWJ5OiBBbmRy ZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0Kdjc6CiAqIFJlYmFzZSBv dmVyIGNvbXBpbGVyIGNoYW5nZXMKICogU3BlbGxpbmcvZ3JhbW1hciBmaXhlcwogKiBNYWtlIG9w dF90aHVuayBzdGF0aWMKLS0tCiBkb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93biB8 IDE2ICsrKysrKysrCiB4ZW4vYXJjaC94ODYvaW5kaXJlY3QtdGh1bmsuUyAgICAgICB8IDE3ICsr KysrKystLQogeGVuL2FyY2gveDg2L3NwZWNfY3RybC5jICAgICAgICAgICAgfCA3NSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2NwdWZl YXR1cmVzLmggICB8ICAyICsKIDQgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFy a2Rvd24gYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgppbmRleCA3ODExMTBk Li45NmU1N2MyIDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93 bgorKysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgpAQCAtMjQ1LDYgKzI0 NSwyMiBAQCBhbmQgbm90IHJ1bm5pbmcgc29mdGlycXMuIFJlZHVjZSB0aGlzIGlmIHNvZnRpcnFz IGFyZSBub3QgYmVpbmcgcnVuIGZyZXF1ZW50bHkKIGVub3VnaC4gU2V0dGluZyB0aGlzIHRvIGEg aGlnaCB2YWx1ZSBtYXkgY2F1c2UgYm9vdCBmYWlsdXJlLCBwYXJ0aWN1bGFybHkgaWYKIHRoZSBO TUkgd2F0Y2hkb2cgaXMgYWxzbyBlbmFibGVkLgogCisjIyMgYnRpICh4ODYpCis+IGA9IExpc3Qg b2YgWyB0aHVuaz1yZXRwb2xpbmV8bGZlbmNlfGptcCBdYAorCitCcmFuY2ggVGFyZ2V0IEluamVj dGlvbiBjb250cm9scy4gIEJ5IGRlZmF1bHQsIFhlbiB3aWxsIHBpY2sgdGhlIG1vc3QKK2FwcHJv cHJpYXRlIEJUSSBtaXRpZ2F0aW9ucyBiYXNlZCBvbiBjb21waWxlZCBpbiBzdXBwb3J0LCBsb2Fk ZWQgbWljcm9jb2RlLAorYW5kIGhhcmR3YXJlIGRldGFpbHMuCisKKyoqV0FSTklORzogQW55IHVz ZSBvZiB0aGlzIG9wdGlvbiBtYXkgaW50ZXJmZXJlIHdpdGggaGV1cmlzdGljcy4gIFVzZSB3aXRo CitleHRyZW1lIGNhcmUuKioKKworSWYgWGVuIHdhcyBjb21waWxlZCB3aXRoIElORElSRUNUX1RI VU5LIHN1cHBvcnQsIGB0aHVuaz1gIGNhbiBiZSB1c2VkIHRvCitzZWxlY3Qgd2hpY2ggb2YgdGhl IHRodW5rcyBnZXRzIHBhdGNoZWQgaW50byB0aGUgYF9feDg2X2luZGlyZWN0X3RodW5rXyVyZWdg Citsb2NhdGlvbnMuICBUaGUgZGVmYXVsdCB0aHVuayBpcyBgcmV0cG9saW5lYCAoZ2VuZXJhbGx5 IHByZWZlcnJlZCBmb3IgSW50ZWwKK2hhcmR3YXJlKSwgd2l0aCB0aGUgYWx0ZXJuYXRpdmVzIGJl aW5nIGBqbXBgIChhIGBqbXAgKiVyZWdgIGdhZGdldCwgbWluaW1hbAorb3ZlcmhlYWQpLCBhbmQg YGxmZW5jZWAgKGFuIGBsZmVuY2U7IGptcCAqJXJlZ2AgZ2FkZ2V0LCBwcmVmZXJyZWQgZm9yIEFN RCkuCisKICMjIyB4ZW5oZWFwXF9tZWdhYnl0ZXMgKGFybTMyKQogPiBgPSA8c2l6ZT5gCiAKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9pbmRpcmVjdC10aHVuay5TIGIveGVuL2FyY2gveDg2L2lu ZGlyZWN0LXRodW5rLlMKaW5kZXggM2VhZjUwNS4uN2QzNDcwNyAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L2luZGlyZWN0LXRodW5rLlMKKysrIGIveGVuL2FyY2gveDg2L2luZGlyZWN0LXRodW5r LlMKQEAgLTIxLDE1ICsyMSwyNiBAQAogICAgICAgICByZXQKIC5lbmRtCiAKKy5tYWNybyBJTkRf VEhVTktfTEZFTkNFIHJlZzpyZXEKKyAgICAgICAgbGZlbmNlCisgICAgICAgIGptcCAqJVxyZWcK Ky5lbmRtCisKKy5tYWNybyBJTkRfVEhVTktfSk1QIHJlZzpyZXEKKyAgICAgICAgam1wIColXHJl ZworLmVuZG0KKwogLyoKLSAqIEJ1aWxkIHRoZSBfX3g4Nl9pbmRpcmVjdF90aHVua18qIHN5bWJv bHMuICBDdXJyZW50bHkgaW1wbGVtZW50IHRoZQotICogcmV0cG9saW5lIHRodW5rIG9ubHkuCisg KiBCdWlsZCB0aGUgX194ODYuaW5kaXJlY3RfdGh1bmsuKiBzeW1ib2xzLiAgRXhlY3V0aW9uIGxh bmRzIG9uIGFuCisgKiBhbHRlcm5hdGl2ZSBwYXRjaCBwb2ludCB3aGljaCBpbXBsZW1lbnRzIG9u ZSBvZiB0aGUgYWJvdmUgVEhVTktfKidzCiAgKi8KIC5tYWNybyBHRU5fSU5ESVJFQ1RfVEhVTksg cmVnOnJlcQogICAgICAgICAuc2VjdGlvbiAudGV4dC5fX3g4Nl9pbmRpcmVjdF90aHVua19ccmVn LCAiYXgiLCBAcHJvZ2JpdHMKIAogRU5UUlkoX194ODZfaW5kaXJlY3RfdGh1bmtfXHJlZykKLSAg ICAgICAgSU5EX1RIVU5LX1JFVFBPTElORSBccmVnCisgICAgICAgIEFMVEVSTkFUSVZFXzIgX19z dHJpbmdpZnkoSU5EX1RIVU5LX1JFVFBPTElORSBccmVnKSwgICAgICAgICAgICAgIFwKKyAgICAg ICAgX19zdHJpbmdpZnkoSU5EX1RIVU5LX0xGRU5DRSBccmVnKSwgWDg2X0ZFQVRVUkVfSU5EX1RI VU5LX0xGRU5DRSwgXAorICAgICAgICBfX3N0cmluZ2lmeShJTkRfVEhVTktfSk1QIFxyZWcpLCAg ICBYODZfRkVBVFVSRV9JTkRfVEhVTktfSk1QCiAuZW5kbQogCiAvKiBJbnN0YW50aWF0ZSBHRU5f SU5ESVJFQ1RfVEhVTksgZm9yIGVhY2ggcmVnaXN0ZXIgZXhjZXB0ICVyc3AuICovCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvc3BlY19jdHJsLmMgYi94ZW4vYXJjaC94ODYvc3BlY19jdHJsLmMK aW5kZXggMjU2NzAxYS4uZDYwMWMwMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NwZWNfY3Ry bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zcGVjX2N0cmwuYwpAQCAtMTYsMTggKzE2LDU0IEBACiAg KgogICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMTggQ2l0cml4IFN5c3RlbXMgTHRkLgogICovCisj aW5jbHVkZSA8eGVuL2Vycm5vLmg+CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRlIDx4 ZW4vbGliLmg+CiAKICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL3Nw ZWNfY3RybC5oPgogCi1lbnVtIGluZF90aHVuayB7CitzdGF0aWMgZW51bSBpbmRfdGh1bmsgewog ICAgIFRIVU5LX0RFRkFVTFQsIC8qIERlY2lkZSB3aGljaCB0aHVuayB0byB1c2UgYXQgYm9vdCB0 aW1lLiAqLwogICAgIFRIVU5LX05PTkUsICAgIC8qIE1pc3NpbmcgY29tcGlsZXIgc3VwcG9ydCBm b3IgdGh1bmtzLiAqLwogCiAgICAgVEhVTktfUkVUUE9MSU5FLAotfTsKKyAgICBUSFVOS19MRkVO Q0UsCisgICAgVEhVTktfSk1QLAorfSBvcHRfdGh1bmsgX19pbml0ZGF0YSA9IFRIVU5LX0RFRkFV TFQ7CisKK3N0YXRpYyBpbnQgX19pbml0IHBhcnNlX2J0aShjb25zdCBjaGFyICpzKQoreworICAg IGNvbnN0IGNoYXIgKnNzOworICAgIGludCByYyA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIHNz ID0gc3RyY2hyKHMsICcsJyk7CisgICAgICAgIGlmICggIXNzICkKKyAgICAgICAgICAgIHNzID0g c3RyY2hyKHMsICdcMCcpOworCisgICAgICAgIGlmICggIXN0cm5jbXAocywgInRodW5rPSIsIDYp ICkKKyAgICAgICAgeworICAgICAgICAgICAgcyArPSA2OworCisgICAgICAgICAgICBpZiAoICFz dHJuY21wKHMsICJyZXRwb2xpbmUiLCBzcyAtIHMpICkKKyAgICAgICAgICAgICAgICBvcHRfdGh1 bmsgPSBUSFVOS19SRVRQT0xJTkU7CisgICAgICAgICAgICBlbHNlIGlmICggIXN0cm5jbXAocywg ImxmZW5jZSIsIHNzIC0gcykgKQorICAgICAgICAgICAgICAgIG9wdF90aHVuayA9IFRIVU5LX0xG RU5DRTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCAhc3RybmNtcChzLCAiam1wIiwgc3MgLSBzKSAp CisgICAgICAgICAgICAgICAgb3B0X3RodW5rID0gVEhVTktfSk1QOworICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBlbHNl CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisKKyAgICAgICAgcyA9IHNzICsgMTsKKyAgICB9 IHdoaWxlICggKnNzICk7CisKKyAgICByZXR1cm4gcmM7Cit9CitjdXN0b21fcGFyYW0oImJ0aSIs IHBhcnNlX2J0aSk7CiAKIHN0YXRpYyB2b2lkIF9faW5pdCBwcmludF9kZXRhaWxzKGVudW0gaW5k X3RodW5rIHRodW5rKQogewpAQCAtNDAsNyArNzYsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcHJp bnRfZGV0YWlscyhlbnVtIGluZF90aHVuayB0aHVuaykKICAgICBwcmludGsoWEVOTE9HX0lORk8K ICAgICAgICAgICAgIkJUSSBtaXRpZ2F0aW9uczogVGh1bmsgJXNcbiIsCiAgICAgICAgICAgIHRo dW5rID09IFRIVU5LX05PTkUgICAgICA/ICJOL0EiIDoKLSAgICAgICAgICAgdGh1bmsgPT0gVEhV TktfUkVUUE9MSU5FID8gIlJFVFBPTElORSIgOiAiPyIpOworICAgICAgICAgICB0aHVuayA9PSBU SFVOS19SRVRQT0xJTkUgPyAiUkVUUE9MSU5FIiA6CisgICAgICAgICAgIHRodW5rID09IFRIVU5L X0xGRU5DRSAgICA/ICJMRkVOQ0UiIDoKKyAgICAgICAgICAgdGh1bmsgPT0gVEhVTktfSk1QICAg ICAgID8gIkpNUCIgOiAiPyIpOwogfQogCiB2b2lkIF9faW5pdCBpbml0X3NwZWN1bGF0aW9uX21p dGlnYXRpb25zKHZvaWQpCkBAIC00OCw2ICs4NiwzMSBAQCB2b2lkIF9faW5pdCBpbml0X3NwZWN1 bGF0aW9uX21pdGlnYXRpb25zKHZvaWQpCiAgICAgZW51bSBpbmRfdGh1bmsgdGh1bmsgPSBUSFVO S19ERUZBVUxUOwogCiAgICAgLyoKKyAgICAgKiBIYXMgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBj dXN0b20gQlRJIG1pdGlnYXRpb25zPyAgSWYgc28sIGZvbGxvdyB0aGVpcgorICAgICAqIGluc3Ry dWN0aW9ucyBleGFjdGx5IGFuZCBkaXNhYmxlIGFsbCBoZXVyaXN0aWNzLgorICAgICAqLworICAg IGlmICggb3B0X3RodW5rICE9IFRIVU5LX0RFRkFVTFQgKQorICAgIHsKKyAgICAgICAgdGh1bmsg PSBvcHRfdGh1bms7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8qCisgICAgICAg ICAqIEV2YWx1YXRlIHRoZSBzYWZlc3QgQnJhbmNoIFRhcmdldCBJbmplY3Rpb24gbWl0aWdhdGlv bnMgdG8gdXNlLgorICAgICAgICAgKiBGaXJzdCwgYmVnaW4gd2l0aCBjb21waWxlci1haWRlZCBt aXRpZ2F0aW9ucy4KKyAgICAgICAgICovCisgICAgICAgIGlmICggSVNfRU5BQkxFRChDT05GSUdf SU5ESVJFQ1RfVEhVTkspICkKKyAgICAgICAgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAg ICAqIEFNRCdzIHJlY29tbWVuZGVkIG1pdGlnYXRpb24gaXMgdG8gc2V0IGxmZW5jZSBhcyBiZWlu ZyBkaXNwYXRjaAorICAgICAgICAgICAgICogc2VyaWFsaXNpbmcsIGFuZCB0byB1c2UgSU5EX1RI VU5LX0xGRU5DRS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBjcHVfaGFzX2xm ZW5jZV9kaXNwYXRjaCApCisgICAgICAgICAgICAgICAgdGh1bmsgPSBUSFVOS19MRkVOQ0U7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICAvKgogICAgICAqIFN1cHBsaW1lbnRhcnkgbWlub3IgYWRq dXN0bWVudHMuICBXaXRob3V0IGNvbXBpbGVyIHN1cHBvcnQsIHRoZXJlIGFyZQogICAgICAqIG5v IHRodW5rcy4KICAgICAgKi8KQEAgLTYxLDYgKzEyNCwxMiBAQCB2b2lkIF9faW5pdCBpbml0X3Nw ZWN1bGF0aW9uX21pdGlnYXRpb25zKHZvaWQpCiAgICAgaWYgKCB0aHVuayA9PSBUSFVOS19ERUZB VUxUICkKICAgICAgICAgdGh1bmsgPSBUSFVOS19SRVRQT0xJTkU7CiAKKyAgICAvKiBBcHBseSB0 aGUgY2hvc2VuIHNldHRpbmdzLiAqLworICAgIGlmICggdGh1bmsgPT0gVEhVTktfTEZFTkNFICkK KyAgICAgICAgc2V0dXBfZm9yY2VfY3B1X2NhcChYODZfRkVBVFVSRV9JTkRfVEhVTktfTEZFTkNF KTsKKyAgICBlbHNlIGlmICggdGh1bmsgPT0gVEhVTktfSk1QICkKKyAgICAgICAgc2V0dXBfZm9y Y2VfY3B1X2NhcChYODZfRkVBVFVSRV9JTkRfVEhVTktfSk1QKTsKKwogICAgIHByaW50X2RldGFp bHModGh1bmspOwogfQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWZlYXR1 cmVzLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWZlYXR1cmVzLmgKaW5kZXggNThiMzdkNi4u YmExNzcxYiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVmZWF0dXJlcy5oCisr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1ZmVhdHVyZXMuaApAQCAtMjMsMyArMjMsNSBAQCBY RU5fQ1BVRkVBVFVSRShNRkVOQ0VfUkRUU0MsICAgIChGU0NBUElOVFMrMCkqMzIrIDkpIC8qIE1G RU5DRSBzeW5jaHJvbml6ZXMgUkRUUwogWEVOX0NQVUZFQVRVUkUoWEVOX1NNRVAsICAgICAgICAo RlNDQVBJTlRTKzApKjMyKzEwKSAvKiBTTUVQIGdldHMgdXNlZCBieSBYZW4gaXRzZWxmICovCiBY RU5fQ1BVRkVBVFVSRShYRU5fU01BUCwgICAgICAgIChGU0NBUElOVFMrMCkqMzIrMTEpIC8qIFNN QVAgZ2V0cyB1c2VkIGJ5IFhlbiBpdHNlbGYgKi8KIFhFTl9DUFVGRUFUVVJFKExGRU5DRV9ESVNQ QVRDSCwgKEZTQ0FQSU5UUyswKSozMisxMikgLyogbGZlbmNlIHNldCBhcyBEaXNwYXRjaCBTZXJp YWxpc2luZyAqLworWEVOX0NQVUZFQVRVUkUoSU5EX1RIVU5LX0xGRU5DRSwoRlNDQVBJTlRTKzAp KjMyKzEzKSAvKiBVc2UgSU5EX1RIVU5LX0xGRU5DRSAqLworWEVOX0NQVUZFQVRVUkUoSU5EX1RI VU5LX0pNUCwgICAoRlNDQVBJTlRTKzApKjMyKzE0KSAvKiBVc2UgSU5EX1RIVU5LX0pNUCAqLwot LSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs