|
@@ -927,10 +927,33 @@ static const __initconst struct x86_cpu_id cpu_no_meltdown[] = {
|
|
|
{}
|
|
|
};
|
|
|
|
|
|
+static const __initconst struct x86_cpu_id cpu_no_spec_store_bypass[] = {
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_PINEVIEW },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_LINCROFT },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_PENWELL },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_CLOVERVIEW },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_CEDARVIEW },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT1 },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_AIRMONT },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_SILVERMONT2 },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_ATOM_MERRIFIELD },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_CORE_YONAH },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_XEON_PHI_KNL },
|
|
|
+ { X86_VENDOR_INTEL, 6, INTEL_FAM6_XEON_PHI_KNM },
|
|
|
+ { X86_VENDOR_CENTAUR, 5, },
|
|
|
+ { X86_VENDOR_INTEL, 5, },
|
|
|
+ { X86_VENDOR_NSC, 5, },
|
|
|
+ { X86_VENDOR_ANY, 4, },
|
|
|
+ {}
|
|
|
+};
|
|
|
+
|
|
|
static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
|
|
|
{
|
|
|
u64 ia32_cap = 0;
|
|
|
|
|
|
+ if (!x86_match_cpu(cpu_no_spec_store_bypass))
|
|
|
+ setup_force_cpu_bug(X86_BUG_SPEC_STORE_BYPASS);
|
|
|
+
|
|
|
if (x86_match_cpu(cpu_no_speculation))
|
|
|
return;
|
|
|
|