pci: unregister vmstate_pcibus on unplug
PCIBus registers a vmstate during init. Unregister it upon removal/unplug. Signed-off-by: Bandan Das <bsd@redhat.com> Cc: qemu-stable@nongnu.org Reviewed-by: Andreas Färber <afaerber@suse.de> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
decbc88028
commit
5c397242d5
|
@ -47,6 +47,7 @@ static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
|
||||||
static char *pcibus_get_dev_path(DeviceState *dev);
|
static char *pcibus_get_dev_path(DeviceState *dev);
|
||||||
static char *pcibus_get_fw_dev_path(DeviceState *dev);
|
static char *pcibus_get_fw_dev_path(DeviceState *dev);
|
||||||
static int pcibus_reset(BusState *qbus);
|
static int pcibus_reset(BusState *qbus);
|
||||||
|
static void pci_bus_finalize(Object *obj);
|
||||||
|
|
||||||
static Property pci_props[] = {
|
static Property pci_props[] = {
|
||||||
DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1),
|
DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1),
|
||||||
|
@ -73,6 +74,7 @@ static const TypeInfo pci_bus_info = {
|
||||||
.name = TYPE_PCI_BUS,
|
.name = TYPE_PCI_BUS,
|
||||||
.parent = TYPE_BUS,
|
.parent = TYPE_BUS,
|
||||||
.instance_size = sizeof(PCIBus),
|
.instance_size = sizeof(PCIBus),
|
||||||
|
.instance_finalize = pci_bus_finalize,
|
||||||
.class_init = pci_bus_class_init,
|
.class_init = pci_bus_class_init,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -375,6 +377,12 @@ int pci_bus_num(PCIBus *s)
|
||||||
return s->parent_dev->config[PCI_SECONDARY_BUS];
|
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)
|
static int get_pci_config_device(QEMUFile *f, void *pv, size_t size)
|
||||||
{
|
{
|
||||||
PCIDevice *s = container_of(pv, PCIDevice, config);
|
PCIDevice *s = container_of(pv, PCIDevice, config);
|
||||||
|
|
Loading…
Reference in New Issue