mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
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
This commit is contained in:
parent
cacf4cb251
commit
3c25f487bc
4 changed files with 9 additions and 5 deletions
|
@ -90,8 +90,8 @@ hwaddr openrisc_load_initrd(void *fdt, const char *filename,
|
||||||
return start + size;
|
return start + size;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t openrisc_load_fdt(void *fdt, hwaddr load_start,
|
uint32_t openrisc_load_fdt(MachineState *ms, void *fdt,
|
||||||
uint64_t mem_size)
|
hwaddr load_start, uint64_t mem_size)
|
||||||
{
|
{
|
||||||
uint32_t fdt_addr;
|
uint32_t fdt_addr;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -111,6 +111,9 @@ uint32_t openrisc_load_fdt(void *fdt, hwaddr load_start,
|
||||||
/* copy in the device tree */
|
/* copy in the device tree */
|
||||||
qemu_fdt_dumpdtb(fdt, fdtsize);
|
qemu_fdt_dumpdtb(fdt, fdtsize);
|
||||||
|
|
||||||
|
/* Save FDT for dumpdtb monitor command */
|
||||||
|
ms->fdt = fdt;
|
||||||
|
|
||||||
rom_add_blob_fixed_as("fdt", fdt, fdtsize, fdt_addr,
|
rom_add_blob_fixed_as("fdt", fdt, fdtsize, fdt_addr,
|
||||||
&address_space_memory);
|
&address_space_memory);
|
||||||
qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds,
|
qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds,
|
||||||
|
|
|
@ -354,7 +354,7 @@ static void openrisc_sim_init(MachineState *machine)
|
||||||
machine->initrd_filename,
|
machine->initrd_filename,
|
||||||
load_addr, machine->ram_size);
|
load_addr, machine->ram_size);
|
||||||
}
|
}
|
||||||
boot_info.fdt_addr = openrisc_load_fdt(state->fdt, load_addr,
|
boot_info.fdt_addr = openrisc_load_fdt(machine, state->fdt, load_addr,
|
||||||
machine->ram_size);
|
machine->ram_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -540,7 +540,7 @@ static void openrisc_virt_init(MachineState *machine)
|
||||||
machine->initrd_filename,
|
machine->initrd_filename,
|
||||||
load_addr, machine->ram_size);
|
load_addr, machine->ram_size);
|
||||||
}
|
}
|
||||||
boot_info.fdt_addr = openrisc_load_fdt(state->fdt, load_addr,
|
boot_info.fdt_addr = openrisc_load_fdt(machine, state->fdt, load_addr,
|
||||||
machine->ram_size);
|
machine->ram_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#define OPENRISC_BOOT_H
|
#define OPENRISC_BOOT_H
|
||||||
|
|
||||||
#include "exec/cpu-defs.h"
|
#include "exec/cpu-defs.h"
|
||||||
|
#include "hw/boards.h"
|
||||||
|
|
||||||
hwaddr openrisc_load_kernel(ram_addr_t ram_size,
|
hwaddr openrisc_load_kernel(ram_addr_t ram_size,
|
||||||
const char *kernel_filename,
|
const char *kernel_filename,
|
||||||
|
@ -28,7 +29,7 @@ hwaddr openrisc_load_kernel(ram_addr_t ram_size,
|
||||||
hwaddr openrisc_load_initrd(void *fdt, const char *filename,
|
hwaddr openrisc_load_initrd(void *fdt, const char *filename,
|
||||||
hwaddr load_start, uint64_t mem_size);
|
hwaddr load_start, uint64_t mem_size);
|
||||||
|
|
||||||
uint32_t openrisc_load_fdt(void *fdt, hwaddr load_start,
|
uint32_t openrisc_load_fdt(MachineState *ms, void *fdt, hwaddr load_start,
|
||||||
uint64_t mem_size);
|
uint64_t mem_size);
|
||||||
|
|
||||||
#endif /* OPENRISC_BOOT_H */
|
#endif /* OPENRISC_BOOT_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue