Move source tree closer to the 2.6.32.17 mainline
/drivers/virtio/virtio_pci.c
blob:28d9cf7cf72f9fd1ee8aeea96085da394d48702e -> blob:d43859f76db248a39a23d39cdb47d73aca8e5393
--- drivers/virtio/virtio_pci.c
+++ drivers/virtio/virtio_pci.c
@@ -473,7 +473,8 @@ static void vp_del_vqs(struct virtio_dev
list_for_each_entry_safe(vq, n, &vdev->vqs, list) {
info = vq->priv;
- if (vp_dev->per_vq_vectors)
+ if (vp_dev->per_vq_vectors &&
+ info->msix_vector != VIRTIO_MSI_NO_VECTOR)
free_irq(vp_dev->msix_entries[info->msix_vector].vector,
vq);
vp_del_vq(vq);
@@ -634,6 +635,9 @@ static int __devinit virtio_pci_probe(st
INIT_LIST_HEAD(&vp_dev->virtqueues);
spin_lock_init(&vp_dev->lock);
+ /* Disable MSI/MSIX to bring device to a known good state. */
+ pci_msi_off(pci_dev);
+
/* enable the device */
err = pci_enable_device(pci_dev);
if (err)