@samitouri / QOSamiQemu / commits / 64d98e0797

hw/riscv/sifive_u.c: use intc_phandle in plic creation

The info about intc_phandles for each CPU is already stored in the intc_phandles array. We don't need to fetch them again using qemu_fdt_get_phandle(). Signed-off-by: Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20260616235939.1358663-3-daniel.barboza@oss.qualcomm.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>

Daniel Henrique Barboza committed Jun 16, 2026 at 20:59 UTC 64d98e0797c821da99894517215539dea2ade7cd
1 file changed +3 -7
hw/riscv/sifive_u.c
+3 -7
@@ -199,20 +199,16 @@ static void create_fdt(SiFiveUState *s, const MemMapEntry *memmap,
199 plic_phandle = phandle++;
200 cells = g_new0(uint32_t, ms->smp.cpus * 4 - 2);
201 for (cpu = 0; cpu < ms->smp.cpus; cpu++) {
202 - nodename =
203 - g_strdup_printf("/cpus/cpu@%d/interrupt-controller", cpu);
204 - uint32_t intc_phandle = qemu_fdt_get_phandle(fdt, nodename);
202 /* cpu 0 is the management hart that does not have S-mode */
203 if (cpu == 0) {
207 - cells[0] = cpu_to_be32(intc_phandle);
204 + cells[0] = cpu_to_be32(intc_phandles[cpu]);
205 cells[1] = cpu_to_be32(IRQ_M_EXT);
206 } else {
210 - cells[cpu * 4 - 2] = cpu_to_be32(intc_phandle);
207 + cells[cpu * 4 - 2] = cpu_to_be32(intc_phandles[cpu]);
208 cells[cpu * 4 - 1] = cpu_to_be32(IRQ_M_EXT);
212 - cells[cpu * 4 + 0] = cpu_to_be32(intc_phandle);
209 + cells[cpu * 4 + 0] = cpu_to_be32(intc_phandles[cpu]);
210 cells[cpu * 4 + 1] = cpu_to_be32(IRQ_S_EXT);
211 }
215 - g_free(nodename);
212 }
213 nodename = g_strdup_printf("/soc/interrupt-controller@%lx",
214 (long)memmap[SIFIVE_U_DEV_PLIC].base);