From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH 20/23] pci: pass address space to pci bus when created Date: Mon, 25 Jul 2011 15:03:34 -0500 Message-ID: <4E2DCC16.8060001@codemonkey.ws> References: <1311602584-23409-1-git-send-email-avi@redhat.com> <1311602584-23409-21-git-send-email-avi@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org To: Avi Kivity Return-path: In-Reply-To: <1311602584-23409-21-git-send-email-avi@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org List-Id: kvm.vger.kernel.org On 07/25/2011 09:03 AM, Avi Kivity wrote: > This is now done sloppily, via get_system_memory(). Eventually callers > will be converted to stop using that. > > Signed-off-by: Avi Kivity Reviewed-by: Anthony Liguori Regards, Anthony Liguori > --- > hw/apb_pci.c | 2 ++ > hw/bonito.c | 4 +++- > hw/grackle_pci.c | 5 +++-- > hw/gt64xxx.c | 4 +++- > hw/pc.h | 4 +++- > hw/pc_piix.c | 3 ++- > hw/pci.c | 16 +++++++++++----- > hw/pci.h | 12 +++++++++--- > hw/pci_host.h | 1 + > hw/pci_internals.h | 1 + > hw/piix_pci.c | 13 +++++++++---- > hw/ppc4xx_pci.c | 5 ++++- > hw/ppc_mac.h | 9 ++++++--- > hw/ppc_newworld.c | 5 +++-- > hw/ppc_oldworld.c | 3 ++- > hw/ppc_prep.c | 3 ++- > hw/ppce500_pci.c | 6 +++++- > hw/prep_pci.c | 5 +++-- > hw/prep_pci.h | 3 ++- > hw/sh_pci.c | 4 +++- > hw/unin_pci.c | 10 ++++++---- > hw/versatile_pci.c | 2 ++ > 22 files changed, 85 insertions(+), 35 deletions(-) > > diff --git a/hw/apb_pci.c b/hw/apb_pci.c > index 974c87a..8b9939c 100644 > --- a/hw/apb_pci.c > +++ b/hw/apb_pci.c > @@ -34,6 +34,7 @@ > #include "rwhandler.h" > #include "apb_pci.h" > #include "sysemu.h" > +#include "exec-memory.h" > > /* debug APB */ > //#define DEBUG_APB > @@ -346,6 +347,7 @@ PCIBus *pci_apb_init(target_phys_addr_t special_base, > > d->bus = pci_register_bus(&d->busdev.qdev, "pci", > pci_apb_set_irq, pci_pbm_map_irq, d, > + get_system_memory(), > 0, 32); > pci_bus_set_mem_base(d->bus, mem_base); > > diff --git a/hw/bonito.c b/hw/bonito.c > index e8c57a3..5f62dda 100644 > --- a/hw/bonito.c > +++ b/hw/bonito.c > @@ -42,6 +42,7 @@ > #include "mips.h" > #include "pci_host.h" > #include "sysemu.h" > +#include "exec-memory.h" > > //#define DEBUG_BONITO > > @@ -773,7 +774,8 @@ PCIBus *bonito_init(qemu_irq *pic) > dev = qdev_create(NULL, "Bonito-pcihost"); > pcihost = FROM_SYSBUS(BonitoState, sysbus_from_qdev(dev)); > b = pci_register_bus(&pcihost->busdev.qdev, "pci", pci_bonito_set_irq, > - pci_bonito_map_irq, pic, 0x28, 32); > + pci_bonito_map_irq, pic, get_system_memory(), > + 0x28, 32); > pcihost->bus = b; > qdev_init_nofail(dev); > > diff --git a/hw/grackle_pci.c b/hw/grackle_pci.c > index cee07e0..da67cf9 100644 > --- a/hw/grackle_pci.c > +++ b/hw/grackle_pci.c > @@ -61,7 +61,8 @@ static void pci_grackle_reset(void *opaque) > { > } > > -PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic) > +PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic, > + MemoryRegion *address_space) > { > DeviceState *dev; > SysBusDevice *s; > @@ -74,7 +75,7 @@ PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic) > d->host_state.bus = pci_register_bus(&d->busdev.qdev, "pci", > pci_grackle_set_irq, > pci_grackle_map_irq, > - pic, 0, 4); > + pic, address_space, 0, 4); > > pci_create_simple(d->host_state.bus, 0, "grackle"); > > diff --git a/hw/gt64xxx.c b/hw/gt64xxx.c > index 8e1f6a0..65e63dd 100644 > --- a/hw/gt64xxx.c > +++ b/hw/gt64xxx.c > @@ -27,6 +27,7 @@ > #include "pci.h" > #include "pci_host.h" > #include "pc.h" > +#include "exec-memory.h" > > //#define DEBUG > > @@ -1092,7 +1093,8 @@ PCIBus *gt64120_register(qemu_irq *pic) > d = FROM_SYSBUS(GT64120State, s); > d->pci.bus = pci_register_bus(&d->busdev.qdev, "pci", > gt64120_pci_set_irq, gt64120_pci_map_irq, > - pic, PCI_DEVFN(18, 0), 4); > + pic, get_system_memory(), > + PCI_DEVFN(18, 0), 4); > d->ISD_handle = cpu_register_io_memory(gt64120_read, gt64120_write, d, > DEVICE_NATIVE_ENDIAN); > > diff --git a/hw/pc.h b/hw/pc.h > index 40684f4..a2de0fe 100644 > --- a/hw/pc.h > +++ b/hw/pc.h > @@ -178,7 +178,9 @@ int pcspk_audio_init(qemu_irq *pic); > struct PCII440FXState; > typedef struct PCII440FXState PCII440FXState; > > -PCIBus *i440fx_init(PCII440FXState **pi440fx_state, int *piix_devfn, qemu_irq *pic, ram_addr_t ram_size); > +PCIBus *i440fx_init(PCII440FXState **pi440fx_state, int *piix_devfn, > + qemu_irq *pic, MemoryRegion *address_space, > + ram_addr_t ram_size); > void i440fx_init_memory_mappings(PCII440FXState *d); > > /* piix4.c */ > diff --git a/hw/pc_piix.c b/hw/pc_piix.c > index f2d0476..2b9c2b1 100644 > --- a/hw/pc_piix.c > +++ b/hw/pc_piix.c > @@ -128,7 +128,8 @@ static void pc_init1(MemoryRegion *system_memory, > isa_irq = qemu_allocate_irqs(isa_irq_handler, isa_irq_state, 24); > > if (pci_enabled) { > - pci_bus = i440fx_init(&i440fx_state,&piix3_devfn, isa_irq, ram_size); > + pci_bus = i440fx_init(&i440fx_state,&piix3_devfn, isa_irq, > + system_memory, ram_size); > } else { > pci_bus = NULL; > i440fx_state = NULL; > diff --git a/hw/pci.c b/hw/pci.c > index b904a4e..cf16f3b 100644 > --- a/hw/pci.c > +++ b/hw/pci.c > @@ -263,11 +263,14 @@ int pci_find_domain(const PCIBus *bus) > } > > void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent, > - const char *name, uint8_t devfn_min) > + const char *name, > + MemoryRegion *address_space, > + uint8_t devfn_min) > { > qbus_create_inplace(&bus->qbus,&pci_bus_info, parent, name); > assert(PCI_FUNC(devfn_min) == 0); > bus->devfn_min = devfn_min; > + bus->address_space = address_space; > > /* host bridge */ > QLIST_INIT(&bus->child); > @@ -276,13 +279,14 @@ void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent, > vmstate_register(NULL, -1,&vmstate_pcibus, bus); > } > > -PCIBus *pci_bus_new(DeviceState *parent, const char *name, uint8_t devfn_min) > +PCIBus *pci_bus_new(DeviceState *parent, const char *name, > + MemoryRegion *address_space, uint8_t devfn_min) > { > PCIBus *bus; > > bus = qemu_mallocz(sizeof(*bus)); > bus->qbus.qdev_allocated = 1; > - pci_bus_new_inplace(bus, parent, name, devfn_min); > + pci_bus_new_inplace(bus, parent, name, address_space, devfn_min); > return bus; > } > > @@ -310,11 +314,13 @@ void pci_bus_set_mem_base(PCIBus *bus, target_phys_addr_t base) > > PCIBus *pci_register_bus(DeviceState *parent, const char *name, > pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, > - void *irq_opaque, uint8_t devfn_min, int nirq) > + void *irq_opaque, > + MemoryRegion *address_space, > + uint8_t devfn_min, int nirq) > { > PCIBus *bus; > > - bus = pci_bus_new(parent, name, devfn_min); > + bus = pci_bus_new(parent, name, address_space, devfn_min); > pci_bus_irqs(bus, set_irq, map_irq, irq_opaque, nirq); > return bus; > } > diff --git a/hw/pci.h b/hw/pci.h > index c220745..cfeb042 100644 > --- a/hw/pci.h > +++ b/hw/pci.h > @@ -5,6 +5,7 @@ > #include "qobject.h" > > #include "qdev.h" > +#include "memory.h" > > /* PCI includes legacy ISA access. */ > #include "isa.h" > @@ -233,15 +234,20 @@ typedef enum { > typedef int (*pci_hotplug_fn)(DeviceState *qdev, PCIDevice *pci_dev, > PCIHotplugState state); > void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent, > - const char *name, uint8_t devfn_min); > -PCIBus *pci_bus_new(DeviceState *parent, const char *name, uint8_t devfn_min); > + const char *name, > + MemoryRegion *address_space, > + uint8_t devfn_min); > +PCIBus *pci_bus_new(DeviceState *parent, const char *name, > + MemoryRegion *address_space, uint8_t devfn_min); > void pci_bus_irqs(PCIBus *bus, pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, > void *irq_opaque, int nirq); > int pci_bus_get_irq_level(PCIBus *bus, int irq_num); > void pci_bus_hotplug(PCIBus *bus, pci_hotplug_fn hotplug, DeviceState *dev); > PCIBus *pci_register_bus(DeviceState *parent, const char *name, > pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, > - void *irq_opaque, uint8_t devfn_min, int nirq); > + void *irq_opaque, > + MemoryRegion *address_space, > + uint8_t devfn_min, int nirq); > void pci_device_reset(PCIDevice *dev); > void pci_bus_reset(PCIBus *bus); > > diff --git a/hw/pci_host.h b/hw/pci_host.h > index 0a58595..05dcb66 100644 > --- a/hw/pci_host.h > +++ b/hw/pci_host.h > @@ -35,6 +35,7 @@ struct PCIHostState { > SysBusDevice busdev; > ReadWriteHandler conf_handler; > ReadWriteHandler data_handler; > + MemoryRegion *address_space; > uint32_t config_reg; > PCIBus *bus; > }; > diff --git a/hw/pci_internals.h b/hw/pci_internals.h > index fbe1866..c3a463a 100644 > --- a/hw/pci_internals.h > +++ b/hw/pci_internals.h > @@ -25,6 +25,7 @@ struct PCIBus { > PCIDevice *devices[PCI_SLOT_MAX * PCI_FUNC_MAX]; > PCIDevice *parent_dev; > target_phys_addr_t mem_base; > + MemoryRegion *address_space; > > QLIST_HEAD(, PCIBus) child; /* this will be replaced by qdev later */ > QLIST_ENTRY(PCIBus) sibling;/* this will be replaced by qdev later */ > diff --git a/hw/piix_pci.c b/hw/piix_pci.c > index d08b31a..80d6665 100644 > --- a/hw/piix_pci.c > +++ b/hw/piix_pci.c > @@ -241,7 +241,9 @@ static int i440fx_initfn(PCIDevice *dev) > static PCIBus *i440fx_common_init(const char *device_name, > PCII440FXState **pi440fx_state, > int *piix3_devfn, > - qemu_irq *pic, ram_addr_t ram_size) > + qemu_irq *pic, > + MemoryRegion *address_space, > + ram_addr_t ram_size) > { > DeviceState *dev; > PCIBus *b; > @@ -251,7 +253,8 @@ static PCIBus *i440fx_common_init(const char *device_name, > > dev = qdev_create(NULL, "i440FX-pcihost"); > s = FROM_SYSBUS(I440FXState, sysbus_from_qdev(dev)); > - b = pci_bus_new(&s->busdev.qdev, NULL, 0); > + s->address_space = address_space; > + b = pci_bus_new(&s->busdev.qdev, NULL, s->address_space, 0); > s->bus = b; > qdev_init_nofail(dev); > > @@ -288,11 +291,13 @@ static PCIBus *i440fx_common_init(const char *device_name, > } > > PCIBus *i440fx_init(PCII440FXState **pi440fx_state, int *piix3_devfn, > - qemu_irq *pic, ram_addr_t ram_size) > + qemu_irq *pic, MemoryRegion *address_space, > + ram_addr_t ram_size) > { > PCIBus *b; > > - b = i440fx_common_init("i440FX", pi440fx_state, piix3_devfn, pic, ram_size); > + b = i440fx_common_init("i440FX", pi440fx_state, piix3_devfn, pic, > + address_space, ram_size); > return b; > } > > diff --git a/hw/ppc4xx_pci.c b/hw/ppc4xx_pci.c > index 299473c..15c24f6 100644 > --- a/hw/ppc4xx_pci.c > +++ b/hw/ppc4xx_pci.c > @@ -24,6 +24,7 @@ > #include "ppc4xx.h" > #include "pci.h" > #include "pci_host.h" > +#include "exec-memory.h" > > #undef DEBUG > #ifdef DEBUG > @@ -345,7 +346,9 @@ PCIBus *ppc4xx_pci_init(CPUState *env, qemu_irq pci_irqs[4], > controller->pci_state.bus = pci_register_bus(NULL, "pci", > ppc4xx_pci_set_irq, > ppc4xx_pci_map_irq, > - pci_irqs, 0, 4); > + pci_irqs, > + get_system_memory(), > + 0, 4); > > controller->pci_dev = pci_register_device(controller->pci_state.bus, > "host bridge", sizeof(PCIDevice), > diff --git a/hw/ppc_mac.h b/hw/ppc_mac.h > index 68dade7..6fad20a 100644 > --- a/hw/ppc_mac.h > +++ b/hw/ppc_mac.h > @@ -25,6 +25,8 @@ > #if !defined(__PPC_MAC_H__) > #define __PPC_MAC_H__ > > +#include "memory.h" > + > /* SMP is not enabled, for now */ > #define MAX_CPUS 1 > > @@ -52,11 +54,12 @@ qemu_irq *heathrow_pic_init(int *pmem_index, > int nb_cpus, qemu_irq **irqs); > > /* Grackle PCI */ > -PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic); > +PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic, > + MemoryRegion *address_space); > > /* UniNorth PCI */ > -PCIBus *pci_pmac_init(qemu_irq *pic); > -PCIBus *pci_pmac_u3_init(qemu_irq *pic); > +PCIBus *pci_pmac_init(qemu_irq *pic, MemoryRegion *address_space); > +PCIBus *pci_pmac_u3_init(qemu_irq *pic, MemoryRegion *address_space); > > /* Mac NVRAM */ > typedef struct MacIONVRAMState MacIONVRAMState; > diff --git a/hw/ppc_newworld.c b/hw/ppc_newworld.c > index 5bce709..2c0fae8 100644 > --- a/hw/ppc_newworld.c > +++ b/hw/ppc_newworld.c > @@ -67,6 +67,7 @@ > #include "kvm_ppc.h" > #include "hw/usb.h" > #include "blockdev.h" > +#include "exec-memory.h" > > #define MAX_IDE_BUS 2 > #define CFG_ADDR 0xf0000510 > @@ -317,10 +318,10 @@ static void ppc_core99_init (ram_addr_t ram_size, > pic = openpic_init(NULL,&pic_mem_index, smp_cpus, openpic_irqs, NULL); > if (PPC_INPUT(env) == PPC_FLAGS_INPUT_970) { > /* 970 gets a U3 bus */ > - pci_bus = pci_pmac_u3_init(pic); > + pci_bus = pci_pmac_u3_init(pic, get_system_memory()); > machine_arch = ARCH_MAC99_U3; > } else { > - pci_bus = pci_pmac_init(pic); > + pci_bus = pci_pmac_init(pic, get_system_memory()); > machine_arch = ARCH_MAC99; > } > /* init basic PC hardware */ > diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c > index 20cd8e1..585afd6 100644 > --- a/hw/ppc_oldworld.c > +++ b/hw/ppc_oldworld.c > @@ -43,6 +43,7 @@ > #include "kvm.h" > #include "kvm_ppc.h" > #include "blockdev.h" > +#include "exec-memory.h" > > #define MAX_IDE_BUS 2 > #define CFG_ADDR 0xf0000510 > @@ -233,7 +234,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, > hw_error("Only 6xx bus is supported on heathrow machine\n"); > } > pic = heathrow_pic_init(&pic_mem_index, 1, heathrow_irqs); > - pci_bus = pci_grackle_init(0xfec00000, pic); > + pci_bus = pci_grackle_init(0xfec00000, pic, get_system_memory()); > pci_vga_init(pci_bus); > > escc_mem_index = escc_init(0x80013000, pic[0x0f], pic[0x10], serial_hds[0], > diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c > index 0e9cfc2..91ebe07 100644 > --- a/hw/ppc_prep.c > +++ b/hw/ppc_prep.c > @@ -38,6 +38,7 @@ > #include "loader.h" > #include "mc146818rtc.h" > #include "blockdev.h" > +#include "exec-memory.h" > > //#define HARD_DEBUG_PPC_IO > //#define DEBUG_PPC_IO > @@ -648,7 +649,7 @@ static void ppc_prep_init (ram_addr_t ram_size, > hw_error("Only 6xx bus is supported on PREP machine\n"); > } > i8259 = i8259_init(first_cpu->irq_inputs[PPC6xx_INPUT_INT]); > - pci_bus = pci_prep_init(i8259); > + pci_bus = pci_prep_init(i8259, get_system_memory()); > /* Hmm, prep has no pci-isa bridge ??? */ > isa_bus_new(NULL); > isa_bus_irqs(i8259); > diff --git a/hw/ppce500_pci.c b/hw/ppce500_pci.c > index fc11af4..1344539 100644 > --- a/hw/ppce500_pci.c > +++ b/hw/ppce500_pci.c > @@ -274,12 +274,15 @@ static void e500_pci_map(SysBusDevice *dev, target_phys_addr_t base) > s->reg); > } > > +#include "exec-memory.h" > + > static int e500_pcihost_initfn(SysBusDevice *dev) > { > PCIHostState *h; > PPCE500PCIState *s; > PCIBus *b; > int i; > + MemoryRegion *address_space = get_system_memory(); > > h = FROM_SYSBUS(PCIHostState, sysbus_from_qdev(dev)); > s = DO_UPCAST(PPCE500PCIState, pci_state, h); > @@ -289,7 +292,8 @@ static int e500_pcihost_initfn(SysBusDevice *dev) > } > > b = pci_register_bus(&s->pci_state.busdev.qdev, NULL, mpc85xx_pci_set_irq, > - mpc85xx_pci_map_irq, s->irq, PCI_DEVFN(0x11, 0), 4); > + mpc85xx_pci_map_irq, s->irq, address_space, > + PCI_DEVFN(0x11, 0), 4); > s->pci_state.bus = b; > > pci_create_simple(b, 0, "e500-host-bridge"); > diff --git a/hw/prep_pci.c b/hw/prep_pci.c > index f88b825..da02f0e 100644 > --- a/hw/prep_pci.c > +++ b/hw/prep_pci.c > @@ -110,7 +110,7 @@ static void prep_set_irq(void *opaque, int irq_num, int level) > qemu_set_irq(pic[(irq_num& 1) ? 11 : 9] , level); > } > > -PCIBus *pci_prep_init(qemu_irq *pic) > +PCIBus *pci_prep_init(qemu_irq *pic, MemoryRegion *address_space) > { > PREPPCIState *s; > PCIDevice *d; > @@ -118,7 +118,8 @@ PCIBus *pci_prep_init(qemu_irq *pic) > > s = qemu_mallocz(sizeof(PREPPCIState)); > s->bus = pci_register_bus(NULL, "pci", > - prep_set_irq, prep_map_irq, pic, 0, 4); > + prep_set_irq, prep_map_irq, pic, > + address_space, 0, 4); > > pci_host_conf_register_ioport(0xcf8, s); > > diff --git a/hw/prep_pci.h b/hw/prep_pci.h > index cd68512..a27368b 100644 > --- a/hw/prep_pci.h > +++ b/hw/prep_pci.h > @@ -2,7 +2,8 @@ > #define QEMU_PREP_PCI_H > > #include "qemu-common.h" > +#include "memory.h" > > -PCIBus *pci_prep_init(qemu_irq *pic); > +PCIBus *pci_prep_init(qemu_irq *pic, MemoryRegion *address_space); > > #endif > diff --git a/hw/sh_pci.c b/hw/sh_pci.c > index a076cf2..0ef93a0 100644 > --- a/hw/sh_pci.c > +++ b/hw/sh_pci.c > @@ -26,6 +26,7 @@ > #include "pci.h" > #include "pci_host.h" > #include "bswap.h" > +#include "exec-memory.h" > > typedef struct SHPCIState { > SysBusDevice busdev; > @@ -127,7 +128,8 @@ static int sh_pci_init_device(SysBusDevice *dev) > } > s->bus = pci_register_bus(&s->busdev.qdev, "pci", > sh_pci_set_irq, sh_pci_map_irq, > - s->irq, PCI_DEVFN(0, 0), 4); > + s->irq, get_system_memory(), > + PCI_DEVFN(0, 0), 4); > s->memconfig = cpu_register_io_memory(sh_pci_reg.r, sh_pci_reg.w, > s, DEVICE_NATIVE_ENDIAN); > sysbus_init_mmio_cb(dev, 0x224, sh_pci_map); > diff --git a/hw/unin_pci.c b/hw/unin_pci.c > index d364daa..b499523 100644 > --- a/hw/unin_pci.c > +++ b/hw/unin_pci.c > @@ -201,7 +201,7 @@ static int pci_unin_internal_init_device(SysBusDevice *dev) > return 0; > } > > -PCIBus *pci_pmac_init(qemu_irq *pic) > +PCIBus *pci_pmac_init(qemu_irq *pic, MemoryRegion *address_space) > { > DeviceState *dev; > SysBusDevice *s; > @@ -215,7 +215,8 @@ PCIBus *pci_pmac_init(qemu_irq *pic) > d = FROM_SYSBUS(UNINState, s); > d->host_state.bus = pci_register_bus(&d->busdev.qdev, "pci", > pci_unin_set_irq, pci_unin_map_irq, > - pic, PCI_DEVFN(11, 0), 4); > + pic, address_space, > + PCI_DEVFN(11, 0), 4); > > #if 0 > pci_create_simple(d->host_state.bus, PCI_DEVFN(11, 0), "uni-north"); > @@ -252,7 +253,7 @@ PCIBus *pci_pmac_init(qemu_irq *pic) > return d->host_state.bus; > } > > -PCIBus *pci_pmac_u3_init(qemu_irq *pic) > +PCIBus *pci_pmac_u3_init(qemu_irq *pic, MemoryRegion *address_space) > { > DeviceState *dev; > SysBusDevice *s; > @@ -267,7 +268,8 @@ PCIBus *pci_pmac_u3_init(qemu_irq *pic) > > d->host_state.bus = pci_register_bus(&d->busdev.qdev, "pci", > pci_unin_set_irq, pci_unin_map_irq, > - pic, PCI_DEVFN(11, 0), 4); > + pic, address_space, > + PCI_DEVFN(11, 0), 4); > > sysbus_mmio_map(s, 0, 0xf0800000); > sysbus_mmio_map(s, 1, 0xf0c00000); > diff --git a/hw/versatile_pci.c b/hw/versatile_pci.c > index 290a900..cffe387 100644 > --- a/hw/versatile_pci.c > +++ b/hw/versatile_pci.c > @@ -10,6 +10,7 @@ > #include "sysbus.h" > #include "pci.h" > #include "pci_host.h" > +#include "exec-memory.h" > > typedef struct { > SysBusDevice busdev; > @@ -111,6 +112,7 @@ static int pci_vpb_init(SysBusDevice *dev) > } > bus = pci_register_bus(&dev->qdev, "pci", > pci_vpb_set_irq, pci_vpb_map_irq, s->irq, > + get_system_memory(), > PCI_DEVFN(11, 0), 4); > > /* ??? Register memory space. */