summary refs log tree commit diff stats
path: root/hw/openrisc/boot.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2025-02-06 15:12:10 +0000
committerPeter Maydell <peter.maydell@linaro.org>2025-02-24 15:03:42 +0000
commit3c25f487bc0672bf13473f4a7235c3ef592c954c (patch)
tree2871e85005595c9977e9efafe5d86be0aeed4214 /hw/openrisc/boot.c
parentcacf4cb2516aa4de94aa80fecb08be4dafa5ed44 (diff)
downloadfocaccia-qemu-3c25f487bc0672bf13473f4a7235c3ef592c954c.tar.gz
focaccia-qemu-3c25f487bc0672bf13473f4a7235c3ef592c954c.zip
hw/openrisc: Support monitor dumpdtb command
The openrisc machines don't set MachineState::fdt to point to their
DTB blob.  This means that although the command line '-machine
dumpdtb=file.dtb' option works, the equivalent QMP and HMP monitor
commands do not, but instead produce the error "This machine doesn't
have a FDT".

Set MachineState::fdt in openrisc_load_fdt(), when we write it to
guest memory.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20250206151214.2947842-3-peter.maydell@linaro.org
Diffstat (limited to 'hw/openrisc/boot.c')
-rw-r--r--hw/openrisc/boot.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/hw/openrisc/boot.c b/hw/openrisc/boot.c
index 0f08df812d..72e2756af0 100644
--- a/hw/openrisc/boot.c
+++ b/hw/openrisc/boot.c
@@ -90,8 +90,8 @@ hwaddr openrisc_load_initrd(void *fdt, const char *filename,
     return start + size;
 }
 
-uint32_t openrisc_load_fdt(void *fdt, hwaddr load_start,
-                           uint64_t mem_size)
+uint32_t openrisc_load_fdt(MachineState *ms, void *fdt,
+                           hwaddr load_start, uint64_t mem_size)
 {
     uint32_t fdt_addr;
     int ret;
@@ -111,6 +111,9 @@ uint32_t openrisc_load_fdt(void *fdt, hwaddr load_start,
     /* copy in the device tree */
     qemu_fdt_dumpdtb(fdt, fdtsize);
 
+    /* Save FDT for dumpdtb monitor command */
+    ms->fdt = fdt;
+
     rom_add_blob_fixed_as("fdt", fdt, fdtsize, fdt_addr,
                           &address_space_memory);
     qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds,