summaryrefslogtreecommitdiff
path: root/drivers/pci/host
diff options
context:
space:
mode:
authorKeith Busch <keith.busch@intel.com>2017-08-30 19:15:04 +0300
committerBjorn Helgaas <bhelgaas@google.com>2017-08-31 00:18:38 +0300
commit46a6561b29cb42c06ebf193ccec3c5b666c0fc3f (patch)
tree9268cd4ba18a89f5fcf1fbe1b8f594e76a6f2029 /drivers/pci/host
parente2b1820bd5d0962d6f271b0d47c3a0e38647df2f (diff)
downloadlinux-46a6561b29cb42c06ebf193ccec3c5b666c0fc3f.tar.xz
PCI: vmd: Remove IRQ affinity so we can allocate more IRQs
VMD hardware has to share its vectors among child devices in its PCI domain so we should allocate as many as possible rather than just ones that can be affinitized. pci_alloc_irq_vectors_affinity() limits the number of affinitized IRQs to the number of present CPUs (see irq_calc_affinity_vectors()). But we'd prefer to have more vectors, even if they aren't distributed across the CPUs, so use pci_alloc_irq_vectors() instead. Reported-by: Brad Goodman <Bradley.Goodman@dell.com> Signed-off-by: Keith Busch <keith.busch@intel.com> [bhelgaas: add irq_calc_affinity_vectors() reference to changelog] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci/host')
-rw-r--r--drivers/pci/host/vmd.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/drivers/pci/host/vmd.c b/drivers/pci/host/vmd.c
index 4fe1756af010..509893bc3e63 100644
--- a/drivers/pci/host/vmd.c
+++ b/drivers/pci/host/vmd.c
@@ -671,14 +671,6 @@ 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;
@@ -704,8 +696,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_affinity(dev, 1, vmd->msix_count,
- PCI_IRQ_MSIX | PCI_IRQ_AFFINITY, &affd);
+ vmd->msix_count = pci_alloc_irq_vectors(dev, 1, vmd->msix_count,
+ PCI_IRQ_MSIX);
if (vmd->msix_count < 0)
return vmd->msix_count;