qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: qemu-devel@nongnu.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>,
	"open list:New World" <qemu-ppc@nongnu.org>,
	"Andreas Färber" <afaerber@suse.de>,
	"Alexander Graf" <agraf@suse.de>
Subject: [Qemu-devel] [PULL 009/173] pci-bridge: Turn PCIBridge into abstract QOM type
Date: Mon, 29 Jul 2013 21:17:46 +0200	[thread overview]
Message-ID: <1375125630-24869-10-git-send-email-afaerber@suse.de> (raw)
In-Reply-To: <1375125630-24869-1-git-send-email-afaerber@suse.de>

Introduce TYPE_PCI_BRIDGE as base type and use PCI_BRIDGE() casts.

Reviewed-by: Don Koch <dkoch@verizon.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
[AF: Updated pbm-bridge parent to TYPE_PCI_BRIDGE]
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/pci-bridge/dec.c                |  4 ++--
 hw/pci-bridge/i82801b11.c          |  6 +++---
 hw/pci-bridge/ioh3420.c            | 18 ++++++++---------
 hw/pci-bridge/pci_bridge_dev.c     | 10 +++++-----
 hw/pci-bridge/xio3130_downstream.c | 18 ++++++++---------
 hw/pci-bridge/xio3130_upstream.c   | 19 +++++++++---------
 hw/pci-host/apb.c                  |  7 +++----
 hw/pci/pci.c                       |  2 +-
 hw/pci/pci_bridge.c                | 40 +++++++++++++++++++++++++++-----------
 hw/pci/pcie.c                      |  2 +-
 include/hw/pci/pci_bus.h           |  7 ++++++-
 11 files changed, 78 insertions(+), 55 deletions(-)

diff --git a/hw/pci-bridge/dec.c b/hw/pci-bridge/dec.c
index efc07c4..e5e3be8 100644
--- a/hw/pci-bridge/dec.c
+++ b/hw/pci-bridge/dec.c
@@ -74,7 +74,7 @@ static void dec_21154_pci_bridge_class_init(ObjectClass *klass, void *data)
 
 static const TypeInfo dec_21154_pci_bridge_info = {
     .name          = "dec-21154-p2p-bridge",
-    .parent        = TYPE_PCI_DEVICE,
+    .parent        = TYPE_PCI_BRIDGE,
     .instance_size = sizeof(PCIBridge),
     .class_init    = dec_21154_pci_bridge_class_init,
 };
@@ -86,7 +86,7 @@ PCIBus *pci_dec_21154_init(PCIBus *parent_bus, int devfn)
 
     dev = pci_create_multifunction(parent_bus, devfn, false,
                                    "dec-21154-p2p-bridge");
-    br = DO_UPCAST(PCIBridge, dev, dev);
+    br = PCI_BRIDGE(dev);
     pci_bridge_map_irq(br, "DEC 21154 PCI-PCI bridge", dec_map_irq);
     qdev_init_nofail(&dev->qdev);
     return pci_bridge_get_sec_bus(br);
diff --git a/hw/pci-bridge/i82801b11.c b/hw/pci-bridge/i82801b11.c
index 0e521a8..82e92d8 100644
--- a/hw/pci-bridge/i82801b11.c
+++ b/hw/pci-bridge/i82801b11.c
@@ -93,7 +93,7 @@ static void i82801b11_bridge_class_init(ObjectClass *klass, void *data)
 
 static const TypeInfo i82801b11_bridge_info = {
     .name          = "i82801b11-bridge",
-    .parent        = TYPE_PCI_DEVICE,
+    .parent        = TYPE_PCI_BRIDGE,
     .instance_size = sizeof(I82801b11Bridge),
     .class_init    = i82801b11_bridge_class_init,
 };
@@ -109,8 +109,8 @@ PCIBus *ich9_d2pbr_init(PCIBus *bus, int devfn, int sec_bus)
     if (!d) {
         return NULL;
     }
-    br = DO_UPCAST(PCIBridge, dev, d);
-    qdev = &br->dev.qdev;
+    br = PCI_BRIDGE(d);
+    qdev = DEVICE(d);
 
     snprintf(buf, sizeof(buf), "pci.%d", sec_bus);
     pci_bridge_map_irq(br, buf, pci_swizzle_map_irq_fn);
