From: Daniel Sneddon <daniel.sneddon@linux.intel.com>
To: Jonathan Corbet <corbet@lwn.net>,
Thomas Gleixner <tglx@linutronix.de>,
Borislav Petkov <bp@alien8.de>,
Peter Zijlstra <peterz@infradead.org>,
Josh Poimboeuf <jpoimboe@kernel.org>,
Ingo Molnar <mingo@redhat.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
x86@kernel.org
Cc: hpa@zytor.com, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, pawan.kumar.gupta@linux.intel.com
Subject: [PATCH 1/6] x86/bugs: Create single parameter for VERW based mitigations
Date: Tue, 24 Sep 2024 15:31:35 -0700 [thread overview]
Message-ID: <20240924223140.1054918-2-daniel.sneddon@linux.intel.com> (raw)
In-Reply-To: <20240924223140.1054918-1-daniel.sneddon@linux.intel.com>
There are currently 4 mitigations that use VERW to flush different cpu
buffers. This can cause confusion when trying to disable all the
different VERW mitigations. Simplify enabling/disabling these
mitigations by creating a single parameter for controlling them.
Future work will focus on combining similar code used in selecting
these mitigations to further simplify.
Signed-off-by: Daniel Sneddon <daniel.sneddon@linux.intel.com>
---
.../admin-guide/kernel-parameters.txt | 16 +++++++++
arch/x86/kernel/cpu/bugs.c | 34 +++++++++++++++++++
2 files changed, 50 insertions(+)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 09126bb8cc9f..66b567c4dce5 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -628,6 +628,21 @@
cio_ignore= [S390]
See Documentation/arch/s390/common_io.rst for details.
+ clear_cpu_buffers=
+ [X86]
+ Controls the mitigations that use
+ X86_FEATURE_CLEAR_CPU_BUF, namely
+ Micro-architectrual Data Sampling (MDS)
+ MMIO Stale Data
+ TSX Async Abort (TAA)
+ Register File Data Sampling (RFDS)
+
+ The options are:
+ on - Enable cpu buffer clearing
+ on,nosmt - Enable cpu buffer clearing and disable
+ SMT
+ off - Disables cpu buffer clearing
+
clearcpuid=X[,X...] [X86]
Disable CPUID feature X for the kernel. See
arch/x86/include/asm/cpufeatures.h for the valid bit
@@ -3461,6 +3476,7 @@
improves system performance, but it may also
expose users to several CPU vulnerabilities.
Equivalent to: if nokaslr then kpti=0 [ARM64]
+ clear_cpu_buffers=off [X86]
gather_data_sampling=off [X86]
kvm.nx_huge_pages=off [X86]
l1tf=off [X86]
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c
index 45675da354f3..b3c9e1eede12 100644
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -531,6 +531,40 @@ early_param("reg_file_data_sampling", rfds_parse_cmdline);
#undef pr_fmt
#define pr_fmt(fmt) "" fmt
+static int __init clear_cpu_buffers_cmdline(char *str)
+{
+ if (!str)
+ return -EINVAL;
+
+ if (!boot_cpu_has_bug(X86_BUG_MDS) &&
+ !boot_cpu_has_bug(X86_BUG_TAA) &&
+ !boot_cpu_has_bug(X86_BUG_MMIO_STALE_DATA) &&
+ !boot_cpu_has_bug(X86_BUG_RFDS))
+ return 0;
+
+ if (!strcmp(str, "off")) {
+ mds_mitigation = MDS_MITIGATION_OFF;
+ taa_mitigation = TAA_MITIGATION_OFF;
+ mmio_mitigation = MMIO_MITIGATION_OFF;
+ rfds_mitigation = RFDS_MITIGATION_OFF;
+ } else if (!strcmp(str, "on")) {
+ mds_mitigation = MDS_MITIGATION_FULL;
+ taa_mitigation = TAA_MITIGATION_VERW;
+ mmio_mitigation = MMIO_MITIGATION_VERW;
+ rfds_mitigation = RFDS_MITIGATION_VERW;
+ } else if (!strcmp(str, "on,nosmt")) {
+ mds_mitigation = MDS_MITIGATION_FULL;
+ taa_mitigation = TAA_MITIGATION_VERW;
+ mmio_mitigation = MMIO_MITIGATION_VERW;
+ rfds_mitigation = RFDS_MITIGATION_VERW;
+ mds_nosmt = true;
+ taa_nosmt = true;
+ mmio_nosmt = true;
+ }
+ return 0;
+}
+early_param("clear_cpu_buffers", clear_cpu_buffers_cmdline);
+
static void __init md_clear_update_mitigation(void)
{
if (cpu_mitigations_off())
--
2.25.1
next prev parent reply other threads:[~2024-09-24 22:32 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-24 22:31 [PATCH 0/6] VERW based clean-up Daniel Sneddon
2024-09-24 22:31 ` Daniel Sneddon [this message]
2024-10-08 19:24 ` [PATCH 1/6] x86/bugs: Create single parameter for VERW based mitigations Kaplan, David
2024-10-09 16:17 ` Daniel Sneddon
2024-10-09 16:36 ` Kaplan, David
2024-10-09 16:39 ` Daniel Sneddon
2024-10-09 19:44 ` Daniel Sneddon
2024-10-09 20:02 ` Kaplan, David
2024-10-09 20:34 ` Daniel Sneddon
2024-10-10 4:52 ` Josh Poimboeuf
2024-10-10 14:57 ` Borislav Petkov
2024-10-14 15:42 ` Daniel Sneddon
2024-10-15 13:52 ` Borislav Petkov
2024-10-15 14:05 ` Daniel Sneddon
2024-09-24 22:31 ` [PATCH 2/6] x86/bugs: Remove MDS command line Daniel Sneddon
2024-09-24 22:34 ` Dave Hansen
2024-09-24 22:41 ` Daniel Sneddon
2024-09-24 22:31 ` [PATCH 3/6] x86/bugs: Remove TAA kernel parameter Daniel Sneddon
2024-09-24 22:31 ` [PATCH 4/6] x86/bugs: Remove MMIO " Daniel Sneddon
2024-09-24 22:31 ` [PATCH 5/6] x86/bugs: Remove RFDS " Daniel Sneddon
2024-09-24 22:31 ` [PATCH 6/6] x86/bugs: Clean-up verw mitigations Daniel Sneddon
2024-10-02 14:20 ` Nikolay Borisov
2024-10-02 14:46 ` Daniel Sneddon
2024-10-02 14:54 ` Nikolay Borisov
2024-10-07 19:37 ` Josh Poimboeuf
2024-10-08 16:17 ` Daniel Sneddon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240924223140.1054918-2-daniel.sneddon@linux.intel.com \
--to=daniel.sneddon@linux.intel.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jpoimboe@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).