(unsigned int)num_online_cpus());
                for (i = 0; i < instance->msix_vectors; i++)
                        instance->msixentry[i].entry = i;
-               i = pci_enable_msix(instance->pdev, instance->msixentry,
-                                   instance->msix_vectors);
-               if (i >= 0) {
-                       if (i) {
-                               if (!pci_enable_msix(instance->pdev,
-                                                    instance->msixentry, i))
-                                       instance->msix_vectors = i;
-                               else
-                                       instance->msix_vectors = 0;
-                       }
-               } else
+               i = pci_enable_msix_range(instance->pdev, instance->msixentry,
+                                         1, instance->msix_vectors);
+               if (i)
+                       instance->msix_vectors = i;
+               else
                        instance->msix_vectors = 0;
 
                dev_info(&instance->pdev->dev, "[scsi%d]: FW supports"
 
        /* Now re-enable MSI-X */
        if (instance->msix_vectors &&
-           pci_enable_msix(instance->pdev, instance->msixentry,
-                           instance->msix_vectors))
+           pci_enable_msix_exact(instance->pdev, instance->msixentry,
+                                 instance->msix_vectors))
                goto fail_reenable_msix;
 
        switch (instance->pdev->device) {