Commit 877ace9e authored by Liu Song's avatar Liu Song Committed by Catalin Marinas
Browse files

arm64: spectre: increase parameters that can be used to turn off bhb mitigation individually



In our environment, it was found that the mitigation BHB has a great
impact on the benchmark performance. For example, in the lmbench test,
the "process fork && exit" test performance drops by 20%.
So it is necessary to have the ability to turn off the mitigation
individually through cmdline, thus avoiding having to compile the
kernel by adjusting the config.

Signed-off-by: default avatarLiu Song <liusong@linux.alibaba.com>
Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/1661514050-22263-1-git-send-email-liusong@linux.alibaba.com


Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 8eb858c4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -3207,6 +3207,7 @@
					       spectre_v2_user=off [X86]
					       spec_store_bypass_disable=off [X86,PPC]
					       ssbd=force-off [ARM64]
					       nospectre_bhb [ARM64]
					       l1tf=off [X86]
					       mds=off [X86]
					       tsx_async_abort=off [X86]
@@ -3631,6 +3632,10 @@
			vulnerability. System may allow data leaks with this
			option.

	nospectre_bhb	[ARM64] Disable all mitigations for Spectre-BHB (branch
			history injection) vulnerability. System may allow data leaks
			with this option.

	nospec_store_bypass_disable
			[HW] Disable all mitigations for the Speculative Store Bypass vulnerability

+9 −1
Original line number Diff line number Diff line
@@ -988,6 +988,14 @@ static void this_cpu_set_vectors(enum arm64_bp_harden_el1_vectors slot)
	isb();
}

static bool __read_mostly __nospectre_bhb;
static int __init parse_spectre_bhb_param(char *str)
{
	__nospectre_bhb = true;
	return 0;
}
early_param("nospectre_bhb", parse_spectre_bhb_param);

void spectre_bhb_enable_mitigation(const struct arm64_cpu_capabilities *entry)
{
	bp_hardening_cb_t cpu_cb;
@@ -1001,7 +1009,7 @@ void spectre_bhb_enable_mitigation(const struct arm64_cpu_capabilities *entry)
		/* No point mitigating Spectre-BHB alone. */
	} else if (!IS_ENABLED(CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY)) {
		pr_info_once("spectre-bhb mitigation disabled by compile time option\n");
	} else if (cpu_mitigations_off()) {
	} else if (cpu_mitigations_off() || __nospectre_bhb) {
		pr_info_once("spectre-bhb mitigation disabled by command line option\n");
	} else if (supports_ecbhb(SCOPE_LOCAL_CPU)) {
		state = SPECTRE_MITIGATED;