[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-7.2 08/10] device_node.c: enable 'info fdt' to print subnodes
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH for-7.2 08/10] device_node.c: enable 'info fdt' to print subnodes |
Date: |
Fri, 22 Jul 2022 17:00:05 -0300 |
Printing subnodes of a given node will allow us to show a whole subtree,
which the additional perk of 'info fdt /' being able to print the whole
FDT.
Since we're now printing more than one subnode, change 'fdt_info' to
print the full path of the first node. This small tweak helps
identifying which node or subnode are being displayed.
To demostrate this capability without printing the whole FDT, the
'/cpus/cpu-map' node from the ARM 'virt' machine has a lot of subnodes:
(qemu) info fdt /cpus/cpu-map
/cpus/cpu-map {
socket0 {
cluster0 {
core0 {
cpu = <0x8001>
}
}
}
}
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
softmmu/device_tree.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c
index 3a4d09483b..88b6a0c902 100644
--- a/softmmu/device_tree.c
+++ b/softmmu/device_tree.c
@@ -721,16 +721,24 @@ static void fdt_prop_print_val(const char *propname,
const void *data,
qemu_printf("]\n");
}
-static void fdt_print_node(int node, int depth)
+static void fdt_print_node(int node, int depth, const char *fullpath)
{
const struct fdt_property *prop = NULL;
+ const char *nodename = NULL;
const char *propname = NULL;
void *fdt = current_machine->fdt;
int padding = depth * 4;
int property = 0;
+ int parent = node;
int prop_size;
- qemu_printf("%*s%s {\n", padding, "", fdt_get_name(fdt, node, NULL));
+ if (fullpath != NULL) {
+ nodename = fullpath;
+ } else {
+ nodename = fdt_get_name(fdt, node, NULL);
+ }
+
+ qemu_printf("%*s%s {\n", padding, "", nodename);
padding += 4;
@@ -754,6 +762,10 @@ static void fdt_print_node(int node, int depth)
}
}
+ fdt_for_each_subnode(node, fdt, parent) {
+ fdt_print_node(node, depth + 1, NULL);
+ }
+
padding -= 4;
qemu_printf("%*s}\n", padding, "");
}
@@ -773,5 +785,5 @@ void fdt_info(const char *fullpath, Error **errp)
return;
}
- fdt_print_node(node, 0);
+ fdt_print_node(node, 0, fullpath);
}
--
2.36.1
- [PATCH for-7.2 04/10] hmp, device_tree.c: introduce fdt-save, (continued)
- [PATCH for-7.2 04/10] hmp, device_tree.c: introduce fdt-save, Daniel Henrique Barboza, 2022/07/22
- [PATCH for-7.2 05/10] hmp, device_tree.c: introduce 'info fdt' command, Daniel Henrique Barboza, 2022/07/22
- [PATCH for-7.2 06/10] device_tree.c: support printing of strings props, Daniel Henrique Barboza, 2022/07/22
- [PATCH for-7.2 07/10] device_tree.c: support remaining FDT prop types, Daniel Henrique Barboza, 2022/07/22
- [PATCH for-7.2 09/10] device_tree.c: add fdt_print_property() helper, Daniel Henrique Barboza, 2022/07/22
- [PATCH for-7.2 10/10] hmp, device_tree.c: add 'info fdt <property>' support, Daniel Henrique Barboza, 2022/07/22
- [PATCH for-7.2 08/10] device_node.c: enable 'info fdt' to print subnodes,
Daniel Henrique Barboza <=
- Re: [PATCH for-7.2 00/10] add hmp 'save-fdt' and 'info fdt' commands, BALATON Zoltan, 2022/07/22
- Re: [PATCH for-7.2 00/10] add hmp 'save-fdt' and 'info fdt' commands, Daniel P . Berrangé, 2022/07/25