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]> (cherry picked from commit a16d4c2f162a86db1f84ef0836d42eabaf57fe69) Signed-off-by: Michael Tokarev <[email protected]> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 07a44ccd4c..9f9f3ce4ac 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -741,26 +741,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) @@ -1208,6 +1190,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.47.3
