diff options
author | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2009-12-14 19:23:03 +0100 |
---|---|---|
committer | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2009-12-14 19:23:03 +0100 |
commit | 559300bc0ef7ccd541656f1189d38e7088389559 (patch) | |
tree | cd1682881ca4246e9c5a1e8632be4bdd9d9706c6 /drivers/virtio/virtio_pci.c | |
parent | 5416bf33f92a4104dbcd6062bf377c8421ca3cfd (diff) | |
parent | 22763c5cf3690a681551162c15d34d935308c8d7 (diff) | |
download | kernel-crypto-559300bc0ef7ccd541656f1189d38e7088389559.tar.gz kernel-crypto-559300bc0ef7ccd541656f1189d38e7088389559.tar.xz kernel-crypto-559300bc0ef7ccd541656f1189d38e7088389559.zip |
Merge commit 'v2.6.32'
Conflicts:
arch/avr32/mach-at32ap/include/mach/cpu.h
Diffstat (limited to 'drivers/virtio/virtio_pci.c')
-rw-r--r-- | drivers/virtio/virtio_pci.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 4a1f1ebff7b..28d9cf7cf72 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c @@ -530,19 +530,22 @@ static int vp_try_to_find_vqs(struct virtio_device *vdev, unsigned nvqs, err = PTR_ERR(vqs[i]); goto error_find; } + + if (!vp_dev->per_vq_vectors || msix_vec == VIRTIO_MSI_NO_VECTOR) + continue; + /* allocate per-vq irq if available and necessary */ - if (vp_dev->per_vq_vectors) { - snprintf(vp_dev->msix_names[msix_vec], - sizeof *vp_dev->msix_names, - "%s-%s", - dev_name(&vp_dev->vdev.dev), names[i]); - err = request_irq(msix_vec, vring_interrupt, 0, - vp_dev->msix_names[msix_vec], - vqs[i]); - if (err) { - vp_del_vq(vqs[i]); - goto error_find; - } + snprintf(vp_dev->msix_names[msix_vec], + sizeof *vp_dev->msix_names, + "%s-%s", + dev_name(&vp_dev->vdev.dev), names[i]); + err = request_irq(vp_dev->msix_entries[msix_vec].vector, + vring_interrupt, 0, + vp_dev->msix_names[msix_vec], + vqs[i]); + if (err) { + vp_del_vq(vqs[i]); + goto error_find; } } return 0; |