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
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
>
>
© 2016 - 2025 Red Hat, Inc.