52 lines
1.9 KiB
Diff
52 lines
1.9 KiB
Diff
From: speck for Pawan Gupta <speck@linutronix.de>
|
|
Date: Wed, 9 Oct 2019 16:28:56 -0700
|
|
Subject: TAAv6 7
|
|
|
|
Platforms which are not affected by X86_BUG_TAA may want the TSX feature
|
|
enabled. Add "auto" option to the TSX cmdline parameter. When tsx=auto
|
|
disable TSX when X86_BUG_TAA is present, otherwise enable TSX.
|
|
|
|
More details on X86_BUG_TAA can be found here:
|
|
https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/tsx_async_abort.html
|
|
|
|
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
|
|
Reviewed-by: Tony Luck <tony.luck@intel.com>
|
|
Tested-by: Neelima Krishnan <neelima.krishnan@intel.com>
|
|
---
|
|
Documentation/admin-guide/kernel-parameters.txt | 5 +++++
|
|
arch/x86/kernel/cpu/tsx.c | 5 +++++
|
|
2 files changed, 10 insertions(+)
|
|
|
|
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
|
|
index f03756d2addb..dffdd4d86f4b 100644
|
|
--- a/Documentation/admin-guide/kernel-parameters.txt
|
|
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
|
@@ -4715,6 +4715,11 @@
|
|
|
|
on - Enable TSX on the system.
|
|
off - Disable TSX on the system.
|
|
+ auto - Disable TSX if X86_BUG_TAA is present,
|
|
+ otherwise enable TSX on the system.
|
|
+
|
|
+ More details on X86_BUG_TAA are here:
|
|
+ Documentation/admin-guide/hw-vuln/tsx_async_abort.rst
|
|
|
|
Not specifying this option is equivalent to tsx=off.
|
|
|
|
diff --git a/arch/x86/kernel/cpu/tsx.c b/arch/x86/kernel/cpu/tsx.c
|
|
index e39b33b7cef8..e93abe6f0bb9 100644
|
|
--- a/arch/x86/kernel/cpu/tsx.c
|
|
+++ b/arch/x86/kernel/cpu/tsx.c
|
|
@@ -80,6 +80,11 @@ void __init tsx_init(void)
|
|
tsx_ctrl_state = TSX_CTRL_ENABLE;
|
|
} else if (!strcmp(arg, "off")) {
|
|
tsx_ctrl_state = TSX_CTRL_DISABLE;
|
|
+ } else if (!strcmp(arg, "auto")) {
|
|
+ if (boot_cpu_has_bug(X86_BUG_TAA))
|
|
+ tsx_ctrl_state = TSX_CTRL_DISABLE;
|
|
+ else
|
|
+ tsx_ctrl_state = TSX_CTRL_ENABLE;
|
|
} else {
|
|
tsx_ctrl_state = TSX_CTRL_DISABLE;
|
|
pr_info("tsx: invalid option, defaulting to off\n");
|