[PATCH 6/6] arm64: efi/libstub: enter with the MMU on if executing in place
Ard Biesheuvel
ardb at kernel.org
Thu Jun 30 07:42:30 PDT 2022
If the kernel image has not been moved from the place where it was
loaded by the firmware, just call the kernel entrypoint directly, and
keep the MMU and caches enabled. This removes the need for any cache
invalidation in the entry path.
Signed-off-by: Ard Biesheuvel <ardb at kernel.org>
---
arch/arm64/kernel/efi-entry.S | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/kernel/efi-entry.S b/arch/arm64/kernel/efi-entry.S
index 61a87fa1c305..0da0b373cf32 100644
--- a/arch/arm64/kernel/efi-entry.S
+++ b/arch/arm64/kernel/efi-entry.S
@@ -23,6 +23,10 @@ SYM_CODE_START(efi_enter_kernel)
add x19, x0, x2 // relocated Image entrypoint
mov x20, x1 // DTB address
+ adrp x3, _text // just call the entrypoint
+ cmp x0, x3 // directly if the image was
+ b.eq 2f // not moved around in memory
+
/*
* Clean the copied Image to the PoC, and ensure it is not shadowed by
* stale icache entries from before relocation.
--
2.35.1
More information about the linux-arm-kernel
mailing list