[kvm-unit-tests PATCH v6 05/14] arm64: efi: initialise the EL
Joey Gouly
joey.gouly at arm.com
Fri Jan 23 08:50:44 PST 2026
Initialise the exception level, which may include dropping to EL1 from EL2,
if VHE is not supported.
Signed-off-by: Joey Gouly <joey.gouly at arm.com>
Acked-by: Marc Zyngier <maz at kernel.org>
Reviewed-by: Eric Auger <eric.auger at redhat.com>
---
arm/efi/crt0-efi-aarch64.S | 5 +++++
lib/arm/asm/setup.h | 2 ++
lib/arm/setup.c | 2 ++
3 files changed, 9 insertions(+)
diff --git a/arm/efi/crt0-efi-aarch64.S b/arm/efi/crt0-efi-aarch64.S
index 71ce2794..5632fee0 100644
--- a/arm/efi/crt0-efi-aarch64.S
+++ b/arm/efi/crt0-efi-aarch64.S
@@ -147,6 +147,11 @@ _start:
0: ldp x29, x30, [sp], #32
ret
+.globl do_init_el
+do_init_el:
+ init_el x16
+ ret
+
.section .data
.balign 65536
diff --git a/lib/arm/asm/setup.h b/lib/arm/asm/setup.h
index 4e60d552..bf05ffbb 100644
--- a/lib/arm/asm/setup.h
+++ b/lib/arm/asm/setup.h
@@ -29,8 +29,10 @@ void setup(const void *fdt, phys_addr_t freemem_start);
#include <efi.h>
#ifdef __aarch64__
+void do_init_el(void);
void setup_efi_sctlr(void);
#else
+static inline void do_init_el(void) {}
static inline void setup_efi_sctlr(void) {}
#endif
diff --git a/lib/arm/setup.c b/lib/arm/setup.c
index 49f5e0f6..5ff40b54 100644
--- a/lib/arm/setup.c
+++ b/lib/arm/setup.c
@@ -349,6 +349,8 @@ efi_status_t setup_efi(efi_bootinfo_t *efi_bootinfo)
{
efi_status_t status;
+ do_init_el();
+
setup_efi_sctlr();
exceptions_init();
--
2.25.1
More information about the linux-arm-kernel
mailing list