Messages in this thread Patch in this message | | | From | Andi Kleen <> | Subject | [PATCH v3 1/3] x86/retpoline: Add X86_FEATURE_RETPOLINE_GENERIC | Date | Tue, 9 Jan 2018 18:28:29 -0800 |
| |
From: Andi Kleen <ak@linux.intel.com>
On 64bit we want to split X86_FEATURE_RETPOLINE and X86_FEATURE_RETPOLINE_AMD, so that only one is set. This enables new simpler ALTERNATIVE sequences. But 32bit requires a common flag because it uses common code for both.
Rename the existing X86_FEATURE_RETPOLINE to X86_FEATURE_GENERIC Use the existing X86_FEATURE_RETPOLINE as a common flag that is set for both the AMD and generic Retpoline.
Then don't set the generic RETPOLINE flag for AMD.
Signed-off-by: Andi Kleen <ak@linux.intel.com> --- arch/x86/include/asm/cpufeatures.h | 3 ++- arch/x86/kernel/cpu/bugs.c | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index f275447862f4..9db5ed0e01a9 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -203,7 +203,7 @@ #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ #define X86_FEATURE_SME ( 7*32+10) /* AMD Secure Memory Encryption */ #define X86_FEATURE_PTI ( 7*32+11) /* Kernel Page Table Isolation enabled */ -#define X86_FEATURE_RETPOLINE ( 7*32+12) /* Generic Retpoline mitigation for Spectre variant 2 */ +#define X86_FEATURE_RETPOLINE_GENERIC ( 7*32+12) /* Generic Retpoline mitigation for Spectre variant 2 */ #define X86_FEATURE_RETPOLINE_AMD ( 7*32+13) /* AMD Retpoline mitigation for Spectre variant 2 */ #define X86_FEATURE_INTEL_PPIN ( 7*32+14) /* Intel Processor Inventory Number */ #define X86_FEATURE_INTEL_PT ( 7*32+15) /* Intel Processor Trace */ @@ -211,6 +211,7 @@ #define X86_FEATURE_AVX512_4FMAPS ( 7*32+17) /* AVX-512 Multiply Accumulation Single precision */ #define X86_FEATURE_MBA ( 7*32+18) /* Memory Bandwidth Allocation */ +#define X86_FEATURE_RETPOLINE ( 7*32+19) /* Common code for both RETPOLINE_GENERIC and RETPOLINE_AMD */ /* Virtualization flags: Linux defined, word 8 */ #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */ diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index b957f771a5b7..68b08967a6e1 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -155,6 +155,7 @@ void __init spectre_v2_check_boottime_disable(void) retpoline_generic: spectre_v2_enabled = retp_compiler() ? SPECTRE_V2_RETPOLINE_GENERIC : SPECTRE_V2_RETPOLINE_MINIMAL; + setup_force_cpu_cap(X86_FEATURE_RETPOLINE_GENERIC); } setup_force_cpu_cap(X86_FEATURE_RETPOLINE); return; @@ -165,8 +166,9 @@ void __init spectre_v2_check_boottime_disable(void) pr_err("kernel not compiled with retpoline; no mitigation available!"); #endif disable: - setup_clear_cpu_cap(X86_FEATURE_RETPOLINE); + setup_clear_cpu_cap(X86_FEATURE_RETPOLINE_GENERIC); setup_clear_cpu_cap(X86_FEATURE_RETPOLINE_AMD); + setup_clear_cpu_cap(X86_FEATURE_RETPOLINE); return; } -- 2.14.3
| |