* [PATCH 1/1] bnx2x: fix slowpath null crash
@ 2017-11-08 2:56 Zhu Yanjun
[not found] ` <CY1PR0701MB13374A62C11CABB1A930453090560@CY1PR0701MB1337.namprd07.prod.outlook.com>
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Zhu Yanjun @ 2017-11-08 2:56 UTC (permalink / raw)
To: ariel.elior, everest-linux-l2, netdev
When "NETDEV WATCHDOG: em4 (bnx2x): transmit queue 2 timed out" occurs,
BNX2X_SP_RTNL_TX_TIMEOUT is set. In the function bnx2x_sp_rtnl_task,
bnx2x_nic_unload and bnx2x_nic_load are executed to shutdown and open
NIC. In the function bnx2x_nic_load, bnx2x_alloc_mem allocates dma
failure. The message "bnx2x: [bnx2x_alloc_mem:8399(em4)]Can't
allocate memory" pops out. The variable slowpath is set to NULL.
When shutdown the NIC, the function bnx2x_nic_unload is called. In
the function bnx2x_nic_unload, the following functions are executed.
bnx2x_chip_cleanup
bnx2x_set_storm_rx_mode
bnx2x_set_q_rx_mode
bnx2x_set_q_rx_mode
bnx2x_config_rx_mode
bnx2x_set_rx_mode_e2
In the function bnx2x_set_rx_mode_e2, the variable slowpath is operated.
Then the crash occurs.
To fix this crash, the variable slowpath is checked. And in the function
bnx2x_sp_rtnl_task, after dma memory allocation fails, another shutdown
and open NIC is executed.
CC: Joe Jin <joe.jin@oracle.com>
CC: Junxiao Bi <junxiao.bi@oracle.com>
Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index c12b4d3..5929324 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -9332,7 +9332,7 @@ void bnx2x_chip_cleanup(struct bnx2x *bp, int unload_mode, bool keep_link)
/* Schedule the rx_mode command */
if (test_bit(BNX2X_FILTER_RX_MODE_PENDING, &bp->sp_state))
set_bit(BNX2X_FILTER_RX_MODE_SCHED, &bp->sp_state);
- else
+ else if (!bp->slowpath)
bnx2x_set_storm_rx_mode(bp);
/* Cleanup multicast configuration */
@@ -10271,8 +10271,16 @@ static void bnx2x_sp_rtnl_task(struct work_struct *work)
smp_mb();
bnx2x_nic_unload(bp, UNLOAD_NORMAL, true);
- bnx2x_nic_load(bp, LOAD_NORMAL);
-
+ /*When ret value shows failure of allocation failure,
+ *the nic is rebooted again. If open still fails, a error
+ *message to notify the user.
+ */
+ if (bnx2x_nic_load(bp, LOAD_NORMAL) == -ENOMEM) {
+ bnx2x_nic_unload(bp, UNLOAD_NORMAL, true);
+ if (bnx2x_nic_load(bp, LOAD_NORMAL)) {
+ BNX2X_ERR("Open the NIC fails again!\n");
+ }
+ }
rtnl_unlock();
return;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <CY1PR0701MB13374A62C11CABB1A930453090560@CY1PR0701MB1337.namprd07.prod.outlook.com>]
* Re: [PATCH 1/1] bnx2x: fix slowpath null crash
[not found] ` <CY1PR0701MB13374A62C11CABB1A930453090560@CY1PR0701MB1337.namprd07.prod.outlook.com>
@ 2017-11-08 4:26 ` Yanjun Zhu
0 siblings, 0 replies; 6+ messages in thread
From: Yanjun Zhu @ 2017-11-08 4:26 UTC (permalink / raw)
To: Elior, Ariel, everest-linux-l2, netdev, yanjun.zhu, joe.jin,
JUNXIAO_BI, Srinivas Eeda
On 2017/11/8 11:27, Elior, Ariel wrote:
>> When "NETDEV WATCHDOG: em4 (bnx2x): transmit queue 2 timed out" occurs,
>> BNX2X_SP_RTNL_TX_TIMEOUT is set. In the function bnx2x_sp_rtnl_task,
>> bnx2x_nic_unload and bnx2x_nic_load are executed to shutdown and open
>> NIC. In the function bnx2x_nic_load, bnx2x_alloc_mem allocates dma
>> failure. The message "bnx2x: [bnx2x_alloc_mem:8399(em4)]Can't
>> allocate memory" pops out. The variable slowpath is set to NULL.
>> When shutdown the NIC, the function bnx2x_nic_unload is called. In
>> the function bnx2x_nic_unload, the following functions are executed.
>> bnx2x_chip_cleanup
>> bnx2x_set_storm_rx_mode
>> bnx2x_set_q_rx_mode
>> bnx2x_set_q_rx_mode
>> bnx2x_config_rx_mode
>> bnx2x_set_rx_mode_e2
>> In the function bnx2x_set_rx_mode_e2, the variable slowpath is operated.
>> Then the crash occurs.
>> To fix this crash, the variable slowpath is checked. And in the function
>> bnx2x_sp_rtnl_task, after dma memory allocation fails, another shutdown
>> and open NIC is executed.
>>
>> CC: Joe Jin <joe.jin@oracle.com>
>> CC: Junxiao Bi <junxiao.bi@oracle.com>
>> Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
> Acked-by: Ariel Elior <aelior@cavium.com>
Thanks a lot.
Zhu Yanjun
>
> Thanks Zhu - you did a thorough job.
> Ariel
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCHv2 1/1] bnx2x: fix slowpath null crash
2017-11-08 2:56 [PATCH 1/1] bnx2x: fix slowpath null crash Zhu Yanjun
[not found] ` <CY1PR0701MB13374A62C11CABB1A930453090560@CY1PR0701MB1337.namprd07.prod.outlook.com>
@ 2017-11-08 8:37 ` Zhu Yanjun
2017-11-11 3:28 ` [PATCH " David Miller
2 siblings, 0 replies; 6+ messages in thread
From: Zhu Yanjun @ 2017-11-08 8:37 UTC (permalink / raw)
To: ariel.elior, everest-linux-l2, netdev
When "NETDEV WATCHDOG: em4 (bnx2x): transmit queue 2 timed out" occurs,
BNX2X_SP_RTNL_TX_TIMEOUT is set. In the function bnx2x_sp_rtnl_task,
bnx2x_nic_unload and bnx2x_nic_load are executed to shutdown and open
NIC. In the function bnx2x_nic_load, bnx2x_alloc_mem allocates dma
failure. The message "bnx2x: [bnx2x_alloc_mem:8399(em4)]Can't
allocate memory" pops out. The variable slowpath is set to NULL.
When shutdown the NIC, the function bnx2x_nic_unload is called. In
the function bnx2x_nic_unload, the following functions are executed.
bnx2x_chip_cleanup
bnx2x_set_storm_rx_mode
bnx2x_set_q_rx_mode
bnx2x_set_q_rx_mode
bnx2x_config_rx_mode
bnx2x_set_rx_mode_e2
In the function bnx2x_set_rx_mode_e2, the variable slowpath is operated.
Then the crash occurs.
To fix this crash, the variable slowpath is checked. And in the function
bnx2x_sp_rtnl_task, after dma memory allocation fails, another shutdown
and open NIC is executed.
CC: Joe Jin <joe.jin@oracle.com>
CC: Junxiao Bi <junxiao.bi@oracle.com>
Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
Acked-by: Ariel Elior <aelior@cavium.com>
---
V1->v2
Changes: add Acker and remove unnecessary brackets
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index c12b4d3..fbd302a 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -9332,7 +9332,7 @@ void bnx2x_chip_cleanup(struct bnx2x *bp, int unload_mode, bool keep_link)
/* Schedule the rx_mode command */
if (test_bit(BNX2X_FILTER_RX_MODE_PENDING, &bp->sp_state))
set_bit(BNX2X_FILTER_RX_MODE_SCHED, &bp->sp_state);
- else
+ else if (bp->slowpath)
bnx2x_set_storm_rx_mode(bp);
/* Cleanup multicast configuration */
@@ -10271,8 +10271,15 @@ static void bnx2x_sp_rtnl_task(struct work_struct *work)
smp_mb();
bnx2x_nic_unload(bp, UNLOAD_NORMAL, true);
- bnx2x_nic_load(bp, LOAD_NORMAL);
-
+ /*When ret value shows failure of allocation failure,
+ *the nic is rebooted again. If open still fails, a error
+ *message to notify the user.
+ */
+ if (bnx2x_nic_load(bp, LOAD_NORMAL) == -ENOMEM) {
+ bnx2x_nic_unload(bp, UNLOAD_NORMAL, true);
+ if (bnx2x_nic_load(bp, LOAD_NORMAL))
+ BNX2X_ERR("Open the NIC fails again!\n");
+ }
rtnl_unlock();
return;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/1] bnx2x: fix slowpath null crash
2017-11-08 2:56 [PATCH 1/1] bnx2x: fix slowpath null crash Zhu Yanjun
[not found] ` <CY1PR0701MB13374A62C11CABB1A930453090560@CY1PR0701MB1337.namprd07.prod.outlook.com>
2017-11-08 8:37 ` [PATCHv2 " Zhu Yanjun
@ 2017-11-11 3:28 ` David Miller
2017-11-11 15:42 ` [PATCHv3 " Zhu Yanjun
2 siblings, 1 reply; 6+ messages in thread
From: David Miller @ 2017-11-11 3:28 UTC (permalink / raw)
To: yanjun.zhu; +Cc: ariel.elior, everest-linux-l2, netdev
From: Zhu Yanjun <yanjun.zhu@oracle.com>
Date: Tue, 7 Nov 2017 21:56:21 -0500
> + /*When ret value shows failure of allocation failure,
> + *the nic is rebooted again. If open still fails, a error
> + *message to notify the user.
> + */
Please fix the style of this comment, it should be:
/* Text
* here.
*/
So there needs to be a leading space.
Thank you.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCHv3 1/1] bnx2x: fix slowpath null crash
2017-11-11 3:28 ` [PATCH " David Miller
@ 2017-11-11 15:42 ` Zhu Yanjun
2017-11-14 7:16 ` David Miller
0 siblings, 1 reply; 6+ messages in thread
From: Zhu Yanjun @ 2017-11-11 15:42 UTC (permalink / raw)
To: ariel.elior, everest-linux-l2, netdev
When "NETDEV WATCHDOG: em4 (bnx2x): transmit queue 2 timed out" occurs,
BNX2X_SP_RTNL_TX_TIMEOUT is set. In the function bnx2x_sp_rtnl_task,
bnx2x_nic_unload and bnx2x_nic_load are executed to shutdown and open
NIC. In the function bnx2x_nic_load, bnx2x_alloc_mem allocates dma
failure. The message "bnx2x: [bnx2x_alloc_mem:8399(em4)]Can't
allocate memory" pops out. The variable slowpath is set to NULL.
When shutdown the NIC, the function bnx2x_nic_unload is called. In
the function bnx2x_nic_unload, the following functions are executed.
bnx2x_chip_cleanup
bnx2x_set_storm_rx_mode
bnx2x_set_q_rx_mode
bnx2x_set_q_rx_mode
bnx2x_config_rx_mode
bnx2x_set_rx_mode_e2
In the function bnx2x_set_rx_mode_e2, the variable slowpath is operated.
Then the crash occurs.
To fix this crash, the variable slowpath is checked. And in the function
bnx2x_sp_rtnl_task, after dma memory allocation fails, another shutdown
and open NIC is executed.
CC: Joe Jin <joe.jin@oracle.com>
CC: Junxiao Bi <junxiao.bi@oracle.com>
Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
Acked-by: Ariel Elior <aelior@cavium.com>
---
v2->v3
Changes: fix the style of comments, add the leading space
V1->v2
Changes: add Acker and remove unnecessary brackets
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index c12b4d3..fbd302a 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -9332,7 +9332,7 @@ void bnx2x_chip_cleanup(struct bnx2x *bp, int unload_mode, bool keep_link)
/* Schedule the rx_mode command */
if (test_bit(BNX2X_FILTER_RX_MODE_PENDING, &bp->sp_state))
set_bit(BNX2X_FILTER_RX_MODE_SCHED, &bp->sp_state);
- else
+ else if (bp->slowpath)
bnx2x_set_storm_rx_mode(bp);
/* Cleanup multicast configuration */
@@ -10271,8 +10271,15 @@ static void bnx2x_sp_rtnl_task(struct work_struct *work)
smp_mb();
bnx2x_nic_unload(bp, UNLOAD_NORMAL, true);
- bnx2x_nic_load(bp, LOAD_NORMAL);
-
+ /* When ret value shows failure of allocation failure,
+ * the nic is rebooted again. If open still fails, a error
+ * message to notify the user.
+ */
+ if (bnx2x_nic_load(bp, LOAD_NORMAL) == -ENOMEM) {
+ bnx2x_nic_unload(bp, UNLOAD_NORMAL, true);
+ if (bnx2x_nic_load(bp, LOAD_NORMAL))
+ BNX2X_ERR("Open the NIC fails again!\n");
+ }
rtnl_unlock();
return;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCHv3 1/1] bnx2x: fix slowpath null crash
2017-11-11 15:42 ` [PATCHv3 " Zhu Yanjun
@ 2017-11-14 7:16 ` David Miller
0 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2017-11-14 7:16 UTC (permalink / raw)
To: yanjun.zhu; +Cc: ariel.elior, everest-linux-l2, netdev
From: Zhu Yanjun <yanjun.zhu@oracle.com>
Date: Sat, 11 Nov 2017 10:42:03 -0500
> When "NETDEV WATCHDOG: em4 (bnx2x): transmit queue 2 timed out" occurs,
> BNX2X_SP_RTNL_TX_TIMEOUT is set. In the function bnx2x_sp_rtnl_task,
> bnx2x_nic_unload and bnx2x_nic_load are executed to shutdown and open
> NIC. In the function bnx2x_nic_load, bnx2x_alloc_mem allocates dma
> failure. The message "bnx2x: [bnx2x_alloc_mem:8399(em4)]Can't
> allocate memory" pops out. The variable slowpath is set to NULL.
> When shutdown the NIC, the function bnx2x_nic_unload is called. In
> the function bnx2x_nic_unload, the following functions are executed.
> bnx2x_chip_cleanup
> bnx2x_set_storm_rx_mode
> bnx2x_set_q_rx_mode
> bnx2x_set_q_rx_mode
> bnx2x_config_rx_mode
> bnx2x_set_rx_mode_e2
> In the function bnx2x_set_rx_mode_e2, the variable slowpath is operated.
> Then the crash occurs.
> To fix this crash, the variable slowpath is checked. And in the function
> bnx2x_sp_rtnl_task, after dma memory allocation fails, another shutdown
> and open NIC is executed.
>
> CC: Joe Jin <joe.jin@oracle.com>
> CC: Junxiao Bi <junxiao.bi@oracle.com>
> Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
> Acked-by: Ariel Elior <aelior@cavium.com>
Applied.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-11-14 7:16 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-08 2:56 [PATCH 1/1] bnx2x: fix slowpath null crash Zhu Yanjun
[not found] ` <CY1PR0701MB13374A62C11CABB1A930453090560@CY1PR0701MB1337.namprd07.prod.outlook.com>
2017-11-08 4:26 ` Yanjun Zhu
2017-11-08 8:37 ` [PATCHv2 " Zhu Yanjun
2017-11-11 3:28 ` [PATCH " David Miller
2017-11-11 15:42 ` [PATCHv3 " Zhu Yanjun
2017-11-14 7:16 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).