mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
hw/p*: pass owner to memory_region_init* functions
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
eedfac6f38
commit
40c5dce99b
21 changed files with 91 additions and 86 deletions
|
@ -98,9 +98,9 @@ static int pci_dec_21154_device_init(SysBusDevice *dev)
|
||||||
|
|
||||||
phb = PCI_HOST_BRIDGE(dev);
|
phb = PCI_HOST_BRIDGE(dev);
|
||||||
|
|
||||||
memory_region_init_io(&phb->conf_mem, NULL, &pci_host_conf_le_ops,
|
memory_region_init_io(&phb->conf_mem, OBJECT(dev), &pci_host_conf_le_ops,
|
||||||
dev, "pci-conf-idx", 0x1000);
|
dev, "pci-conf-idx", 0x1000);
|
||||||
memory_region_init_io(&phb->data_mem, NULL, &pci_host_data_le_ops,
|
memory_region_init_io(&phb->data_mem, OBJECT(dev), &pci_host_data_le_ops,
|
||||||
dev, "pci-data-idx", 0x1000);
|
dev, "pci-data-idx", 0x1000);
|
||||||
sysbus_init_mmio(dev, &phb->conf_mem);
|
sysbus_init_mmio(dev, &phb->conf_mem);
|
||||||
sysbus_init_mmio(dev, &phb->data_mem);
|
sysbus_init_mmio(dev, &phb->data_mem);
|
||||||
|
|
|
@ -46,7 +46,7 @@ static int pci_bridge_dev_initfn(PCIDevice *dev)
|
||||||
if (err) {
|
if (err) {
|
||||||
goto bridge_error;
|
goto bridge_error;
|
||||||
}
|
}
|
||||||
memory_region_init(&bridge_dev->bar, NULL, "shpc-bar", shpc_bar_size(dev));
|
memory_region_init(&bridge_dev->bar, OBJECT(dev), "shpc-bar", shpc_bar_size(dev));
|
||||||
err = shpc_init(dev, &br->sec_bus, &bridge_dev->bar, 0);
|
err = shpc_init(dev, &br->sec_bus, &bridge_dev->bar, 0);
|
||||||
if (err) {
|
if (err) {
|
||||||
goto shpc_error;
|
goto shpc_error;
|
||||||
|
|
|
@ -447,7 +447,7 @@ PCIBus *pci_apb_init(hwaddr special_base,
|
||||||
sysbus_mmio_map(s, 2, special_base + 0x2000000ULL);
|
sysbus_mmio_map(s, 2, special_base + 0x2000000ULL);
|
||||||
d = FROM_SYSBUS(APBState, s);
|
d = FROM_SYSBUS(APBState, s);
|
||||||
|
|
||||||
memory_region_init(&d->pci_mmio, NULL, "pci-mmio", 0x100000000ULL);
|
memory_region_init(&d->pci_mmio, OBJECT(s), "pci-mmio", 0x100000000ULL);
|
||||||
memory_region_add_subregion(get_system_memory(), mem_base, &d->pci_mmio);
|
memory_region_add_subregion(get_system_memory(), mem_base, &d->pci_mmio);
|
||||||
|
|
||||||
d->bus = pci_register_bus(&d->busdev.qdev, "pci",
|
d->bus = pci_register_bus(&d->busdev.qdev, "pci",
|
||||||
|
@ -525,18 +525,18 @@ static int pci_pbm_init_device(SysBusDevice *dev)
|
||||||
s->pci_irq_in = 0ULL;
|
s->pci_irq_in = 0ULL;
|
||||||
|
|
||||||
/* apb_config */
|
/* apb_config */
|
||||||
memory_region_init_io(&s->apb_config, NULL, &apb_config_ops, s, "apb-config",
|
memory_region_init_io(&s->apb_config, OBJECT(s), &apb_config_ops, s,
|
||||||
0x10000);
|
"apb-config", 0x10000);
|
||||||
/* at region 0 */
|
/* at region 0 */
|
||||||
sysbus_init_mmio(dev, &s->apb_config);
|
sysbus_init_mmio(dev, &s->apb_config);
|
||||||
|
|
||||||
memory_region_init_io(&s->pci_config, NULL, &pci_config_ops, s, "apb-pci-config",
|
memory_region_init_io(&s->pci_config, OBJECT(s), &pci_config_ops, s,
|
||||||
0x1000000);
|
"apb-pci-config", 0x1000000);
|
||||||
/* at region 1 */
|
/* at region 1 */
|
||||||
sysbus_init_mmio(dev, &s->pci_config);
|
sysbus_init_mmio(dev, &s->pci_config);
|
||||||
|
|
||||||
/* pci_ioport */
|
/* pci_ioport */
|
||||||
memory_region_init_io(&s->pci_ioport, NULL, &pci_ioport_ops, s,
|
memory_region_init_io(&s->pci_ioport, OBJECT(s), &pci_ioport_ops, s,
|
||||||
"apb-pci-ioport", 0x10000);
|
"apb-pci-ioport", 0x10000);
|
||||||
/* at region 2 */
|
/* at region 2 */
|
||||||
sysbus_init_mmio(dev, &s->pci_ioport);
|
sysbus_init_mmio(dev, &s->pci_ioport);
|
||||||
|
|
|
@ -722,29 +722,29 @@ static int bonito_initfn(PCIDevice *dev)
|
||||||
pci_config_set_prog_interface(dev->config, 0x00);
|
pci_config_set_prog_interface(dev->config, 0x00);
|
||||||
|
|
||||||
/* set the north bridge register mapping */
|
/* set the north bridge register mapping */
|
||||||
memory_region_init_io(&s->iomem, NULL, &bonito_ops, s,
|
memory_region_init_io(&s->iomem, OBJECT(s), &bonito_ops, s,
|
||||||
"north-bridge-register", BONITO_INTERNAL_REG_SIZE);
|
"north-bridge-register", BONITO_INTERNAL_REG_SIZE);
|
||||||
sysbus_init_mmio(sysbus, &s->iomem);
|
sysbus_init_mmio(sysbus, &s->iomem);
|
||||||
sysbus_mmio_map(sysbus, 0, BONITO_INTERNAL_REG_BASE);
|
sysbus_mmio_map(sysbus, 0, BONITO_INTERNAL_REG_BASE);
|
||||||
|
|
||||||
/* set the north bridge pci configure mapping */
|
/* set the north bridge pci configure mapping */
|
||||||
memory_region_init_io(&phb->conf_mem, NULL, &bonito_pciconf_ops, s,
|
memory_region_init_io(&phb->conf_mem, OBJECT(s), &bonito_pciconf_ops, s,
|
||||||
"north-bridge-pci-config", BONITO_PCICONFIG_SIZE);
|
"north-bridge-pci-config", BONITO_PCICONFIG_SIZE);
|
||||||
sysbus_init_mmio(sysbus, &phb->conf_mem);
|
sysbus_init_mmio(sysbus, &phb->conf_mem);
|
||||||
sysbus_mmio_map(sysbus, 1, BONITO_PCICONFIG_BASE);
|
sysbus_mmio_map(sysbus, 1, BONITO_PCICONFIG_BASE);
|
||||||
|
|
||||||
/* set the south bridge pci configure mapping */
|
/* set the south bridge pci configure mapping */
|
||||||
memory_region_init_io(&phb->data_mem, NULL, &bonito_spciconf_ops, s,
|
memory_region_init_io(&phb->data_mem, OBJECT(s), &bonito_spciconf_ops, s,
|
||||||
"south-bridge-pci-config", BONITO_SPCICONFIG_SIZE);
|
"south-bridge-pci-config", BONITO_SPCICONFIG_SIZE);
|
||||||
sysbus_init_mmio(sysbus, &phb->data_mem);
|
sysbus_init_mmio(sysbus, &phb->data_mem);
|
||||||
sysbus_mmio_map(sysbus, 2, BONITO_SPCICONFIG_BASE);
|
sysbus_mmio_map(sysbus, 2, BONITO_SPCICONFIG_BASE);
|
||||||
|
|
||||||
memory_region_init_io(&s->iomem_ldma, NULL, &bonito_ldma_ops, s,
|
memory_region_init_io(&s->iomem_ldma, OBJECT(s), &bonito_ldma_ops, s,
|
||||||
"ldma", 0x100);
|
"ldma", 0x100);
|
||||||
sysbus_init_mmio(sysbus, &s->iomem_ldma);
|
sysbus_init_mmio(sysbus, &s->iomem_ldma);
|
||||||
sysbus_mmio_map(sysbus, 3, 0xbfe00200);
|
sysbus_mmio_map(sysbus, 3, 0xbfe00200);
|
||||||
|
|
||||||
memory_region_init_io(&s->iomem_cop, NULL, &bonito_cop_ops, s,
|
memory_region_init_io(&s->iomem_cop, OBJECT(s), &bonito_cop_ops, s,
|
||||||
"cop", 0x100);
|
"cop", 0x100);
|
||||||
sysbus_init_mmio(sysbus, &s->iomem_cop);
|
sysbus_init_mmio(sysbus, &s->iomem_cop);
|
||||||
sysbus_mmio_map(sysbus, 4, 0xbfe00300);
|
sysbus_mmio_map(sysbus, 4, 0xbfe00300);
|
||||||
|
|
|
@ -76,8 +76,8 @@ PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic,
|
||||||
phb = PCI_HOST_BRIDGE(dev);
|
phb = PCI_HOST_BRIDGE(dev);
|
||||||
d = GRACKLE_PCI_HOST_BRIDGE(dev);
|
d = GRACKLE_PCI_HOST_BRIDGE(dev);
|
||||||
|
|
||||||
memory_region_init(&d->pci_mmio, NULL, "pci-mmio", 0x100000000ULL);
|
memory_region_init(&d->pci_mmio, OBJECT(s), "pci-mmio", 0x100000000ULL);
|
||||||
memory_region_init_alias(&d->pci_hole, NULL, "pci-hole", &d->pci_mmio,
|
memory_region_init_alias(&d->pci_hole, OBJECT(s), "pci-hole", &d->pci_mmio,
|
||||||
0x80000000ULL, 0x7e000000ULL);
|
0x80000000ULL, 0x7e000000ULL);
|
||||||
memory_region_add_subregion(address_space_mem, 0x80000000ULL,
|
memory_region_add_subregion(address_space_mem, 0x80000000ULL,
|
||||||
&d->pci_hole);
|
&d->pci_hole);
|
||||||
|
@ -104,9 +104,9 @@ static int pci_grackle_init_device(SysBusDevice *dev)
|
||||||
|
|
||||||
phb = PCI_HOST_BRIDGE(dev);
|
phb = PCI_HOST_BRIDGE(dev);
|
||||||
|
|
||||||
memory_region_init_io(&phb->conf_mem, NULL, &pci_host_conf_le_ops,
|
memory_region_init_io(&phb->conf_mem, OBJECT(dev), &pci_host_conf_le_ops,
|
||||||
dev, "pci-conf-idx", 0x1000);
|
dev, "pci-conf-idx", 0x1000);
|
||||||
memory_region_init_io(&phb->data_mem, NULL, &pci_host_data_le_ops,
|
memory_region_init_io(&phb->data_mem, OBJECT(dev), &pci_host_data_le_ops,
|
||||||
dev, "pci-data-idx", 0x1000);
|
dev, "pci-data-idx", 0x1000);
|
||||||
sysbus_init_mmio(dev, &phb->conf_mem);
|
sysbus_init_mmio(dev, &phb->conf_mem);
|
||||||
sysbus_init_mmio(dev, &phb->data_mem);
|
sysbus_init_mmio(dev, &phb->data_mem);
|
||||||
|
|
|
@ -201,12 +201,12 @@ static int i440fx_pcihost_initfn(SysBusDevice *dev)
|
||||||
{
|
{
|
||||||
PCIHostState *s = PCI_HOST_BRIDGE(dev);
|
PCIHostState *s = PCI_HOST_BRIDGE(dev);
|
||||||
|
|
||||||
memory_region_init_io(&s->conf_mem, NULL, &pci_host_conf_le_ops, s,
|
memory_region_init_io(&s->conf_mem, OBJECT(dev), &pci_host_conf_le_ops, s,
|
||||||
"pci-conf-idx", 4);
|
"pci-conf-idx", 4);
|
||||||
sysbus_add_io(dev, 0xcf8, &s->conf_mem);
|
sysbus_add_io(dev, 0xcf8, &s->conf_mem);
|
||||||
sysbus_init_ioports(&s->busdev, 0xcf8, 4);
|
sysbus_init_ioports(&s->busdev, 0xcf8, 4);
|
||||||
|
|
||||||
memory_region_init_io(&s->data_mem, NULL, &pci_host_data_le_ops, s,
|
memory_region_init_io(&s->data_mem, OBJECT(dev), &pci_host_data_le_ops, s,
|
||||||
"pci-conf-data", 4);
|
"pci-conf-data", 4);
|
||||||
sysbus_add_io(dev, 0xcfc, &s->data_mem);
|
sysbus_add_io(dev, 0xcfc, &s->data_mem);
|
||||||
sysbus_init_ioports(&s->busdev, 0xcfc, 4);
|
sysbus_init_ioports(&s->busdev, 0xcfc, 4);
|
||||||
|
@ -260,17 +260,17 @@ static PCIBus *i440fx_common_init(const char *device_name,
|
||||||
f->system_memory = address_space_mem;
|
f->system_memory = address_space_mem;
|
||||||
f->pci_address_space = pci_address_space;
|
f->pci_address_space = pci_address_space;
|
||||||
f->ram_memory = ram_memory;
|
f->ram_memory = ram_memory;
|
||||||
memory_region_init_alias(&f->pci_hole, NULL, "pci-hole", f->pci_address_space,
|
memory_region_init_alias(&f->pci_hole, OBJECT(d), "pci-hole", f->pci_address_space,
|
||||||
pci_hole_start, pci_hole_size);
|
pci_hole_start, pci_hole_size);
|
||||||
memory_region_add_subregion(f->system_memory, pci_hole_start, &f->pci_hole);
|
memory_region_add_subregion(f->system_memory, pci_hole_start, &f->pci_hole);
|
||||||
memory_region_init_alias(&f->pci_hole_64bit, NULL, "pci-hole64",
|
memory_region_init_alias(&f->pci_hole_64bit, OBJECT(d), "pci-hole64",
|
||||||
f->pci_address_space,
|
f->pci_address_space,
|
||||||
pci_hole64_start, pci_hole64_size);
|
pci_hole64_start, pci_hole64_size);
|
||||||
if (pci_hole64_size) {
|
if (pci_hole64_size) {
|
||||||
memory_region_add_subregion(f->system_memory, pci_hole64_start,
|
memory_region_add_subregion(f->system_memory, pci_hole64_start,
|
||||||
&f->pci_hole_64bit);
|
&f->pci_hole_64bit);
|
||||||
}
|
}
|
||||||
memory_region_init_alias(&f->smram_region, NULL, "smram-region",
|
memory_region_init_alias(&f->smram_region, OBJECT(d), "smram-region",
|
||||||
f->pci_address_space, 0xa0000, 0x20000);
|
f->pci_address_space, 0xa0000, 0x20000);
|
||||||
memory_region_add_subregion_overlap(f->system_memory, 0xa0000,
|
memory_region_add_subregion_overlap(f->system_memory, 0xa0000,
|
||||||
&f->smram_region, 1);
|
&f->smram_region, 1);
|
||||||
|
@ -549,7 +549,8 @@ static int piix3_initfn(PCIDevice *dev)
|
||||||
|
|
||||||
isa_bus_new(DEVICE(d), pci_address_space_io(dev));
|
isa_bus_new(DEVICE(d), pci_address_space_io(dev));
|
||||||
|
|
||||||
memory_region_init_io(&d->rcr_mem, NULL, &rcr_ops, d, "piix3-reset-control", 1);
|
memory_region_init_io(&d->rcr_mem, OBJECT(dev), &rcr_ops, d,
|
||||||
|
"piix3-reset-control", 1);
|
||||||
memory_region_add_subregion_overlap(pci_address_space_io(dev), RCR_IOPORT,
|
memory_region_add_subregion_overlap(pci_address_space_io(dev), RCR_IOPORT,
|
||||||
&d->rcr_mem, 1);
|
&d->rcr_mem, 1);
|
||||||
|
|
||||||
|
|
|
@ -330,7 +330,7 @@ static int e500_pcihost_bridge_initfn(PCIDevice *d)
|
||||||
(d->config[PCI_HEADER_TYPE] & PCI_HEADER_TYPE_MULTI_FUNCTION) |
|
(d->config[PCI_HEADER_TYPE] & PCI_HEADER_TYPE_MULTI_FUNCTION) |
|
||||||
PCI_HEADER_TYPE_BRIDGE;
|
PCI_HEADER_TYPE_BRIDGE;
|
||||||
|
|
||||||
memory_region_init_alias(&b->bar0, NULL, "e500-pci-bar0", &ccsr->ccsr_space,
|
memory_region_init_alias(&b->bar0, OBJECT(ccsr), "e500-pci-bar0", &ccsr->ccsr_space,
|
||||||
0, int128_get64(ccsr->ccsr_space.size));
|
0, int128_get64(ccsr->ccsr_space.size));
|
||||||
pci_register_bar(d, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &b->bar0);
|
pci_register_bar(d, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &b->bar0);
|
||||||
|
|
||||||
|
@ -352,7 +352,7 @@ static int e500_pcihost_initfn(SysBusDevice *dev)
|
||||||
sysbus_init_irq(dev, &s->irq[i]);
|
sysbus_init_irq(dev, &s->irq[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
memory_region_init(&s->pio, NULL, "pci-pio", PCIE500_PCI_IOLEN);
|
memory_region_init(&s->pio, OBJECT(s), "pci-pio", PCIE500_PCI_IOLEN);
|
||||||
|
|
||||||
b = pci_register_bus(DEVICE(dev), NULL, mpc85xx_pci_set_irq,
|
b = pci_register_bus(DEVICE(dev), NULL, mpc85xx_pci_set_irq,
|
||||||
mpc85xx_pci_map_irq, s->irq, address_space_mem,
|
mpc85xx_pci_map_irq, s->irq, address_space_mem,
|
||||||
|
@ -361,12 +361,12 @@ static int e500_pcihost_initfn(SysBusDevice *dev)
|
||||||
|
|
||||||
pci_create_simple(b, 0, "e500-host-bridge");
|
pci_create_simple(b, 0, "e500-host-bridge");
|
||||||
|
|
||||||
memory_region_init(&s->container, NULL, "pci-container", PCIE500_ALL_SIZE);
|
memory_region_init(&s->container, OBJECT(h), "pci-container", PCIE500_ALL_SIZE);
|
||||||
memory_region_init_io(&h->conf_mem, NULL, &pci_host_conf_be_ops, h,
|
memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_be_ops, h,
|
||||||
"pci-conf-idx", 4);
|
"pci-conf-idx", 4);
|
||||||
memory_region_init_io(&h->data_mem, NULL, &pci_host_data_le_ops, h,
|
memory_region_init_io(&h->data_mem, OBJECT(h), &pci_host_data_le_ops, h,
|
||||||
"pci-conf-data", 4);
|
"pci-conf-data", 4);
|
||||||
memory_region_init_io(&s->iomem, NULL, &e500_pci_reg_ops, s,
|
memory_region_init_io(&s->iomem, OBJECT(s), &e500_pci_reg_ops, s,
|
||||||
"pci.reg", PCIE500_REG_SIZE);
|
"pci.reg", PCIE500_REG_SIZE);
|
||||||
memory_region_add_subregion(&s->container, PCIE500_CFGADDR, &h->conf_mem);
|
memory_region_add_subregion(&s->container, PCIE500_CFGADDR, &h->conf_mem);
|
||||||
memory_region_add_subregion(&s->container, PCIE500_CFGDATA, &h->data_mem);
|
memory_region_add_subregion(&s->container, PCIE500_CFGDATA, &h->data_mem);
|
||||||
|
|
|
@ -125,20 +125,20 @@ static void raven_pcihost_realizefn(DeviceState *d, Error **errp)
|
||||||
|
|
||||||
pci_bus_irqs(&s->pci_bus, prep_set_irq, prep_map_irq, s->irq, 4);
|
pci_bus_irqs(&s->pci_bus, prep_set_irq, prep_map_irq, s->irq, 4);
|
||||||
|
|
||||||
memory_region_init_io(&h->conf_mem, NULL, &pci_host_conf_be_ops, s,
|
memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_be_ops, s,
|
||||||
"pci-conf-idx", 1);
|
"pci-conf-idx", 1);
|
||||||
sysbus_add_io(dev, 0xcf8, &h->conf_mem);
|
sysbus_add_io(dev, 0xcf8, &h->conf_mem);
|
||||||
sysbus_init_ioports(&h->busdev, 0xcf8, 1);
|
sysbus_init_ioports(&h->busdev, 0xcf8, 1);
|
||||||
|
|
||||||
memory_region_init_io(&h->data_mem, NULL, &pci_host_data_be_ops, s,
|
memory_region_init_io(&h->data_mem, OBJECT(h), &pci_host_data_be_ops, s,
|
||||||
"pci-conf-data", 1);
|
"pci-conf-data", 1);
|
||||||
sysbus_add_io(dev, 0xcfc, &h->data_mem);
|
sysbus_add_io(dev, 0xcfc, &h->data_mem);
|
||||||
sysbus_init_ioports(&h->busdev, 0xcfc, 1);
|
sysbus_init_ioports(&h->busdev, 0xcfc, 1);
|
||||||
|
|
||||||
memory_region_init_io(&h->mmcfg, NULL, &PPC_PCIIO_ops, s, "pciio", 0x00400000);
|
memory_region_init_io(&h->mmcfg, OBJECT(s), &PPC_PCIIO_ops, s, "pciio", 0x00400000);
|
||||||
memory_region_add_subregion(address_space_mem, 0x80800000, &h->mmcfg);
|
memory_region_add_subregion(address_space_mem, 0x80800000, &h->mmcfg);
|
||||||
|
|
||||||
memory_region_init_io(&s->intack, NULL, &PPC_intack_ops, s, "pci-intack", 1);
|
memory_region_init_io(&s->intack, OBJECT(s), &PPC_intack_ops, s, "pci-intack", 1);
|
||||||
memory_region_add_subregion(address_space_mem, 0xbffffff0, &s->intack);
|
memory_region_add_subregion(address_space_mem, 0xbffffff0, &s->intack);
|
||||||
|
|
||||||
/* TODO Remove once realize propagates to child devices. */
|
/* TODO Remove once realize propagates to child devices. */
|
||||||
|
|
|
@ -40,12 +40,12 @@ static int q35_host_init(SysBusDevice *dev)
|
||||||
PCIHostState *pci = FROM_SYSBUS(PCIHostState, dev);
|
PCIHostState *pci = FROM_SYSBUS(PCIHostState, dev);
|
||||||
Q35PCIHost *s = Q35_HOST_DEVICE(&dev->qdev);
|
Q35PCIHost *s = Q35_HOST_DEVICE(&dev->qdev);
|
||||||
|
|
||||||
memory_region_init_io(&pci->conf_mem, NULL, &pci_host_conf_le_ops, pci,
|
memory_region_init_io(&pci->conf_mem, OBJECT(pci), &pci_host_conf_le_ops, pci,
|
||||||
"pci-conf-idx", 4);
|
"pci-conf-idx", 4);
|
||||||
sysbus_add_io(dev, MCH_HOST_BRIDGE_CONFIG_ADDR, &pci->conf_mem);
|
sysbus_add_io(dev, MCH_HOST_BRIDGE_CONFIG_ADDR, &pci->conf_mem);
|
||||||
sysbus_init_ioports(&pci->busdev, MCH_HOST_BRIDGE_CONFIG_ADDR, 4);
|
sysbus_init_ioports(&pci->busdev, MCH_HOST_BRIDGE_CONFIG_ADDR, 4);
|
||||||
|
|
||||||
memory_region_init_io(&pci->data_mem, NULL, &pci_host_data_le_ops, pci,
|
memory_region_init_io(&pci->data_mem, OBJECT(pci), &pci_host_data_le_ops, pci,
|
||||||
"pci-conf-data", 4);
|
"pci-conf-data", 4);
|
||||||
sysbus_add_io(dev, MCH_HOST_BRIDGE_CONFIG_DATA, &pci->data_mem);
|
sysbus_add_io(dev, MCH_HOST_BRIDGE_CONFIG_DATA, &pci->data_mem);
|
||||||
sysbus_init_ioports(&pci->busdev, MCH_HOST_BRIDGE_CONFIG_DATA, 4);
|
sysbus_init_ioports(&pci->busdev, MCH_HOST_BRIDGE_CONFIG_DATA, 4);
|
||||||
|
@ -245,7 +245,7 @@ static int mch_init(PCIDevice *d)
|
||||||
MCHPCIState *mch = MCH_PCI_DEVICE(d);
|
MCHPCIState *mch = MCH_PCI_DEVICE(d);
|
||||||
|
|
||||||
/* setup pci memory regions */
|
/* setup pci memory regions */
|
||||||
memory_region_init_alias(&mch->pci_hole, NULL, "pci-hole",
|
memory_region_init_alias(&mch->pci_hole, OBJECT(mch), "pci-hole",
|
||||||
mch->pci_address_space,
|
mch->pci_address_space,
|
||||||
mch->below_4g_mem_size,
|
mch->below_4g_mem_size,
|
||||||
0x100000000ULL - mch->below_4g_mem_size);
|
0x100000000ULL - mch->below_4g_mem_size);
|
||||||
|
@ -253,7 +253,7 @@ static int mch_init(PCIDevice *d)
|
||||||
&mch->pci_hole);
|
&mch->pci_hole);
|
||||||
pci_hole64_size = (sizeof(hwaddr) == 4 ? 0 :
|
pci_hole64_size = (sizeof(hwaddr) == 4 ? 0 :
|
||||||
((uint64_t)1 << 62));
|
((uint64_t)1 << 62));
|
||||||
memory_region_init_alias(&mch->pci_hole_64bit, NULL, "pci-hole64",
|
memory_region_init_alias(&mch->pci_hole_64bit, OBJECT(mch), "pci-hole64",
|
||||||
mch->pci_address_space,
|
mch->pci_address_space,
|
||||||
0x100000000ULL + mch->above_4g_mem_size,
|
0x100000000ULL + mch->above_4g_mem_size,
|
||||||
pci_hole64_size);
|
pci_hole64_size);
|
||||||
|
@ -264,7 +264,7 @@ static int mch_init(PCIDevice *d)
|
||||||
}
|
}
|
||||||
/* smram */
|
/* smram */
|
||||||
cpu_smm_register(&mch_set_smm, mch);
|
cpu_smm_register(&mch_set_smm, mch);
|
||||||
memory_region_init_alias(&mch->smram_region, NULL, "smram-region",
|
memory_region_init_alias(&mch->smram_region, OBJECT(mch), "smram-region",
|
||||||
mch->pci_address_space, 0xa0000, 0x20000);
|
mch->pci_address_space, 0xa0000, 0x20000);
|
||||||
memory_region_add_subregion_overlap(mch->system_memory, 0xa0000,
|
memory_region_add_subregion_overlap(mch->system_memory, 0xa0000,
|
||||||
&mch->smram_region, 1);
|
&mch->smram_region, 1);
|
||||||
|
|
|
@ -152,9 +152,9 @@ static int pci_unin_main_init_device(SysBusDevice *dev)
|
||||||
/* Uninorth main bus */
|
/* Uninorth main bus */
|
||||||
h = PCI_HOST_BRIDGE(dev);
|
h = PCI_HOST_BRIDGE(dev);
|
||||||
|
|
||||||
memory_region_init_io(&h->conf_mem, NULL, &pci_host_conf_le_ops,
|
memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_le_ops,
|
||||||
dev, "pci-conf-idx", 0x1000);
|
dev, "pci-conf-idx", 0x1000);
|
||||||
memory_region_init_io(&h->data_mem, NULL, &unin_data_ops, dev,
|
memory_region_init_io(&h->data_mem, OBJECT(h), &unin_data_ops, dev,
|
||||||
"pci-conf-data", 0x1000);
|
"pci-conf-data", 0x1000);
|
||||||
sysbus_init_mmio(dev, &h->conf_mem);
|
sysbus_init_mmio(dev, &h->conf_mem);
|
||||||
sysbus_init_mmio(dev, &h->data_mem);
|
sysbus_init_mmio(dev, &h->data_mem);
|
||||||
|
@ -170,9 +170,9 @@ static int pci_u3_agp_init_device(SysBusDevice *dev)
|
||||||
/* Uninorth U3 AGP bus */
|
/* Uninorth U3 AGP bus */
|
||||||
h = PCI_HOST_BRIDGE(dev);
|
h = PCI_HOST_BRIDGE(dev);
|
||||||
|
|
||||||
memory_region_init_io(&h->conf_mem, NULL, &pci_host_conf_le_ops,
|
memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_le_ops,
|
||||||
dev, "pci-conf-idx", 0x1000);
|
dev, "pci-conf-idx", 0x1000);
|
||||||
memory_region_init_io(&h->data_mem, NULL, &unin_data_ops, dev,
|
memory_region_init_io(&h->data_mem, OBJECT(h), &unin_data_ops, dev,
|
||||||
"pci-conf-data", 0x1000);
|
"pci-conf-data", 0x1000);
|
||||||
sysbus_init_mmio(dev, &h->conf_mem);
|
sysbus_init_mmio(dev, &h->conf_mem);
|
||||||
sysbus_init_mmio(dev, &h->data_mem);
|
sysbus_init_mmio(dev, &h->data_mem);
|
||||||
|
@ -187,9 +187,9 @@ static int pci_unin_agp_init_device(SysBusDevice *dev)
|
||||||
/* Uninorth AGP bus */
|
/* Uninorth AGP bus */
|
||||||
h = PCI_HOST_BRIDGE(dev);
|
h = PCI_HOST_BRIDGE(dev);
|
||||||
|
|
||||||
memory_region_init_io(&h->conf_mem, NULL, &pci_host_conf_le_ops,
|
memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_le_ops,
|
||||||
dev, "pci-conf-idx", 0x1000);
|
dev, "pci-conf-idx", 0x1000);
|
||||||
memory_region_init_io(&h->data_mem, NULL, &pci_host_data_le_ops,
|
memory_region_init_io(&h->data_mem, OBJECT(h), &pci_host_data_le_ops,
|
||||||
dev, "pci-conf-data", 0x1000);
|
dev, "pci-conf-data", 0x1000);
|
||||||
sysbus_init_mmio(dev, &h->conf_mem);
|
sysbus_init_mmio(dev, &h->conf_mem);
|
||||||
sysbus_init_mmio(dev, &h->data_mem);
|
sysbus_init_mmio(dev, &h->data_mem);
|
||||||
|
@ -203,9 +203,9 @@ static int pci_unin_internal_init_device(SysBusDevice *dev)
|
||||||
/* Uninorth internal bus */
|
/* Uninorth internal bus */
|
||||||
h = PCI_HOST_BRIDGE(dev);
|
h = PCI_HOST_BRIDGE(dev);
|
||||||
|
|
||||||
memory_region_init_io(&h->conf_mem, NULL, &pci_host_conf_le_ops,
|
memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_le_ops,
|
||||||
dev, "pci-conf-idx", 0x1000);
|
dev, "pci-conf-idx", 0x1000);
|
||||||
memory_region_init_io(&h->data_mem, NULL, &pci_host_data_le_ops,
|
memory_region_init_io(&h->data_mem, OBJECT(h), &pci_host_data_le_ops,
|
||||||
dev, "pci-conf-data", 0x1000);
|
dev, "pci-conf-data", 0x1000);
|
||||||
sysbus_init_mmio(dev, &h->conf_mem);
|
sysbus_init_mmio(dev, &h->conf_mem);
|
||||||
sysbus_init_mmio(dev, &h->data_mem);
|
sysbus_init_mmio(dev, &h->data_mem);
|
||||||
|
@ -228,8 +228,8 @@ PCIBus *pci_pmac_init(qemu_irq *pic,
|
||||||
s = SYS_BUS_DEVICE(dev);
|
s = SYS_BUS_DEVICE(dev);
|
||||||
h = PCI_HOST_BRIDGE(s);
|
h = PCI_HOST_BRIDGE(s);
|
||||||
d = UNI_NORTH_PCI_HOST_BRIDGE(dev);
|
d = UNI_NORTH_PCI_HOST_BRIDGE(dev);
|
||||||
memory_region_init(&d->pci_mmio, NULL, "pci-mmio", 0x100000000ULL);
|
memory_region_init(&d->pci_mmio, OBJECT(d), "pci-mmio", 0x100000000ULL);
|
||||||
memory_region_init_alias(&d->pci_hole, NULL, "pci-hole", &d->pci_mmio,
|
memory_region_init_alias(&d->pci_hole, OBJECT(d), "pci-hole", &d->pci_mmio,
|
||||||
0x80000000ULL, 0x70000000ULL);
|
0x80000000ULL, 0x70000000ULL);
|
||||||
memory_region_add_subregion(address_space_mem, 0x80000000ULL,
|
memory_region_add_subregion(address_space_mem, 0x80000000ULL,
|
||||||
&d->pci_hole);
|
&d->pci_hole);
|
||||||
|
@ -294,8 +294,8 @@ PCIBus *pci_pmac_u3_init(qemu_irq *pic,
|
||||||
h = PCI_HOST_BRIDGE(dev);
|
h = PCI_HOST_BRIDGE(dev);
|
||||||
d = U3_AGP_HOST_BRIDGE(dev);
|
d = U3_AGP_HOST_BRIDGE(dev);
|
||||||
|
|
||||||
memory_region_init(&d->pci_mmio, NULL, "pci-mmio", 0x100000000ULL);
|
memory_region_init(&d->pci_mmio, OBJECT(d), "pci-mmio", 0x100000000ULL);
|
||||||
memory_region_init_alias(&d->pci_hole, NULL, "pci-hole", &d->pci_mmio,
|
memory_region_init_alias(&d->pci_hole, OBJECT(d), "pci-hole", &d->pci_mmio,
|
||||||
0x80000000ULL, 0x70000000ULL);
|
0x80000000ULL, 0x70000000ULL);
|
||||||
memory_region_add_subregion(address_space_mem, 0x80000000ULL,
|
memory_region_add_subregion(address_space_mem, 0x80000000ULL,
|
||||||
&d->pci_hole);
|
&d->pci_hole);
|
||||||
|
|
|
@ -381,8 +381,8 @@ static void pci_vpb_init(Object *obj)
|
||||||
PCIHostState *h = PCI_HOST_BRIDGE(obj);
|
PCIHostState *h = PCI_HOST_BRIDGE(obj);
|
||||||
PCIVPBState *s = PCI_VPB(obj);
|
PCIVPBState *s = PCI_VPB(obj);
|
||||||
|
|
||||||
memory_region_init(&s->pci_io_space, NULL, "pci_io", 1ULL << 32);
|
memory_region_init(&s->pci_io_space, OBJECT(s), "pci_io", 1ULL << 32);
|
||||||
memory_region_init(&s->pci_mem_space, NULL, "pci_mem", 1ULL << 32);
|
memory_region_init(&s->pci_mem_space, OBJECT(s), "pci_mem", 1ULL << 32);
|
||||||
|
|
||||||
pci_bus_new_inplace(&s->pci_bus, DEVICE(obj), "pci",
|
pci_bus_new_inplace(&s->pci_bus, DEVICE(obj), "pci",
|
||||||
&s->pci_mem_space, &s->pci_io_space,
|
&s->pci_mem_space, &s->pci_io_space,
|
||||||
|
@ -424,20 +424,20 @@ static void pci_vpb_realize(DeviceState *dev, Error **errp)
|
||||||
* 3 : PCI IO window
|
* 3 : PCI IO window
|
||||||
* 4..6 : PCI memory windows
|
* 4..6 : PCI memory windows
|
||||||
*/
|
*/
|
||||||
memory_region_init_io(&s->controlregs, NULL, &pci_vpb_reg_ops, s, "pci-vpb-regs",
|
memory_region_init_io(&s->controlregs, OBJECT(s), &pci_vpb_reg_ops, s,
|
||||||
0x1000);
|
"pci-vpb-regs", 0x1000);
|
||||||
sysbus_init_mmio(sbd, &s->controlregs);
|
sysbus_init_mmio(sbd, &s->controlregs);
|
||||||
memory_region_init_io(&s->mem_config, NULL, &pci_vpb_config_ops, s,
|
memory_region_init_io(&s->mem_config, OBJECT(s), &pci_vpb_config_ops, s,
|
||||||
"pci-vpb-selfconfig", 0x1000000);
|
"pci-vpb-selfconfig", 0x1000000);
|
||||||
sysbus_init_mmio(sbd, &s->mem_config);
|
sysbus_init_mmio(sbd, &s->mem_config);
|
||||||
memory_region_init_io(&s->mem_config2, NULL, &pci_vpb_config_ops, s,
|
memory_region_init_io(&s->mem_config2, OBJECT(s), &pci_vpb_config_ops, s,
|
||||||
"pci-vpb-config", 0x1000000);
|
"pci-vpb-config", 0x1000000);
|
||||||
sysbus_init_mmio(sbd, &s->mem_config2);
|
sysbus_init_mmio(sbd, &s->mem_config2);
|
||||||
|
|
||||||
/* The window into I/O space is always into a fixed base address;
|
/* The window into I/O space is always into a fixed base address;
|
||||||
* its size is the same for both realview and versatile.
|
* its size is the same for both realview and versatile.
|
||||||
*/
|
*/
|
||||||
memory_region_init_alias(&s->pci_io_window, NULL, "pci-vbp-io-window",
|
memory_region_init_alias(&s->pci_io_window, OBJECT(s), "pci-vbp-io-window",
|
||||||
&s->pci_io_space, 0, 0x100000);
|
&s->pci_io_space, 0, 0x100000);
|
||||||
|
|
||||||
sysbus_init_mmio(sbd, &s->pci_io_space);
|
sysbus_init_mmio(sbd, &s->pci_io_space);
|
||||||
|
@ -447,7 +447,7 @@ static void pci_vpb_realize(DeviceState *dev, Error **errp)
|
||||||
* offsets are guest controllable via the IMAP registers.
|
* offsets are guest controllable via the IMAP registers.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
memory_region_init_alias(&s->pci_mem_window[i], NULL, "pci-vbp-window",
|
memory_region_init_alias(&s->pci_mem_window[i], OBJECT(s), "pci-vbp-window",
|
||||||
&s->pci_mem_space, 0, s->mem_win_size[i]);
|
&s->pci_mem_space, 0, s->mem_win_size[i]);
|
||||||
sysbus_init_mmio(sbd, &s->pci_mem_window[i]);
|
sysbus_init_mmio(sbd, &s->pci_mem_window[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -280,10 +280,10 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries,
|
||||||
|
|
||||||
msix_mask_all(dev, nentries);
|
msix_mask_all(dev, nentries);
|
||||||
|
|
||||||
memory_region_init_io(&dev->msix_table_mmio, NULL, &msix_table_mmio_ops, dev,
|
memory_region_init_io(&dev->msix_table_mmio, OBJECT(dev), &msix_table_mmio_ops, dev,
|
||||||
"msix-table", table_size);
|
"msix-table", table_size);
|
||||||
memory_region_add_subregion(table_bar, table_offset, &dev->msix_table_mmio);
|
memory_region_add_subregion(table_bar, table_offset, &dev->msix_table_mmio);
|
||||||
memory_region_init_io(&dev->msix_pba_mmio, NULL, &msix_pba_mmio_ops, dev,
|
memory_region_init_io(&dev->msix_pba_mmio, OBJECT(dev), &msix_pba_mmio_ops, dev,
|
||||||
"msix-pba", pba_size);
|
"msix-pba", pba_size);
|
||||||
memory_region_add_subregion(pba_bar, pba_offset, &dev->msix_pba_mmio);
|
memory_region_add_subregion(pba_bar, pba_offset, &dev->msix_pba_mmio);
|
||||||
|
|
||||||
|
@ -311,7 +311,7 @@ int msix_init_exclusive_bar(PCIDevice *dev, unsigned short nentries,
|
||||||
}
|
}
|
||||||
|
|
||||||
name = g_strdup_printf("%s-msix", dev->name);
|
name = g_strdup_printf("%s-msix", dev->name);
|
||||||
memory_region_init(&dev->msix_exclusive_bar, NULL, name, MSIX_EXCLUSIVE_BAR_SIZE);
|
memory_region_init(&dev->msix_exclusive_bar, OBJECT(dev), name, MSIX_EXCLUSIVE_BAR_SIZE);
|
||||||
g_free(name);
|
g_free(name);
|
||||||
|
|
||||||
ret = msix_init(dev, nentries, &dev->msix_exclusive_bar, bar_nr,
|
ret = msix_init(dev, nentries, &dev->msix_exclusive_bar, bar_nr,
|
||||||
|
|
|
@ -811,7 +811,8 @@ static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus,
|
||||||
dma_as = &address_space_memory;
|
dma_as = &address_space_memory;
|
||||||
}
|
}
|
||||||
|
|
||||||
memory_region_init_alias(&pci_dev->bus_master_enable_region, NULL, "bus master",
|
memory_region_init_alias(&pci_dev->bus_master_enable_region,
|
||||||
|
OBJECT(pci_dev), "bus master",
|
||||||
dma_as->root, 0, memory_region_size(dma_as->root));
|
dma_as->root, 0, memory_region_size(dma_as->root));
|
||||||
memory_region_set_enabled(&pci_dev->bus_master_enable_region, false);
|
memory_region_set_enabled(&pci_dev->bus_master_enable_region, false);
|
||||||
address_space_init(&pci_dev->bus_master_as, &pci_dev->bus_master_enable_region,
|
address_space_init(&pci_dev->bus_master_as, &pci_dev->bus_master_enable_region,
|
||||||
|
@ -1945,7 +1946,7 @@ static int pci_add_option_rom(PCIDevice *pdev, bool is_default_rom)
|
||||||
snprintf(name, sizeof(name), "%s.rom", object_get_typename(OBJECT(pdev)));
|
snprintf(name, sizeof(name), "%s.rom", object_get_typename(OBJECT(pdev)));
|
||||||
}
|
}
|
||||||
pdev->has_rom = true;
|
pdev->has_rom = true;
|
||||||
memory_region_init_ram(&pdev->rom, NULL, name, size);
|
memory_region_init_ram(&pdev->rom, OBJECT(pdev), name, size);
|
||||||
vmstate_register_ram(&pdev->rom, &pdev->qdev);
|
vmstate_register_ram(&pdev->rom, &pdev->qdev);
|
||||||
ptr = memory_region_get_ram_ptr(&pdev->rom);
|
ptr = memory_region_get_ram_ptr(&pdev->rom);
|
||||||
load_image(path, ptr);
|
load_image(path, ptr);
|
||||||
|
|
|
@ -147,7 +147,7 @@ static void pci_bridge_init_alias(PCIBridge *bridge, MemoryRegion *alias,
|
||||||
* Apparently no way to do this with existing memory APIs. */
|
* Apparently no way to do this with existing memory APIs. */
|
||||||
pcibus_t size = enabled && limit >= base ? limit + 1 - base : 0;
|
pcibus_t size = enabled && limit >= base ? limit + 1 - base : 0;
|
||||||
|
|
||||||
memory_region_init_alias(alias, NULL, name, space, base, size);
|
memory_region_init_alias(alias, OBJECT(bridge), name, space, base, size);
|
||||||
memory_region_add_subregion_overlap(parent_space, base, alias, 1);
|
memory_region_add_subregion_overlap(parent_space, base, alias, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,13 +156,13 @@ static void pci_bridge_init_vga_aliases(PCIBridge *br, PCIBus *parent,
|
||||||
{
|
{
|
||||||
uint16_t brctl = pci_get_word(br->dev.config + PCI_BRIDGE_CONTROL);
|
uint16_t brctl = pci_get_word(br->dev.config + PCI_BRIDGE_CONTROL);
|
||||||
|
|
||||||
memory_region_init_alias(&alias_vga[QEMU_PCI_VGA_IO_LO], NULL,
|
memory_region_init_alias(&alias_vga[QEMU_PCI_VGA_IO_LO], OBJECT(br),
|
||||||
"pci_bridge_vga_io_lo", &br->address_space_io,
|
"pci_bridge_vga_io_lo", &br->address_space_io,
|
||||||
QEMU_PCI_VGA_IO_LO_BASE, QEMU_PCI_VGA_IO_LO_SIZE);
|
QEMU_PCI_VGA_IO_LO_BASE, QEMU_PCI_VGA_IO_LO_SIZE);
|
||||||
memory_region_init_alias(&alias_vga[QEMU_PCI_VGA_IO_HI], NULL,
|
memory_region_init_alias(&alias_vga[QEMU_PCI_VGA_IO_HI], OBJECT(br),
|
||||||
"pci_bridge_vga_io_hi", &br->address_space_io,
|
"pci_bridge_vga_io_hi", &br->address_space_io,
|
||||||
QEMU_PCI_VGA_IO_HI_BASE, QEMU_PCI_VGA_IO_HI_SIZE);
|
QEMU_PCI_VGA_IO_HI_BASE, QEMU_PCI_VGA_IO_HI_SIZE);
|
||||||
memory_region_init_alias(&alias_vga[QEMU_PCI_VGA_MEM], NULL,
|
memory_region_init_alias(&alias_vga[QEMU_PCI_VGA_MEM], OBJECT(br),
|
||||||
"pci_bridge_vga_mem", &br->address_space_mem,
|
"pci_bridge_vga_mem", &br->address_space_mem,
|
||||||
QEMU_PCI_VGA_MEM_BASE, QEMU_PCI_VGA_MEM_SIZE);
|
QEMU_PCI_VGA_MEM_BASE, QEMU_PCI_VGA_MEM_SIZE);
|
||||||
|
|
||||||
|
@ -367,9 +367,9 @@ int pci_bridge_initfn(PCIDevice *dev, const char *typename)
|
||||||
sec_bus->parent_dev = dev;
|
sec_bus->parent_dev = dev;
|
||||||
sec_bus->map_irq = br->map_irq ? br->map_irq : pci_swizzle_map_irq_fn;
|
sec_bus->map_irq = br->map_irq ? br->map_irq : pci_swizzle_map_irq_fn;
|
||||||
sec_bus->address_space_mem = &br->address_space_mem;
|
sec_bus->address_space_mem = &br->address_space_mem;
|
||||||
memory_region_init(&br->address_space_mem, NULL, "pci_bridge_pci", INT64_MAX);
|
memory_region_init(&br->address_space_mem, OBJECT(br), "pci_bridge_pci", INT64_MAX);
|
||||||
sec_bus->address_space_io = &br->address_space_io;
|
sec_bus->address_space_io = &br->address_space_io;
|
||||||
memory_region_init(&br->address_space_io, NULL, "pci_bridge_io", 65536);
|
memory_region_init(&br->address_space_io, OBJECT(br), "pci_bridge_io", 65536);
|
||||||
br->windows = pci_bridge_region_init(br);
|
br->windows = pci_bridge_region_init(br);
|
||||||
QLIST_INIT(&sec_bus->child);
|
QLIST_INIT(&sec_bus->child);
|
||||||
QLIST_INSERT_HEAD(&parent->child, sec_bus, sibling);
|
QLIST_INSERT_HEAD(&parent->child, sec_bus, sibling);
|
||||||
|
|
|
@ -130,7 +130,8 @@ void pcie_host_mmcfg_map(PCIExpressHost *e, hwaddr addr,
|
||||||
assert(size >= PCIE_MMCFG_SIZE_MIN);
|
assert(size >= PCIE_MMCFG_SIZE_MIN);
|
||||||
assert(size <= PCIE_MMCFG_SIZE_MAX);
|
assert(size <= PCIE_MMCFG_SIZE_MAX);
|
||||||
e->size = size;
|
e->size = size;
|
||||||
memory_region_init_io(&e->mmio, NULL, &pcie_mmcfg_ops, e, "pcie-mmcfg", e->size);
|
memory_region_init_io(&e->mmio, OBJECT(e), &pcie_mmcfg_ops, e,
|
||||||
|
"pcie-mmcfg", e->size);
|
||||||
e->base_addr = addr;
|
e->base_addr = addr;
|
||||||
memory_region_add_subregion(get_system_memory(), e->base_addr, &e->mmio);
|
memory_region_add_subregion(get_system_memory(), e->base_addr, &e->mmio);
|
||||||
}
|
}
|
||||||
|
|
|
@ -612,8 +612,8 @@ int shpc_init(PCIDevice *d, PCIBus *sec_bus, MemoryRegion *bar, unsigned offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: init cmask */
|
/* TODO: init cmask */
|
||||||
memory_region_init_io(&shpc->mmio, NULL, &shpc_mmio_ops, d, "shpc-mmio",
|
memory_region_init_io(&shpc->mmio, OBJECT(d), &shpc_mmio_ops,
|
||||||
SHPC_SIZEOF(d));
|
d, "shpc-mmio", SHPC_SIZEOF(d));
|
||||||
shpc_cap_update_dword(d);
|
shpc_cap_update_dword(d);
|
||||||
memory_region_add_subregion(bar, offset, &shpc->mmio);
|
memory_region_add_subregion(bar, offset, &shpc->mmio);
|
||||||
pci_bus_hotplug(sec_bus, shpc_device_hotplug, &d->qdev);
|
pci_bus_hotplug(sec_bus, shpc_device_hotplug, &d->qdev);
|
||||||
|
|
|
@ -783,7 +783,7 @@ static int e500_ccsr_initfn(SysBusDevice *dev)
|
||||||
PPCE500CCSRState *ccsr;
|
PPCE500CCSRState *ccsr;
|
||||||
|
|
||||||
ccsr = CCSR(dev);
|
ccsr = CCSR(dev);
|
||||||
memory_region_init(&ccsr->ccsr_space, NULL, "e500-ccsr",
|
memory_region_init(&ccsr->ccsr_space, OBJECT(ccsr), "e500-ccsr",
|
||||||
MPC8544_CCSRBAR_SIZE);
|
MPC8544_CCSRBAR_SIZE);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,7 +119,7 @@ static void mpc8544_guts_initfn(Object *obj)
|
||||||
SysBusDevice *d = SYS_BUS_DEVICE(obj);
|
SysBusDevice *d = SYS_BUS_DEVICE(obj);
|
||||||
GutsState *s = MPC8544_GUTS(obj);
|
GutsState *s = MPC8544_GUTS(obj);
|
||||||
|
|
||||||
memory_region_init_io(&s->iomem, NULL, &mpc8544_guts_ops, s,
|
memory_region_init_io(&s->iomem, OBJECT(s), &mpc8544_guts_ops, s,
|
||||||
"mpc8544.guts", MPC8544_GUTS_MMIO_SIZE);
|
"mpc8544.guts", MPC8544_GUTS_MMIO_SIZE);
|
||||||
sysbus_init_mmio(d, &s->iomem);
|
sysbus_init_mmio(d, &s->iomem);
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,12 +355,12 @@ static int ppc4xx_pcihost_initfn(SysBusDevice *dev)
|
||||||
pci_create_simple(b, 0, "ppc4xx-host-bridge");
|
pci_create_simple(b, 0, "ppc4xx-host-bridge");
|
||||||
|
|
||||||
/* XXX split into 2 memory regions, one for config space, one for regs */
|
/* XXX split into 2 memory regions, one for config space, one for regs */
|
||||||
memory_region_init(&s->container, NULL, "pci-container", PCI_ALL_SIZE);
|
memory_region_init(&s->container, OBJECT(s), "pci-container", PCI_ALL_SIZE);
|
||||||
memory_region_init_io(&h->conf_mem, NULL, &pci_host_conf_le_ops, h,
|
memory_region_init_io(&h->conf_mem, OBJECT(s), &pci_host_conf_le_ops, h,
|
||||||
"pci-conf-idx", 4);
|
"pci-conf-idx", 4);
|
||||||
memory_region_init_io(&h->data_mem, NULL, &pci_host_data_le_ops, h,
|
memory_region_init_io(&h->data_mem, OBJECT(s), &pci_host_data_le_ops, h,
|
||||||
"pci-conf-data", 4);
|
"pci-conf-data", 4);
|
||||||
memory_region_init_io(&s->iomem, NULL, &pci_reg_ops, s,
|
memory_region_init_io(&s->iomem, OBJECT(s), &pci_reg_ops, s,
|
||||||
"pci.reg", PCI_REG_SIZE);
|
"pci.reg", PCI_REG_SIZE);
|
||||||
memory_region_add_subregion(&s->container, PCIC0_CFGADDR, &h->conf_mem);
|
memory_region_add_subregion(&s->container, PCIC0_CFGADDR, &h->conf_mem);
|
||||||
memory_region_add_subregion(&s->container, PCIC0_CFGDATA, &h->data_mem);
|
memory_region_add_subregion(&s->container, PCIC0_CFGDATA, &h->data_mem);
|
||||||
|
|
|
@ -191,8 +191,8 @@ static int ppce500_spin_initfn(SysBusDevice *dev)
|
||||||
|
|
||||||
s = FROM_SYSBUS(SpinState, SYS_BUS_DEVICE(dev));
|
s = FROM_SYSBUS(SpinState, SYS_BUS_DEVICE(dev));
|
||||||
|
|
||||||
memory_region_init_io(&s->iomem, NULL, &spin_rw_ops, s, "e500 spin pv device",
|
memory_region_init_io(&s->iomem, OBJECT(s), &spin_rw_ops, s,
|
||||||
sizeof(SpinInfo) * MAX_CPUS);
|
"e500 spin pv device", sizeof(SpinInfo) * MAX_CPUS);
|
||||||
sysbus_init_mmio(dev, &s->iomem);
|
sysbus_init_mmio(dev, &s->iomem);
|
||||||
|
|
||||||
qemu_register_reset(spin_reset, s);
|
qemu_register_reset(spin_reset, s);
|
||||||
|
|
|
@ -581,10 +581,11 @@ static int spapr_phb_init(SysBusDevice *s)
|
||||||
|
|
||||||
/* Initialize memory regions */
|
/* Initialize memory regions */
|
||||||
sprintf(namebuf, "%s.mmio", sphb->dtbusname);
|
sprintf(namebuf, "%s.mmio", sphb->dtbusname);
|
||||||
memory_region_init(&sphb->memspace, NULL, namebuf, INT64_MAX);
|
memory_region_init(&sphb->memspace, OBJECT(sphb), namebuf, INT64_MAX);
|
||||||
|
|
||||||
sprintf(namebuf, "%s.mmio-alias", sphb->dtbusname);
|
sprintf(namebuf, "%s.mmio-alias", sphb->dtbusname);
|
||||||
memory_region_init_alias(&sphb->memwindow, NULL, namebuf, &sphb->memspace,
|
memory_region_init_alias(&sphb->memwindow, OBJECT(sphb),
|
||||||
|
namebuf, &sphb->memspace,
|
||||||
SPAPR_PCI_MEM_WIN_BUS_OFFSET, sphb->mem_win_size);
|
SPAPR_PCI_MEM_WIN_BUS_OFFSET, sphb->mem_win_size);
|
||||||
memory_region_add_subregion(get_system_memory(), sphb->mem_win_addr,
|
memory_region_add_subregion(get_system_memory(), sphb->mem_win_addr,
|
||||||
&sphb->memwindow);
|
&sphb->memwindow);
|
||||||
|
@ -598,12 +599,13 @@ static int spapr_phb_init(SysBusDevice *s)
|
||||||
* system_io works around the problem until all the users of
|
* system_io works around the problem until all the users of
|
||||||
* old_portion are updated */
|
* old_portion are updated */
|
||||||
sprintf(namebuf, "%s.io", sphb->dtbusname);
|
sprintf(namebuf, "%s.io", sphb->dtbusname);
|
||||||
memory_region_init(&sphb->iospace, NULL, namebuf, SPAPR_PCI_IO_WIN_SIZE);
|
memory_region_init(&sphb->iospace, OBJECT(sphb),
|
||||||
|
namebuf, SPAPR_PCI_IO_WIN_SIZE);
|
||||||
/* FIXME: fix to support multiple PHBs */
|
/* FIXME: fix to support multiple PHBs */
|
||||||
memory_region_add_subregion(get_system_io(), 0, &sphb->iospace);
|
memory_region_add_subregion(get_system_io(), 0, &sphb->iospace);
|
||||||
|
|
||||||
sprintf(namebuf, "%s.io-alias", sphb->dtbusname);
|
sprintf(namebuf, "%s.io-alias", sphb->dtbusname);
|
||||||
memory_region_init_io(&sphb->iowindow, NULL, &spapr_io_ops, sphb,
|
memory_region_init_io(&sphb->iowindow, OBJECT(sphb), &spapr_io_ops, sphb,
|
||||||
namebuf, SPAPR_PCI_IO_WIN_SIZE);
|
namebuf, SPAPR_PCI_IO_WIN_SIZE);
|
||||||
memory_region_add_subregion(get_system_memory(), sphb->io_win_addr,
|
memory_region_add_subregion(get_system_memory(), sphb->io_win_addr,
|
||||||
&sphb->iowindow);
|
&sphb->iowindow);
|
||||||
|
@ -613,7 +615,7 @@ static int spapr_phb_init(SysBusDevice *s)
|
||||||
* from msi_notify()/msix_notify() */
|
* from msi_notify()/msix_notify() */
|
||||||
if (msi_supported) {
|
if (msi_supported) {
|
||||||
sprintf(namebuf, "%s.msi", sphb->dtbusname);
|
sprintf(namebuf, "%s.msi", sphb->dtbusname);
|
||||||
memory_region_init_io(&sphb->msiwindow, NULL, &spapr_msi_ops, sphb,
|
memory_region_init_io(&sphb->msiwindow, OBJECT(sphb), &spapr_msi_ops, sphb,
|
||||||
namebuf, SPAPR_MSIX_MAX_DEVS * 0x10000);
|
namebuf, SPAPR_MSIX_MAX_DEVS * 0x10000);
|
||||||
memory_region_add_subregion(get_system_memory(), sphb->msi_win_addr,
|
memory_region_add_subregion(get_system_memory(), sphb->msi_win_addr,
|
||||||
&sphb->msiwindow);
|
&sphb->msiwindow);
|
||||||
|
|
Loading…
Reference in a new issue