diff options
Diffstat (limited to 'drivers/pci/msi.c')
-rw-r--r-- | drivers/pci/msi.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index 50c5003295ca..7f73bacf13ed 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c | |||
@@ -1206,6 +1206,16 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, | |||
1206 | if (flags & PCI_IRQ_AFFINITY) { | 1206 | if (flags & PCI_IRQ_AFFINITY) { |
1207 | if (!affd) | 1207 | if (!affd) |
1208 | affd = &msi_default_affd; | 1208 | affd = &msi_default_affd; |
1209 | |||
1210 | if (affd->pre_vectors + affd->post_vectors > min_vecs) | ||
1211 | return -EINVAL; | ||
1212 | |||
1213 | /* | ||
1214 | * If there aren't any vectors left after applying the pre/post | ||
1215 | * vectors don't bother with assigning affinity. | ||
1216 | */ | ||
1217 | if (affd->pre_vectors + affd->post_vectors == min_vecs) | ||
1218 | affd = NULL; | ||
1209 | } else { | 1219 | } else { |
1210 | if (WARN_ON(affd)) | 1220 | if (WARN_ON(affd)) |
1211 | affd = NULL; | 1221 | affd = NULL; |