Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 562afad4 authored by Pawan Gupta's avatar Pawan Gupta Committed by Greg Kroah-Hartman
Browse files

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: default avatarPawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarTony Luck <tony.luck@intel.com>
Reviewed-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
[bwh: Backported to 4.9: adjust filename]
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 63945359
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -4537,6 +4537,9 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
				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/hw-vuln/tsx_async_abort.rst
+6 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ static bool __init tsx_ctrl_is_supported(void)

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");