Borislav Petkov 155be7
From: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Borislav Petkov 155be7
Date: Thu, 19 May 2022 20:30:12 -0700
Borislav Petkov 155be7
Subject: x86/bugs: Group MDS, TAA & Processor MMIO Stale Data mitigations
Borislav Petkov 155be7
Git-commit: e5925fb867290ee924fcf2fe3ca887b792714366
Borislav Petkov 155be7
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
Borislav Petkov 155be7
Patch-mainline: Queued in tip for v5.19
Borislav Petkov 155be7
References: bsc#1199650 CVE-2022-21166 CVE-2022-21127 CVE-2022-21123 CVE-2022-21125 CVE-2022-21180
Borislav Petkov 155be7
Borislav Petkov 155be7
MDS, TAA and Processor MMIO Stale Data mitigations rely on clearing CPU
Borislav Petkov 155be7
buffers. Moreover, status of these mitigations affects each other.
Borislav Petkov 155be7
During boot, it is important to maintain the order in which these
Borislav Petkov 155be7
mitigations are selected. This is especially true for
Borislav Petkov 155be7
md_clear_update_mitigation() that needs to be called after MDS, TAA and
Borislav Petkov 155be7
Processor MMIO Stale Data mitigation selection is done.
Borislav Petkov 155be7
Borislav Petkov 155be7
Introduce md_clear_select_mitigation(), and select all these mitigations
Borislav Petkov 155be7
from there. This reflects relationships between these mitigations and
Borislav Petkov 155be7
ensures proper ordering.
Borislav Petkov 155be7
Borislav Petkov 155be7
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Borislav Petkov 155be7
Signed-off-by: Borislav Petkov <bp@suse.de>
Borislav Petkov 155be7
---
Borislav Petkov 155be7
 arch/x86/kernel/cpu/bugs.c |   26 ++++++++++++++++----------
Borislav Petkov 155be7
 1 file changed, 16 insertions(+), 10 deletions(-)
Borislav Petkov 155be7
Borislav Petkov 155be7
--- a/arch/x86/kernel/cpu/bugs.c
Borislav Petkov 155be7
+++ b/arch/x86/kernel/cpu/bugs.c
Borislav Petkov 155be7
@@ -42,6 +42,7 @@ static void __init ssb_select_mitigation
Borislav Petkov 155be7
 static void __init l1tf_select_mitigation(void);
Borislav Petkov 155be7
 static void __init mds_select_mitigation(void);
Borislav Petkov 155be7
 static void __init md_clear_update_mitigation(void);
Borislav Petkov 155be7
+static void __init md_clear_select_mitigation(void);
Borislav Petkov 155be7
 static void __init taa_select_mitigation(void);
Borislav Petkov 155be7
 static void __init mmio_select_mitigation(void);
Borislav Petkov 155be7
 static void __init srbds_select_mitigation(void);
Borislav Petkov 155be7
@@ -114,18 +115,9 @@ void __init check_bugs(void)
Borislav Petkov 155be7
 	spectre_v2_select_mitigation();
Borislav Petkov 155be7
 	ssb_select_mitigation();
Borislav Petkov 155be7
 	l1tf_select_mitigation();
Borislav Petkov 155be7
-	mds_select_mitigation();
Borislav Petkov 155be7
-	taa_select_mitigation();
Borislav Petkov 155be7
-	mmio_select_mitigation();
Borislav Petkov 155be7
+	md_clear_select_mitigation();
Borislav Petkov 155be7
 	srbds_select_mitigation();
Borislav Petkov 155be7
 
Borislav Petkov 155be7
-	/*
Borislav Petkov 155be7
-	 * As MDS, TAA and MMIO Stale Data mitigations are inter-related, update
Borislav Petkov 155be7
-	 * and print their mitigation after MDS, TAA and MMIO Stale Data
Borislav Petkov 155be7
-	 * mitigation selection is done.
Borislav Petkov 155be7
-	 */
Borislav Petkov 155be7
-	md_clear_update_mitigation();
Borislav Petkov 155be7
-
Borislav Petkov 155be7
 	arch_smt_update();
Borislav Petkov 155be7
 
Borislav Petkov 155be7
 #ifdef CONFIG_X86_32
Borislav Petkov 155be7
@@ -504,6 +496,20 @@ out:
Borislav Petkov 155be7
 		pr_info("MMIO Stale Data: %s\n", mmio_strings[mmio_mitigation]);
Borislav Petkov 155be7
 }
Borislav Petkov 155be7
 
Borislav Petkov 155be7
+static void __init md_clear_select_mitigation(void)
Borislav Petkov 155be7
+{
Borislav Petkov 155be7
+	mds_select_mitigation();
Borislav Petkov 155be7
+	taa_select_mitigation();
Borislav Petkov 155be7
+	mmio_select_mitigation();
Borislav Petkov 155be7
+
Borislav Petkov 155be7
+	/*
Borislav Petkov 155be7
+	 * As MDS, TAA and MMIO Stale Data mitigations are inter-related, update
Borislav Petkov 155be7
+	 * and print their mitigation after MDS, TAA and MMIO Stale Data
Borislav Petkov 155be7
+	 * mitigation selection is done.
Borislav Petkov 155be7
+	 */
Borislav Petkov 155be7
+	md_clear_update_mitigation();
Borislav Petkov 155be7
+}
Borislav Petkov 155be7
+
Borislav Petkov 155be7
 #undef pr_fmt
Borislav Petkov 155be7
 #define pr_fmt(fmt)	"SRBDS: " fmt
Borislav Petkov 155be7