Commit e223258e authored by Yeoreum Yun's avatar Yeoreum Yun Committed by Catalin Marinas
Browse files

arm64: armv8_deprecated: Disable swp emulation when FEAT_LSUI present



The purpose of supporting LSUI is to eliminate PAN toggling. CPUs that
support LSUI are unlikely to support a 32-bit runtime. Rather than
emulating the SWP instruction using LSUI instructions in order to remove
PAN toggling, simply disable SWP emulation.

Signed-off-by: default avatarYeoreum Yun <yeoreum.yun@arm.com>
[catalin.marinas@arm.com: some tweaks to the in-code comment]
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 377609ae
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -610,6 +610,20 @@ static int __init armv8_deprecated_init(void)
	}

#endif

#ifdef CONFIG_SWP_EMULATION
	/*
	 * The purpose of supporting LSUI is to eliminate PAN toggling. CPUs
	 * that support LSUI are unlikely to support a 32-bit runtime. Rather
	 * than emulating the SWP instruction using LSUI instructions, simply
	 * disable SWP emulation.
	 */
	if (cpus_have_final_cap(ARM64_HAS_LSUI)) {
		insn_swp.status = INSN_UNAVAILABLE;
		pr_info("swp/swpb instruction emulation is not supported on this system\n");
	}
#endif

	for (int i = 0; i < ARRAY_SIZE(insn_emulations); i++) {
		struct insn_emulation *ie = insn_emulations[i];