qemu-riscv
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 3/6] hw/riscv/virt.c: create '/soc/pci@...' fdt node earlier


From: Alistair Francis
Subject: Re: [PATCH 3/6] hw/riscv/virt.c: create '/soc/pci@...' fdt node earlier
Date: Thu, 15 Feb 2024 15:08:36 +1000

On Wed, Feb 14, 2024 at 5:19 AM Daniel Henrique Barboza
<dbarboza@ventanamicro.com> wrote:
>
> Hotplugged FDT nodes will attempt to write this node that, at this
> moment, is being created only in create_fdt_pcie() during
> finalize_fdt().
>
> Create it earlier.
>
> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  hw/riscv/virt.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> index fd35c74781..b540f4d3da 100644
> --- a/hw/riscv/virt.c
> +++ b/hw/riscv/virt.c
> @@ -826,7 +826,6 @@ static void create_fdt_pcie(RISCVVirtState *s, const 
> MemMapEntry *memmap,
>
>      name = g_strdup_printf("/soc/pci@%lx",
>          (long) memmap[VIRT_PCIE_ECAM].base);
> -    qemu_fdt_add_subnode(ms->fdt, name);
>      qemu_fdt_setprop_cell(ms->fdt, name, "#address-cells",
>          FDT_PCI_ADDR_CELLS);
>      qemu_fdt_setprop_cell(ms->fdt, name, "#interrupt-cells",
> @@ -996,6 +995,7 @@ static void create_fdt(RISCVVirtState *s, const 
> MemMapEntry *memmap)
>  {
>      MachineState *ms = MACHINE(s);
>      uint8_t rng_seed[32];
> +    g_autofree char *name = NULL;
>
>      ms->fdt = create_device_tree(&s->fdt_size);
>      if (!ms->fdt) {
> @@ -1014,6 +1014,13 @@ static void create_fdt(RISCVVirtState *s, const 
> MemMapEntry *memmap)
>      qemu_fdt_setprop_cell(ms->fdt, "/soc", "#size-cells", 0x2);
>      qemu_fdt_setprop_cell(ms->fdt, "/soc", "#address-cells", 0x2);
>
> +    /*
> +     * The "/soc/pci@..." node is needed for PCIE hotplugs
> +     * that might happen before finalize_fdt().
> +     */
> +    name = g_strdup_printf("/soc/pci@%lx", (long) 
> memmap[VIRT_PCIE_ECAM].base);
> +    qemu_fdt_add_subnode(ms->fdt, name);
> +
>      qemu_fdt_add_subnode(ms->fdt, "/chosen");
>
>      /* Pass seed to RNG */
> --
> 2.43.0
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]