bnx2x: prevent race between undi_unload and load flows
Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cdb9d6ae8d
commit
2031bd3a8a
|
@ -5798,6 +5798,12 @@ static int bnx2x_init_hw_common(struct bnx2x *bp)
|
|||
|
||||
DP(BNX2X_MSG_MCP, "starting common init func %d\n", BP_ABS_FUNC(bp));
|
||||
|
||||
/*
|
||||
* take the UNDI lock to protect undi_unload flow from accessing
|
||||
* registers while we're resetting the chip
|
||||
*/
|
||||
bnx2x_acquire_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
|
||||
|
||||
bnx2x_reset_common(bp);
|
||||
REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, 0xffffffff);
|
||||
|
||||
|
@ -5808,6 +5814,8 @@ static int bnx2x_init_hw_common(struct bnx2x *bp)
|
|||
}
|
||||
REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, val);
|
||||
|
||||
bnx2x_release_hw_lock(bp, HW_LOCK_RESOURCE_UNDI);
|
||||
|
||||
bnx2x_init_block(bp, BLOCK_MISC, PHASE_COMMON);
|
||||
|
||||
if (!CHIP_IS_E1x(bp)) {
|
||||
|
|
Loading…
Reference in New Issue