Message ID | 20220824155113.286730-4-jean-philippe@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/arm/virt: Fix dt-schema warnings | expand |
On Wed, 24 Aug 2022 at 16:51, Jean-Philippe Brucker <jean-philippe@linaro.org> wrote: > > Fix three dt-validate warnings about the GIC node due to invalid names > and missing property: > > intc@8000000: $nodename:0: 'intc@8000000' does not match '^interrupt-controller(@[0-9a-f,]+)*$' > 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]+' > > interrupt-controller@8000000: msi-controller@8080000: '#msi-cells' is a required property > From schema: linux/Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.yaml Why is dt-validate complaining about the node names? Surely anything looking for the ITS in the DT should be looking for it by the "compatible" string ? thanks -- PMM
On Wed, Aug 24, 2022 at 08:36:33PM +0100, Peter Maydell wrote: > On Wed, 24 Aug 2022 at 16:51, Jean-Philippe Brucker > <jean-philippe@linaro.org> wrote: > > > > Fix three dt-validate warnings about the GIC node due to invalid names > > and missing property: > > > > intc@8000000: $nodename:0: 'intc@8000000' does not match '^interrupt-controller(@[0-9a-f,]+)*$' > > 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]+' > > > > interrupt-controller@8000000: msi-controller@8080000: '#msi-cells' is a required property > > From schema: linux/Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.yaml > > Why is dt-validate complaining about the node names? Surely > anything looking for the ITS in the DT should be looking for > it by the "compatible" string ? The device-tree specification, in 2.2.2 Generic Name Recommendation [1], provides the node names. Given that the guest will look at compatible strings, changing the name is safe. Thanks, Jean [1] http://devicetree-org.github.io/devicetree-specification/index.html#generic-names-recommendation
diff --git a/hw/arm/virt.c b/hw/arm/virt.c index abcf2716bc..b6aa311d8c 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -481,12 +481,13 @@ 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", "arm,gic-v3-its"); qemu_fdt_setprop(ms->fdt, nodename, "msi-controller", NULL, 0); + qemu_fdt_setprop_cell(ms->fdt, nodename, "#msi-cells", 1); qemu_fdt_setprop_sized_cells(ms->fdt, nodename, "reg", 2, vms->memmap[VIRT_GIC_ITS].base, 2, vms->memmap[VIRT_GIC_ITS].size); @@ -499,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); @@ -521,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); @@ -1651,7 +1652,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]);
Fix three dt-validate warnings about the GIC node due to invalid names and missing property: intc@8000000: $nodename:0: 'intc@8000000' does not match '^interrupt-controller(@[0-9a-f,]+)*$' 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]+' interrupt-controller@8000000: msi-controller@8080000: '#msi-cells' is a required property From schema: linux/Documentation/devicetree/bindings/interrupt-controller/arm,gic-v3.yaml Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> --- hw/arm/virt.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)