diff mbox

[1/3] qla2xxx: fix error message on <qla2400

Message ID alpine.LRH.2.21.1803081543250.23373@math.ut.ee (mailing list archive)
State Accepted
Headers show

Commit Message

Meelis Roos March 8, 2018, 1:44 p.m. UTC
This patch fixes IO traps caught by hardware when mailbox command fails on
qla2200. The error handler assumes newer firmware that is available on 2400 and
newer HBA-s.

This causes ugly crashes on sparc64.

Fix it with separate debug prints on different firmware generations like most
other places do.

Note: the debug line identifier is the same 0x1198 for both cases. Maybe it
needs to be renumbered in the new case?

Signed-off-by: Meelis Roos <mroos@linux.ee>

---
 drivers/scsi/qla2xxx/qla_mbx.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

Comments

Martin K. Petersen March 20, 2018, 3:49 a.m. UTC | #1
Meelis,

> This patch fixes IO traps caught by hardware when mailbox command fails on
> qla2200. The error handler assumes newer firmware that is available on 2400 and
> newer HBA-s.
>
> This causes ugly crashes on sparc64.
>
> Fix it with separate debug prints on different firmware generations like most
> other places do.
>
> Note: the debug line identifier is the same 0x1198 for both cases. Maybe it
> needs to be renumbered in the new case?

QLogic folks: Please review the following patches.

	https://patchwork.kernel.org/patch/10268119/
	https://patchwork.kernel.org/patch/10268121/
Martin K. Petersen March 21, 2018, 11:04 p.m. UTC | #2
Meelis,

> This patch fixes IO traps caught by hardware when mailbox command fails on
> qla2200. The error handler assumes newer firmware that is available on 2400 and
> newer HBA-s.
>
> This causes ugly crashes on sparc64.

Amended according to Himanshu's requests and applied to 4.16/scsi-fixes.
diff mbox

Patch

diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 7397aed..3a81555 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -503,11 +503,19 @@  qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
 				}
 			pr_warn(" cmd=%x ****\n", command);
 		}
-		ql_dbg(ql_dbg_mbx, vha, 0x1198,
-		    "host_status=%#x intr_ctrl=%#x intr_status=%#x\n",
-		    RD_REG_DWORD(&reg->isp24.host_status),
-		    RD_REG_DWORD(&reg->isp24.ictrl),
-		    RD_REG_DWORD(&reg->isp24.istatus));
+		if (IS_FWI2_CAPABLE(ha) && !(IS_P3P_TYPE(ha))) {
+			ql_dbg(ql_dbg_mbx, vha, 0x1198,
+			    "host_status=%#x intr_ctrl=%#x intr_status=%#x\n",
+			    RD_REG_DWORD(&reg->isp24.host_status),
+			    RD_REG_DWORD(&reg->isp24.ictrl),
+			    RD_REG_DWORD(&reg->isp24.istatus));
+		} else {
+			ql_dbg(ql_dbg_mbx, vha, 0x1198,
+			    "ctrl_status=%#x ictrl=%#x istatus=%#x\n",
+			    RD_REG_WORD(&reg->isp.ctrl_status),
+			    RD_REG_WORD(&reg->isp.ictrl),
+			    RD_REG_WORD(&reg->isp.istatus));
+		}
 	} else {
 		ql_dbg(ql_dbg_mbx, base_vha, 0x1021, "Done %s.\n", __func__);
 	}