[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-7.2 v2 00/20] QMP/HMP: add 'dumpdtb' and 'info fdt' commands
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH for-7.2 v2 00/20] QMP/HMP: add 'dumpdtb' and 'info fdt' commands |
Date: |
Fri, 5 Aug 2022 06:39:28 -0300 |
Hi,
This second version implements the review comments/suggestion made in
the v1 review [1].
First 13 patches are adaptations (basically set machine->fdt) I made in
several machines to enable them to work with these commands. Patches
14-20 have the actual QMP/HMP/device_tree implementation. A plan for the
machine patches would be to get an ack from the machine owners and push
them with the QMP/HMP patches. Pick the machine patches in their own
trees and push it separately also works. Or, or course, NACK the machine
changes if I somewhat messed up. Either way, patches 14-20 are
independent from the individual machine changes.
Notable cases where I chose not to change the machine code:
- hw/rx/rx-gdbsim: I didn't see the point of enabling this command in
the GDB simulator. Can be done if required;
- hw/mips/boston: the FDT is handled as a const void* pointer inside
boston_mach_init(), as result of the return type of boston_fdt_filter()
return the 'const' modifier in the FDT. I left it alone because the
required change would be to either cast the const pointer as
non-constant in machine->fdt or change boston_fdt_filter() to not return
a const pointer. Can also be done but it requires a little more thought
(unless we're ok with a "void *" cast).
Other notable changes from v1:
- 'save-fdt' was renamed as 'dumpdtb'ยด;
- Both commands were changed to have a base QMP implementation that does
all the work, with the HMP support calling the QMP logic behind the
scenes. 'dumpdtb' is implemented as qmp_dumpdtb(), 'info fdt' is
implemented as x-query-fdt(). I didn't mark 'dumpdtb' as unstable
because we're doing the same thing as -machine dumpdtb does for awhile.
'info fdt' is more of a debug tool than something that we expect regular
users to consume;
- 'info fdt' is now receiving a second 'propname' argument to support
printing properties, as suggested by David Gilbert;
- the QMP/HMP implementations are now gated with "ifdef CONFIG_FDT" to
allow for successful build in systems that do not have libfdt support.
All other code changes made are consequences of the changes mentioned above.
Changes from v1:
- all patches that set machine->fdt:
- updated comments to explain why we're setting machine->fdt
- patches 2-6, 8, 10-12: new
- set machine->fdt for most of the machines that uses the FDT via
load_device_tree()
- patch 14 (former 4):
- renamed 'fdt-save' command to 'dumpdtb'
- added QMP counterpart 'qmp_dumpdtb'
- patch 15 (former 5):
- added QMP counterpart 'x-query-fdt' of 'info fdt'
- patch 20 (former 10):
- added the 'propname' parameter to support parameters instead of parsing
the fullpath of the parameter
- helper fdt_find_property() was removed. The logic is short enough to
be open coded in qmp_x_query_fdt()
- v1 link: https://lists.gnu.org/archive/html/qemu-devel/2022-07/msg04119.html
[1] https://lists.gnu.org/archive/html/qemu-devel/2022-07/msg04119.html
Daniel Henrique Barboza (20):
hw/arm: do not free machine->fdt in arm_load_dtb()
hw/microblaze: set machine->fdt in microblaze_load_dtb()
hw/nios2: set machine->fdt in nios2_load_dtb()
hw/ppc: set machine->fdt in ppce500_load_device_tree()
hw/ppc: set machine->fdt in bamboo_load_device_tree()
hw/ppc: set machine->fdt in sam460ex_load_device_tree()
hw/ppc: set machine->fdt in xilinx_load_device_tree()
hw/ppc: set machine->fdt in pegasos2_machine_reset()
hw/ppc: set machine->fdt in pnv_reset()
hw/ppc: set machine->fdt in spapr machine
hw/riscv: set machine->fdt in sifive_u_machine_init()
hw/riscv: set machine->fdt in spike_board_init()
hw/xtensa: set machine->fdt in xtfpga_init()
qmp/hmp, device_tree.c: introduce dumpdtb
qmp/hmp, device_tree.c: introduce 'info fdt' command
device_tree.c: support string props in fdt_format_node()
device_tree.c: support remaining FDT prop types
device_node.c: enable 'info fdt' to print subnodes
device_tree.c: add fdt_format_property() helper
hmp, device_tree.c: add 'info fdt <property>' support
hmp-commands-info.hx | 14 +++
hmp-commands.hx | 13 +++
hw/arm/boot.c | 8 +-
hw/microblaze/boot.c | 13 ++-
hw/microblaze/meson.build | 2 +-
hw/nios2/boot.c | 13 ++-
hw/nios2/meson.build | 2 +-
hw/ppc/e500.c | 15 ++-
hw/ppc/pegasos2.c | 9 ++
hw/ppc/pnv.c | 6 +-
hw/ppc/ppc440_bamboo.c | 13 ++-
hw/ppc/sam460ex.c | 10 +-
hw/ppc/spapr.c | 6 ++
hw/ppc/spapr_hcall.c | 8 ++
hw/ppc/virtex_ml507.c | 13 ++-
hw/riscv/sifive_u.c | 8 ++
hw/riscv/spike.c | 11 +++
hw/xtensa/meson.build | 2 +-
hw/xtensa/xtfpga.c | 11 ++-
include/monitor/hmp.h | 2 +
include/sysemu/device_tree.h | 7 ++
monitor/hmp-cmds.c | 28 ++++++
monitor/qmp-cmds.c | 27 ++++++
qapi/machine.json | 38 ++++++++
softmmu/device_tree.c | 181 +++++++++++++++++++++++++++++++++++
25 files changed, 448 insertions(+), 12 deletions(-)
--
2.36.1
- [PATCH for-7.2 v2 00/20] QMP/HMP: add 'dumpdtb' and 'info fdt' commands,
Daniel Henrique Barboza <=
- [PATCH for-7.2 v2 02/20] hw/microblaze: set machine->fdt in microblaze_load_dtb(), Daniel Henrique Barboza, 2022/08/05
- [PATCH for-7.2 v2 03/20] hw/nios2: set machine->fdt in nios2_load_dtb(), Daniel Henrique Barboza, 2022/08/05
- [PATCH for-7.2 v2 04/20] hw/ppc: set machine->fdt in ppce500_load_device_tree(), Daniel Henrique Barboza, 2022/08/05
- [PATCH for-7.2 v2 06/20] hw/ppc: set machine->fdt in sam460ex_load_device_tree(), Daniel Henrique Barboza, 2022/08/05
- [PATCH for-7.2 v2 08/20] hw/ppc: set machine->fdt in pegasos2_machine_reset(), Daniel Henrique Barboza, 2022/08/05