diff --git a/hw/pci.c b/hw/pci.c index 681b9d26336e3ea3f942fe85a56fd380de5a6a54..7644dee90e7ae572723cf513aea528a06fc35f80 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -144,7 +144,7 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) { int i; - qemu_put_be32(f, 2); /* PCI device version */ + qemu_put_be32(f, s->version_id); /* PCI device version */ qemu_put_buffer(f, s->config, 256); for (i = 0; i < 4; i++) qemu_put_be32(f, s->irq_state[i]); @@ -319,6 +319,7 @@ static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus, pci_dev->config_write = config_write; bus->devices[devfn] = pci_dev; pci_dev->irq = qemu_allocate_irqs(pci_set_irq, pci_dev, 4); + pci_dev->version_id = 2; /* Current pci device vmstate version */ return pci_dev; } diff --git a/hw/pci.h b/hw/pci.h index a2ec16a3011a8ffe6ec4fbf32f76d7f24cfce106..32e98d4aa503bf3d082d33ba921ffaf0deb28424 100644 --- a/hw/pci.h +++ b/hw/pci.h @@ -209,6 +209,8 @@ struct PCIDevice { unsigned *msix_entry_used; /* Region including the MSI-X table */ uint32_t msix_bar_size; + /* Version id needed for VMState */ + int32_t version_id; }; PCIDevice *pci_register_device(PCIBus *bus, const char *name,