refactor(hypervisor): enabling TEE interaction
At initialization hafnium initializes the other world's resources.
The hypervisor needs to enable its interaction with the TEE, deployed
in the SWd. This was done by passing a boolean to the function
'plat_ffa_init', which sets a local 'ffa_tee_enabled'.
Before forwarding a call to the SPMC, the hypervisor normally checks if
this boolean was set at initialization.
When loading the VMs the hypervisor might need to call the SPMC
with FFA_NOTIFICATION_BITMAP_CREATE, in case notifications are enabled.
The VMs were being loaded before the call to 'plat_ffa_init', so
setting 'ffa_tee_enabled' was factored out into its own function, which
is invoked before loading VMs.
Change-Id: Ifaaf11ee62cdbd5d09f75fabb57068de7d38d01d
Signed-off-by: J-Alves <joao.alves@arm.com>
diff --git a/src/init.c b/src/init.c
index bff98b1..170c716 100644
--- a/src/init.c
+++ b/src/init.c
@@ -143,6 +143,8 @@
manifest_strerror(manifest_ret));
}
+ plat_ffa_set_tee_enabled(manifest.ffa_tee_enabled);
+
if (!plat_iommu_init(&fdt, mm_stage1_locked, &ppool)) {
panic("Could not initialize IOMMUs.");
}
@@ -180,7 +182,7 @@
mm_vm_enable_invalidation();
/* Perform platform specfic FF-A initialization. */
- plat_ffa_init(manifest.ffa_tee_enabled);
+ plat_ffa_init();
dlog_info("Hafnium initialisation completed\n");
}