From: Shivang Upadhyay <[email protected]> The '-machine dumpdtb' command line option stopped working on PowerPC/pnv systems after recent design change [1].
Fixing this by generating fdt blob in `pnv_init`. [1] https://lore.kernel.org/qemu-devel/[email protected]/ Cc: Aditya Gupta <[email protected]> Cc: Harsh Prateek Bora <[email protected]> Cc: Peter Maydell <[email protected]> Cc: BALATON Zoltan <[email protected]> Cc: [email protected] Fixes: 8fd2518ef2f8d34 ("hw: Centralize handling of -machine dumpdtb option") Signed-off-by: Shivang Upadhyay <[email protected]> Reviewed-by: Peter Maydell <[email protected]> Reviewed-by: Aditya Gupta <[email protected]> Link: https://lore.kernel.org/qemu-devel/[email protected] Signed-off-by: Harsh Prateek Bora <[email protected]> --- hw/ppc/pnv.c | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 1513575b8f..7e54b6bc60 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -773,26 +773,8 @@ static void pnv_reset(MachineState *machine, ResetType type) } } - if (machine->fdt) { - fdt = machine->fdt; - } else { - fdt = pnv_dt_create(machine); - /* Pack resulting tree */ - _FDT((fdt_pack(fdt))); - } - + fdt = machine->fdt; cpu_physical_memory_write(PNV_FDT_ADDR, fdt, fdt_totalsize(fdt)); - - /* Update machine->fdt with latest fdt */ - if (machine->fdt != fdt) { - /* - * Set machine->fdt for 'dumpdtb' QMP/HMP command. Free - * the existing machine->fdt to avoid leaking it during - * a reset. - */ - g_free(machine->fdt); - machine->fdt = fdt; - } } static ISABus *pnv_chip_power8_isa_create(PnvChip *chip, Error **errp) @@ -1261,6 +1243,11 @@ static void pnv_init(MachineState *machine) if (pmc->i2c_init) { pmc->i2c_init(pnv); } + + if (!machine->fdt) { + machine->fdt = pnv_dt_create(machine); + _FDT((fdt_pack(machine->fdt))); + } } /* -- 2.52.0
