[+cc linux-pci, regressions] On Thu, Apr 06, 2023 at 11:05:14AM +0000, David Laight wrote: > The change in bab65e48cb064 breaks pci_enable_msix_range(). > The intent is to optimise the sanity checks, but it is > somewhat overenthusiastic. > > The interface allows you to ask for a lot of vectors and > returns the number that were allocated. > However, after the change, you can't request a vector > that is higher than the largest the hardware supports. > Which makes that rather pointless. > > So code like: > for (i = 0; i < 16; i++) > msix_tbl[i].entry = i; > nvec = pci_enable_msix_range(dev, msix_tbl, 1, 16); > Now returns -22 if the hardware only supports 8 interrupts. > > Previously it returned 8. > > I can fix my driver, but I suspect that any code that relies > on a smaller number of vectors being returned is now broken. Thanks for the report! bab65e48cb06 ("PCI/MSI: Sanitize MSI-X checks") appeared in v6.2-rc1, so this is a recent regression and it would be good to fix it for v6.3. bab65e48cb06 only touches drivers/pci/msi/msi.c, but since it didn't go through the PCI tree, I'll let Thomas handle any revert (or better, an improvement to pci_msix_validate_entries()) since he wrote and applied the original. Bjorn