qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: qemu-devel@nongnu.org
Cc: "Hu Tao" <hutao@cn.fujitsu.com>, "Andreas Färber" <afaerber@suse.de>
Subject: [Qemu-devel] [PULL 33/55] q35: Use QOM realize for q35 host bridge
Date: Tue, 23 Jul 2013 01:46:14 +0200	[thread overview]
Message-ID: <1374536796-13983-34-git-send-email-afaerber@suse.de> (raw)
In-Reply-To: <1374536796-13983-1-git-send-email-afaerber@suse.de>

From: Hu Tao <hutao@cn.fujitsu.com>

And split off MemoryRegion initialization into instance_init.

Signed-off-by: Hu Tao <hutao@cn.fujitsu.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 hw/pci-host/q35.c | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c
index 86dd298..6b1b3b7 100644
--- a/hw/pci-host/q35.c
+++ b/hw/pci-host/q35.c
@@ -34,31 +34,27 @@
  * Q35 host
  */
 
-static int q35_host_init(SysBusDevice *dev)
+static void q35_host_realize(DeviceState *dev, Error **errp)
 {
     PCIHostState *pci = PCI_HOST_BRIDGE(dev);
     Q35PCIHost *s = Q35_HOST_DEVICE(dev);
+    SysBusDevice *sbd = SYS_BUS_DEVICE(dev);
 
-    memory_region_init_io(&pci->conf_mem, OBJECT(pci), &pci_host_conf_le_ops, pci,
-                          "pci-conf-idx", 4);
-    sysbus_add_io(dev, MCH_HOST_BRIDGE_CONFIG_ADDR, &pci->conf_mem);
-    sysbus_init_ioports(dev, MCH_HOST_BRIDGE_CONFIG_ADDR, 4);
+    sysbus_add_io(sbd, MCH_HOST_BRIDGE_CONFIG_ADDR, &pci->conf_mem);
+    sysbus_init_ioports(sbd, MCH_HOST_BRIDGE_CONFIG_ADDR, 4);
 
-    memory_region_init_io(&pci->data_mem, OBJECT(pci), &pci_host_data_le_ops, pci,
-                          "pci-conf-data", 4);
-    sysbus_add_io(dev, MCH_HOST_BRIDGE_CONFIG_DATA, &pci->data_mem);
-    sysbus_init_ioports(dev, MCH_HOST_BRIDGE_CONFIG_DATA, 4);
+    sysbus_add_io(sbd, MCH_HOST_BRIDGE_CONFIG_DATA, &pci->data_mem);
+    sysbus_init_ioports(sbd, MCH_HOST_BRIDGE_CONFIG_DATA, 4);
 
     if (pcie_host_init(PCIE_HOST_BRIDGE(s)) < 0) {
-        return -1;
+        error_setg(errp, "failed to initialize pcie host");
+        return;
     }
     pci->bus = pci_bus_new(DEVICE(s), "pcie.0",
                            s->mch.pci_address_space, s->mch.address_space_io,
                            0, TYPE_PCIE_BUS);
     qdev_set_parent_bus(DEVICE(&s->mch), BUS(pci->bus));
     qdev_init_nofail(DEVICE(&s->mch));
-
-    return 0;
 }
 
 static const char *q35_host_root_bus_path(PCIHostState *host_bridge,
@@ -77,11 +73,10 @@ static Property mch_props[] = {
 static void q35_host_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
-    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
     PCIHostBridgeClass *hc = PCI_HOST_BRIDGE_CLASS(klass);
 
     hc->root_bus_path = q35_host_root_bus_path;
-    k->init = q35_host_init;
+    dc->realize = q35_host_realize;
     dc->props = mch_props;
     dc->fw_name = "pci";
 }
@@ -89,6 +84,12 @@ static void q35_host_class_init(ObjectClass *klass, void *data)
 static void q35_host_initfn(Object *obj)
 {
     Q35PCIHost *s = Q35_HOST_DEVICE(obj);
+    PCIHostState *phb = PCI_HOST_BRIDGE(obj);
+
+    memory_region_init_io(&phb->conf_mem, obj, &pci_host_conf_le_ops, phb,
+                          "pci-conf-idx", 4);
+    memory_region_init_io(&phb->data_mem, obj, &pci_host_data_le_ops, phb,
+                          "pci-conf-data", 4);
 
     object_initialize(&s->mch, TYPE_MCH_PCI_DEVICE);
     object_property_add_child(OBJECT(s), "mch", OBJECT(&s->mch), NULL);
-- 
1.8.1.4

  parent reply	other threads:[~2013-07-22 23:47 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-22 23:45 [Qemu-devel] [PULL 00/55] QOM devices patch queue 2013-07-22 Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 01/55] hw: Avoid use of QOM type name macros in VMStateDescriptions Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 02/55] net/e1000: QOM Upcast Sweep Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 03/55] net/e1000: QOM parent field cleanup Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 04/55] net/rtl8139: QOM Upcast Sweep Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 05/55] net/rtl8139: QOM parent field cleanup Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 06/55] net/pcnet-pci: QOM Upcast Sweep Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 07/55] usb/hcd-xhci: " Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 08/55] usb/hcd-xhci: QOM parent field cleanup Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 09/55] scsi/lsi53c895a: QOM Upcast Sweep Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 10/55] scsi/lsi53c895a: QOM parent field cleanup Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 11/55] scsi/megasas: QOM Upcast Sweep Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 12/55] scsi/megasas: QOM parent field cleanup Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 13/55] scsi/esp-pci: QOM Upcast Sweep Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 14/55] scsi/esp-pci: QOM parent field cleanup Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 15/55] ide/ich: QOM Upcast Sweep Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 16/55] ide/ich: QOM parent field cleanup Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 17/55] acpi/piix4: QOM Upcast Sweep Andreas Färber
