Reserve the same memory ranges for Hafnium in the FDT as we unmap.
Bug: 117082339
Change-Id: Ib7e0853739633404a1ba7abeda3406222408fddc
diff --git a/src/fdt_handler.c b/src/fdt_handler.c
index 8d701ee..d51250b 100644
--- a/src/fdt_handler.c
+++ b/src/fdt_handler.c
@@ -337,12 +337,21 @@
goto out_unmap_fdt;
}
- /* Patch fdt to reserve primary VM memory. */
+ /*
+ * Patch FDT to reserve hypervisor memory so the primary VM doesn't try
+ * to use it.
+ */
fdt_add_mem_reservation(
- fdt, align_down(pa_addr(layout_primary_begin()), 0x100000),
- 0x80000);
+ fdt, pa_addr(layout_text_begin()),
+ pa_addr(layout_text_end()) - pa_addr(layout_text_begin()));
+ fdt_add_mem_reservation(
+ fdt, pa_addr(layout_rodata_begin()),
+ pa_addr(layout_rodata_end()) - pa_addr(layout_rodata_begin()));
+ fdt_add_mem_reservation(
+ fdt, pa_addr(layout_data_begin()),
+ pa_addr(layout_data_end()) - pa_addr(layout_data_begin()));
- /* Patch fdt to reserve memory for secondary VMs. */
+ /* Patch FDT to reserve memory for secondary VMs. */
for (i = 0; i < p->reserved_ranges_count; ++i) {
fdt_add_mem_reservation(
fdt, pa_addr(p->reserved_ranges[i].begin),