aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/controller/vmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/controller/vmd.c')
-rw-r--r--drivers/pci/controller/vmd.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c
index 942b64fc7f1f..fd2dbd7eed7b 100644
--- a/drivers/pci/controller/vmd.c
+++ b/drivers/pci/controller/vmd.c
@@ -197,9 +197,20 @@ static struct vmd_irq_list *vmd_next_irq(struct vmd_dev *vmd, struct msi_desc *d
197 int i, best = 1; 197 int i, best = 1;
198 unsigned long flags; 198 unsigned long flags;
199 199
200 if (pci_is_bridge(msi_desc_to_pci_dev(desc)) || vmd->msix_count == 1) 200 if (vmd->msix_count == 1)
201 return &vmd->irqs[0]; 201 return &vmd->irqs[0];
202 202
203 /*
204 * White list for fast-interrupt handlers. All others will share the
205 * "slow" interrupt vector.
206 */
207 switch (msi_desc_to_pci_dev(desc)->class) {
208 case PCI_CLASS_STORAGE_EXPRESS:
209 break;
210 default:
211 return &vmd->irqs[0];
212 }
213
203 raw_spin_lock_irqsave(&list_lock, flags); 214 raw_spin_lock_irqsave(&list_lock, flags);
204 for (i = 1; i < vmd->msix_count; i++) 215 for (i = 1; i < vmd->msix_count; i++)
205 if (vmd->irqs[i].count < vmd->irqs[best].count) 216 if (vmd->irqs[i].count < vmd->irqs[best].count)