The raven bus-master memory region is exposed as an AddressSpace. AddressSpaces root MemoryRegion must not be mapped into other MemoryRegion, therefore map the region using its alias.
Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> --- hw/pci-host/raven.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index f9c92b83770..d8c1aaa11f5 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -307,8 +307,6 @@ static void raven_pcihost_initfn(Object *obj) memory_region_add_subregion(address_space_mem, PCI_IO_BASE_ADDR, &s->pci_io_non_contiguous); memory_region_add_subregion(address_space_mem, 0xc0000000, &s->pci_memory); - pci_root_bus_new_inplace(&s->pci_bus, sizeof(s->pci_bus), DEVICE(obj), NULL, - &s->pci_memory, &s->pci_io, 0, TYPE_PCI_BUS); /* Bus master address space */ memory_region_init(&s->bm, obj, "bm-raven", 4 * GiB); @@ -320,6 +318,10 @@ static void raven_pcihost_initfn(Object *obj) memory_region_add_subregion(&s->bm, 0 , &s->bm_pci_memory_alias); memory_region_add_subregion(&s->bm, 0x80000000, &s->bm_ram_alias); address_space_init(&s->bm_as, &s->bm, "raven-bm"); + + pci_root_bus_new_inplace(&s->pci_bus, sizeof(s->pci_bus), DEVICE(obj), NULL, + &s->bm_pci_memory_alias, &s->pci_io, 0, + TYPE_PCI_BUS); pci_setup_iommu(&s->pci_bus, raven_pcihost_set_iommu, s); h->bus = &s->pci_bus; -- 2.26.3