From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60669) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNqPs-00084O-Pf for qemu-devel@nongnu.org; Wed, 12 Mar 2014 17:10:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WNqPg-00005Q-At for qemu-devel@nongnu.org; Wed, 12 Mar 2014 17:10:20 -0400 Received: from cantor2.suse.de ([195.135.220.15]:45526 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNqPf-0008Sd-Vn for qemu-devel@nongnu.org; Wed, 12 Mar 2014 17:10:08 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Wed, 12 Mar 2014 22:10:02 +0100 Message-Id: <1394658603-13650-31-git-send-email-afaerber@suse.de> In-Reply-To: <1394658603-13650-1-git-send-email-afaerber@suse.de> References: <1394658603-13650-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PULL for-2.0-rc0 30/31] pci: Move VMState registration/unregistration to QOM realize/unrealize List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Bandan Das , =?UTF-8?q?Andreas=20F=C3=A4rber?= , "Michael S. Tsirkin" From: Bandan Das Use the realize and unrealize hooks to register and unregister vmstate_pcibus respectively. Relocate some stuff to avoid forward declarations. Signed-off-by: Bandan Das Acked-by: Michael S. Tsirkin [AF: Keep using PCI_BUS() cast macro] Signed-off-by: Andreas F=C3=A4rber --- hw/pci/pci.c | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 4e0701d..8f722dd 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -48,7 +48,6 @@ static void pcibus_dev_print(Monitor *mon, DeviceState = *dev, int indent); static char *pcibus_get_dev_path(DeviceState *dev); static char *pcibus_get_fw_dev_path(DeviceState *dev); static void pcibus_reset(BusState *qbus); -static void pci_bus_finalize(Object *obj); =20 static Property pci_props[] =3D { DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1), @@ -61,6 +60,34 @@ static Property pci_props[] =3D { DEFINE_PROP_END_OF_LIST() }; =20 +static const VMStateDescription vmstate_pcibus =3D { + .name =3D "PCIBUS", + .version_id =3D 1, + .minimum_version_id =3D 1, + .minimum_version_id_old =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_INT32_EQUAL(nirq, PCIBus), + VMSTATE_VARRAY_INT32(irq_count, PCIBus, + nirq, 0, vmstate_info_int32, + int32_t), + VMSTATE_END_OF_LIST() + } +}; + +static void pci_bus_realize(BusState *qbus, Error **errp) +{ + PCIBus *bus =3D PCI_BUS(qbus); + + vmstate_register(NULL, -1, &vmstate_pcibus, bus); +} + +static void pci_bus_unrealize(BusState *qbus, Error **errp) +{ + PCIBus *bus =3D PCI_BUS(qbus); + + vmstate_unregister(NULL, &vmstate_pcibus, bus); +} + static void pci_bus_class_init(ObjectClass *klass, void *data) { BusClass *k =3D BUS_CLASS(klass); @@ -68,6 +95,8 @@ static void pci_bus_class_init(ObjectClass *klass, void= *data) k->print_dev =3D pcibus_dev_print; k->get_dev_path =3D pcibus_get_dev_path; k->get_fw_dev_path =3D pcibus_get_fw_dev_path; + k->realize =3D pci_bus_realize; + k->unrealize =3D pci_bus_unrealize; k->reset =3D pcibus_reset; } =20 @@ -75,7 +104,6 @@ static const TypeInfo pci_bus_info =3D { .name =3D TYPE_PCI_BUS, .parent =3D TYPE_BUS, .instance_size =3D sizeof(PCIBus), - .instance_finalize =3D pci_bus_finalize, .class_init =3D pci_bus_class_init, }; =20 @@ -95,17 +123,6 @@ static uint16_t pci_default_sub_device_id =3D PCI_SUB= DEVICE_ID_QEMU; =20 static QLIST_HEAD(, PCIHostState) pci_host_bridges; =20 -static const VMStateDescription vmstate_pcibus =3D { - .name =3D "PCIBUS", - .version_id =3D 1, - .minimum_version_id =3D 1, - .minimum_version_id_old =3D 1, - .fields =3D (VMStateField []) { - VMSTATE_INT32_EQUAL(nirq, PCIBus), - VMSTATE_VARRAY_INT32(irq_count, PCIBus, nirq, 0, vmstate_info_in= t32, int32_t), - VMSTATE_END_OF_LIST() - } -}; static int pci_bar(PCIDevice *d, int reg) { uint8_t type; @@ -299,8 +316,6 @@ static void pci_bus_init(PCIBus *bus, DeviceState *pa= rent, QLIST_INIT(&bus->child); =20 pci_host_bus_register(bus, parent); - - vmstate_register(NULL, -1, &vmstate_pcibus, bus); } =20 bool pci_bus_is_express(PCIBus *bus) @@ -369,12 +384,6 @@ int pci_bus_num(PCIBus *s) return s->parent_dev->config[PCI_SECONDARY_BUS]; } =20 -static void pci_bus_finalize(Object *obj) -{ - PCIBus *bus =3D PCI_BUS(obj); - vmstate_unregister(NULL, &vmstate_pcibus, bus); -} - static int get_pci_config_device(QEMUFile *f, void *pv, size_t size) { PCIDevice *s =3D container_of(pv, PCIDevice, config); --=20 1.8.4.5