Commit 5c397242 authored by Bandan Das's avatar Bandan Das Committed by Michael S. Tsirkin
Browse files

pci: unregister vmstate_pcibus on unplug



PCIBus registers a vmstate during init. Unregister it upon
removal/unplug.

Signed-off-by: default avatarBandan Das <bsd@redhat.com>
Cc: qemu-stable@nongnu.org
Reviewed-by: default avatarAndreas Färber <afaerber@suse.de>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent decbc880
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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_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),
@@ -73,6 +74,7 @@ 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,
};

@@ -375,6 +377,12 @@ 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);