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 <mr...@linux.ee>

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

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__);
        }
-- 
2.1.4

Reply via email to