diff options
Diffstat (limited to 'drivers/virtio/virtio_pci.c')
| -rw-r--r-- | drivers/virtio/virtio_pci.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 28d9cf7cf72f..625447f645d9 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c @@ -473,7 +473,8 @@ static void vp_del_vqs(struct virtio_device *vdev)  	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); @@ -648,6 +649,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,  		goto out_req_regions;  	pci_set_drvdata(pci_dev, vp_dev); +	pci_set_master(pci_dev);  	/* we use the subsystem vendor/device id as the virtio vendor/device  	 * id.  this allows us to use the same PCI vendor/device id for all @@ -702,7 +704,7 @@ static struct pci_driver virtio_pci_driver = {  	.name		= "virtio-pci",  	.id_table	= virtio_pci_id_table,  	.probe		= virtio_pci_probe, -	.remove		= virtio_pci_remove, +	.remove		= __devexit_p(virtio_pci_remove),  #ifdef CONFIG_PM  	.suspend	= virtio_pci_suspend,  	.resume		= virtio_pci_resume,  |