From: Conor Dooley <conor.doo...@microchip.com> On a dtb dumped from the virt machine, dt-validate complains: soc: pmu: {'riscv,event-to-mhpmcounters': [[1, 1, 524281], [2, 2, 524284], [65561, 65561, 524280], [65563, 65563, 524280], [65569, 65569, 524280]], 'compatible': ['riscv,pmu']} should not be valid under {'type': 'object'} from schema $id: http://devicetree.org/schemas/simple-bus.yaml# That's pretty cryptic, but running the dtb back through dtc produces something a lot more reasonable: Warning (simple_bus_reg): /soc/pmu: missing or empty reg/ranges property
Moving the riscv,pmu node out of the soc bus solves the problem. Signed-off-by: Conor Dooley <conor.doo...@microchip.com> Acked-by: Alistair Francis <alistair.fran...@wdc.com> Reviewed-by: Daniel Henrique Barboza <dbarb...@ventanamicro.com> Message-ID: <20230727-groom-decline-2c57ce42841c@spud> Signed-off-by: Alistair Francis <alistair.fran...@wdc.com> (cherry picked from commit 9ff31406312500053ecb5f92df01dd9ce52e635d) Signed-off-by: Michael Tokarev <m...@tls.msk.ru> (Mjt: context adjustment due to 568e0614d09 "hw/riscv/virt.c: rename MachineState 'mc' pointers to 'ms'") diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index a5bc7353b4..3a99b4b801 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -715,7 +715,7 @@ static void create_fdt_pmu(RISCVVirtState *s) MachineState *mc = MACHINE(s); RISCVCPU hart = s->soc[0].harts[0]; - pmu_name = g_strdup_printf("/soc/pmu"); + pmu_name = g_strdup_printf("/pmu"); qemu_fdt_add_subnode(mc->fdt, pmu_name); qemu_fdt_setprop_string(mc->fdt, pmu_name, "compatible", "riscv,pmu"); riscv_pmu_generate_fdt_node(mc->fdt, hart.cfg.pmu_num, pmu_name); -- 2.39.2