|
|
@@ -953,6 +953,7 @@ static void identify_cpu_without_cpuid(struct cpuinfo_x86 *c)
|
|
|
#define NO_SSB BIT(2)
|
|
|
#define NO_L1TF BIT(3)
|
|
|
#define NO_MDS BIT(4)
|
|
|
+#define MSBDS_ONLY BIT(5)
|
|
|
|
|
|
#define VULNWL(_vendor, _family, _model, _whitelist) \
|
|
|
{ X86_VENDOR_##_vendor, _family, _model, X86_FEATURE_ANY, _whitelist }
|
|
|
@@ -976,16 +977,16 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
|
|
|
VULNWL_INTEL(ATOM_BONNELL, NO_SPECULATION),
|
|
|
VULNWL_INTEL(ATOM_BONNELL_MID, NO_SPECULATION),
|
|
|
|
|
|
- VULNWL_INTEL(ATOM_SILVERMONT, NO_SSB | NO_L1TF),
|
|
|
- VULNWL_INTEL(ATOM_SILVERMONT_X, NO_SSB | NO_L1TF),
|
|
|
- VULNWL_INTEL(ATOM_SILVERMONT_MID, NO_SSB | NO_L1TF),
|
|
|
- VULNWL_INTEL(ATOM_AIRMONT, NO_SSB | NO_L1TF),
|
|
|
- VULNWL_INTEL(XEON_PHI_KNL, NO_SSB | NO_L1TF),
|
|
|
- VULNWL_INTEL(XEON_PHI_KNM, NO_SSB | NO_L1TF),
|
|
|
+ VULNWL_INTEL(ATOM_SILVERMONT, NO_SSB | NO_L1TF | MSBDS_ONLY),
|
|
|
+ VULNWL_INTEL(ATOM_SILVERMONT_X, NO_SSB | NO_L1TF | MSBDS_ONLY),
|
|
|
+ VULNWL_INTEL(ATOM_SILVERMONT_MID, NO_SSB | NO_L1TF | MSBDS_ONLY),
|
|
|
+ VULNWL_INTEL(ATOM_AIRMONT, NO_SSB | NO_L1TF | MSBDS_ONLY),
|
|
|
+ VULNWL_INTEL(XEON_PHI_KNL, NO_SSB | NO_L1TF | MSBDS_ONLY),
|
|
|
+ VULNWL_INTEL(XEON_PHI_KNM, NO_SSB | NO_L1TF | MSBDS_ONLY),
|
|
|
|
|
|
VULNWL_INTEL(CORE_YONAH, NO_SSB),
|
|
|
|
|
|
- VULNWL_INTEL(ATOM_AIRMONT_MID, NO_L1TF),
|
|
|
+ VULNWL_INTEL(ATOM_AIRMONT_MID, NO_L1TF | MSBDS_ONLY),
|
|
|
|
|
|
VULNWL_INTEL(ATOM_GOLDMONT, NO_MDS | NO_L1TF),
|
|
|
VULNWL_INTEL(ATOM_GOLDMONT_X, NO_MDS | NO_L1TF),
|
|
|
@@ -1029,8 +1030,11 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c)
|
|
|
if (ia32_cap & ARCH_CAP_IBRS_ALL)
|
|
|
setup_force_cpu_cap(X86_FEATURE_IBRS_ENHANCED);
|
|
|
|
|
|
- if (!cpu_matches(NO_MDS) && !(ia32_cap & ARCH_CAP_MDS_NO))
|
|
|
+ if (!cpu_matches(NO_MDS) && !(ia32_cap & ARCH_CAP_MDS_NO)) {
|
|
|
setup_force_cpu_bug(X86_BUG_MDS);
|
|
|
+ if (cpu_matches(MSBDS_ONLY))
|
|
|
+ setup_force_cpu_bug(X86_BUG_MSBDS_ONLY);
|
|
|
+ }
|
|
|
|
|
|
if (cpu_matches(NO_MELTDOWN))
|
|
|
return;
|