PCI: vmd: Reserve IRQ pre-vector for better affinity

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>
This commit is contained in:
Keith Busch 2017-07-20 19:33:53 -04:00 committed by Bjorn Helgaas
parent 16f73eb02d
commit 37d7f818a4
1 changed files with 10 additions and 2 deletions

View File

@ -671,6 +671,14 @@ static int vmd_probe(struct pci_dev *dev, const struct pci_device_id *id)
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;
@ -696,8 +704,8 @@ static int vmd_probe(struct pci_dev *dev, const struct pci_device_id *id)
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;