linux-brain/drivers/net/ethernet/broadcom/bnx2x
Guilherme G. Piccoli af60c3822a bnx2x: Improve reliability in case of nested PCI errors
[ Upstream commit f7084059a9 ]

While in recovery process of PCI error (called EEH on PowerPC arch),
another PCI transaction could be corrupted causing a situation of
nested PCI errors. Also, this scenario could be reproduced with
error injection mechanisms (for debug purposes).

We observe that in case of nested PCI errors, bnx2x might attempt to
initialize its shmem and cause a kernel crash due to bad addresses
read from MCP. Multiple different stack traces were observed depending
on the point the second PCI error happens.

This patch avoids the crashes by:

 * failing PCI recovery in case of nested errors (since multiple
 PCI errors in a row are not expected to lead to a functional
 adapter anyway), and by,

 * preventing access to adapter FW when MCP is failed (we mark it as
 failed when shmem cannot get initialized properly).

Reported-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
Signed-off-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Acked-by: Shahed Shaikh <Shahed.Shaikh@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-03-03 10:23:24 +01:00
..
Makefile bnx2x: Segregate SR-IOV code 2013-01-07 19:49:14 -08:00
bnx2x.h bnx2x: Add Geneve inner-RSS support 2016-02-16 20:12:16 -05:00
bnx2x_cmn.c bnx2x: Improve reliability in case of nested PCI errors 2018-03-03 10:23:24 +01:00
bnx2x_cmn.h net: Update API for VF vlan protocol 802.1ad support 2016-09-24 08:01:26 -04:00
bnx2x_dcb.c bnx2x: extend DCBx support 2016-02-16 20:12:16 -05:00
bnx2x_dcb.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_dump.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_ethtool.c bnx2x: Correct ringparam estimate when DOWN 2016-12-05 15:08:39 -05:00
bnx2x_fw_defs.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_fw_file_hdr.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_hsi.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-03-08 12:34:12 -05:00
bnx2x_init.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_init_ops.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_link.c bnx2x: Fix 84833 phy command handler 2016-02-21 22:50:55 -05:00
bnx2x_link.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_main.c bnx2x: Improve reliability in case of nested PCI errors 2018-03-03 10:23:24 +01:00
bnx2x_mfw_req.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_reg.h bnx2x: Fix 84833 phy command handler 2016-02-21 22:50:55 -05:00
bnx2x_sp.c bnx2x: free the mac filter group list before freeing the cmd 2016-09-27 09:55:18 -04:00
bnx2x_sp.h bnx2x: Don't flush multicast MACs 2016-08-24 09:45:20 -07:00
bnx2x_sriov.c bnx2x: do not rollback VF MAC/VLAN filters we did not configure 2017-12-14 09:28:20 +01:00
bnx2x_sriov.h bnx2x: do not rollback VF MAC/VLAN filters we did not configure 2017-12-14 09:28:20 +01:00
bnx2x_stats.c bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_stats.h bnx2x: Rebrand from 'broadcom' into 'qlogic' 2015-07-22 10:47:26 -07:00
bnx2x_vfpf.c bnx2x: fix possible overrun of VFPF multicast addresses array 2017-12-14 09:28:20 +01:00
bnx2x_vfpf.h bnx2x: add vlan filtering offload 2015-07-29 23:24:45 -07:00