The devicetree specification requires that nodes use a generic name
where appropriate. Fix the corresponding dt-validate warnings:
pl061@9030000: $nodename:0: 'pl061@9030000' does not match '^gpio@[0-9a-f]+$'
From schema: linux/Documentation/devicetree/bindings/gpio/pl061-gpio.yaml
pl031@9010000: $nodename:0: 'pl031@9010000' does not match '^rtc(@.*|-[0-9a-f])*$'
From schema: linux/Documentation/devicetree/bindings/rtc/arm,pl031.yaml
pl011@9000000: $nodename:0: 'pl011@9000000' does not match '^serial(@.*)?$'
From schema: linux/Documentation/devicetree/bindings/serial/pl011.yaml
intc@8000000: $nodename:0: 'intc@8000000' does not match '^interrupt-controller(@[0-9a-f,]+)*$'
From schema: linux/Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.yaml
intc@8000000: 'its@8080000' does not match any of the regexes: '^(msi-controller|gic-its|interrupt-controller)@[0-9a-f]+$', '^gic-its@', '^interrupt-controller@[0-9a-f]+$', 'pinctrl-[0-9]+'
From schema: linux/Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.yaml
smmuv3@9050000: $nodename:0: 'smmuv3@9050000' does not match '^iommu@[0-9a-f]*'
From schema: linux/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
---
hw/arm/virt.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 5e16d54bbb..c1e384e06f 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -481,7 +481,7 @@ static void fdt_add_its_gic_node(VirtMachineState *vms)
MachineState *ms = MACHINE(vms);
vms->msi_phandle = qemu_fdt_alloc_phandle(ms->fdt);
- nodename = g_strdup_printf("/intc/its@%" PRIx64,
+ nodename = g_strdup_printf("/interrupt-controller/msi-controller@%" PRIx64,
vms->memmap[VIRT_GIC_ITS].base);
qemu_fdt_add_subnode(ms->fdt, nodename);
qemu_fdt_setprop_string(ms->fdt, nodename, "compatible",
@@ -500,7 +500,7 @@ static void fdt_add_v2m_gic_node(VirtMachineState *vms)
MachineState *ms = MACHINE(vms);
char *nodename;
- nodename = g_strdup_printf("/intc/v2m@%" PRIx64,
+ nodename = g_strdup_printf("/interrupt-controller/v2m@%" PRIx64,
vms->memmap[VIRT_GIC_V2M].base);
vms->msi_phandle = qemu_fdt_alloc_phandle(ms->fdt);
qemu_fdt_add_subnode(ms->fdt, nodename);
@@ -522,7 +522,7 @@ static void fdt_add_gic_node(VirtMachineState *vms)
vms->gic_phandle = qemu_fdt_alloc_phandle(ms->fdt);
qemu_fdt_setprop_cell(ms->fdt, "/", "interrupt-parent", vms->gic_phandle);
- nodename = g_strdup_printf("/intc@%" PRIx64,
+ nodename = g_strdup_printf("/interrupt-controller@%" PRIx64,
vms->memmap[VIRT_GIC_DIST].base);
qemu_fdt_add_subnode(ms->fdt, nodename);
qemu_fdt_setprop_cell(ms->fdt, nodename, "#interrupt-cells", 3);
@@ -857,7 +857,7 @@ static void create_uart(const VirtMachineState *vms, int uart,
sysbus_mmio_get_region(s, 0));
sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq));
- nodename = g_strdup_printf("/pl011@%" PRIx64, base);
+ nodename = g_strdup_printf("/serial@%" PRIx64, base);
qemu_fdt_add_subnode(ms->fdt, nodename);
/* Note that we can't use setprop_string because of the embedded NUL */
qemu_fdt_setprop(ms->fdt, nodename, "compatible",
@@ -897,7 +897,7 @@ static void create_rtc(const VirtMachineState *vms)
sysbus_create_simple("pl031", base, qdev_get_gpio_in(vms->gic, irq));
- nodename = g_strdup_printf("/pl031@%" PRIx64, base);
+ nodename = g_strdup_printf("/rtc@%" PRIx64, base);
qemu_fdt_add_subnode(ms->fdt, nodename);
qemu_fdt_setprop(ms->fdt, nodename, "compatible", compat, sizeof(compat));
qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg",
@@ -999,7 +999,7 @@ static void create_gpio_devices(const VirtMachineState *vms, int gpio,
sysbus_connect_irq(s, 0, qdev_get_gpio_in(vms->gic, irq));
uint32_t phandle = qemu_fdt_alloc_phandle(ms->fdt);
- nodename = g_strdup_printf("/pl061@%" PRIx64, base);
+ nodename = g_strdup_printf("/gpio@%" PRIx64, base);
qemu_fdt_add_subnode(ms->fdt, nodename);
qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg",
2, base, 2, size);
@@ -1348,7 +1348,7 @@ static void create_smmu(const VirtMachineState *vms,
qdev_get_gpio_in(vms->gic, irq + i));
}
- node = g_strdup_printf("/smmuv3@%" PRIx64, base);
+ node = g_strdup_printf("/iommu@%" PRIx64, base);
qemu_fdt_add_subnode(ms->fdt, node);
qemu_fdt_setprop(ms->fdt, node, "compatible", compat, sizeof(compat));
qemu_fdt_setprop_sized_cells(ms->fdt, node, "reg", 2, base, 2, size);
@@ -1653,7 +1653,7 @@ void virt_machine_done(Notifier *notifier, void *data)
* while qemu takes charge of the qom stuff.
*/
if (info->dtb_filename == NULL) {
- platform_bus_add_all_fdt_nodes(ms->fdt, "/intc",
+ platform_bus_add_all_fdt_nodes(ms->fdt, "/interrupt-controller",
vms->memmap[VIRT_PLATFORM_BUS].base,
vms->memmap[VIRT_PLATFORM_BUS].size,
vms->irqmap[VIRT_PLATFORM_BUS]);
--
2.37.3
On Tue, 27 Sept 2022 at 11:12, Jean-Philippe Brucker <jean-philippe@linaro.org> wrote: > > The devicetree specification requires that nodes use a generic name > where appropriate. Fix the corresponding dt-validate warnings: Either: (1) guests are looking for devices in the DT by node name. In that case we can't change the node names without breaking them Or: (2) guest look for nodes by compatibility, in which case why do we care what the exact format of the node name is? thanks -- PMM
On Tue, Sep 27, 2022 at 6:28 AM Peter Maydell <peter.maydell@linaro.org> wrote: > > On Tue, 27 Sept 2022 at 11:12, Jean-Philippe Brucker > <jean-philippe@linaro.org> wrote: > > > > The devicetree specification requires that nodes use a generic name > > where appropriate. Fix the corresponding dt-validate warnings: > > Either: > (1) guests are looking for devices in the DT by node name. In that > case we can't change the node names without breaking them Using node names is generally wrong unless the node name to use is defined and that's the only way to identify them (e.g. /chosen). > Or: > (2) guest look for nodes by compatibility, in which case why > do we care what the exact format of the node name is? The spec[1] has defined standard class node names going back to 2008. That covered all the names here except for 'iommu' and those names date back to the 1990s. Obviously, there has been no checking of them or many things for a long time, but now we can check much more than reviews ever could we have a huge technical debt. The main reason on care on these is just consistency. Rob [1] https://elinux.org/images/c/cf/Power_ePAPR_APPROVED_v1.1.pdf
© 2016 - 2026 Red Hat, Inc.