fix: allocate hafnium manifest from bss section
Hafnium manifest structure has grown in size with addition of
FF-A fields. It is currently ~26KB. Init allocates the Hafnium
manifest from stack and leads to a stack corruption. CPU stacks
are 4KB in size. This change declares the Hafnium manifest from
BSS rather than stack.
Fixing the above exhibits a side effect with initrd begin and end
param values which must remain zero in context of the SPMC as no
ramdisk is provided.
Change-Id: I2b99e9879f9f90a699d395862692a0304e6a4487
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
diff --git a/src/init.c b/src/init.c
index ab8d8a4..bff98b1 100644
--- a/src/init.c
+++ b/src/init.c
@@ -38,6 +38,12 @@
static struct mpool ppool;
+/*
+ * Hafnium manifest declaring all VMs. Notice this structure is large hence kept
+ * in BSS rather than directly allocated to the stack in one_time_init.
+ */
+static struct manifest manifest;
+
/**
* Performs one-time initialisation of memory management for the hypervisor.
*
@@ -67,7 +73,6 @@
{
struct string manifest_fname = STRING_INIT("manifest.dtb");
struct fdt fdt;
- struct manifest manifest;
enum manifest_return_code manifest_ret;
struct boot_params params;
struct boot_params_update update;