From: Guilherme G Piccoli Date: Thu, 22 Sep 2016 13:03:58 +0000 (-0300) Subject: i40e: disable MSI-X interrupts if we cannot reserve enough vectors X-Git-Tag: v4.1.12-98.0.20170517_2143~42^2~157 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=ca18fcc0421595723e080b0e8639d98f9639f917;p=users%2Fjedix%2Flinux-maple.git i40e: disable MSI-X interrupts if we cannot reserve enough vectors Orabug: 24568124 If we fail on allocating enough MSI-X interrupts, we should disable them since they were previously enabled in this point of code. Not disabling them can lead to WARN_ON() being triggered and subsequent failure in enabling MSI as a fallback; the below message was shown without this patch while we played with interrupt allocation in i40e driver: [ 21.461346] sysfs: cannot create duplicate filename '/devices/pci0007:00/0007:00:00.0/0007:01:00.3/msi_irqs' [ 21.461459] ------------[ cut here ]------------ [ 21.461514] WARNING: CPU: 64 PID: 1155 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x88/0xc0 Also, we noticed that without this patch, if we modprobe the module without enough MSI-X interrupts (triggering the above warning), unload the module and re-load it again, we got a crash on the system. Signed-off-by: Guilherme G Piccoli Tested-by: Andrew Bowers Signed-off-by: Jeff Kirsher (cherry picked from commit 4c95aa5d8fc34be18fcab01b1c6251c8c2b61520) Signed-off-by: Brian Maly Signed-off-by: Dhaval Giani --- diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 501bcb0899257..4216c530eb217 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -7589,6 +7589,7 @@ static int i40e_init_msix(struct i40e_pf *pf) pf->flags &= ~I40E_FLAG_MSIX_ENABLED; kfree(pf->msix_entries); pf->msix_entries = NULL; + pci_disable_msix(pf->pdev); return -ENODEV; } else if (v_actual == I40E_MIN_MSIX) {