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: Yeoreum Yun <yeoreum.yun@arm.com>
[catalin.marinas@arm.com: some tweaks to the in-code comment]
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Yeoreum Yun
2026-03-14 17:51:31 +00:00
committed by Catalin Marinas
parent 377609ae8b
commit e223258ed8

View File

@@ -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];