char __iomem            *cfgbar;
 
        int msix_count;
-       struct msix_entry       *msix_entries;
        struct vmd_irq_list     *irqs;
 
        struct pci_sysdata      sysdata;
        if (vmd->msix_count < 0)
                return -ENODEV;
 
-       vmd->msix_entries = devm_kcalloc(&dev->dev, vmd->msix_count,
-                                        sizeof(*vmd->msix_entries),
-                                        GFP_KERNEL);
-       if (!vmd->msix_entries)
-               return -ENOMEM;
-       for (i = 0; i < vmd->msix_count; i++)
-               vmd->msix_entries[i].entry = i;
-
-       vmd->msix_count = pci_enable_msix_range(vmd->dev, vmd->msix_entries, 1,
-                                               vmd->msix_count);
+       vmd->msix_count = pci_alloc_irq_vectors(dev, 1, vmd->msix_count,
+                                       PCI_IRQ_MSIX | PCI_IRQ_AFFINITY);
        if (vmd->msix_count < 0)
                return vmd->msix_count;
 
 
        for (i = 0; i < vmd->msix_count; i++) {
                INIT_LIST_HEAD(&vmd->irqs[i].irq_list);
-               vmd->irqs[i].vmd_vector = vmd->msix_entries[i].vector;
+               vmd->irqs[i].vmd_vector = pci_irq_vector(dev, i);
                vmd->irqs[i].index = i;
 
                err = devm_request_irq(&dev->dev, vmd->irqs[i].vmd_vector,