[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 8/8] hw/riscv: virt: Fix interrupt parent for dynamic plat
From: |
Alistair Francis |
Subject: |
Re: [PATCH v2 8/8] hw/riscv: virt: Fix interrupt parent for dynamic platform devices |
Date: |
Tue, 24 May 2022 07:38:46 +1000 |
On Thu, May 12, 2022 at 12:53 AM Anup Patel <apatel@ventanamicro.com> wrote:
>
> When both APLIC and IMSIC are present in virt machine, the APLIC should
> be used as parent interrupt controller for dynamic platform devices.
>
> In case of multiple sockets, we should prefer interrupt controller of
> socket0 for dynamic platform devices.
>
> Fixes: 3029fab64309 ("hw/riscv: virt: Add support for generating
> platform FDT entries")
> Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> hw/riscv/virt.c | 25 ++++++++++++-------------
> 1 file changed, 12 insertions(+), 13 deletions(-)
>
> diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> index 3326f4db96..c576173815 100644
> --- a/hw/riscv/virt.c
> +++ b/hw/riscv/virt.c
> @@ -478,10 +478,12 @@ static void create_fdt_socket_plic(RISCVVirtState *s,
> qemu_fdt_setprop_cell(mc->fdt, plic_name, "phandle",
> plic_phandles[socket]);
>
> - platform_bus_add_all_fdt_nodes(mc->fdt, plic_name,
> - memmap[VIRT_PLATFORM_BUS].base,
> - memmap[VIRT_PLATFORM_BUS].size,
> - VIRT_PLATFORM_BUS_IRQ);
> + if (!socket) {
> + platform_bus_add_all_fdt_nodes(mc->fdt, plic_name,
> + memmap[VIRT_PLATFORM_BUS].base,
> + memmap[VIRT_PLATFORM_BUS].size,
> + VIRT_PLATFORM_BUS_IRQ);
> + }
>
> g_free(plic_name);
>
> @@ -561,11 +563,6 @@ static void create_fdt_imsic(RISCVVirtState *s, const
> MemMapEntry *memmap,
> }
> qemu_fdt_setprop_cell(mc->fdt, imsic_name, "phandle", *msi_m_phandle);
>
> - platform_bus_add_all_fdt_nodes(mc->fdt, imsic_name,
> - memmap[VIRT_PLATFORM_BUS].base,
> - memmap[VIRT_PLATFORM_BUS].size,
> - VIRT_PLATFORM_BUS_IRQ);
> -
> g_free(imsic_name);
>
> /* S-level IMSIC node */
> @@ -704,10 +701,12 @@ static void create_fdt_socket_aplic(RISCVVirtState *s,
> riscv_socket_fdt_write_id(mc, mc->fdt, aplic_name, socket);
> qemu_fdt_setprop_cell(mc->fdt, aplic_name, "phandle", aplic_s_phandle);
>
> - platform_bus_add_all_fdt_nodes(mc->fdt, aplic_name,
> - memmap[VIRT_PLATFORM_BUS].base,
> - memmap[VIRT_PLATFORM_BUS].size,
> - VIRT_PLATFORM_BUS_IRQ);
> + if (!socket) {
> + platform_bus_add_all_fdt_nodes(mc->fdt, aplic_name,
> + memmap[VIRT_PLATFORM_BUS].base,
> + memmap[VIRT_PLATFORM_BUS].size,
> + VIRT_PLATFORM_BUS_IRQ);
> + }
>
> g_free(aplic_name);
>
> --
> 2.34.1
>
>
- Re: [PATCH v2 5/8] target/riscv: Don't force update priv spec version to latest, (continued)
[PATCH v2 8/8] hw/riscv: virt: Fix interrupt parent for dynamic platform devices, Anup Patel, 2022/05/11
- Re: [PATCH v2 8/8] hw/riscv: virt: Fix interrupt parent for dynamic platform devices,
Alistair Francis <=
Re: [PATCH v2 0/8] QEMU RISC-V nested virtualization fixes, Alistair Francis, 2022/05/24