aboutsummaryrefslogtreecommitdiff
path: root/hw/virtio-pci.c
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2012-08-29 19:40:56 +0300
committerAnthony Liguori <aliguori@us.ibm.com>2012-08-29 17:46:26 -0500
commit3cac001e5ae3c0ceb33e0a1978a48cb5e2482ab2 (patch)
treedc6fdeb1cd4c497523ab7c3d5f1337d3cd84ac33 /hw/virtio-pci.c
parentbc9a839d569d4d8532c5c097bf1f4583226e3aa0 (diff)
downloadqemu-3cac001e5ae3c0ceb33e0a1978a48cb5e2482ab2.zip
qemu-3cac001e5ae3c0ceb33e0a1978a48cb5e2482ab2.tar.gz
qemu-3cac001e5ae3c0ceb33e0a1978a48cb5e2482ab2.tar.bz2
msix: make [un]use vectors on reset/load optional
The facility to use/unuse vectors dynamically is helpful for virtio but little else: everyone just seems to use vectors in their init function. Avoid clearing msix vector use info on reset and load. For virtio, clear it explicitly. This should fix regressions reported with ivshmem - though I didn't test this, I verified that virtio keeps working like it did. Tested-by: Cam Macdonell <cam@cs.ualberta.ca> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw/virtio-pci.c')
-rw-r--r--hw/virtio-pci.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index 2a3d86f..b3f0710 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -131,6 +131,7 @@ static int virtio_pci_load_config(void * opaque, QEMUFile *f)
if (ret) {
return ret;
}
+ msix_unuse_all_vectors(&proxy->pci_dev);
msix_load(&proxy->pci_dev, f);
if (msix_present(&proxy->pci_dev)) {
qemu_get_be16s(f, &proxy->vdev->config_vector);
@@ -246,6 +247,7 @@ void virtio_pci_reset(DeviceState *d)
VirtIOPCIProxy *proxy = container_of(d, VirtIOPCIProxy, pci_dev.qdev);
virtio_pci_stop_ioeventfd(proxy);
virtio_reset(proxy->vdev);
+ msix_unuse_all_vectors(&proxy->pci_dev);
proxy->flags &= ~VIRTIO_PCI_FLAG_BUS_MASTER_BUG;
}