Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Yeoreum Yun and committed by
Catalin Marinas
e223258e 377609ae

+14
+14
arch/arm64/kernel/armv8_deprecated.c
··· 610 610 } 611 611 612 612 #endif 613 + 614 + #ifdef CONFIG_SWP_EMULATION 615 + /* 616 + * The purpose of supporting LSUI is to eliminate PAN toggling. CPUs 617 + * that support LSUI are unlikely to support a 32-bit runtime. Rather 618 + * than emulating the SWP instruction using LSUI instructions, simply 619 + * disable SWP emulation. 620 + */ 621 + if (cpus_have_final_cap(ARM64_HAS_LSUI)) { 622 + insn_swp.status = INSN_UNAVAILABLE; 623 + pr_info("swp/swpb instruction emulation is not supported on this system\n"); 624 + } 625 + #endif 626 + 613 627 for (int i = 0; i < ARRAY_SIZE(insn_emulations); i++) { 614 628 struct insn_emulation *ie = insn_emulations[i]; 615 629