From: Daniel Henrique Barboza <danielhb413@gmail.com>
To: qemu-devel@nongnu.org
Cc: alistair.francis@wdc.com, david@gibson.dropbear.id.au,
Daniel Henrique Barboza <danielhb413@gmail.com>
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 [thread overview]
Message-ID: <20220805093948.82561-1-danielhb413@gmail.com> (raw)
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
next reply other threads:[~2022-08-05 9:47 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-05 9:39 Daniel Henrique Barboza [this message]
2022-08-05 9:39 ` [PATCH for-7.2 v2 01/20] hw/arm: do not free machine->fdt in arm_load_dtb() Daniel Henrique Barboza
2022-08-08 3:23 ` David Gibson
2022-08-08 23:00 ` Daniel Henrique Barboza
2022-08-12 22:03 ` Daniel Henrique Barboza
2022-08-15 2:36 ` David Gibson
2022-08-05 9:39 ` [PATCH for-7.2 v2 02/20] hw/microblaze: set machine->fdt in microblaze_load_dtb() Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 03/20] hw/nios2: set machine->fdt in nios2_load_dtb() Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 04/20] hw/ppc: set machine->fdt in ppce500_load_device_tree() Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 05/20] hw/ppc: set machine->fdt in bamboo_load_device_tree() Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 06/20] hw/ppc: set machine->fdt in sam460ex_load_device_tree() Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 07/20] hw/ppc: set machine->fdt in xilinx_load_device_tree() Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 08/20] hw/ppc: set machine->fdt in pegasos2_machine_reset() Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 09/20] hw/ppc: set machine->fdt in pnv_reset() Daniel Henrique Barboza
2022-08-05 11:03 ` Frederic Barrat
2022-08-05 12:31 ` Daniel Henrique Barboza
2022-08-08 3:25 ` David Gibson
2022-08-08 6:47 ` Cédric Le Goater
2022-08-08 7:13 ` Cédric Le Goater
2022-08-10 19:30 ` Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 10/20] hw/ppc: set machine->fdt in spapr machine Daniel Henrique Barboza
2022-08-08 3:26 ` David Gibson
2022-08-12 22:23 ` Daniel Henrique Barboza
2022-08-15 2:37 ` David Gibson
2022-08-19 2:11 ` Alexey Kardashevskiy
2022-08-19 2:33 ` David Gibson
2022-08-19 9:42 ` Daniel Henrique Barboza
2022-08-22 3:05 ` David Gibson
2022-08-22 3:29 ` Alexey Kardashevskiy
2022-08-22 10:30 ` Daniel Henrique Barboza
2022-08-23 8:58 ` Alexey Kardashevskiy
2022-08-23 18:09 ` Daniel Henrique Barboza
2022-09-01 1:57 ` David Gibson
2022-08-05 9:39 ` [PATCH for-7.2 v2 11/20] hw/riscv: set machine->fdt in sifive_u_machine_init() Daniel Henrique Barboza
2022-08-07 22:46 ` Alistair Francis
2022-08-05 9:39 ` [PATCH for-7.2 v2 12/20] hw/riscv: set machine->fdt in spike_board_init() Daniel Henrique Barboza
2022-08-07 22:46 ` Alistair Francis
2022-08-05 9:39 ` [PATCH for-7.2 v2 13/20] hw/xtensa: set machine->fdt in xtfpga_init() Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 14/20] qmp/hmp, device_tree.c: introduce dumpdtb Daniel Henrique Barboza
2022-08-07 23:02 ` Alistair Francis
2022-08-08 3:30 ` David Gibson
2022-08-15 17:36 ` Daniel Henrique Barboza
2022-08-15 18:31 ` Dr. David Alan Gilbert
2022-08-15 19:20 ` Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 15/20] qmp/hmp, device_tree.c: introduce 'info fdt' command Daniel Henrique Barboza
2022-08-08 4:21 ` David Gibson
2022-08-15 22:48 ` Daniel Henrique Barboza
2022-08-18 2:46 ` David Gibson
2022-08-05 9:39 ` [PATCH for-7.2 v2 16/20] device_tree.c: support string props in fdt_format_node() Daniel Henrique Barboza
2022-08-08 4:36 ` David Gibson
2022-08-10 19:40 ` Daniel Henrique Barboza
2022-08-11 4:09 ` David Gibson
2022-08-05 9:39 ` [PATCH for-7.2 v2 17/20] device_tree.c: support remaining FDT prop types Daniel Henrique Barboza
2022-08-08 4:40 ` David Gibson
2022-08-05 9:39 ` [PATCH for-7.2 v2 18/20] device_node.c: enable 'info fdt' to print subnodes Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 19/20] device_tree.c: add fdt_format_property() helper Daniel Henrique Barboza
2022-08-05 9:39 ` [PATCH for-7.2 v2 20/20] hmp, device_tree.c: add 'info fdt <property>' support Daniel Henrique Barboza
2022-08-15 18:38 ` Dr. David Alan Gilbert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220805093948.82561-1-danielhb413@gmail.com \
--to=danielhb413@gmail.com \
--cc=alistair.francis@wdc.com \
--cc=david@gibson.dropbear.id.au \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.