mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 04:21:09 -04:00
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:
committed by
Catalin Marinas
parent
377609ae8b
commit
e223258ed8
@@ -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];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user