Skip to content

Commit

Permalink
pci: Allow PCI bus creation interfaces to specify the type of bus
Browse files Browse the repository at this point in the history
No change to any types.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
  • Loading branch information
awilliam authored and mstsirkin committed Mar 26, 2013
1 parent cf09458 commit 60a0e44
Show file tree
Hide file tree
Showing 24 changed files with 40 additions and 35 deletions.
2 changes: 1 addition & 1 deletion hw/alpha_typhoon.c
Expand Up @@ -775,7 +775,7 @@ PCIBus *typhoon_init(ram_addr_t ram_size, ISABus **isa_bus,

b = pci_register_bus(dev, "pci",
typhoon_set_irq, sys_map_irq, s,
&s->pchip.reg_mem, addr_space_io, 0, 64);
&s->pchip.reg_mem, addr_space_io, 0, 64, TYPE_PCI_BUS);
phb->bus = b;

/* Pchip0 PCI special/interrupt acknowledge, 0x801.F800.0000, 64MB. */
Expand Down
4 changes: 2 additions & 2 deletions hw/apb_pci.c
Expand Up @@ -329,7 +329,7 @@ static int apb_pci_bridge_initfn(PCIDevice *dev)
{
int rc;

rc = pci_bridge_initfn(dev);
rc = pci_bridge_initfn(dev, TYPE_PCI_BUS);
if (rc < 0) {
return rc;
}
Expand Down Expand Up @@ -381,7 +381,7 @@ PCIBus *pci_apb_init(hwaddr special_base,
pci_apb_set_irq, pci_pbm_map_irq, d,
&d->pci_mmio,
get_system_io(),
0, 32);
0, 32, TYPE_PCI_BUS);

*pbm_irqs = d->pbm_irqs;
d->ivec_irqs = ivec_irqs;
Expand Down
2 changes: 1 addition & 1 deletion hw/bonito.c
Expand Up @@ -707,7 +707,7 @@ static int bonito_pcihost_initfn(SysBusDevice *dev)
phb->bus = pci_register_bus(DEVICE(dev), "pci",
pci_bonito_set_irq, pci_bonito_map_irq, dev,
get_system_memory(), get_system_io(),
0x28, 32);
0x28, 32, TYPE_PCI_BUS);

return 0;
}
Expand Down
7 changes: 6 additions & 1 deletion hw/dec_pci.c
Expand Up @@ -51,12 +51,17 @@ static int dec_map_irq(PCIDevice *pci_dev, int irq_num)
return irq_num;
}

static int dec_pci_bridge_initfn(PCIDevice *pci_dev)
{
return pci_bridge_initfn(pci_dev, TYPE_PCI_BUS);
}

static void dec_21154_pci_bridge_class_init(ObjectClass *klass, void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);

k->init = pci_bridge_initfn;
k->init = dec_pci_bridge_initfn;
k->exit = pci_bridge_exitfn;
k->vendor_id = PCI_VENDOR_ID_DEC;
k->device_id = PCI_DEVICE_ID_DEC_21154;
Expand Down
2 changes: 1 addition & 1 deletion hw/grackle_pci.c
Expand Up @@ -88,7 +88,7 @@ PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic,
pic,
&d->pci_mmio,
address_space_io,
0, 4);
0, 4, TYPE_PCI_BUS);

pci_create_simple(phb->bus, 0, "grackle");

Expand Down
2 changes: 1 addition & 1 deletion hw/gt64xxx.c
Expand Up @@ -1107,7 +1107,7 @@ PCIBus *gt64120_register(qemu_irq *pic)
pic,
get_system_memory(),
get_system_io(),
PCI_DEVFN(18, 0), 4);
PCI_DEVFN(18, 0), 4, TYPE_PCI_BUS);
memory_region_init_io(&d->ISD_mem, &isd_mem_ops, d, "isd-mem", 0x1000);

