From: Ankur Arora Date: Wed, 25 Apr 2018 21:38:58 +0000 (-0400) Subject: x86/cpufeatures: use cpu_data in init_scattered_cpuid_flags() X-Git-Tag: v4.1.12-124.31.3~815 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0fa448d49af55bf1215b2afa5548b8f95c34be67;p=users%2Fjedix%2Flinux-maple.git x86/cpufeatures: use cpu_data in init_scattered_cpuid_flags() Post SMP init, cpu_data() contains the current cpuinfo state with the boot_cpu_data potentially going stale. Switch all boot_cpu_data references to cpu_data() in init_scattered_cpuid_flags(). Orabug: 27878230 Signed-off-by: Ankur Arora Reviewed-by: Boris Ostrovsky Reviewed-by: Krish Sadhukhan Reviewed-by: John Haxby Reviewed-by: Konrad Rzeszutek Wilk (cherry-picked from commit 6258d6d6ce2b9cf41830e8616ffc7841b3fddca9) Conflict: arch/x86/kernel/cpu/common.c [Backport: Modify init_scattered_cpuid_flags() instead of init_speculation_control().] Signed-off-by: Brian Maly --- diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattered.c index aceb904642fa..4cbbf2520bdd 100644 --- a/arch/x86/kernel/cpu/scattered.c +++ b/arch/x86/kernel/cpu/scattered.c @@ -160,13 +160,13 @@ void init_scattered_cpuid_features(struct cpuinfo_x86 *c, if (xen_pv_domain()) ignore = true; - if (boot_cpu_has(X86_FEATURE_IBRS)) { + if (cpu_has(c, X86_FEATURE_IBRS)) { printk_once(KERN_INFO "FEATURE SPEC_CTRL Present%s\n", ignore ? " but ignored (Xen)": ""); } else { printk(KERN_INFO "FEATURE SPEC_CTRL Not Present\n"); } - if (boot_cpu_has(X86_FEATURE_IBPB)) { + if (cpu_has(c, X86_FEATURE_IBPB)) { printk_once(KERN_INFO "FEATURE IBPB Present%s\n", ignore ? " but ignored (Xen)": ""); } else { @@ -178,14 +178,14 @@ void init_scattered_cpuid_features(struct cpuinfo_x86 *c, if ((cpu_has(c, X86_FEATURE_IBRS) || cpu_has(c, X86_FEATURE_STIBP)) && bad_spectre_microcode(c)) { - if (&boot_cpu_data == c) + if (c->cpu_index == 0) pr_warn("Intel Spectre v2 broken microcode detected; disabling SPEC_CTRL/IBRS\n"); clear_cpu_cap(c, X86_FEATURE_IBRS); clear_cpu_cap(c, X86_FEATURE_IBPB); clear_cpu_cap(c, X86_FEATURE_STIBP); } - if (&boot_cpu_data == c) { + if (c->cpu_index == 0) { mutex_lock(&spec_ctrl_mutex); if (cpu_has(c, X86_FEATURE_IBRS)) { set_ibrs_supported();