aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/message
diff options
context:
space:
mode:
authorKei Tokunaga <tokunaga.keiich@jp.fujitsu.com>2010-06-22 06:01:51 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-07-27 13:03:52 -0400
commit97009a29e8c999def2d1e9ef253c226daf9541af (patch)
tree00adca4e2fac97f1348ca7c11e1d885978fef718 /drivers/message
parente4bf25fbcc64a87d7dc1d3318ca56c28382757e2 (diff)
[SCSI] mptfusion: print Doorbell register in a case of hard reset and timeout
Printing Doorbell register in a case of hard reset and timeout should be useful for figuring out the state of the system. Signed-off-by: Kei Tokunaga <tokunaga.keiich@jp.fujitsu.com> Acked-by: "Desai, Kashyap" <Kashyap.Desai@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/message')
-rw-r--r--drivers/message/fusion/mptbase.c13
-rw-r--r--drivers/message/fusion/mptctl.c18
-rw-r--r--drivers/message/fusion/mptsas.c5
-rw-r--r--drivers/message/fusion/mptscsih.c12
4 files changed, 33 insertions, 15 deletions
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index c36d5b9ff663..e319abcd849c 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -5063,8 +5063,9 @@ mptbase_sas_persist_operation(MPT_ADAPTER *ioc, u8 persist_opcode)
5063 if (ioc->mptbase_cmds.status & MPT_MGMT_STATUS_DID_IOCRESET) 5063 if (ioc->mptbase_cmds.status & MPT_MGMT_STATUS_DID_IOCRESET)
5064 goto out; 5064 goto out;
5065 if (!timeleft) { 5065 if (!timeleft) {
5066 printk(KERN_DEBUG "%s: Issuing Reset from %s!!\n", 5066 printk(MYIOC_s_WARN_FMT
5067 ioc->name, __func__); 5067 "Issuing Reset from %s!!, doorbell=0x%08x\n",
5068 ioc->name, __func__, mpt_GetIocState(ioc, 0));
5068 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP); 5069 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
5069 mpt_free_msg_frame(ioc, mf); 5070 mpt_free_msg_frame(ioc, mf);
5070 } 5071 }
@@ -6455,8 +6456,9 @@ out:
6455 mutex_unlock(&ioc->mptbase_cmds.mutex); 6456 mutex_unlock(&ioc->mptbase_cmds.mutex);
6456 if (issue_hard_reset) { 6457 if (issue_hard_reset) {
6457 issue_hard_reset = 0; 6458 issue_hard_reset = 0;
6458 printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n", 6459 printk(MYIOC_s_WARN_FMT
6459 ioc->name, __func__); 6460 "Issuing Reset from %s!!, doorbell=0x%08x\n",
6461 ioc->name, __func__, mpt_GetIocState(ioc, 0));
6460 if (retry_count == 0) { 6462 if (retry_count == 0) {
6461 if (mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP) != 0) 6463 if (mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP) != 0)
6462 retry_count++; 6464 retry_count++;
@@ -7146,7 +7148,8 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag)
7146 rc = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_RECOVER, sleepFlag); 7148 rc = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_RECOVER, sleepFlag);
7147 if (rc != 0) { 7149 if (rc != 0) {
7148 printk(KERN_WARNING MYNAM 7150 printk(KERN_WARNING MYNAM
7149 ": WARNING - (%d) Cannot recover %s\n", rc, ioc->name); 7151 ": WARNING - (%d) Cannot recover %s, doorbell=0x%08x\n",
7152 rc, ioc->name, mpt_GetIocState(ioc, 0));
7150 } else { 7153 } else {
7151 if (ioc->hard_resets < -1) 7154 if (ioc->hard_resets < -1)
7152 ioc->hard_resets++; 7155 ioc->hard_resets++;
diff --git a/drivers/message/fusion/mptctl.c b/drivers/message/fusion/mptctl.c
index 9bd89cebb5a9..40046f595f1c 100644
--- a/drivers/message/fusion/mptctl.c
+++ b/drivers/message/fusion/mptctl.c
@@ -954,9 +954,12 @@ retry_wait:
954 mpt_free_msg_frame(iocp, mf); 954 mpt_free_msg_frame(iocp, mf);
955 goto fwdl_out; 955 goto fwdl_out;
956 } 956 }
957 if (!timeleft) 957 if (!timeleft) {
958 printk(MYIOC_s_WARN_FMT
959 "FW download timeout, doorbell=0x%08x\n",
960 iocp->name, mpt_GetIocState(iocp, 0));
958 mptctl_timeout_expired(iocp, mf); 961 mptctl_timeout_expired(iocp, mf);
959 else 962 } else
960 goto retry_wait; 963 goto retry_wait;
961 goto fwdl_out; 964 goto fwdl_out;
962 } 965 }
@@ -2301,6 +2304,10 @@ retry_wait:
2301 goto done_free_mem; 2304 goto done_free_mem;
2302 } 2305 }
2303 if (!timeleft) { 2306 if (!timeleft) {
2307 printk(MYIOC_s_WARN_FMT
2308 "mpt cmd timeout, doorbell=0x%08x"
2309 " function=0x%x\n",
2310 ioc->name, mpt_GetIocState(ioc, 0), function);
2304 if (function == MPI_FUNCTION_SCSI_TASK_MGMT) 2311 if (function == MPI_FUNCTION_SCSI_TASK_MGMT)
2305 mutex_unlock(&ioc->taskmgmt_cmds.mutex); 2312 mutex_unlock(&ioc->taskmgmt_cmds.mutex);
2306 mptctl_timeout_expired(ioc, mf); 2313 mptctl_timeout_expired(ioc, mf);
@@ -2608,9 +2615,12 @@ retry_wait:
2608 mpt_free_msg_frame(ioc, mf); 2615 mpt_free_msg_frame(ioc, mf);
2609 goto out; 2616 goto out;
2610 } 2617 }
2611 if (!timeleft) 2618 if (!timeleft) {
2619 printk(MYIOC_s_WARN_FMT
2620 "HOST INFO command timeout, doorbell=0x%08x\n",
2621 ioc->name, mpt_GetIocState(ioc, 0));
2612 mptctl_timeout_expired(ioc, mf); 2622 mptctl_timeout_expired(ioc, mf);
2613 else 2623 } else
2614 goto retry_wait; 2624 goto retry_wait;
2615 goto out; 2625 goto out;
2616 } 2626 }
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 46cc90c9bfc6..f705a235300e 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -4816,8 +4816,9 @@ mptsas_broadcast_primative_work(struct fw_event_work *fw_event)
4816 mutex_unlock(&ioc->taskmgmt_cmds.mutex); 4816 mutex_unlock(&ioc->taskmgmt_cmds.mutex);
4817 4817
4818 if (issue_reset) { 4818 if (issue_reset) {
4819 printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n", 4819 printk(MYIOC_s_WARN_FMT
4820 ioc->name, __func__); 4820 "Issuing Reset from %s!! doorbell=0x%08x\n",
4821 ioc->name, __func__, mpt_GetIocState(ioc, 0));
4821 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP); 4822 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
4822 } 4823 }
4823 mptsas_free_fw_event(ioc, fw_event); 4824 mptsas_free_fw_event(ioc, fw_event);
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index c5c8fb811f54..dceb67a21825 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -1706,8 +1706,9 @@ mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id, int lun,
1706 1706
1707 CLEAR_MGMT_STATUS(ioc->taskmgmt_cmds.status) 1707 CLEAR_MGMT_STATUS(ioc->taskmgmt_cmds.status)
1708 if (issue_hard_reset) { 1708 if (issue_hard_reset) {
1709 printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n", 1709 printk(MYIOC_s_WARN_FMT
1710 ioc->name, __func__); 1710 "Issuing Reset from %s!! doorbell=0x%08x\n",
1711 ioc->name, __func__, mpt_GetIocState(ioc, 0));
1711 retval = mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP); 1712 retval = mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
1712 mpt_free_msg_frame(ioc, mf); 1713 mpt_free_msg_frame(ioc, mf);
1713 } 1714 }
@@ -3051,8 +3052,11 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *io)
3051 goto out; 3052 goto out;
3052 } 3053 }
3053 if (!timeleft) { 3054 if (!timeleft) {
3054 printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n", 3055 printk(MYIOC_s_WARN_FMT
3055 ioc->name, __func__); 3056 "Issuing Reset from %s!! doorbell=0x%08xh"
3057 " cmd=0x%02x\n",
3058 ioc->name, __func__, mpt_GetIocState(ioc, 0),
3059 cmd);
3056 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP); 3060 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
3057 mpt_free_msg_frame(ioc, mf); 3061 mpt_free_msg_frame(ioc, mf);
3058 } 3062 }