2013-07-22 23:45 ` [Qemu-devel] [PULL 18/55] acpi/piix4: QOM parent field cleanup Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 19/55] misc/pci-testdev: QOM Upcast Sweep Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 20/55] misc/pci-testdev: QOM parent field cleanup Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 21/55] display/vmware_vga: QOM casting sweep Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 22/55] display/vmware_vga: QOM parent field cleanup Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 23/55] misc/ivshmem: QOM Upcast Sweep Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 24/55] misc/ivshmem: QOM parent field cleanup Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 25/55] xen/xen_platform: QOM casting sweep Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 26/55] xen/xen_platform: QOM parent field cleanup Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 27/55] sysbus: Document SysBusDeviceClass::init and realize semantics Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 28/55] ohci: QOM'ify some more Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 29/55] ohci: Use QOM realize for OHCI Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 30/55] i440fx: Use type-safe cast instead of direct access of parent dev Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 31/55] i440fx-pcihost: Use QOM realize for i440fx-pcihost Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 32/55] q35: Use type-safe cast instead of direct access of parent dev Andreas Färber
2013-07-22 23:46 ` Andreas Färber [this message]
2013-07-22 23:46 ` [Qemu-devel] [PULL 34/55] fdc: QOM'ify some more Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 35/55] pflash-cfi01: " Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 36/55] pflash-cfi02: " Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 37/55] ahci: " Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 38/55] fwcfg: " Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 39/55] scsi/esp: " Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 40/55] hpet: " Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 41/55] kvm/clock: " Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 42/55] fdc: Use QOM realize for fdc Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 43/55] fdc: Improve error propagation for QOM realize Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 44/55] pflash_cfi01: Use QOM realize for pflash_cfi01 Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 45/55] pflash_cfi02: Use QOM realize for pflash_cfi02 Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 46/55] ahci: Use QOM realize for ahci Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 47/55] fw_cfg: Use QOM realize for fw_cfg Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 48/55] scsi/esp: Use QOM realize for scsi esp Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 49/55] megasas: Legacy command line handling fix Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 50/55] scsi: Improve error propagation for scsi_bus_legacy_handle_cmdline() Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 51/55] hpet: Use QOM realize for hpet Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 52/55] kvm/clock: Use QOM realize for kvmclock Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 53/55] kvmvapic: Use QOM realize Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 54/55] ioapic: Use QOM realize for ioapic Andreas Färber
2013-07-22 23:46 ` [Qemu-devel] [PULL 55/55] isa-bus: Drop isabus_bridge_init() since it does nothing 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=1374536796-13983-34-git-send-email-afaerber@suse.de \
    --to=afaerber@suse.de \
    --cc=hutao@cn.fujitsu.com \
    --cc=qemu-devel@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).