| From foo@baz Mon May 21 22:23:32 CEST 2018 |
| From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
| Date: Wed, 25 Apr 2018 22:04:16 -0400 |
| Subject: x86/bugs: Concentrate bug detection into a separate function |
| |
| From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
| |
| commit 4a28bfe3267b68e22c663ac26185aa16c9b879ef upstream |
| |
| Combine the various logic which goes through all those |
| x86_cpu_id matching structures in one function. |
| |
| Suggested-by: Borislav Petkov <bp@suse.de> |
| Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Reviewed-by: Borislav Petkov <bp@suse.de> |
| Reviewed-by: Ingo Molnar <mingo@kernel.org> |
| Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/x86/kernel/cpu/common.c | 21 +++++++++++---------- |
| 1 file changed, 11 insertions(+), 10 deletions(-) |
| |
| --- a/arch/x86/kernel/cpu/common.c |
| +++ b/arch/x86/kernel/cpu/common.c |
| @@ -879,21 +879,27 @@ static const __initconst struct x86_cpu_ |
| {} |
| }; |
| |
| -static bool __init cpu_vulnerable_to_meltdown(struct cpuinfo_x86 *c) |
| +static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) |
| { |
| u64 ia32_cap = 0; |
| |
| + if (x86_match_cpu(cpu_no_speculation)) |
| + return; |
| + |
| + setup_force_cpu_bug(X86_BUG_SPECTRE_V1); |
| + setup_force_cpu_bug(X86_BUG_SPECTRE_V2); |
| + |
| if (x86_match_cpu(cpu_no_meltdown)) |
| - return false; |
| + return; |
| |
| if (cpu_has(c, X86_FEATURE_ARCH_CAPABILITIES)) |
| rdmsrl(MSR_IA32_ARCH_CAPABILITIES, ia32_cap); |
| |
| /* Rogue Data Cache Load? No! */ |
| if (ia32_cap & ARCH_CAP_RDCL_NO) |
| - return false; |
| + return; |
| |
| - return true; |
| + setup_force_cpu_bug(X86_BUG_CPU_MELTDOWN); |
| } |
| |
| /* |
| @@ -942,12 +948,7 @@ static void __init early_identify_cpu(st |
| |
| setup_force_cpu_cap(X86_FEATURE_ALWAYS); |
| |
| - if (!x86_match_cpu(cpu_no_speculation)) { |
| - if (cpu_vulnerable_to_meltdown(c)) |
| - setup_force_cpu_bug(X86_BUG_CPU_MELTDOWN); |
| - setup_force_cpu_bug(X86_BUG_SPECTRE_V1); |
| - setup_force_cpu_bug(X86_BUG_SPECTRE_V2); |
| - } |
| + cpu_set_bug_bits(c); |
| |
| fpu__init_system(c); |
| |