Message ID | 20200122094338.14153-1-manishc@marvell.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | [net,1/1] qlcnic: Fix CPU soft lockup while collecting firmware dump | expand |
From: Manish Chopra <manishc@marvell.com> Date: Wed, 22 Jan 2020 01:43:38 -0800 > Driver while collecting firmware dump takes longer time to > collect/process some of the firmware dump entries/memories. > Bigger capture masks makes it worse as it results in larger > amount of data being collected and results in CPU soft lockup. > Place cond_resched() in some of the driver flows that are > expectedly time consuming to relinquish the CPU to avoid CPU > soft lockup panic. > > Signed-off-by: Shahed Shaikh <shshaikh@marvell.com> > Tested-by: Yonggen Xu <Yonggen.Xu@dell.com> > Signed-off-by: Manish Chopra <manishc@marvell.com> Applied.
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c index a496390b8632..07f9067affc6 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c @@ -2043,6 +2043,7 @@ static void qlcnic_83xx_exec_template_cmd(struct qlcnic_adapter *p_dev, break; } entry += p_hdr->size; + cond_resched(); } p_dev->ahw->reset.seq_index = index; } diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c index afa10a163da1..f34ae8c75bc5 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_minidump.c @@ -703,6 +703,7 @@ static u32 qlcnic_read_memory_test_agent(struct qlcnic_adapter *adapter, addr += 16; reg_read -= 16; ret += 16; + cond_resched(); } out: mutex_unlock(&adapter->ahw->mem_lock); @@ -1383,6 +1384,7 @@ int qlcnic_dump_fw(struct qlcnic_adapter *adapter) buf_offset += entry->hdr.cap_size; entry_offset += entry->hdr.offset; buffer = fw_dump->data + buf_offset; + cond_resched(); } fw_dump->clr = 1;