[PATCH 01/12] boards: qemu-virt: reserve BIOS device tree

Ahmad Fatoum a.fatoum at barebox.org
Thu Jan 15 03:54:27 PST 2026


On the ARM Virt platform, QEMU places its device tree at the start of
RAM and doesn't provide a standard FW_CFG to access it.

To be able to keep reusing it when chainloading barebox in future and
passing it to the kernel, reserve this piece of memory.

Signed-off-by: Ahmad Fatoum <a.fatoum at barebox.org>
---
 common/boards/qemu-virt/board.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/common/boards/qemu-virt/board.c b/common/boards/qemu-virt/board.c
index 0c9cc1a75d3b..53945aefb7aa 100644
--- a/common/boards/qemu-virt/board.c
+++ b/common/boards/qemu-virt/board.c
@@ -6,6 +6,8 @@
 #include <common.h>
 #include <init.h>
 #include <of.h>
+#include <memory.h>
+#include <compressed-dtb.h>
 #include <deep-probe.h>
 #include <security/policy.h>
 #include "qemu-virt-flash.h"
@@ -47,6 +49,8 @@ static const struct of_device_id virt_of_match[] = {
 };
 BAREBOX_DEEP_PROBE_ENABLE(virt_of_match);
 
+static bool is_qemu_virt;
+
 /*
  * We don't have a dedicated qemu-virt device tree and instead rely
  * on what Qemu passes us. To be able to get fundamental changes
@@ -64,6 +68,8 @@ static int virt_board_driver_init(void)
 	if (!id)
 		return 0;
 
+	is_qemu_virt = true;
+
 	if (id->data) {
 		init = id->data;
 		init();
@@ -94,3 +100,29 @@ static int virt_board_driver_init(void)
 	return 0;
 }
 postcore_initcall(virt_board_driver_init);
+
+static __maybe_unused int virt_board_reserve_fdt(void)
+{
+	resource_size_t start = ~0, end = ~0;
+
+	if (!is_qemu_virt)
+		return 0;
+
+	memory_bank_first_find_space(&start, &end);
+	if (start != ~0) {
+		void *fdt = (void *)start;
+
+		if (!blob_is_fdt(fdt))
+			return 0;
+
+		request_sdram_region("qemu-virt-fdt", start,
+				     fdt_totalsize(fdt),
+				     MEMTYPE_BOOT_SERVICES_DATA,
+				     MEMATTRS_RO);
+	}
+
+	return 0;
+}
+#ifdef CONFIG_ARM
+postmem_initcall(virt_board_reserve_fdt);
+#endif
-- 
2.47.3




More information about the barebox mailing list