From 11d8578d93f0aee793b28221b06187f62bb7b24b Mon Sep 17 00:00:00 2001 From: Jens Wiklander Date: Tue, 13 Aug 2024 08:55:34 +0200 Subject: [PATCH] core: arm: call call_driver_initcalls() late Calls call_early_initcalls() and call_service_initcalls() directly instead of call_initcalls() from init_tee_runtime(). This allows call_driver_initcalls() to be called with PAUTH enabled. Signed-off-by: Jens Wiklander Acked-by: Jerome Forissier Reviewed-by: Etienne Carriere --- core/arch/arm/kernel/boot.c | 5 ++++- core/arch/arm/kernel/virtualization.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/arch/arm/kernel/boot.c b/core/arch/arm/kernel/boot.c index b21076e00b1..2235fab3660 100644 --- a/core/arch/arm/kernel/boot.c +++ b/core/arch/arm/kernel/boot.c @@ -935,7 +935,8 @@ void init_tee_runtime(void) */ if (!IS_ENABLED(CFG_NS_VIRTUALIZATION)) call_preinitcalls(); - call_initcalls(); + call_early_initcalls(); + call_service_initcalls(); /* * These two functions uses crypto_rng_read() to initialize the @@ -1075,6 +1076,8 @@ void __weak boot_init_primary_late(unsigned long fdt __unused, */ void __weak boot_init_primary_final(void) { + if (!IS_ENABLED(CFG_NS_VIRTUALIZATION)) + call_driver_initcalls(); call_finalcalls(); IMSG("Primary CPU switching to normal world boot"); } diff --git a/core/arch/arm/kernel/virtualization.c b/core/arch/arm/kernel/virtualization.c index 86942c7976a..63599dcf174 100644 --- a/core/arch/arm/kernel/virtualization.c +++ b/core/arch/arm/kernel/virtualization.c @@ -579,6 +579,7 @@ void virt_on_stdcall(void) mutex_lock(&prtn->mutex); if (!prtn->runtime_initialized) { init_tee_runtime(); + call_driver_initcalls(); prtn->runtime_initialized = true; } mutex_unlock(&prtn->mutex);