From: Xiaoyu Li xiaoyu.li@corigine.com
Before the referenced commit, when we requested a certain number of interrupts, if we could not meet the requirements, the number of interrupts supported by the hardware would be returned. But after the referenced commit, if the hardware failed to meet the requirements, the error of invalid argument would be directly returned, which caused a regression in the nfp driver preventing probing to complete.
Fixes: bab65e48cb06 ("PCI/MSI: Sanitize MSI-X checks") Cc: stable@vger.kernel.org Signed-off-by: Xiaoyu Li xiaoyu.li@corigine.com Acked-by: Simon Horman simon.horman@corigine.com Signed-off-by: Louis Peens louis.peens@corigine.com --- drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 62f0bf91d1e1..0e4cab38f075 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -370,6 +370,12 @@ nfp_net_irqs_alloc(struct pci_dev *pdev, struct msix_entry *irq_entries, { unsigned int i; int got_irqs; + int max_irqs; + + max_irqs = pci_msix_vec_count(pdev); + if (max_irqs < 0) + return max_irqs; + wanted_irqs = min_t(unsigned int, max_irqs, wanted_irqs);
for (i = 0; i < wanted_irqs; i++) irq_entries[i].entry = i;