Hi, After dealing with a FDT element that isn't being shown in the userspace and having to shutdown the guest, dump the FDT using 'machine -dumpdtb' and then using 'dtc' to see what was inside the FDT, I thought it was a good idea to add extra support for FDT handling in QEMU.
This series introduces 2 commands. 'fdt-save' behaves similar to what 'machine -dumpdtb' does, with the advantage of saving the FDT of a running guest on demand. This command is implemented in patch 03. The second command, 'info fdt <command>' is more sophisticated. This command can print specific nodes and properties of the FDT. A few examples: - print the /cpus/cpu@0 from an ARM 'virt' machine: (qemu) info fdt /cpus/cpu@0 /cpus/cpu@0 { phandle = <0x8001> reg = <0x0> compatible = 'arm,cortex-a57' device_type = 'cpu' } (qemu) - print the device_type property of the interrupt-controller node of a pSeries machine: (qemu) info fdt /interrupt-controller/device_type /interrupt-controller/device_type = 'PowerPC-External-Interrupt-Presentation' (qemu) Issuing a 'info fdt /' will dump all the FDT. 'info fdt' is implemented in patches 4-10. Both 'fdt-save' and 'info fdt' works across machines and archs based on two premises: the FDT must be created using libfdt (which is the case of all FDTs created with device_tree.c helpers and the _FDT macro) and the FDT must be reachable via MachineState->fdt. To meet the prerequisites for ARM machines, patch 1 makes a change in arm_load_dtb(). Patches 2 and 3 makes a similar change for two PowerPC machines that weren't using machine->fdt. Tests were done using the ARM machvirt machine and ppc64 pSeries machine, but any machine that meets the forementioned conditions will be supported by these 2 new commands. Daniel Henrique Barboza (10): hw/arm/boot.c: do not free machine->fdt in arm_load_dtb() hw/ppc/pegasos2.c: set machine->fdt in machine_reset() hw/ppc: set machine->fdt in spapr machine hmp, device_tree.c: introduce fdt-save hmp, device_tree.c: introduce 'info fdt' command device_tree.c: support printing of strings props device_tree.c: support remaining FDT prop types device_node.c: enable 'info fdt' to print subnodes device_tree.c: add fdt_print_property() helper hmp, device_tree.c: add 'info fdt <property>' support hmp-commands-info.hx | 13 +++ hmp-commands.hx | 13 +++ hw/arm/boot.c | 3 +- hw/ppc/pegasos2.c | 3 + hw/ppc/spapr.c | 3 + hw/ppc/spapr_hcall.c | 3 + include/sysemu/device_tree.h | 3 + monitor/misc.c | 25 ++++ softmmu/device_tree.c | 219 +++++++++++++++++++++++++++++++++++ 9 files changed, 284 insertions(+), 1 deletion(-) -- 2.36.1