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