]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - arch/x86/kernel/cpu/common.c
x86/speculation/mds: Add BUG_MSBDS_ONLY
[mirror_ubuntu-bionic-kernel.git] / arch / x86 / kernel / cpu / common.c
index 42b264e5ff9ffb7b52fdd5423e5143251039fe1c..02878a517a18c65f180f86396ed9f9acce2ee617 100644 (file)
@@ -940,6 +940,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 }
@@ -967,8 +968,8 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = {
        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(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),
 
@@ -1016,8 +1017,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;