diff --git a/hw/pci-bridge/ioh3420.c b/hw/pci-bridge/ioh3420.c
index 47122c5..815bed4 100644
--- a/hw/pci-bridge/ioh3420.c
+++ b/hw/pci-bridge/ioh3420.c
@@ -92,7 +92,7 @@ static void ioh3420_reset(DeviceState *qdev)
 
 static int ioh3420_initfn(PCIDevice *d)
 {
-    PCIBridge* br = DO_UPCAST(PCIBridge, dev, d);
+    PCIBridge *br = PCI_BRIDGE(d);
     PCIEPort *p = DO_UPCAST(PCIEPort, br, br);
     PCIESlot *s = DO_UPCAST(PCIESlot, port, p);
     int rc;
@@ -148,7 +148,7 @@ err_bridge:
 
 static void ioh3420_exitfn(PCIDevice *d)
 {
-    PCIBridge* br = DO_UPCAST(PCIBridge, dev, d);
+    PCIBridge *br = PCI_BRIDGE(d);
     PCIEPort *p = DO_UPCAST(PCIEPort, br, br);
     PCIESlot *s = DO_UPCAST(PCIESlot, port, p);
 
@@ -171,9 +171,9 @@ PCIESlot *ioh3420_init(PCIBus *bus, int devfn, bool multifunction,
     if (!d) {
         return NULL;
     }
-    br = DO_UPCAST(PCIBridge, dev, d);
+    br = PCI_BRIDGE(d);
 
-    qdev = &br->dev.qdev;
+    qdev = DEVICE(d);
     pci_bridge_map_irq(br, bus_name, map_irq);
     qdev_prop_set_uint8(qdev, "port", port);
     qdev_prop_set_uint8(qdev, "chassis", chassis);
@@ -190,8 +190,8 @@ static const VMStateDescription vmstate_ioh3420 = {
     .minimum_version_id_old = 1,
     .post_load = pcie_cap_slot_post_load,
     .fields = (VMStateField[]) {
-        VMSTATE_PCIE_DEVICE(port.br.dev, PCIESlot),
-        VMSTATE_STRUCT(port.br.dev.exp.aer_log, PCIESlot, 0,
+        VMSTATE_PCIE_DEVICE(port.br.parent_obj, PCIESlot),
+        VMSTATE_STRUCT(port.br.parent_obj.exp.aer_log, PCIESlot, 0,
                        vmstate_pcie_aer_log, PCIEAERLog),
         VMSTATE_END_OF_LIST()
     }
@@ -202,8 +202,8 @@ static Property ioh3420_properties[] = {
     DEFINE_PROP_UINT8("chassis", PCIESlot, chassis, 0),
     DEFINE_PROP_UINT16("slot", PCIESlot, slot, 0),
     DEFINE_PROP_UINT16("aer_log_max", PCIESlot,
-    port.br.dev.exp.aer_log.log_max,
-    PCIE_AER_LOG_MAX_DEFAULT),
+                       port.br.parent_obj.exp.aer_log.log_max,
+                       PCIE_AER_LOG_MAX_DEFAULT),
     DEFINE_PROP_END_OF_LIST(),
 };
 
@@ -229,7 +229,7 @@ static void ioh3420_class_init(ObjectClass *klass, void *data)
 
 static const TypeInfo ioh3420_info = {
     .name          = "ioh3420",
-    .parent        = TYPE_PCI_DEVICE,
+    .parent        = TYPE_PCI_BRIDGE,
     .instance_size = sizeof(PCIESlot),
     .class_init    = ioh3420_class_init,
 };
diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c
index a00642c..af750c2 100644
--- a/hw/pci-bridge/pci_bridge_dev.c
+++ b/hw/pci-bridge/pci_bridge_dev.c
@@ -38,7 +38,7 @@ typedef struct PCIBridgeDev PCIBridgeDev;
 
 static int pci_bridge_dev_initfn(PCIDevice *dev)
 {
-    PCIBridge *br = DO_UPCAST(PCIBridge, dev, dev);
+    PCIBridge *br = PCI_BRIDGE(dev);
     PCIBridgeDev *bridge_dev = DO_UPCAST(PCIBridgeDev, bridge, br);
     int err;
 
@@ -81,7 +81,7 @@ bridge_error:
 
 static void pci_bridge_dev_exitfn(PCIDevice *dev)
 {
-    PCIBridge *br = DO_UPCAST(PCIBridge, dev, dev);
+    PCIBridge *br = PCI_BRIDGE(dev);
     PCIBridgeDev *bridge_dev = DO_UPCAST(PCIBridgeDev, bridge, br);
     if (msi_present(dev)) {
         msi_uninit(dev);
@@ -120,8 +120,8 @@ static Property pci_bridge_dev_properties[] = {
 static const VMStateDescription pci_bridge_dev_vmstate = {
     .name = "pci_bridge",
     .fields = (VMStateField[]) {
-        VMSTATE_PCI_DEVICE(bridge.dev, PCIBridgeDev),
-        SHPC_VMSTATE(bridge.dev.shpc, PCIBridgeDev),
+        VMSTATE_PCI_DEVICE(bridge.parent_obj, PCIBridgeDev),
+        SHPC_VMSTATE(bridge.parent_obj.shpc, PCIBridgeDev),
         VMSTATE_END_OF_LIST()
     }
 };
@@ -146,7 +146,7 @@ static void pci_bridge_dev_class_init(ObjectClass *klass, void *data)
 
 static const TypeInfo pci_bridge_dev_info = {
     .name = "pci-bridge",
-    .parent        = TYPE_PCI_DEVICE,
+    .parent        = TYPE_PCI_BRIDGE,
     .instance_size = sizeof(PCIBridgeDev),
     .class_init = pci_bridge_dev_class_init,
 };
diff --git a/hw/pci-bridge/xio3130_downstream.c b/hw/pci-bridge/xio3130_downstream.c
index 33eff37..227a335 100644
--- a/hw/pci-bridge/xio3130_downstream.c
+++ b/hw/pci-bridge/xio3130_downstream.c
@@ -56,7 +56,7 @@ static void xio3130_downstream_reset(DeviceState *qdev)
 
 static int xio3130_downstream_initfn(PCIDevice *d)
 {
-    PCIBridge* br = DO_UPCAST(PCIBridge, dev, d);
+    PCIBridge *br = PCI_BRIDGE(d);
     PCIEPort *p = DO_UPCAST(PCIEPort, br, br);
     PCIESlot *s = DO_UPCAST(PCIESlot, port, p);
     int rc;
@@ -113,7 +113,7 @@ err_bridge:
 
 static void xio3130_downstream_exitfn(PCIDevice *d)
 {
-    PCIBridge* br = DO_UPCAST(PCIBridge, dev, d);
+    PCIBridge *br = PCI_BRIDGE(d);
     PCIEPort *p = DO_UPCAST(PCIEPort, br, br);
     PCIESlot *s = DO_UPCAST(PCIESlot, port, p);
 
@@ -138,9 +138,9 @@ PCIESlot *xio3130_downstream_init(PCIBus *bus, int devfn, bool multifunction,
     if (!d) {
         return NULL;
     }
-    br = DO_UPCAST(PCIBridge, dev, d);
+    br = PCI_BRIDGE(d);
 
-    qdev = &br->dev.qdev;
+    qdev = DEVICE(d);
     pci_bridge_map_irq(br, bus_name, map_irq);
     qdev_prop_set_uint8(qdev, "port", port);
     qdev_prop_set_uint8(qdev, "chassis", chassis);
@@ -157,8 +157,8 @@ static const VMStateDescription vmstate_xio3130_downstream = {
     .minimum_version_id_old = 1,
     .post_load = pcie_cap_slot_post_load,
     .fields = (VMStateField[]) {
-        VMSTATE_PCIE_DEVICE(port.br.dev, PCIESlot),
-        VMSTATE_STRUCT(port.br.dev.exp.aer_log, PCIESlot, 0,
+        VMSTATE_PCIE_DEVICE(port.br.parent_obj, PCIESlot),
+        VMSTATE_STRUCT(port.br.parent_obj.exp.aer_log, PCIESlot, 0,
                        vmstate_pcie_aer_log, PCIEAERLog),
         VMSTATE_END_OF_LIST()
     }
@@ -169,8 +169,8 @@ static Property xio3130_downstream_properties[] = {
     DEFINE_PROP_UINT8("chassis", PCIESlot, chassis, 0),
     DEFINE_PROP_UINT16("slot", PCIESlot, slot, 0),
     DEFINE_PROP_UINT16("aer_log_max", PCIESlot,
-    port.br.dev.exp.aer_log.log_max,
-    PCIE_AER_LOG_MAX_DEFAULT),
+                       port.br.parent_obj.exp.aer_log.log_max,
+                       PCIE_AER_LOG_MAX_DEFAULT),
     DEFINE_PROP_END_OF_LIST(),
 };
 
@@ -196,7 +196,7 @@ static void xio3130_downstream_class_init(ObjectClass *klass, void *data)
 
 static const TypeInfo xio3130_downstream_info = {
     .name          = "xio3130-downstream",
-    .parent        = TYPE_PCI_DEVICE,
+    .parent        = TYPE_PCI_BRIDGE,
     .instance_size = sizeof(PCIESlot),
     .class_init    = xio3130_downstream_class_init,
 };
diff --git a/hw/pci-bridge/xio3130_upstream.c b/hw/pci-bridge/xio3130_upstream.c
index e9969a9..b146253 100644
--- a/hw/pci-bridge/xio3130_upstream.c
+++ b/hw/pci-bridge/xio3130_upstream.c
@@ -53,7 +53,7 @@ static void xio3130_upstream_reset(DeviceState *qdev)
 
 static int xio3130_upstream_initfn(PCIDevice *d)
 {
-    PCIBridge* br = DO_UPCAST(PCIBridge, dev, d);
+    PCIBridge *br = PCI_BRIDGE(d);
     PCIEPort *p = DO_UPCAST(PCIEPort, br, br);
     int rc;
 
@@ -118,9 +118,9 @@ PCIEPort *xio3130_upstream_init(PCIBus *bus, int devfn, bool multifunction,
     if (!d) {
         return NULL;
     }
-    br = DO_UPCAST(PCIBridge, dev, d);
+    br = PCI_BRIDGE(d);
 
-    qdev = &br->dev.qdev;
+    qdev = DEVICE(d);
     pci_bridge_map_irq(br, bus_name, map_irq);
     qdev_prop_set_uint8(qdev, "port", port);
     qdev_init_nofail(qdev);
@@ -134,17 +134,18 @@ static const VMStateDescription vmstate_xio3130_upstream = {
     .minimum_version_id = 1,
     .minimum_version_id_old = 1,
     .fields = (VMStateField[]) {
-        VMSTATE_PCIE_DEVICE(br.dev, PCIEPort),
-        VMSTATE_STRUCT(br.dev.exp.aer_log, PCIEPort, 0, vmstate_pcie_aer_log,
-                       PCIEAERLog),
+        VMSTATE_PCIE_DEVICE(br.parent_obj, PCIEPort),
+        VMSTATE_STRUCT(br.parent_obj.exp.aer_log, PCIEPort, 0,
+                       vmstate_pcie_aer_log, PCIEAERLog),
         VMSTATE_END_OF_LIST()
     }
 };
 
 static Property xio3130_upstream_properties[] = {
     DEFINE_PROP_UINT8("port", PCIEPort, port, 0),
-    DEFINE_PROP_UINT16("aer_log_max", PCIEPort, br.dev.exp.aer_log.log_max,
-    PCIE_AER_LOG_MAX_DEFAULT),
+    DEFINE_PROP_UINT16("aer_log_max", PCIEPort,
+                       br.parent_obj.exp.aer_log.log_max,
+                       PCIE_AER_LOG_MAX_DEFAULT),
     DEFINE_PROP_END_OF_LIST(),
 };
 
@@ -170,7 +171,7 @@ static void xio3130_upstream_class_init(ObjectClass *klass, void *data)
 
 static const TypeInfo xio3130_upstream_info = {
     .name          = "x3130-upstream",
-    .parent        = TYPE_PCI_DEVICE,
+    .parent        = TYPE_PCI_BRIDGE,
     .instance_size = sizeof(PCIEPort),
     .class_init    = xio3130_upstream_class_init,
 };
diff --git a/hw/pci-host/apb.c b/hw/pci-host/apb.c
index bef7be1..92f289f 100644
--- a/hw/pci-host/apb.c
+++ b/hw/pci-host/apb.c
@@ -423,7 +423,7 @@ PCIBus *pci_apb_init(hwaddr special_base,
     /* APB secondary busses */
     pci_dev = pci_create_multifunction(phb->bus, PCI_DEVFN(1, 0), true,
                                    "pbm-bridge");
-    br = DO_UPCAST(PCIBridge, dev, pci_dev);
+    br = PCI_BRIDGE(pci_dev);
     pci_bridge_map_irq(br, "Advanced PCI Bus secondary bridge 1",
                        pci_apb_map_irq);
     qdev_init_nofail(&pci_dev->qdev);
@@ -431,7 +431,7 @@ PCIBus *pci_apb_init(hwaddr special_base,
 
     pci_dev = pci_create_multifunction(phb->bus, PCI_DEVFN(1, 1), true,
                                    "pbm-bridge");
-    br = DO_UPCAST(PCIBridge, dev, pci_dev);
+    br = PCI_BRIDGE(pci_dev);
     pci_bridge_map_irq(br, "Advanced PCI Bus secondary bridge 2",
                        pci_apb_map_irq);
     qdev_init_nofail(&pci_dev->qdev);
@@ -566,8 +566,7 @@ static void pbm_pci_bridge_class_init(ObjectClass *klass, void *data)
 
 static const TypeInfo pbm_pci_bridge_info = {
     .name          = "pbm-bridge",
-    .parent        = TYPE_PCI_DEVICE,
-    .instance_size = sizeof(PCIBridge),
+    .parent        = TYPE_PCI_BRIDGE,
     .class_init    = pbm_pci_bridge_class_init,
 };
 
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 81cf5a9..4c004f5 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -397,7 +397,7 @@ static int get_pci_config_device(QEMUFile *f, void *pv, size_t size)
 
     pci_update_mappings(s);
     if (pc->is_bridge) {
-        PCIBridge *b = container_of(s, PCIBridge, dev);
+        PCIBridge *b = PCI_BRIDGE(s);
         pci_bridge_update_mappings(b);
     }
 
diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c
index 02a396b..a90671d 100644
--- a/hw/pci/pci_bridge.c
+++ b/hw/pci/pci_bridge.c
@@ -141,8 +141,9 @@ static void pci_bridge_init_alias(PCIBridge *bridge, MemoryRegion *alias,
                                   MemoryRegion *parent_space,
                                   bool enabled)
 {
-    pcibus_t base = pci_bridge_get_base(&bridge->dev, type);
-    pcibus_t limit = pci_bridge_get_limit(&bridge->dev, type);
+    PCIDevice *bridge_dev = PCI_DEVICE(bridge);
+    pcibus_t base = pci_bridge_get_base(bridge_dev, type);
+    pcibus_t limit = pci_bridge_get_limit(bridge_dev, type);
     /* TODO: this doesn't handle base = 0 limit = 2^64 - 1 correctly.
      * Apparently no way to do this with existing memory APIs. */
     pcibus_t size = enabled && limit >= base ? limit + 1 - base : 0;
@@ -154,7 +155,8 @@ static void pci_bridge_init_alias(PCIBridge *bridge, MemoryRegion *alias,
 static void pci_bridge_init_vga_aliases(PCIBridge *br, PCIBus *parent,
                                         MemoryRegion *alias_vga)
 {
-    uint16_t brctl = pci_get_word(br->dev.config + PCI_BRIDGE_CONTROL);
+    PCIDevice *pd = PCI_DEVICE(br);
+    uint16_t brctl = pci_get_word(pd->config + PCI_BRIDGE_CONTROL);
 
     memory_region_init_alias(&alias_vga[QEMU_PCI_VGA_IO_LO], OBJECT(br),
                              "pci_bridge_vga_io_lo", &br->address_space_io,
@@ -167,7 +169,7 @@ static void pci_bridge_init_vga_aliases(PCIBridge *br, PCIBus *parent,
                              QEMU_PCI_VGA_MEM_BASE, QEMU_PCI_VGA_MEM_SIZE);
 
     if (brctl & PCI_BRIDGE_CTL_VGA) {
-        pci_register_vga(&br->dev, &alias_vga[QEMU_PCI_VGA_MEM],
+        pci_register_vga(pd, &alias_vga[QEMU_PCI_VGA_MEM],
                          &alias_vga[QEMU_PCI_VGA_IO_LO],
                          &alias_vga[QEMU_PCI_VGA_IO_HI]);
     }
@@ -175,9 +177,10 @@ static void pci_bridge_init_vga_aliases(PCIBridge *br, PCIBus *parent,
 
 static PCIBridgeWindows *pci_bridge_region_init(PCIBridge *br)
 {
-    PCIBus *parent = br->dev.bus;
+    PCIDevice *pd = PCI_DEVICE(br);
+    PCIBus *parent = pd->bus;
     PCIBridgeWindows *w = g_new(PCIBridgeWindows, 1);
-    uint16_t cmd = pci_get_word(br->dev.config + PCI_COMMAND);
+    uint16_t cmd = pci_get_word(pd->config + PCI_COMMAND);
 
     pci_bridge_init_alias(br, &w->alias_pref_mem,
                           PCI_BASE_ADDRESS_MEM_PREFETCH,
@@ -205,12 +208,13 @@ static PCIBridgeWindows *pci_bridge_region_init(PCIBridge *br)
 
 static void pci_bridge_region_del(PCIBridge *br, PCIBridgeWindows *w)
 {
-    PCIBus *parent = br->dev.bus;
+    PCIDevice *pd = PCI_DEVICE(br);
+    PCIBus *parent = pd->bus;
 
     memory_region_del_subregion(parent->address_space_io, &w->alias_io);
     memory_region_del_subregion(parent->address_space_mem, &w->alias_mem);
     memory_region_del_subregion(parent->address_space_mem, &w->alias_pref_mem);
-    pci_unregister_vga(&br->dev);
+    pci_unregister_vga(pd);
 }
 
 static void pci_bridge_region_cleanup(PCIBridge *br, PCIBridgeWindows *w)
@@ -241,7 +245,7 @@ void pci_bridge_update_mappings(PCIBridge *br)
 void pci_bridge_write_config(PCIDevice *d,
                              uint32_t address, uint32_t val, int len)
 {
-    PCIBridge *s = container_of(d, PCIBridge, dev);
+    PCIBridge *s = PCI_BRIDGE(d);
     uint16_t oldctl = pci_get_word(d->config + PCI_BRIDGE_CONTROL);
     uint16_t newctl;
 
@@ -331,7 +335,7 @@ void pci_bridge_reset(DeviceState *qdev)
 int pci_bridge_initfn(PCIDevice *dev, const char *typename)
 {
     PCIBus *parent = dev->bus;
-    PCIBridge *br = DO_UPCAST(PCIBridge, dev, dev);
+    PCIBridge *br = PCI_BRIDGE(dev);
     PCIBus *sec_bus = &br->sec_bus;
 
     pci_word_test_and_set_mask(dev->config + PCI_STATUS,
@@ -379,7 +383,7 @@ int pci_bridge_initfn(PCIDevice *dev, const char *typename)
 /* default qdev clean up function for PCI-to-PCI bridge */
 void pci_bridge_exitfn(PCIDevice *pci_dev)
 {
-    PCIBridge *s = DO_UPCAST(PCIBridge, dev, pci_dev);
+    PCIBridge *s = PCI_BRIDGE(pci_dev);
     assert(QLIST_EMPTY(&s->sec_bus.child));
     QLIST_REMOVE(&s->sec_bus, sibling);
     pci_bridge_region_del(s, s->windows);
@@ -400,3 +404,17 @@ void pci_bridge_map_irq(PCIBridge *br, const char* bus_name,
     br->map_irq = map_irq;
     br->bus_name = bus_name;
 }
+
+static const TypeInfo pci_bridge_type_info = {
+    .name = TYPE_PCI_BRIDGE,
+    .parent = TYPE_PCI_DEVICE,
+    .instance_size = sizeof(PCIBridge),
+    .abstract = true,
+};
+
+static void pci_bridge_register_types(void)
+{
+    type_register_static(&pci_bridge_type_info);
+}
+
+type_init(pci_bridge_register_types)
diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
index 62bd0b8..50af3c1 100644
--- a/hw/pci/pcie.c
+++ b/hw/pci/pcie.c
@@ -305,7 +305,7 @@ void pcie_cap_slot_init(PCIDevice *dev, uint16_t slot)
 
     dev->exp.hpev_notified = false;
 
-    pci_bus_hotplug(pci_bridge_get_sec_bus(DO_UPCAST(PCIBridge, dev, dev)),
+    pci_bus_hotplug(pci_bridge_get_sec_bus(PCI_BRIDGE(dev)),
                     pcie_cap_slot_hotplug, &dev->qdev);
 }
 
diff --git a/include/hw/pci/pci_bus.h b/include/hw/pci/pci_bus.h
index 66762f6..9df1788 100644
--- a/include/hw/pci/pci_bus.h
+++ b/include/hw/pci/pci_bus.h
@@ -53,8 +53,13 @@ struct PCIBridgeWindows {
     MemoryRegion alias_vga[QEMU_PCI_VGA_NUM_REGIONS];
 };
 
+#define TYPE_PCI_BRIDGE "base-pci-bridge"
+#define PCI_BRIDGE(obj) OBJECT_CHECK(PCIBridge, (obj), TYPE_PCI_BRIDGE)
+
 struct PCIBridge {
-    PCIDevice dev;
+    /*< private >*/
+    PCIDevice parent_obj;
+    /*< public >*/
 
     /* private member */
     PCIBus sec_bus;
-- 
1.8.1.4

  parent reply	other threads:[~2013-07-29 19:20 UTC|newest]

Thread overview: 174+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-29 19:17 [Qemu-devel] [PULL for-1.6 000/173] QOM devices patch queue 2013-07-29 Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 001/173] fdc: Fix inheritence for SUNW,fdtwo Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 002/173] ide/piix: QOM casting sweep Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 003/173] ide: Introduce abstract QOM type for PCIIDEState Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 004/173] cpu/a9mpcore: QOM casting cleanup Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 005/173] timer/arm_mptimer: QOM cast cleanup Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 006/173] cpu/a15mpcore: " Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 007/173] arm11mpcore: QOM cast cleanups for ARM11MPCorePriveState Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 008/173] arm11mpcore: QOM cast cleanups for mpcore_rirq_state Andreas Färber
2013-07-29 19:17 ` Andreas Färber [this message]
2013-07-29 19:17 ` [Qemu-devel] [PULL 010/173] pci-bridge-dev: QOM parent field cleanup Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 011/173] pci-bridge/i82801b11: Rename parent field Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 012/173] pcie_port: Turn PCIEPort and PCIESlot into abstract QOM types Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 013/173] etraxfs_ser: QOM cast cleanups Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 014/173] xilinx_uartlite: Rename xlx_uartlite to XilinxUARTLite Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 015/173] xilinx_uartlite: QOM cast cleanups Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 016/173] cs4231: QOM cast cleanup Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 017/173] audio/marvell_88w8618: " Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 018/173] milkymist-ac97: " Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 019/173] pl041: Rename pl041_state to PL041State Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 020/173] pl041: QOM cast cleanup Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 021/173] onenand: " Andreas Färber
2013-07-29 19:17 ` [Qemu-devel] [PULL 022/173] exynos4210_fimd: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 023/173] g364fb: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 024/173] jazz_led: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 025/173] milkymist-tmu2: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 026/173] milkymist-vgafb: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 027/173] pl110: Rename pl110_state to PL110State Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 028/173] pl110: QOM'ify pl110, pl110_versatile and pl111 Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 029/173] tcx: QOM cast cleanup Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 030/173] imx_avic: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 031/173] imx_ccm: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 032/173] armv7m: QOM cast cleanup for BitBandState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 033/173] highbank: QOM cast cleanup for HighbankRegsState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 034/173] integratorcp: QOM cast cleanup for integratorcm_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 035/173] integratorcp: QOM cast cleanup for icp_pic_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 036/173] musicpal: Fix typo in name of local function Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 037/173] musicpal: QOM cast cleanup for mv88w8618_eth_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 038/173] musicpal: QOM cast cleanup for musicpal_lcd_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 039/173] musicpal: QOM cast cleanup mv88w8618_pic_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 040/173] musicpal: QOM cast cleanup for mv88w8618_pit_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 041/173] musicpal: QOM cast cleanup for mv88w8618_flashcfg Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 042/173] musicpal: QOM cast cleanup for musicpal_gpio_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 043/173] musicpal: QOM cast cleanup for musicpal_key_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 044/173] pxa2xx: QOM cast cleanup for PXA2xxSSPState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 045/173] pxa2xx: QOM cast cleanup for PXA2xxRTCState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 046/173] pxa2xx: QOM cast cleanup for PXA2xxI2CState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 047/173] pxa2xx_gpio: QOM cast cleanup for PXA2xxGPIOInfo Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 048/173] pxa2xx_pic: QOM cast cleanup for PXA2xxPICState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 049/173] spitz: QOM cast cleanup for SLNANDState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 050/173] spitz: QOM cast cleanup for SpitzKeyboardState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 051/173] stellaris: QOM cast cleanup for gptm_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 052/173] stellaris: QOM cast cleanup for stellaris_i2c_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 053/173] stellaris: QOM cast cleanup for stellaris_adc_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 054/173] strongarm: QOM cast cleanup for StrongARMPICState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 055/173] strongarm: QOM cast cleanup for StrongARMRTCState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 056/173] strongarm: QOM cast cleanup for StrongARMGPIOInfo Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 057/173] strongarm: QOM cast cleanup for StrongARMPPCInfo Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 058/173] strongarm: QOM cast cleanup for StrongARMUARTState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 059/173] strongarm: QOM cast cleanup for StrongARMSSPState Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 060/173] versatilepb: QOM cast cleanup for vpb_sic_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 061/173] cadence_uart: QOM cast cleanup Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 062/173] escc: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 063/173] exynos4210_uart: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 064/173] grlib_apbuart: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 065/173] imx_serial: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 066/173] lm32_juart: Relocate and tidy header Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 067/173] lm32_juart: QOM cast cleanup Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 068/173] lm32_uart: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 069/173] milkymist-uart: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 070/173] pl011: Rename pl011_state Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 071/173] pl011: QOM'ify pl011 and pl011_luminary Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 072/173] empty_slot: QOM cast cleanup Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 073/173] pl080: Rename pl080_state to PL080State Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 074/173] pl080: QOM'ify pl080 and pl081 Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 075/173] puv3_dma: QOM cast cleanup Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 076/173] pxa2xx_dma: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 077/173] sparc32_dma: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 078/173] sun4m_iommu: " Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 079/173] omap_gpio: QOM cast cleanup for omap_gpif_s Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 080/173] omap_gpio: QOM cast cleanup for omap2_gpif_s Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 081/173] pl061: Rename pl061_state to PL061State Andreas Färber
2013-07-29 19:18 ` [Qemu-devel] [PULL 082/173] pl061: QOM'ify pl061 and pl061_luminary Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 083/173] puv3_gpio: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 084/173] gpio/zaurus: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 085/173] bitbang_i2c: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 086/173] omap_i2c: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 087/173] versatile_i2c: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 088/173] milkymist-softusb: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 089/173] pl050: Rename pl050_state to PL050State Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 090/173] pl050: QOM'ify pl050_keyboard and pl050_mouse Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 091/173] arm_gic: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 092/173] etraxfs_pic: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 093/173] exynos4210_combiner: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 094/173] exynos4210_gic: QOM cast cleanup for exynos4210.gic Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 095/173] exynos4210_gic: QOM cast cleanup for exynos4210.irq_gate Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 096/173] grlib_irqmp: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 097/173] lm32_pic: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 098/173] omap_intc: QOM'ify omap-intc and omap2-intc Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 099/173] pl190: Rename pl190_state to PL190State Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 100/173] pl190: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 101/173] puv3_intc: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 102/173] realview_gic: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 103/173] slavio_intctl: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 104/173] xilinx_intc: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 105/173] arm_l2x0: Rename l2x0_state to L2x0State Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 106/173] arm_l2x0: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 107/173] arm_sysctl: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 108/173] eccmemctl: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 109/173] exynos4210_pmu: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 110/173] lm32_sys: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 111/173] milkymist-hpdmc: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 112/173] milkymist-pfpu: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 113/173] mst_fpga: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 114/173] puv3_pm: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 115/173] slavio_misc: QOM cast cleanup for MiscState Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 116/173] slavio_misc: QOM cast cleanup for APCState Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 117/173] zynq_slcr: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 118/173] cadence_gem: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 119/173] etraxfs_eth: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 120/173] etraxfs_eth: Rename fs_eth to ETRAXFSEthState Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 121/173] lan9118: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 122/173] lance: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 123/173] milkymist-minimac2: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 124/173] smc91c111: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 125/173] stellaris_enet: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 126/173] stellaris_enet: Fix NetClientInfo::cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 127/173] xgmac: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 128/173] xilinx_ethlite: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 129/173] ds1225y: Drop bogus qdev field from NvRamState Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 130/173] ds1225y: QOM cast cleanup for SysBusNvRamState Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 131/173] ppce500_spin: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 132/173] milkymist-memcard: " Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 133/173] pl181: Rename pl181_state to PL181State Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 134/173] pl181: QOM cast cleanup Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 135/173] sun4m: QOM cast cleanup for IDRegState Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 136/173] sun4m: QOM cast cleanup for AFXState Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 137/173] sun4m: QOM cast cleanup for PROMState Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 138/173] sun4m: QOM cast cleanup for RamDevice Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 139/173] sun4u: QOM cast cleanup for PROMState Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 140/173] sun4u: QOM cast cleanup for RamDevice Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 141/173] pl022: Rename pl022_state to PL022State Andreas Färber
2013-07-29 19:19 ` [Qemu-devel] [PULL 142/173] pl022: QOM cast cleanup Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 143/173] xilinx_spi: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 144/173] arm_timer: Rename sp804_state to SP804State Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 145/173] arm_timer: QOM cast cleanup for SP804State Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 146/173] arm_timer: QOM cast cleanup for icp_pit_state Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 147/173] cadence_ttc: QOM cast cleanup Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 148/173] etraxfs_timer: Rename etrax_timer to ETRAXTimerState Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 149/173] etraxfs_timer: QOM cast cleanup Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 150/173] exynos4210_mct: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 151/173] exynos4210_pwm: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 152/173] exynos4210_rtc: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 153/173] grlib_gptimer: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 154/173] lm32_timer: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 155/173] m48t59: QOM cast cleanup for M48t59SysBusState Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 156/173] milkymist-sysctl: QOM cast cleanup Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 157/173] pl031: Rename pl031_state to PL031State Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 158/173] pl031: QOM cast cleanup Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 159/173] puv3_ost: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 160/173] pxa2xx_timer: QOM'ify pxa25x-timer and pxa27x-timer Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 161/173] slavio_timer: QOM cast cleanup Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 162/173] tusb6010: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 163/173] xilinx_timer: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 164/173] sysbus: Drop FROM_SYSBUS() Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 165/173] sysbus: Remove unused sysbus_new() prototype Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 166/173] exynos4210_i2c: QOM cast cleanup Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 167/173] opencores_eth: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 168/173] mipsnet: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 169/173] kvmvapic: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 170/173] kvm/ioapic: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 171/173] ioapic: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 172/173] spapr_pci: " Andreas Färber
2013-07-29 19:20 ` [Qemu-devel] [PULL 173/173] sysbus: QOM parent field cleanup for SysBusDevice Andreas Färber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1375125630-24869-10-git-send-email-afaerber@suse.de \
    --to=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).