aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/host/vmd.c
diff options
context:
space:
mode:
authorKeith Busch <keith.busch@intel.com>2017-07-20 19:33:54 -0400
committerBjorn Helgaas <bhelgaas@google.com>2017-08-03 17:51:19 -0400
commitf2586c678cb29f40a37c9c88a22b13d35484ffdc (patch)
tree69178aed7fe474cea79029c919956d17dc6ca64b /drivers/pci/host/vmd.c
parent37d7f818a4629ebbb94c2c092c533a437ba7f95c (diff)
PCI: vmd: Assign vector zero to all bridges
We don't want slower IRQ handlers impacting faster devices that happen to be assigned the same VMD interrupt vector. The driver was trying to separate such devices by checking if MSI-X wasn't used, but really we just don't want endpoint devices to share with bridges. Most bridges may use MSI currently, so that criteria happened to work, but newer ones may use MSI-X, so this patch explicitly checks the device type when choosing a vector. Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci/host/vmd.c')
-rw-r--r--drivers/pci/host/vmd.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/pci/host/vmd.c b/drivers/pci/host/vmd.c
index 539da102f3d7..7e967a8784b2 100644
--- a/drivers/pci/host/vmd.c
+++ b/drivers/pci/host/vmd.c
@@ -183,7 +183,7 @@ static struct vmd_irq_list *vmd_next_irq(struct vmd_dev *vmd, struct msi_desc *d
183 int i, best = 1; 183 int i, best = 1;
184 unsigned long flags; 184 unsigned long flags;
185 185
186 if (!desc->msi_attrib.is_msix || vmd->msix_count == 1) 186 if (pci_is_bridge(msi_desc_to_pci_dev(desc)) || vmd->msix_count == 1)
187 return &vmd->irqs[0]; 187 return &vmd->irqs[0];
188 188
189 raw_spin_lock_irqsave(&list_lock, flags); 189 raw_spin_lock_irqsave(&list_lock, flags);