[PATCH v2 2/9] hw/riscv/virt.c: remove trivial virt_memmap references

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 2/9] hw/riscv/virt.c: remove trivial virt_memmap references
Posted by Daniel Henrique Barboza 6 months, 2 weeks ago
We should use s->memmap instead of virt_memmap to be able to use an
updated memmap when we start versioning the board.

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

diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
index bcf0ddd6c6..b4a6916abb 100644
--- a/hw/riscv/virt.c
+++ b/hw/riscv/virt.c
@@ -166,8 +166,8 @@ static void virt_flash_map1(PFlashCFI01 *flash,
 static void virt_flash_map(RISCVVirtState *s,
                            MemoryRegion *sysmem)
 {
-    hwaddr flashsize = virt_memmap[VIRT_FLASH].size / 2;
-    hwaddr flashbase = virt_memmap[VIRT_FLASH].base;
+    hwaddr flashsize = s->memmap[VIRT_FLASH].size / 2;
+    hwaddr flashbase = s->memmap[VIRT_FLASH].base;
 
     virt_flash_map1(s->flash[0], flashbase, flashsize,
                     sysmem);
@@ -998,8 +998,8 @@ static void create_fdt_rtc(RISCVVirtState *s, const MemMapEntry *memmap,
 static void create_fdt_flash(RISCVVirtState *s, const MemMapEntry *memmap)
 {
     MachineState *ms = MACHINE(s);
-    hwaddr flashsize = virt_memmap[VIRT_FLASH].size / 2;
-    hwaddr flashbase = virt_memmap[VIRT_FLASH].base;
+    hwaddr flashsize = s->memmap[VIRT_FLASH].size / 2;
+    hwaddr flashbase = s->memmap[VIRT_FLASH].base;
     g_autofree char *name = g_strdup_printf("/flash@%" PRIx64, flashbase);
 
     qemu_fdt_add_subnode(ms->fdt, name);
@@ -1034,7 +1034,7 @@ static void create_fdt_virtio_iommu(RISCVVirtState *s, uint16_t bdf)
     g_autofree char *pci_node = NULL;
 
     pci_node = g_strdup_printf("/soc/pci@%lx",
-                               (long) virt_memmap[VIRT_PCIE_ECAM].base);
+                               (long) s->memmap[VIRT_PCIE_ECAM].base);
     iommu_node = g_strdup_printf("%s/virtio_iommu@%x,%x", pci_node,
                                  PCI_SLOT(bdf), PCI_FUNC(bdf));
     iommu_phandle = qemu_fdt_alloc_phandle(fdt);
@@ -1103,7 +1103,7 @@ static void create_fdt_iommu(RISCVVirtState *s, uint16_t bdf)
     g_autofree char *pci_node = NULL;
 
     pci_node = g_strdup_printf("/soc/pci@%lx",
-                               (long) virt_memmap[VIRT_PCIE_ECAM].base);
+                               (long) s->memmap[VIRT_PCIE_ECAM].base);
     iommu_node = g_strdup_printf("%s/iommu@%x", pci_node, bdf);
     iommu_phandle = qemu_fdt_alloc_phandle(fdt);
     qemu_fdt_add_subnode(fdt, iommu_node);
@@ -1125,24 +1125,24 @@ static void finalize_fdt(RISCVVirtState *s)
     uint32_t irq_pcie_phandle = 1, irq_virtio_phandle = 1;
     uint32_t iommu_sys_phandle = 1;
 
-    create_fdt_sockets(s, virt_memmap, &phandle, &irq_mmio_phandle,
+    create_fdt_sockets(s, s->memmap, &phandle, &irq_mmio_phandle,
                        &irq_pcie_phandle, &irq_virtio_phandle,
                        &msi_pcie_phandle);
 
-    create_fdt_virtio(s, virt_memmap, irq_virtio_phandle);
+    create_fdt_virtio(s, s->memmap, irq_virtio_phandle);
 
     if (virt_is_iommu_sys_enabled(s)) {
         create_fdt_iommu_sys(s, irq_mmio_phandle, msi_pcie_phandle,
                              &iommu_sys_phandle);
     }
-    create_fdt_pcie(s, virt_memmap, irq_pcie_phandle, msi_pcie_phandle,
+    create_fdt_pcie(s, s->memmap, irq_pcie_phandle, msi_pcie_phandle,
                     iommu_sys_phandle);
 
-    create_fdt_reset(s, virt_memmap, &phandle);
+    create_fdt_reset(s, s->memmap, &phandle);
 
-    create_fdt_uart(s, virt_memmap, irq_mmio_phandle);
+    create_fdt_uart(s, s->memmap, irq_mmio_phandle);
 
-    create_fdt_rtc(s, virt_memmap, irq_mmio_phandle);
+    create_fdt_rtc(s, s->memmap, irq_mmio_phandle);
 }
 
 static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap)
@@ -1365,14 +1365,13 @@ static void create_platform_bus(RISCVVirtState *s, DeviceState *irqchip)
 {
     DeviceState *dev;
     SysBusDevice *sysbus;
-    const MemMapEntry *memmap = virt_memmap;
     int i;
     MemoryRegion *sysmem = get_system_memory();
 
     dev = qdev_new(TYPE_PLATFORM_BUS_DEVICE);
     dev->id = g_strdup(TYPE_PLATFORM_BUS_DEVICE);
     qdev_prop_set_uint32(dev, "num_irqs", VIRT_PLATFORM_BUS_NUM_IRQS);
-    qdev_prop_set_uint32(dev, "mmio_size", memmap[VIRT_PLATFORM_BUS].size);
+    qdev_prop_set_uint32(dev, "mmio_size", s->memmap[VIRT_PLATFORM_BUS].size);
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
     s->platform_bus_dev = dev;
 
@@ -1383,7 +1382,7 @@ static void create_platform_bus(RISCVVirtState *s, DeviceState *irqchip)
     }
 
     memory_region_add_subregion(sysmem,
-                                memmap[VIRT_PLATFORM_BUS].base,
+                                s->memmap[VIRT_PLATFORM_BUS].base,
                                 sysbus_mmio_get_region(sysbus, 0));
 }
 
-- 
2.49.0
Re: [PATCH v2 2/9] hw/riscv/virt.c: remove trivial virt_memmap references
Posted by Alistair Francis 6 months, 2 weeks ago
On Tue, Apr 29, 2025 at 10:59 PM Daniel Henrique Barboza
<dbarboza@ventanamicro.com> wrote:
>
> We should use s->memmap instead of virt_memmap to be able to use an
> updated memmap when we start versioning the board.
>
> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>

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

Alistair

> ---
>  hw/riscv/virt.c | 29 ++++++++++++++---------------
>  1 file changed, 14 insertions(+), 15 deletions(-)
>
> diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
> index bcf0ddd6c6..b4a6916abb 100644
> --- a/hw/riscv/virt.c
> +++ b/hw/riscv/virt.c
> @@ -166,8 +166,8 @@ static void virt_flash_map1(PFlashCFI01 *flash,
>  static void virt_flash_map(RISCVVirtState *s,
>                             MemoryRegion *sysmem)
>  {
> -    hwaddr flashsize = virt_memmap[VIRT_FLASH].size / 2;
> -    hwaddr flashbase = virt_memmap[VIRT_FLASH].base;
> +    hwaddr flashsize = s->memmap[VIRT_FLASH].size / 2;
> +    hwaddr flashbase = s->memmap[VIRT_FLASH].base;
>
>      virt_flash_map1(s->flash[0], flashbase, flashsize,
>                      sysmem);
> @@ -998,8 +998,8 @@ static void create_fdt_rtc(RISCVVirtState *s, const MemMapEntry *memmap,
>  static void create_fdt_flash(RISCVVirtState *s, const MemMapEntry *memmap)
>  {
>      MachineState *ms = MACHINE(s);
> -    hwaddr flashsize = virt_memmap[VIRT_FLASH].size / 2;
> -    hwaddr flashbase = virt_memmap[VIRT_FLASH].base;
> +    hwaddr flashsize = s->memmap[VIRT_FLASH].size / 2;
> +    hwaddr flashbase = s->memmap[VIRT_FLASH].base;
>      g_autofree char *name = g_strdup_printf("/flash@%" PRIx64, flashbase);
>
>      qemu_fdt_add_subnode(ms->fdt, name);
> @@ -1034,7 +1034,7 @@ static void create_fdt_virtio_iommu(RISCVVirtState *s, uint16_t bdf)
>      g_autofree char *pci_node = NULL;
>
>      pci_node = g_strdup_printf("/soc/pci@%lx",
> -                               (long) virt_memmap[VIRT_PCIE_ECAM].base);
> +                               (long) s->memmap[VIRT_PCIE_ECAM].base);
>      iommu_node = g_strdup_printf("%s/virtio_iommu@%x,%x", pci_node,
>                                   PCI_SLOT(bdf), PCI_FUNC(bdf));
>      iommu_phandle = qemu_fdt_alloc_phandle(fdt);
> @@ -1103,7 +1103,7 @@ static void create_fdt_iommu(RISCVVirtState *s, uint16_t bdf)
>      g_autofree char *pci_node = NULL;
>
>      pci_node = g_strdup_printf("/soc/pci@%lx",
> -                               (long) virt_memmap[VIRT_PCIE_ECAM].base);
> +                               (long) s->memmap[VIRT_PCIE_ECAM].base);
>      iommu_node = g_strdup_printf("%s/iommu@%x", pci_node, bdf);
>      iommu_phandle = qemu_fdt_alloc_phandle(fdt);
>      qemu_fdt_add_subnode(fdt, iommu_node);
> @@ -1125,24 +1125,24 @@ static void finalize_fdt(RISCVVirtState *s)
>      uint32_t irq_pcie_phandle = 1, irq_virtio_phandle = 1;
>      uint32_t iommu_sys_phandle = 1;
>
> -    create_fdt_sockets(s, virt_memmap, &phandle, &irq_mmio_phandle,
> +    create_fdt_sockets(s, s->memmap, &phandle, &irq_mmio_phandle,
>                         &irq_pcie_phandle, &irq_virtio_phandle,
>                         &msi_pcie_phandle);
>
> -    create_fdt_virtio(s, virt_memmap, irq_virtio_phandle);
> +    create_fdt_virtio(s, s->memmap, irq_virtio_phandle);
>
>      if (virt_is_iommu_sys_enabled(s)) {
>          create_fdt_iommu_sys(s, irq_mmio_phandle, msi_pcie_phandle,
>                               &iommu_sys_phandle);
>      }
> -    create_fdt_pcie(s, virt_memmap, irq_pcie_phandle, msi_pcie_phandle,
> +    create_fdt_pcie(s, s->memmap, irq_pcie_phandle, msi_pcie_phandle,
>                      iommu_sys_phandle);
>
> -    create_fdt_reset(s, virt_memmap, &phandle);
> +    create_fdt_reset(s, s->memmap, &phandle);
>
> -    create_fdt_uart(s, virt_memmap, irq_mmio_phandle);
> +    create_fdt_uart(s, s->memmap, irq_mmio_phandle);
>
> -    create_fdt_rtc(s, virt_memmap, irq_mmio_phandle);
> +    create_fdt_rtc(s, s->memmap, irq_mmio_phandle);
>  }
>
>  static void create_fdt(RISCVVirtState *s, const MemMapEntry *memmap)
> @@ -1365,14 +1365,13 @@ static void create_platform_bus(RISCVVirtState *s, DeviceState *irqchip)
>  {
>      DeviceState *dev;
>      SysBusDevice *sysbus;
> -    const MemMapEntry *memmap = virt_memmap;
>      int i;
>      MemoryRegion *sysmem = get_system_memory();
>
>      dev = qdev_new(TYPE_PLATFORM_BUS_DEVICE);
>      dev->id = g_strdup(TYPE_PLATFORM_BUS_DEVICE);
>      qdev_prop_set_uint32(dev, "num_irqs", VIRT_PLATFORM_BUS_NUM_IRQS);
> -    qdev_prop_set_uint32(dev, "mmio_size", memmap[VIRT_PLATFORM_BUS].size);
> +    qdev_prop_set_uint32(dev, "mmio_size", s->memmap[VIRT_PLATFORM_BUS].size);
>      sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
>      s->platform_bus_dev = dev;
>
> @@ -1383,7 +1382,7 @@ static void create_platform_bus(RISCVVirtState *s, DeviceState *irqchip)
>      }
>
>      memory_region_add_subregion(sysmem,
> -                                memmap[VIRT_PLATFORM_BUS].base,
> +                                s->memmap[VIRT_PLATFORM_BUS].base,
>                                  sysbus_mmio_get_region(sysbus, 0));
>  }
>
> --
> 2.49.0
>
>