mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-12-28 01:05:36 +00:00
While injecting PCIe errors to the upstream PCIe switch of a BCM57810 NIC, system hangs/crashes were observed. After several calls to bnx2x_tx_timout() complete, bnx2x_nic_unload() is called to free up HW resources and bnx2x_napi_disable() is called to release NAPI objects. Later, when the EEH driver calls bnx2x_io_slot_reset() to complete the recovery process, bnx2x attempts to disable NAPI again by calling bnx2x_napi_disable() and freeing resources which have already been freed, resulting in a hang or crash. Introduce a new flag to track the HW resource and NAPI allocation state, refactor duplicated code into a single function, check page pool allocation status before freeing, and reduces debug output when a TX timeout event occurs. Reviewed-by: Manish Chopra <manishc@marvell.com> Tested-by: Abdul Haleem <abdhalee@in.ibm.com> Tested-by: David Christensen <drc@linux.vnet.ibm.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Tested-by: Venkata Sai Duggi <venkata.sai.duggi@ibm.com> Signed-off-by: Thinh Tran <thinhtr@linux.vnet.ibm.com> Link: https://lore.kernel.org/r/20230818161443.708785-2-thinhtr@linux.vnet.ibm.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
||
|---|---|---|
| .. | ||
| bnx2x_cmn.c | ||
| bnx2x_cmn.h | ||
| bnx2x_dcb.c | ||
| bnx2x_dcb.h | ||
| bnx2x_dump.h | ||
| bnx2x_ethtool.c | ||
| bnx2x_fw_defs.h | ||
| bnx2x_fw_file_hdr.h | ||
| bnx2x_hsi.h | ||
| bnx2x_init_ops.h | ||
| bnx2x_init.h | ||
| bnx2x_link.c | ||
| bnx2x_link.h | ||
| bnx2x_main.c | ||
| bnx2x_mfw_req.h | ||
| bnx2x_reg.h | ||
| bnx2x_self_test.c | ||
| bnx2x_sp.c | ||
| bnx2x_sp.h | ||
| bnx2x_sriov.c | ||
| bnx2x_sriov.h | ||
| bnx2x_stats.c | ||
| bnx2x_stats.h | ||
| bnx2x_vfpf.c | ||
| bnx2x_vfpf.h | ||
| bnx2x.h | ||
| Makefile | ||