Skip to content

Commit 3f5eb06

Browse files
Ranjan Kumarmartinkpetersen
authored andcommitted
scsi: mpt3sas: Diag-Reset when Doorbell-In-Use bit is set during driver load time
Issue a Diag-Reset when the "Doorbell-In-Use" bit is set during the driver load/initialization. Signed-off-by: Ranjan Kumar <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Martin K. Petersen <[email protected]>
1 parent e7d3b40 commit 3f5eb06

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

drivers/scsi/mpt3sas/mpt3sas_base.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7041,11 +7041,12 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
70417041
int i;
70427042
u8 failed;
70437043
__le32 *mfp;
7044+
int ret_val;
70447045

70457046
/* make sure doorbell is not in use */
70467047
if ((ioc->base_readl_ext_retry(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) {
70477048
ioc_err(ioc, "doorbell is in use (line=%d)\n", __LINE__);
7048-
return -EFAULT;
7049+
goto doorbell_diag_reset;
70497050
}
70507051

70517052
/* clear pending doorbell interrupts from previous state changes */
@@ -7135,6 +7136,10 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
71357136
le32_to_cpu(mfp[i]));
71367137
}
71377138
return 0;
7139+
7140+
doorbell_diag_reset:
7141+
ret_val = _base_diag_reset(ioc);
7142+
return ret_val;
71387143
}
71397144

71407145
/**

0 commit comments

Comments
 (0)