diff options
Diffstat (limited to 'drivers/pci/controller/vmd.c')
-rw-r--r-- | drivers/pci/controller/vmd.c | 13 |
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) |