OSDN Git Service

vfio: Use pci_enable_msi_range() and pci_enable_msix_range()
authorAlexander Gordeev <agordeev@redhat.com>
Fri, 17 Jan 2014 16:02:21 +0000 (17:02 +0100)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 14 Feb 2014 21:23:40 +0000 (14:23 -0700)
pci_enable_msix() and pci_enable_msi_block() have been deprecated; use
pci_enable_msix_range() and pci_enable_msi_range() instead.

[bhelgaas: changelog]
Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/pci/vfio_pci_intrs.c

index 2103576..9dd49c9 100644 (file)
@@ -482,15 +482,19 @@ static int vfio_msi_enable(struct vfio_pci_device *vdev, int nvec, bool msix)
                for (i = 0; i < nvec; i++)
                        vdev->msix[i].entry = i;
 
-               ret = pci_enable_msix(pdev, vdev->msix, nvec);
-               if (ret) {
+               ret = pci_enable_msix_range(pdev, vdev->msix, 1, nvec);
+               if (ret < nvec) {
+                       if (ret > 0)
+                               pci_disable_msix(pdev);
                        kfree(vdev->msix);
                        kfree(vdev->ctx);
                        return ret;
                }
        } else {
-               ret = pci_enable_msi_block(pdev, nvec);
-               if (ret) {
+               ret = pci_enable_msi_range(pdev, 1, nvec);
+               if (ret < nvec) {
+                       if (ret > 0)
+                               pci_disable_msi(pdev);
                        kfree(vdev->ctx);
                        return ret;
                }