pci_create_simple(phb->bus, PCI_DEVFN(0, 0), "gt64120_pci");
Expand Down
2 changes: 1 addition & 1 deletion hw/i82801b11.c
Expand Up @@ -59,7 +59,7 @@ static int i82801b11_bridge_initfn(PCIDevice *d)
{
int rc;

rc = pci_bridge_initfn(d);
rc = pci_bridge_initfn(d, TYPE_PCI_BUS);
if (rc < 0) {
return rc;
}
Expand Down
2 changes: 1 addition & 1 deletion hw/ioh3420.c
Expand Up @@ -97,7 +97,7 @@ static int ioh3420_initfn(PCIDevice *d)
PCIESlot *s = DO_UPCAST(PCIESlot, port, p);
int rc;

rc = pci_bridge_initfn(d);
rc = pci_bridge_initfn(d, TYPE_PCI_BUS);
if (rc < 0) {
return rc;
}
Expand Down
12 changes: 6 additions & 6 deletions hw/pci/pci.c
Expand Up @@ -301,21 +301,21 @@ void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent,
const char *name,
MemoryRegion *address_space_mem,
MemoryRegion *address_space_io,
uint8_t devfn_min)
uint8_t devfn_min, const char *typename)
{
qbus_create_inplace(bus, TYPE_PCI_BUS, parent, name);
qbus_create_inplace(bus, typename, parent, name);
pci_bus_init(bus, parent, name, address_space_mem,
address_space_io, devfn_min);
}

PCIBus *pci_bus_new(DeviceState *parent, const char *name,
MemoryRegion *address_space_mem,
MemoryRegion *address_space_io,
uint8_t devfn_min)
uint8_t devfn_min, const char *typename)
{
PCIBus *bus;

bus = PCI_BUS(qbus_create(TYPE_PCI_BUS, parent, name));
bus = PCI_BUS(qbus_create(typename, parent, name));
pci_bus_init(bus, parent, name, address_space_mem,
address_space_io, devfn_min);
return bus;
Expand Down Expand Up @@ -343,12 +343,12 @@ PCIBus *pci_register_bus(DeviceState *parent, const char *name,
void *irq_opaque,
MemoryRegion *address_space_mem,
MemoryRegion *address_space_io,
uint8_t devfn_min, int nirq)
uint8_t devfn_min, int nirq, const char *typename)
{
PCIBus *bus;

bus = pci_bus_new(parent, name, address_space_mem,
address_space_io, devfn_min);
address_space_io, devfn_min, typename);
pci_bus_irqs(bus, set_irq, map_irq, irq_opaque, nirq);
return bus;
}
Expand Down
6 changes: 3 additions & 3 deletions hw/pci/pci.h
Expand Up @@ -348,11 +348,11 @@ void pci_bus_new_inplace(PCIBus *bus, DeviceState *parent,
const char *name,
MemoryRegion *address_space_mem,
MemoryRegion *address_space_io,
uint8_t devfn_min);
uint8_t devfn_min, const char *typename);
PCIBus *pci_bus_new(DeviceState *parent, const char *name,
MemoryRegion *address_space_mem,
MemoryRegion *address_space_io,
uint8_t devfn_min);
uint8_t devfn_min, const char *typename);
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);
Expand All @@ -364,7 +364,7 @@ PCIBus *pci_register_bus(DeviceState *parent, const char *name,
void *irq_opaque,
MemoryRegion *address_space_mem,
MemoryRegion *address_space_io,
uint8_t devfn_min, int nirq);
uint8_t devfn_min, int nirq, const char *typename);
void pci_bus_set_route_irq_fn(PCIBus *, pci_route_irq_fn);
PCIINTxRoute pci_device_route_intx_to_irq(PCIDevice *dev, int pin);
bool pci_intx_route_changed(PCIINTxRoute *old, PCIINTxRoute *new);
Expand Down
5 changes: 2 additions & 3 deletions hw/pci/pci_bridge.c
Expand Up @@ -328,7 +328,7 @@ void pci_bridge_reset(DeviceState *qdev)
}

/* default qdev initialization function for PCI-to-PCI bridge */
int pci_bridge_initfn(PCIDevice *dev)
int pci_bridge_initfn(PCIDevice *dev, const char *typename)
{
PCIBus *parent = dev->bus;
PCIBridge *br = DO_UPCAST(PCIBridge, dev, dev);
Expand Down Expand Up @@ -363,8 +363,7 @@ int pci_bridge_initfn(PCIDevice *dev)
br->bus_name = dev->qdev.id;
}

