The driver has a special purpose for the VMD device's first IRQ, so this
one shouldn't be considered for IRQ affinity.
Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
struct vmd_dev *vmd;
int i, err;
+ /*
+ * The first vector is reserved for special use, so start affinity at
+ * the second vector
+ */
+ struct irq_affinity affd = {
+ .pre_vectors = 1,
+ };
+
if (resource_size(&dev->resource[VMD_CFGBAR]) < (1 << 20))
return -ENOMEM;
if (vmd->msix_count < 0)
return -ENODEV;
- vmd->msix_count = pci_alloc_irq_vectors(dev, 1, vmd->msix_count,
- PCI_IRQ_MSIX | PCI_IRQ_AFFINITY);
+ vmd->msix_count = pci_alloc_irq_vectors_affinity(dev, 1, vmd->msix_count,
+ PCI_IRQ_MSIX | PCI_IRQ_AFFINITY, &affd);
if (vmd->msix_count < 0)
return vmd->msix_count;