Borislav Petkov 5415e7
From: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Borislav Petkov 5415e7
Date: Thu, 19 May 2022 20:34:14 -0700
Borislav Petkov 5415e7
Subject: x86/speculation/mmio: Reuse SRBDS mitigation for SBDS
Borislav Petkov 5415e7
Git-commit: a992b8a4682f119ae035a01b40d4d0665c4a2875
Borislav Petkov 5415e7
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
Borislav Petkov 5415e7
Patch-mainline: Queued in tip for v5.19
Borislav Petkov 5415e7
References: bsc#1199650 CVE-2022-21166 CVE-2022-21127 CVE-2022-21123 CVE-2022-21125 CVE-2022-21180
Borislav Petkov 5415e7
Borislav Petkov 5415e7
The Shared Buffers Data Sampling (SBDS) variant of Processor MMIO Stale
Borislav Petkov 5415e7
Data vulnerabilities may expose RDRAND, RDSEED and SGX EGETKEY data.
Borislav Petkov 5415e7
Mitigation for this is added by a microcode update.
Borislav Petkov 5415e7
Borislav Petkov 5415e7
As some of the implications of SBDS are similar to SRBDS, SRBDS mitigation
Borislav Petkov 5415e7
infrastructure can be leveraged by SBDS. Set X86_BUG_SRBDS and use SRBDS
Borislav Petkov 5415e7
mitigation.
Borislav Petkov 5415e7
Borislav Petkov 5415e7
Mitigation is enabled by default; use srbds=off to opt-out. Mitigation
Borislav Petkov 5415e7
status can be checked from below file:
Borislav Petkov 5415e7
Borislav Petkov 5415e7
  /sys/devices/system/cpu/vulnerabilities/srbds
Borislav Petkov 5415e7
Borislav Petkov 5415e7
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Borislav Petkov 5415e7
Signed-off-by: Borislav Petkov <bp@suse.de>
Borislav Petkov 5415e7
---
Borislav Petkov 5415e7
 arch/x86/kernel/cpu/common.c |   10 ++++++++--
Borislav Petkov 5415e7
 1 file changed, 8 insertions(+), 2 deletions(-)
Borislav Petkov 5415e7
Borislav Petkov 5415e7
--- a/arch/x86/kernel/cpu/common.c
Borislav Petkov 5415e7
+++ b/arch/x86/kernel/cpu/common.c
Borislav Petkov 5415e7
@@ -1005,6 +1005,8 @@ static const __initconst struct x86_cpu_
Borislav Petkov 5415e7
 #define SRBDS		BIT(0)
Borislav Petkov 5415e7
 /* CPU is affected by X86_BUG_MMIO_STALE_DATA */
Borislav Petkov 5415e7
 #define MMIO		BIT(1)
Borislav Petkov 5415e7
+/* CPU is affected by Shared Buffers Data Sampling (SBDS), a variant of X86_BUG_MMIO_STALE_DATA */
Borislav Petkov 5415e7
+#define MMIO_SBDS	BIT(2)
Borislav Petkov 5415e7
 
Borislav Petkov 5415e7
 static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = {
Borislav Petkov 5415e7
 	VULNBL_INTEL_STEPPINGS(IVYBRIDGE,	X86_STEPPING_ANY,		SRBDS),
Borislav Petkov 5415e7
@@ -1026,7 +1028,7 @@ static const struct x86_cpu_id cpu_vuln_
Borislav Petkov 5415e7
 	VULNBL_INTEL_STEPPINGS(KABYLAKE_L,	X86_STEPPINGS(0x0, 0x8),	SRBDS),
Borislav Petkov 5415e7
 	VULNBL_INTEL_STEPPINGS(KABYLAKE,	X86_STEPPINGS(0x9, 0xD),	SRBDS | MMIO),
Borislav Petkov 5415e7
 	VULNBL_INTEL_STEPPINGS(KABYLAKE,	X86_STEPPINGS(0x0, 0x8),	SRBDS),
Borislav Petkov 5415e7
-	VULNBL_INTEL_STEPPINGS(ICELAKE_L,	X86_STEPPINGS(0x5, 0x5),	MMIO),
Borislav Petkov 5415e7
+	VULNBL_INTEL_STEPPINGS(ICELAKE_L,	X86_STEPPINGS(0x5, 0x5),	MMIO | MMIO_SBDS),
Borislav Petkov 5415e7
 	VULNBL_INTEL_STEPPINGS(ICELAKE_XEON_D,	X86_STEPPINGS(0x1, 0x1),	MMIO),
Borislav Petkov 5415e7
 	VULNBL_INTEL_STEPPINGS(ICELAKE_X,	X86_STEPPINGS(0x4, 0x6),	MMIO),
Borislav Petkov 5415e7
 	VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_D,	X86_STEPPING_ANY,		MMIO),
Borislav Petkov 5415e7
@@ -1108,10 +1110,14 @@ static void __init cpu_set_bug_bits(stru
Borislav Petkov 5415e7
 	/*
Borislav Petkov 5415e7
 	 * SRBDS affects CPUs which support RDRAND or RDSEED and are listed
Borislav Petkov 5415e7
 	 * in the vulnerability blacklist.
Borislav Petkov 5415e7
+	 *
Borislav Petkov 5415e7
+	 * Some of the implications and mitigation of Shared Buffers Data
Borislav Petkov 5415e7
+	 * Sampling (SBDS) are similar to SRBDS. Give SBDS same treatment as
Borislav Petkov 5415e7
+	 * SRBDS.
Borislav Petkov 5415e7
 	 */
Borislav Petkov 5415e7
 	if ((cpu_has(c, X86_FEATURE_RDRAND) ||
Borislav Petkov 5415e7
 	     cpu_has(c, X86_FEATURE_RDSEED)) &&
Borislav Petkov 5415e7
-	    cpu_matches(cpu_vuln_blacklist, SRBDS))
Borislav Petkov 5415e7
+	    cpu_matches(cpu_vuln_blacklist, SRBDS | MMIO_SBDS))
Borislav Petkov 5415e7
 		    setup_force_cpu_bug(X86_BUG_SRBDS);
Borislav Petkov 5415e7
 
Borislav Petkov 5415e7
 	/*