qbus_create_inplace(&sec_bus->qbus, TYPE_PCI_BUS, &dev->qdev,
br->bus_name);
qbus_create_inplace(&sec_bus->qbus, typename, &dev->qdev, br->bus_name);
sec_bus->parent_dev = dev;
sec_bus->map_irq = br->map_irq ? br->map_irq : pci_swizzle_map_irq_fn;
sec_bus->address_space_mem = &br->address_space_mem;
Expand Down
2 changes: 1 addition & 1 deletion hw/pci/pci_bridge.h
Expand Up @@ -43,7 +43,7 @@ void pci_bridge_disable_base_limit(PCIDevice *dev);
void pci_bridge_reset_reg(PCIDevice *dev);
void pci_bridge_reset(DeviceState *qdev);

int pci_bridge_initfn(PCIDevice *pci_dev);
int pci_bridge_initfn(PCIDevice *pci_dev, const char *typename);
void pci_bridge_exitfn(PCIDevice *pci_dev);


Expand Down
2 changes: 1 addition & 1 deletion hw/pci_bridge_dev.c
Expand Up @@ -42,7 +42,7 @@ static int pci_bridge_dev_initfn(PCIDevice *dev)
PCIBridgeDev *bridge_dev = DO_UPCAST(PCIBridgeDev, bridge, br);
int err;

err = pci_bridge_initfn(dev);
err = pci_bridge_initfn(dev, TYPE_PCI_BUS);
if (err) {
goto bridge_error;
}
Expand Down
2 changes: 1 addition & 1 deletion hw/piix_pci.c
Expand Up @@ -245,7 +245,7 @@ static PCIBus *i440fx_common_init(const char *device_name,
dev = qdev_create(NULL, "i440FX-pcihost");
s = PCI_HOST_BRIDGE(dev);
b = pci_bus_new(dev, NULL, pci_address_space,
address_space_io, 0);
address_space_io, 0, TYPE_PCI_BUS);
s->bus = b;
object_property_add_child(qdev_get_machine(), "i440fx", OBJECT(dev), NULL);
qdev_init_nofail(dev);
Expand Down
2 changes: 1 addition & 1 deletion hw/ppc4xx_pci.c
Expand Up @@ -349,7 +349,7 @@ static int ppc4xx_pcihost_initfn(SysBusDevice *dev)

b = pci_register_bus(DEVICE(dev), NULL, ppc4xx_pci_set_irq,
ppc4xx_pci_map_irq, s->irq, get_system_memory(),
get_system_io(), 0, 4);
get_system_io(), 0, 4, TYPE_PCI_BUS);
h->bus = b;

pci_create_simple(b, 0, "ppc4xx-host-bridge");
Expand Down
2 changes: 1 addition & 1 deletion hw/ppce500_pci.c
Expand Up @@ -356,7 +356,7 @@ static int e500_pcihost_initfn(SysBusDevice *dev)

b = pci_register_bus(DEVICE(dev), NULL, mpc85xx_pci_set_irq,
mpc85xx_pci_map_irq, s->irq, address_space_mem,
&s->pio, PCI_DEVFN(s->first_slot, 0), 4);
&s->pio, PCI_DEVFN(s->first_slot, 0), 4, TYPE_PCI_BUS);
h->bus = b;

pci_create_simple(b, 0, "e500-host-bridge");
Expand Down
2 changes: 1 addition & 1 deletion hw/prep_pci.c
Expand Up @@ -154,7 +154,7 @@ static void raven_pcihost_initfn(Object *obj)
DeviceState *pci_dev;

pci_bus_new_inplace(&s->pci_bus, DEVICE(obj), NULL,
address_space_mem, address_space_io, 0);
address_space_mem, address_space_io, 0, TYPE_PCI_BUS);
h->bus = &s->pci_bus;

