[PATCH v2 5/9] hw/riscv/virt.c: use s->memmap in create_fdt() path

Daniel Henrique Barboza posted 9 patches 6 months, 2 weeks ago
Maintainers: Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Weiwei Li <liwei1518@gmail.com>, Daniel Henrique Barboza <dbarboza@ventanamicro.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
[PATCH v2 5/9] hw/riscv/virt.c: use s->memmap in create_fdt() path
Posted by Daniel Henrique Barboza 6 months, 2 weeks ago
create_fdt(), create_fdt_flash() and create_fdt_fw_cfg() can access the
memmap via their RISCVVirtState pointers.

Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
---
 hw/riscv/virt.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
index 37f8abdd1c..5f31c95955 100644
--- a/hw/riscv/virt.c
+++ b/hw/riscv/virt.c
@@ -995,7 +995,7 @@ static void create_fdt_rtc(RISCVVirtState *s, const MemMapEntry *memmap,
     }
 }
 
-static void create_fdt_flash(RISCVVirtState *s, const MemMapEntry *memmap)
+static void create_fdt_flash(RISCVVirtState *s)
 {
     MachineState *ms = MACHINE(s);
     hwaddr flashsize = s->memmap[VIRT_FLASH].size / 2;
@@ -1010,11 +1010,11 @@ static void create_fdt_flash(RISCVVirtState *s, const MemMapEntry *memmap)
     qemu_fdt_setprop_cell(ms->fdt, name, "bank-width", 4);
 }
 
-static void create_fdt_fw_cfg(RISCVVirtState *s, const MemMapEntry *memmap)
+static void create_fdt_fw_cfg(RISCVVirtState *s)
 {
     MachineState *ms = MACHINE(s);
-    hwaddr base = memmap[VIRT_FW_CFG].base;
-    hwaddr size = memmap[VIRT_FW_CFG].size;
+    hwaddr base = s->memmap[VIRT_FW_CFG].base;
+    hwaddr size = s->memmap[VIRT_FW_CFG].size;
     g_autofree char *nodename = g_strdup_printf("/fw-cfg@%" PRIx64, base);
 
     qemu_fdt_add_subnode(ms->fdt, nodename);
@@ -1145,7 +1145,7 @@ static void finalize_fdt(RISCVVirtState *s)
     create_fdt_rtc(s, s->memmap, irq_mmio_phandle);
 }
 
-static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap)
+static void create_fdt(RISCVVirtState *s)
 {
     MachineState *ms = MACHINE(s);
     uint8_t rng_seed[32];
@@ -1172,7 +1172,8 @@ static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap)
      * 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);
+    name = g_strdup_printf("/soc/pci@%lx",
+                           (long) s->memmap[VIRT_PCIE_ECAM].base);
     qemu_fdt_add_subnode(ms->fdt, name);
 
     qemu_fdt_add_subnode(ms->fdt, "/chosen");
@@ -1184,8 +1185,8 @@ static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap)
 
     qemu_fdt_add_subnode(ms->fdt, "/aliases");
 
-    create_fdt_flash(s, memmap);
-    create_fdt_fw_cfg(s, memmap);
+    create_fdt_flash(s);
+    create_fdt_fw_cfg(s);
     create_fdt_pmu(s);
 }
 
@@ -1719,7 +1720,7 @@ static void virt_machine_init(MachineState *machine)
             exit(1);
         }
     } else {
-        create_fdt(s, s->memmap);
+        create_fdt(s);
     }
 
     if (virt_is_iommu_sys_enabled(s)) {
-- 
2.49.0
Re: [PATCH v2 5/9] hw/riscv/virt.c: use s->memmap in create_fdt() path
Posted by Alistair Francis 6 months, 2 weeks ago
On Tue, Apr 29, 2025 at 11:01 PM Daniel Henrique Barboza
<dbarboza@ventanamicro.com> wrote:
>
> create_fdt(), create_fdt_flash() and create_fdt_fw_cfg() can access the
> memmap via their RISCVVirtState pointers.
>
> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>

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

Alistair

> ---
>  hw/riscv/virt.c | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> index 37f8abdd1c..5f31c95955 100644
> --- a/hw/riscv/virt.c
> +++ b/hw/riscv/virt.c
> @@ -995,7 +995,7 @@ static void create_fdt_rtc(RISCVVirtState *s, const MemMapEntry *memmap,
>      }
>  }
>
> -static void create_fdt_flash(RISCVVirtState *s, const MemMapEntry *memmap)
> +static void create_fdt_flash(RISCVVirtState *s)
>  {
>      MachineState *ms = MACHINE(s);
>      hwaddr flashsize = s->memmap[VIRT_FLASH].size / 2;
> @@ -1010,11 +1010,11 @@ static void create_fdt_flash(RISCVVirtState *s, const MemMapEntry *memmap)
>      qemu_fdt_setprop_cell(ms->fdt, name, "bank-width", 4);
>  }
>
> -static void create_fdt_fw_cfg(RISCVVirtState *s, const MemMapEntry *memmap)
> +static void create_fdt_fw_cfg(RISCVVirtState *s)
>  {
>      MachineState *ms = MACHINE(s);
> -    hwaddr base = memmap[VIRT_FW_CFG].base;
> -    hwaddr size = memmap[VIRT_FW_CFG].size;
> +    hwaddr base = s->memmap[VIRT_FW_CFG].base;
> +    hwaddr size = s->memmap[VIRT_FW_CFG].size;
>      g_autofree char *nodename = g_strdup_printf("/fw-cfg@%" PRIx64, base);
>
>      qemu_fdt_add_subnode(ms->fdt, nodename);
> @@ -1145,7 +1145,7 @@ static void finalize_fdt(RISCVVirtState *s)
>      create_fdt_rtc(s, s->memmap, irq_mmio_phandle);
>  }
>
> -static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap)
> +static void create_fdt(RISCVVirtState *s)
>  {
>      MachineState *ms = MACHINE(s);
>      uint8_t rng_seed[32];
> @@ -1172,7 +1172,8 @@ static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap)
>       * 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);
> +    name = g_strdup_printf("/soc/pci@%lx",
> +                           (long) s->memmap[VIRT_PCIE_ECAM].base);
>      qemu_fdt_add_subnode(ms->fdt, name);
>
>      qemu_fdt_add_subnode(ms->fdt, "/chosen");
> @@ -1184,8 +1185,8 @@ static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap)
>
>      qemu_fdt_add_subnode(ms->fdt, "/aliases");
>
> -    create_fdt_flash(s, memmap);
> -    create_fdt_fw_cfg(s, memmap);
> +    create_fdt_flash(s);
> +    create_fdt_fw_cfg(s);
>      create_fdt_pmu(s);
>  }
>
> @@ -1719,7 +1720,7 @@ static void virt_machine_init(MachineState *machine)
>              exit(1);
>          }
>      } else {
> -        create_fdt(s, s->memmap);
> +        create_fdt(s);
>      }
>
>      if (virt_is_iommu_sys_enabled(s)) {
> --
> 2.49.0
>
>