Message ID | 1385419722-22205-4-git-send-email-bsd@redhat.com |
---|---|
State | New |
Headers | show |
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 <bsd@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> > --- > 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 >
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);
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 <bsd@redhat.com> --- hw/pci/pci.c | 49 ++++++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 21 deletions(-)