On Tue, Apr 29, 2025 at 10:59 PM Daniel Henrique Barboza
<dbarb...@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 <dbarb...@ventanamicro.com>

Reviewed-by: Alistair Francis <alistair.fran...@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
>
>

Reply via email to