object_initialize(&s->pci_dev, TYPE_RAVEN_PCI_DEVICE);
Expand Down
3 changes: 2 additions & 1 deletion hw/q35.c
Expand Up @@ -54,7 +54,8 @@ static int q35_host_init(SysBusDevice *dev)
return -1;
}
b = pci_bus_new(&s->host.pci.busdev.qdev, "pcie.0",
s->mch.pci_address_space, s->mch.address_space_io, 0);
s->mch.pci_address_space, s->mch.address_space_io,
0, TYPE_PCI_BUS);
s->host.pci.bus = b;
qdev_set_parent_bus(DEVICE(&s->mch), BUS(b));
qdev_init_nofail(DEVICE(&s->mch));
Expand Down
2 changes: 1 addition & 1 deletion hw/sh_pci.c
Expand Up @@ -124,7 +124,7 @@ static int sh_pci_device_init(SysBusDevice *dev)
s->irq,
get_system_memory(),
get_system_io(),
PCI_DEVFN(0, 0), 4);
PCI_DEVFN(0, 0), 4, TYPE_PCI_BUS);
memory_region_init_io(&s->memconfig_p4, &sh_pci_reg_ops, s,
"sh_pci", 0x224);
memory_region_init_alias(&s->memconfig_a7, "sh_pci.2", &s->memconfig_p4,
Expand Down
2 changes: 1 addition & 1 deletion hw/spapr_pci.c
Expand Up @@ -624,7 +624,7 @@ static int spapr_phb_init(SysBusDevice *s)
bus = pci_register_bus(DEVICE(s), sphb->busname,
pci_spapr_set_irq, pci_spapr_map_irq, sphb,
&sphb->memspace, &sphb->iospace,
PCI_DEVFN(0, 0), PCI_NUM_PINS);
PCI_DEVFN(0, 0), PCI_NUM_PINS, TYPE_PCI_BUS);
phb->bus = bus;

sphb->dma_window_start = 0;
Expand Down
4 changes: 2 additions & 2 deletions hw/unin_pci.c
Expand Up @@ -239,7 +239,7 @@ PCIBus *pci_pmac_init(qemu_irq *pic,
pic,
&d->pci_mmio,
address_space_io,
PCI_DEVFN(11, 0), 4);
PCI_DEVFN(11, 0), 4, TYPE_PCI_BUS);

#if 0
pci_create_simple(h->bus, PCI_DEVFN(11, 0), "uni-north");
Expand Down Expand Up @@ -305,7 +305,7 @@ PCIBus *pci_pmac_u3_init(qemu_irq *pic,
pic,
&d->pci_mmio,
address_space_io,
PCI_DEVFN(11, 0), 4);
PCI_DEVFN(11, 0), 4, TYPE_PCI_BUS);

sysbus_mmio_map(s, 0, 0xf0800000);
sysbus_mmio_map(s, 1, 0xf0c00000);
Expand Down
2 changes: 1 addition & 1 deletion hw/versatile_pci.c
Expand Up @@ -70,7 +70,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(), get_system_io(),
PCI_DEVFN(11, 0), 4);
PCI_DEVFN(11, 0), 4, TYPE_PCI_BUS);

/* ??? Register memory space. */

Expand Down
2 changes: 1 addition & 1 deletion hw/xio3130_downstream.c
Expand Up @@ -61,7 +61,7 @@ static int xio3130_downstream_initfn(PCIDevice *d)
PCIESlot *s = DO_UPCAST(PCIESlot, port, p);
int rc;

rc = pci_bridge_initfn(d);
rc = pci_bridge_initfn(d, TYPE_PCI_BUS);
if (rc < 0) {
return rc;
}
Expand Down
2 changes: 1 addition & 1 deletion hw/xio3130_upstream.c
Expand Up @@ -57,7 +57,7 @@ static int xio3130_upstream_initfn(PCIDevice *d)
PCIEPort *p = DO_UPCAST(PCIEPort, br, br);
int rc;

rc = pci_bridge_initfn(d);
rc = pci_bridge_initfn(d, TYPE_PCI_BUS);
if (rc < 0) {
return rc;
}
Expand Down

0 comments on commit 60a0e44

Please sign in to comment.