From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52416) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNpmD-0002kG-AS for qemu-devel@nongnu.org; Wed, 12 Mar 2014 16:29:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WNpm7-0003fD-9r for qemu-devel@nongnu.org; Wed, 12 Mar 2014 16:29:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:61924) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNpm7-0003f7-1u for qemu-devel@nongnu.org; Wed, 12 Mar 2014 16:29:15 -0400 Date: Wed, 12 Mar 2014 22:29:16 +0200 From: "Michael S. Tsirkin" Message-ID: <20140312202916.GA6884@redhat.com> References: <1385419722-22205-1-git-send-email-bsd@redhat.com> <1385419722-22205-4-git-send-email-bsd@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1385419722-22205-4-git-send-email-bsd@redhat.com> Subject: Re: [Qemu-devel] [RFC PATCH 3/3] pci: move vmstate_pcibus registration/unregistration to realize and unrealize interfaces List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Bandan Das Cc: Paolo Bonzini , qemu-devel@nongnu.org, Andreas =?iso-8859-1?Q?F=E4rber?= On Mon, Nov 25, 2013 at 05:48:42PM -0500, Bandan Das wrote: > Relocate some stuff to avoid forward declarations and use the > realize and unrealize hooks to call into register and unregister vmstate_pcibus > respectively > > Signed-off-by: Bandan Das Acked-by: Michael S. Tsirkin > --- > hw/pci/pci.c | 49 ++++++++++++++++++++++++++++--------------------- > 1 file changed, 28 insertions(+), 21 deletions(-) > > diff --git a/hw/pci/pci.c b/hw/pci/pci.c > index 49eca95..a43f84f 100644 > --- a/hw/pci/pci.c > +++ b/hw/pci/pci.c > @@ -47,7 +47,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 int pcibus_reset(BusState *qbus); > -static void pci_bus_finalize(Object *obj); > > static Property pci_props[] = { > DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1), > @@ -60,6 +59,32 @@ static Property pci_props[] = { > DEFINE_PROP_END_OF_LIST() > }; > > +static const VMStateDescription vmstate_pcibus = { > + .name = "PCIBUS", > + .version_id = 1, > + .minimum_version_id = 1, > + .minimum_version_id_old = 1, > + .fields = (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 = DO_UPCAST(PCIBus, qbus, qbus); > + vmstate_register(NULL, -1, &vmstate_pcibus, bus); > +} > + > +static void pci_bus_unrealize(BusState *qbus, Error **errp) > +{ > + PCIBus *bus = DO_UPCAST(PCIBus, qbus, qbus); > + vmstate_unregister(NULL, &vmstate_pcibus, bus); > +} > + > static void pci_bus_class_init(ObjectClass *klass, void *data) > { > BusClass *k = BUS_CLASS(klass); > @@ -67,6 +92,8 @@ static void pci_bus_class_init(ObjectClass *klass, void *data) > k->print_dev = pcibus_dev_print; > k->get_dev_path = pcibus_get_dev_path; > k->get_fw_dev_path = pcibus_get_fw_dev_path; > + k->realize = pci_bus_realize; > + k->unrealize = pci_bus_unrealize; > k->reset = pcibus_reset; > } > > @@ -74,7 +101,6 @@ static const TypeInfo pci_bus_info = { > .name = TYPE_PCI_BUS, > .parent = TYPE_BUS, > .instance_size = sizeof(PCIBus), > - .instance_finalize = pci_bus_finalize, > .class_init = pci_bus_class_init, > }; > > @@ -94,17 +120,6 @@ static uint16_t pci_default_sub_device_id = PCI_SUBDEVICE_ID_QEMU; > > static QLIST_HEAD(, PCIHostState) pci_host_bridges; > > -static const VMStateDescription vmstate_pcibus = { > - .name = "PCIBUS", > - .version_id = 1, > - .minimum_version_id = 1, > - .minimum_version_id_old = 1, > - .fields = (VMStateField []) { > - VMSTATE_INT32_EQUAL(nirq, PCIBus), > - VMSTATE_VARRAY_INT32(irq_count, PCIBus, nirq, 0, vmstate_info_int32, int32_t), > - VMSTATE_END_OF_LIST() > - } > -}; > static int pci_bar(PCIDevice *d, int reg) > { > uint8_t type; > @@ -300,8 +315,6 @@ static void pci_bus_init(PCIBus *bus, DeviceState *parent, > QLIST_INIT(&bus->child); > > pci_host_bus_register(bus, parent); > - > - vmstate_register(NULL, -1, &vmstate_pcibus, bus); > } > > bool pci_bus_is_express(PCIBus *bus) > @@ -377,12 +390,6 @@ int pci_bus_num(PCIBus *s) > return s->parent_dev->config[PCI_SECONDARY_BUS]; > } > > -static void pci_bus_finalize(Object *obj) > -{ > - PCIBus *bus = PCI_BUS(obj); > - vmstate_unregister(NULL, &vmstate_pcibus, bus); > -} > - > static int get_pci_config_device(QEMUFile *f, void *pv, size_t size) > { > PCIDevice *s = container_of(pv, PCIDevice, config); > -- > 1.8.3.1 >