61 lines
2.1 KiB
Diff
61 lines
2.1 KiB
Diff
From: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
|
|
Date: Wed, 23 Oct 2019 12:28:57 +0200
|
|
Subject: x86/tsx: Add "auto" option to the tsx= cmdline parameter
|
|
|
|
commit 7531a3596e3272d1f6841e0d601a614555dc6b65 upstream
|
|
|
|
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
|
|
|
|
[ bp: Extend the arg buffer to accommodate "auto\0". ]
|
|
|
|
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
|
|
Signed-off-by: Borislav Petkov <bp@suse.de>
|
|
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|
Reviewed-by: Tony Luck <tony.luck@intel.com>
|
|
Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
|
|
---
|
|
Documentation/admin-guide/kernel-parameters.txt | 3 +++
|
|
arch/x86/kernel/cpu/tsx.c | 7 ++++++-
|
|
2 files changed, 9 insertions(+), 1 deletion(-)
|
|
|
|
--- a/Documentation/admin-guide/kernel-parameters.txt
|
|
+++ b/Documentation/admin-guide/kernel-parameters.txt
|
|
@@ -4706,6 +4706,9 @@
|
|
update. This new MSR allows for the reliable
|
|
deactivation of the TSX functionality.)
|
|
|
|
+ auto - Disable TSX if X86_BUG_TAA is present,
|
|
+ otherwise enable TSX on the system.
|
|
+
|
|
Not specifying this option is equivalent to tsx=off.
|
|
|
|
See Documentation/admin-guide/hw-vuln/tsx_async_abort.rst
|
|
--- a/arch/x86/kernel/cpu/tsx.c
|
|
+++ b/arch/x86/kernel/cpu/tsx.c
|
|
@@ -75,7 +75,7 @@ static bool __init tsx_ctrl_is_supported
|
|
|
|
void __init tsx_init(void)
|
|
{
|
|
- char arg[4] = {};
|
|
+ char arg[5] = {};
|
|
int ret;
|
|
|
|
if (!tsx_ctrl_is_supported())
|
|
@@ -87,6 +87,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_err("tsx: invalid option, defaulting to off\n");
|