On CPUs which advertise IBRS_ALL, enable it and disable the retpoline as IBRS_ALL will be faster. Also use IBRS whenever it's available before calling into firmware at runtime. Revert another bikeshedding patch that was broken, and add support for retpoline builds with clang. --- v2: Remember to export spectre_v2_enabled David Woodhouse (4): x86/speculation: Use IBRS if available before calling into firmware x86/speculation: Support "Enhanced IBRS" on future CPUs Revert "x86/retpoline: Simplify vmexit_fill_RSB()" x86/retpoline: Support retpoline build with Clang arch/x86/Makefile | 5 +- arch/x86/entry/entry_32.S | 3 +- arch/x86/entry/entry_64.S | 3 +- arch/x86/include/asm/apm.h | 6 ++ arch/x86/include/asm/asm-prototypes.h | 3 - arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/include/asm/efi.h | 17 ++++- arch/x86/include/asm/nospec-branch.h | 118 +++++++++++++++++++++++++++++----- arch/x86/kernel/cpu/bugs.c | 27 +++++++- arch/x86/kvm/vmx.c | 31 +++++---- arch/x86/lib/Makefile | 1 - arch/x86/lib/retpoline.S | 56 ---------------- include/linux/compiler-clang.h | 5 ++ include/linux/compiler-gcc.h | 4 ++ include/linux/init.h | 8 +-- 15 files changed, 186 insertions(+), 102 deletions(-) -- 2.7.4