#define X86_BUG_MMIO_UNKNOWN           X86_BUG(26) /* CPU is too old and its MMIO Stale Data status is unknown */
 #define X86_BUG_RETBLEED               X86_BUG(27) /* CPU is affected by RETBleed */
 #define X86_BUG_EIBRS_PBRSB            X86_BUG(28) /* EIBRS is vulnerable to Post Barrier RSB Predictions */
+#define X86_BUG_SMT_RSB                        X86_BUG(29) /* CPU is vulnerable to Cross-Thread Return Address Predictions */
 
 #endif /* _ASM_X86_CPUFEATURES_H */
 
 #define MMIO_SBDS      BIT(2)
 /* CPU is affected by RETbleed, speculating where you would not expect it */
 #define RETBLEED       BIT(3)
+/* CPU is affected by SMT (cross-thread) return predictions */
+#define SMT_RSB                BIT(4)
 
 static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = {
        VULNBL_INTEL_STEPPINGS(IVYBRIDGE,       X86_STEPPING_ANY,               SRBDS),
 
        VULNBL_AMD(0x15, RETBLEED),
        VULNBL_AMD(0x16, RETBLEED),
-       VULNBL_AMD(0x17, RETBLEED),
-       VULNBL_HYGON(0x18, RETBLEED),
+       VULNBL_AMD(0x17, RETBLEED | SMT_RSB),
+       VULNBL_HYGON(0x18, RETBLEED | SMT_RSB),
        {}
 };
 
            !(ia32_cap & ARCH_CAP_PBRSB_NO))
                setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB);
 
+       if (cpu_matches(cpu_vuln_blacklist, SMT_RSB))
+               setup_force_cpu_bug(X86_BUG_SMT_RSB);
+
        if (cpu_matches(cpu_vuln_whitelist, NO_MELTDOWN))
                return;