Messages in this thread | | | From | Linus Torvalds <> | Date | Sat, 20 May 2017 09:49:56 -0700 | Subject | Re: [REGRESSION] Failed network caused by: xhci: switch to pci_alloc_irq_vectors |
| |
On Fri, May 19, 2017 at 5:46 AM, Christoph Hellwig <hch@lst.de> wrote: > > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 33c2b0b77429..5a7fd3b6a7b9 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -1342,7 +1342,7 @@ pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, > unsigned int max_vecs, unsigned int flags, > const struct irq_affinity *aff_desc) > { > - if (min_vecs > 1) > + if (min_vecs > 1 || !(flags & PCI_IRQ_LEGACY)) > return -EINVAL; > return 1; > }
Side note: why is it doing that " > 1" check, when any value _other_ than 1 is wrong?
Also, to match the non-MSI implementation, wouldn't it be nicer to just write it that same way (and also verify "dev->irq"):
if (flags & PCI_IRQ_LEGACY) { if (min_vecs == 1 && dev->irq) return 1; } return -ENOSPC;
(the exact error value probably doesn't matter in practice, but the CONFIG_MSI case returns ENOSPC by default and that's what Documentation/PCI/MSI-HOWTO.txt says too).
Hmm?
Linus
| |