* [PATCH] mptfusion: print Doorbell register in a case of hard reset and timeout
@ 2010-04-26 6:33 Kei Tokunaga
2010-06-22 9:18 ` Kei Tokunaga
0 siblings, 1 reply; 5+ messages in thread
From: Kei Tokunaga @ 2010-04-26 6:33 UTC (permalink / raw)
To: Desai, Kashyap; +Cc: Kei Tokunaga, linux-scsi@vger.kernel.org
Hi Kashyap,
Printing Doorbell register in a case of hard reset and timeout
should be useful for figuring out the state of the system.
Thanks,
Kei
Signed-off-by: Kei Tokunaga <tokunaga.keiich@jp.fujitsu.com>
drivers/message/fusion/mptbase.c | 13 ++++++++-----
drivers/message/fusion/mptctl.c | 20 ++++++++++++++++----
drivers/message/fusion/mptsas.c | 5 +++--
drivers/message/fusion/mptscsih.c | 12 ++++++++----
4 files changed, 35 insertions(+), 15 deletions(-)
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index a6a5701..50d5b23 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -5062,8 +5062,9 @@ mptbase_sas_persist_operation(MPT_ADAPTER *ioc, u8 persist_opcode)
if (ioc->mptbase_cmds.status & MPT_MGMT_STATUS_DID_IOCRESET)
goto out;
if (!timeleft) {
- printk(KERN_DEBUG "%s: Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!!, doorbell=0x%08x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0));
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
mpt_free_msg_frame(ioc, mf);
}
@@ -6454,8 +6455,9 @@ out:
mutex_unlock(&ioc->mptbase_cmds.mutex);
if (issue_hard_reset) {
issue_hard_reset = 0;
- printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!!, doorbell=0x%08x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0));
if (retry_count == 0) {
if (mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP) != 0)
retry_count++;
@@ -7144,7 +7146,8 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag)
rc = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_RECOVER, sleepFlag);
if (rc != 0) {
printk(KERN_WARNING MYNAM
- ": WARNING - (%d) Cannot recover %s\n", rc, ioc->name);
+ ": WARNING - (%d) Cannot recover %s, doorbell=0x%08x\n",
+ rc, ioc->name, mpt_GetIocState(ioc, 0));
} else {
if (ioc->hard_resets < -1)
ioc->hard_resets++;
diff --git a/drivers/message/fusion/mptctl.c b/drivers/message/fusion/mptctl.c
index f06b291..b8a925c 100644
--- a/drivers/message/fusion/mptctl.c
+++ b/drivers/message/fusion/mptctl.c
@@ -946,10 +946,14 @@ retry_wait:
mpt_free_msg_frame(iocp, mf);
goto fwdl_out;
}
- if (!timeleft)
+ if (!timeleft) {
+ printk(MYIOC_s_WARN_FMT
+ "FW download timeout, doorbell=0x%08x\n",
+ iocp->name, mpt_GetIocState(iocp, 0));
mptctl_timeout_expired(iocp, mf);
- else
+ } else {
goto retry_wait;
+ }
goto fwdl_out;
}
@@ -2293,6 +2297,10 @@ retry_wait:
goto done_free_mem;
}
if (!timeleft) {
+ printk(MYIOC_s_WARN_FMT
+ "mpt cmd timeout, doorbell=0x%08x"
+ " function=0x%x\n",
+ ioc->name, mpt_GetIocState(ioc, 0), function);
if (function == MPI_FUNCTION_SCSI_TASK_MGMT)
mutex_unlock(&ioc->taskmgmt_cmds.mutex);
mptctl_timeout_expired(ioc, mf);
@@ -2600,10 +2608,14 @@ retry_wait:
mpt_free_msg_frame(ioc, mf);
goto out;
}
- if (!timeleft)
+ if (!timeleft) {
+ printk(MYIOC_s_WARN_FMT
+ "HOST INFO command timeout, doorbell=0x%08x\n",
+ ioc->name, mpt_GetIocState(ioc, 0));
mptctl_timeout_expired(ioc, mf);
- else
+ } else {
goto retry_wait;
+ }
goto out;
}
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index ac000e8..0a34e0c 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -4727,8 +4727,9 @@ mptsas_broadcast_primative_work(struct fw_event_work *fw_event)
mutex_unlock(&ioc->taskmgmt_cmds.mutex);
if (issue_reset) {
- printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!! doorbell=0x%08x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0));
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
}
mptsas_free_fw_event(ioc, fw_event);
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index 7bd4c0f..693af3b 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -1704,8 +1704,9 @@ mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id, int lun,
CLEAR_MGMT_STATUS(ioc->taskmgmt_cmds.status)
if (issue_hard_reset) {
- printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!! doorbell=0x%08x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0));
retval = mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
mpt_free_msg_frame(ioc, mf);
}
@@ -3047,8 +3048,11 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *io)
goto out;
}
if (!timeleft) {
- printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!! doorbell=0x%08xh"
+ " cmd=0x%02x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0),
+ cmd);
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
mpt_free_msg_frame(ioc, mf);
}
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] mptfusion: print Doorbell register in a case of hard reset and timeout
2010-04-26 6:33 [PATCH] mptfusion: print Doorbell register in a case of hard reset and timeout Kei Tokunaga
@ 2010-06-22 9:18 ` Kei Tokunaga
2010-06-22 9:30 ` Desai, Kashyap
0 siblings, 1 reply; 5+ messages in thread
From: Kei Tokunaga @ 2010-06-22 9:18 UTC (permalink / raw)
To: Desai, Kashyap; +Cc: linux-scsi@vger.kernel.org, Kei Tokunaga
Kei Tokunaga wrote:
> Hi Kashyap,
>
> Printing Doorbell register in a case of hard reset and timeout
> should be useful for figuring out the state of the system.
Hi Kashyap,
Can you give this patch an ACK? I confirmed it still applies to
03.04.16.
Thanks,
Kei
> Signed-off-by: Kei Tokunaga <tokunaga.keiich@jp.fujitsu.com>
>
> drivers/message/fusion/mptbase.c | 13 ++++++++-----
> drivers/message/fusion/mptctl.c | 20 ++++++++++++++++----
> drivers/message/fusion/mptsas.c | 5 +++--
> drivers/message/fusion/mptscsih.c | 12 ++++++++----
> 4 files changed, 35 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
> index a6a5701..50d5b23 100644
> --- a/drivers/message/fusion/mptbase.c
> +++ b/drivers/message/fusion/mptbase.c
> @@ -5062,8 +5062,9 @@ mptbase_sas_persist_operation(MPT_ADAPTER *ioc, u8 persist_opcode)
> if (ioc->mptbase_cmds.status & MPT_MGMT_STATUS_DID_IOCRESET)
> goto out;
> if (!timeleft) {
> - printk(KERN_DEBUG "%s: Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!!, doorbell=0x%08x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> mpt_free_msg_frame(ioc, mf);
> }
> @@ -6454,8 +6455,9 @@ out:
> mutex_unlock(&ioc->mptbase_cmds.mutex);
> if (issue_hard_reset) {
> issue_hard_reset = 0;
> - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!!, doorbell=0x%08x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> if (retry_count == 0) {
> if (mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP) != 0)
> retry_count++;
> @@ -7144,7 +7146,8 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag)
> rc = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_RECOVER, sleepFlag);
> if (rc != 0) {
> printk(KERN_WARNING MYNAM
> - ": WARNING - (%d) Cannot recover %s\n", rc, ioc->name);
> + ": WARNING - (%d) Cannot recover %s, doorbell=0x%08x\n",
> + rc, ioc->name, mpt_GetIocState(ioc, 0));
> } else {
> if (ioc->hard_resets < -1)
> ioc->hard_resets++;
> diff --git a/drivers/message/fusion/mptctl.c b/drivers/message/fusion/mptctl.c
> index f06b291..b8a925c 100644
> --- a/drivers/message/fusion/mptctl.c
> +++ b/drivers/message/fusion/mptctl.c
> @@ -946,10 +946,14 @@ retry_wait:
> mpt_free_msg_frame(iocp, mf);
> goto fwdl_out;
> }
> - if (!timeleft)
> + if (!timeleft) {
> + printk(MYIOC_s_WARN_FMT
> + "FW download timeout, doorbell=0x%08x\n",
> + iocp->name, mpt_GetIocState(iocp, 0));
> mptctl_timeout_expired(iocp, mf);
> - else
> + } else {
> goto retry_wait;
> + }
> goto fwdl_out;
> }
>
> @@ -2293,6 +2297,10 @@ retry_wait:
> goto done_free_mem;
> }
> if (!timeleft) {
> + printk(MYIOC_s_WARN_FMT
> + "mpt cmd timeout, doorbell=0x%08x"
> + " function=0x%x\n",
> + ioc->name, mpt_GetIocState(ioc, 0), function);
> if (function == MPI_FUNCTION_SCSI_TASK_MGMT)
> mutex_unlock(&ioc->taskmgmt_cmds.mutex);
> mptctl_timeout_expired(ioc, mf);
> @@ -2600,10 +2608,14 @@ retry_wait:
> mpt_free_msg_frame(ioc, mf);
> goto out;
> }
> - if (!timeleft)
> + if (!timeleft) {
> + printk(MYIOC_s_WARN_FMT
> + "HOST INFO command timeout, doorbell=0x%08x\n",
> + ioc->name, mpt_GetIocState(ioc, 0));
> mptctl_timeout_expired(ioc, mf);
> - else
> + } else {
> goto retry_wait;
> + }
> goto out;
> }
>
> diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
> index ac000e8..0a34e0c 100644
> --- a/drivers/message/fusion/mptsas.c
> +++ b/drivers/message/fusion/mptsas.c
> @@ -4727,8 +4727,9 @@ mptsas_broadcast_primative_work(struct fw_event_work *fw_event)
> mutex_unlock(&ioc->taskmgmt_cmds.mutex);
>
> if (issue_reset) {
> - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!! doorbell=0x%08x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> }
> mptsas_free_fw_event(ioc, fw_event);
> diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
> index 7bd4c0f..693af3b 100644
> --- a/drivers/message/fusion/mptscsih.c
> +++ b/drivers/message/fusion/mptscsih.c
> @@ -1704,8 +1704,9 @@ mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id, int lun,
>
> CLEAR_MGMT_STATUS(ioc->taskmgmt_cmds.status)
> if (issue_hard_reset) {
> - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!! doorbell=0x%08x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> retval = mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> mpt_free_msg_frame(ioc, mf);
> }
> @@ -3047,8 +3048,11 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *io)
> goto out;
> }
> if (!timeleft) {
> - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!! doorbell=0x%08xh"
> + " cmd=0x%02x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0),
> + cmd);
> mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> mpt_free_msg_frame(ioc, mf);
> }
>
>
>
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH] mptfusion: print Doorbell register in a case of hard reset and timeout
2010-06-22 9:18 ` Kei Tokunaga
@ 2010-06-22 9:30 ` Desai, Kashyap
2010-06-22 10:01 ` Kei Tokunaga
0 siblings, 1 reply; 5+ messages in thread
From: Desai, Kashyap @ 2010-06-22 9:30 UTC (permalink / raw)
To: Kei Tokunaga; +Cc: linux-scsi@vger.kernel.org
> -----Original Message-----
> From: Kei Tokunaga [mailto:tokunaga.keiich@jp.fujitsu.com]
> Sent: Tuesday, June 22, 2010 2:48 PM
> To: Desai, Kashyap
> Cc: linux-scsi@vger.kernel.org; Kei Tokunaga
> Subject: Re: [PATCH] mptfusion: print Doorbell register in a case of
> hard reset and timeout
>
> Kei Tokunaga wrote:
> > Hi Kashyap,
> >
> > Printing Doorbell register in a case of hard reset and timeout
> > should be useful for figuring out the state of the system.
>
> Hi Kashyap,
>
> Can you give this patch an ACK? I confirmed it still applies to
> 03.04.16.
Kei,
Patch looks OK to me. I have commented few things below. Can you please correct it and resend?
Thanks, Kashyap
>
> Thanks,
> Kei
>
> > Signed-off-by: Kei Tokunaga <tokunaga.keiich@jp.fujitsu.com>
> >
> > drivers/message/fusion/mptbase.c | 13 ++++++++-----
> > drivers/message/fusion/mptctl.c | 20 ++++++++++++++++----
> > drivers/message/fusion/mptsas.c | 5 +++--
> > drivers/message/fusion/mptscsih.c | 12 ++++++++----
> > 4 files changed, 35 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/message/fusion/mptbase.c
> b/drivers/message/fusion/mptbase.c
> > index a6a5701..50d5b23 100644
> > --- a/drivers/message/fusion/mptbase.c
> > +++ b/drivers/message/fusion/mptbase.c
> > @@ -5062,8 +5062,9 @@ mptbase_sas_persist_operation(MPT_ADAPTER *ioc,
> u8 persist_opcode)
> > if (ioc->mptbase_cmds.status &
> MPT_MGMT_STATUS_DID_IOCRESET)
> > goto out;
> > if (!timeleft) {
> > - printk(KERN_DEBUG "%s: Issuing Reset from %s!!\n",
> > - ioc->name, __func__);
> > + printk(MYIOC_s_WARN_FMT
> > + "Issuing Reset from %s!!, doorbell=0x%08x\n",
> > + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> > mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> > mpt_free_msg_frame(ioc, mf);
> > }
> > @@ -6454,8 +6455,9 @@ out:
> > mutex_unlock(&ioc->mptbase_cmds.mutex);
> > if (issue_hard_reset) {
> > issue_hard_reset = 0;
> > - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> > - ioc->name, __func__);
> > + printk(MYIOC_s_WARN_FMT
> > + "Issuing Reset from %s!!, doorbell=0x%08x\n",
> > + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> > if (retry_count == 0) {
> > if (mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP) != 0)
> > retry_count++;
> > @@ -7144,7 +7146,8 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int
> sleepFlag)
> > rc = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_RECOVER,
> sleepFlag);
> > if (rc != 0) {
> > printk(KERN_WARNING MYNAM
> > - ": WARNING - (%d) Cannot recover %s\n", rc, ioc->name);
> > + ": WARNING - (%d) Cannot recover %s,
> doorbell=0x%08x\n",
> > + rc, ioc->name, mpt_GetIocState(ioc, 0));
> > } else {
> > if (ioc->hard_resets < -1)
> > ioc->hard_resets++;
> > diff --git a/drivers/message/fusion/mptctl.c
> b/drivers/message/fusion/mptctl.c
> > index f06b291..b8a925c 100644
> > --- a/drivers/message/fusion/mptctl.c
> > +++ b/drivers/message/fusion/mptctl.c
> > @@ -946,10 +946,14 @@ retry_wait:
> > mpt_free_msg_frame(iocp, mf);
> > goto fwdl_out;
> > }
> > - if (!timeleft)
> > + if (!timeleft) {
> > + printk(MYIOC_s_WARN_FMT
> > + "FW download timeout, doorbell=0x%08x\n",
> > + iocp->name, mpt_GetIocState(iocp, 0));
> > mptctl_timeout_expired(iocp, mf);
> > - else
> > + } else {
> > goto retry_wait;
> > + }
This extra brackets are not required if it has single code line.
> > goto fwdl_out;
> > }
> >
> > @@ -2293,6 +2297,10 @@ retry_wait:
> > goto done_free_mem;
> > }
> > if (!timeleft) {
> > + printk(MYIOC_s_WARN_FMT
> > + "mpt cmd timeout, doorbell=0x%08x"
> > + " function=0x%x\n",
> > + ioc->name, mpt_GetIocState(ioc, 0), function);
> > if (function == MPI_FUNCTION_SCSI_TASK_MGMT)
> > mutex_unlock(&ioc->taskmgmt_cmds.mutex);
> > mptctl_timeout_expired(ioc, mf);
> > @@ -2600,10 +2608,14 @@ retry_wait:
> > mpt_free_msg_frame(ioc, mf);
> > goto out;
> > }
> > - if (!timeleft)
> > + if (!timeleft) {
> > + printk(MYIOC_s_WARN_FMT
> > + "HOST INFO command timeout,
> doorbell=0x%08x\n",
> > + ioc->name, mpt_GetIocState(ioc, 0));
> > mptctl_timeout_expired(ioc, mf);
> > - else
> > + } else {
> > goto retry_wait;
> > + }
Same as above.
> > goto out;
> > }
> >
> > diff --git a/drivers/message/fusion/mptsas.c
> b/drivers/message/fusion/mptsas.c
> > index ac000e8..0a34e0c 100644
> > --- a/drivers/message/fusion/mptsas.c
> > +++ b/drivers/message/fusion/mptsas.c
> > @@ -4727,8 +4727,9 @@ mptsas_broadcast_primative_work(struct
> fw_event_work *fw_event)
> > mutex_unlock(&ioc->taskmgmt_cmds.mutex);
> >
> > if (issue_reset) {
> > - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> > - ioc->name, __func__);
> > + printk(MYIOC_s_WARN_FMT
> > + "Issuing Reset from %s!! doorbell=0x%08x\n",
> > + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> > mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> > }
> > mptsas_free_fw_event(ioc, fw_event);
> > diff --git a/drivers/message/fusion/mptscsih.c
> b/drivers/message/fusion/mptscsih.c
> > index 7bd4c0f..693af3b 100644
> > --- a/drivers/message/fusion/mptscsih.c
> > +++ b/drivers/message/fusion/mptscsih.c
> > @@ -1704,8 +1704,9 @@ mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8
> type, u8 channel, u8 id, int lun,
> >
> > CLEAR_MGMT_STATUS(ioc->taskmgmt_cmds.status)
> > if (issue_hard_reset) {
> > - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> > - ioc->name, __func__);
> > + printk(MYIOC_s_WARN_FMT
> > + "Issuing Reset from %s!! doorbell=0x%08x\n",
> > + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> > retval = mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> > mpt_free_msg_frame(ioc, mf);
> > }
> > @@ -3047,8 +3048,11 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd,
> INTERNAL_CMD *io)
> > goto out;
> > }
> > if (!timeleft) {
> > - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> > - ioc->name, __func__);
> > + printk(MYIOC_s_WARN_FMT
> > + "Issuing Reset from %s!! doorbell=0x%08xh"
> > + " cmd=0x%02x\n",
> > + ioc->name, __func__, mpt_GetIocState(ioc, 0),
> > + cmd);
> > mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> > mpt_free_msg_frame(ioc, mf);
> > }
> >
> >
> >
> >
> >
> >
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] mptfusion: print Doorbell register in a case of hard reset and timeout
2010-06-22 9:30 ` Desai, Kashyap
@ 2010-06-22 10:01 ` Kei Tokunaga
2010-06-22 12:58 ` Desai, Kashyap
0 siblings, 1 reply; 5+ messages in thread
From: Kei Tokunaga @ 2010-06-22 10:01 UTC (permalink / raw)
To: Desai, Kashyap; +Cc: linux-scsi@vger.kernel.org, Kei Tokunaga
Desai, Kashyap wrote:
>
>> -----Original Message-----
>> From: Kei Tokunaga [mailto:tokunaga.keiich@jp.fujitsu.com]
>> Sent: Tuesday, June 22, 2010 2:48 PM
>> To: Desai, Kashyap
>> Cc: linux-scsi@vger.kernel.org; Kei Tokunaga
>> Subject: Re: [PATCH] mptfusion: print Doorbell register in a case of
>> hard reset and timeout
>>
>> Kei Tokunaga wrote:
>>
>>> Hi Kashyap,
>>>
>>> Printing Doorbell register in a case of hard reset and timeout
>>> should be useful for figuring out the state of the system.
>>>
>> Hi Kashyap,
>>
>> Can you give this patch an ACK? I confirmed it still applies to
>> 03.04.16.
>>
> Kei,
>
> Patch looks OK to me. I have commented few things below. Can you please correct it and resend?
> Thanks, Kashyap
Thanks for reviewing it. Here is a corrected version of it.
Signed-off-by: Kei Tokunaga <tokunaga.keiich@jp.fujitsu.com>
drivers/message/fusion/mptbase.c | 13 ++++++++-----
drivers/message/fusion/mptctl.c | 18 ++++++++++++++----
drivers/message/fusion/mptsas.c | 5 +++--
drivers/message/fusion/mptscsih.c | 12 ++++++++----
4 files changed, 33 insertions(+), 15 deletions(-)
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index c36d5b9..e319abc 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)
if (ioc->mptbase_cmds.status & MPT_MGMT_STATUS_DID_IOCRESET)
goto out;
if (!timeleft) {
- printk(KERN_DEBUG "%s: Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!!, doorbell=0x%08x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0));
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
mpt_free_msg_frame(ioc, mf);
}
@@ -6455,8 +6456,9 @@ out:
mutex_unlock(&ioc->mptbase_cmds.mutex);
if (issue_hard_reset) {
issue_hard_reset = 0;
- printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!!, doorbell=0x%08x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0));
if (retry_count == 0) {
if (mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP) != 0)
retry_count++;
@@ -7146,7 +7148,8 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int sleepFlag)
rc = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_RECOVER, sleepFlag);
if (rc != 0) {
printk(KERN_WARNING MYNAM
- ": WARNING - (%d) Cannot recover %s\n", rc, ioc->name);
+ ": WARNING - (%d) Cannot recover %s, doorbell=0x%08x\n",
+ rc, ioc->name, mpt_GetIocState(ioc, 0));
} else {
if (ioc->hard_resets < -1)
ioc->hard_resets++;
diff --git a/drivers/message/fusion/mptctl.c b/drivers/message/fusion/mptctl.c
index 9bd89ce..40046f5 100644
--- a/drivers/message/fusion/mptctl.c
+++ b/drivers/message/fusion/mptctl.c
@@ -954,9 +954,12 @@ retry_wait:
mpt_free_msg_frame(iocp, mf);
goto fwdl_out;
}
- if (!timeleft)
+ if (!timeleft) {
+ printk(MYIOC_s_WARN_FMT
+ "FW download timeout, doorbell=0x%08x\n",
+ iocp->name, mpt_GetIocState(iocp, 0));
mptctl_timeout_expired(iocp, mf);
- else
+ } else
goto retry_wait;
goto fwdl_out;
}
@@ -2301,6 +2304,10 @@ retry_wait:
goto done_free_mem;
}
if (!timeleft) {
+ printk(MYIOC_s_WARN_FMT
+ "mpt cmd timeout, doorbell=0x%08x"
+ " function=0x%x\n",
+ ioc->name, mpt_GetIocState(ioc, 0), function);
if (function == MPI_FUNCTION_SCSI_TASK_MGMT)
mutex_unlock(&ioc->taskmgmt_cmds.mutex);
mptctl_timeout_expired(ioc, mf);
@@ -2608,9 +2615,12 @@ retry_wait:
mpt_free_msg_frame(ioc, mf);
goto out;
}
- if (!timeleft)
+ if (!timeleft) {
+ printk(MYIOC_s_WARN_FMT
+ "HOST INFO command timeout, doorbell=0x%08x\n",
+ ioc->name, mpt_GetIocState(ioc, 0));
mptctl_timeout_expired(ioc, mf);
- else
+ } else
goto retry_wait;
goto out;
}
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index f42781b..8cdc58c 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)
mutex_unlock(&ioc->taskmgmt_cmds.mutex);
if (issue_reset) {
- printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!! doorbell=0x%08x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0));
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
}
mptsas_free_fw_event(ioc, fw_event);
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index c5c8fb8..dceb67a 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,
CLEAR_MGMT_STATUS(ioc->taskmgmt_cmds.status)
if (issue_hard_reset) {
- printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!! doorbell=0x%08x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0));
retval = mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
mpt_free_msg_frame(ioc, mf);
}
@@ -3051,8 +3052,11 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *io)
goto out;
}
if (!timeleft) {
- printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
- ioc->name, __func__);
+ printk(MYIOC_s_WARN_FMT
+ "Issuing Reset from %s!! doorbell=0x%08xh"
+ " cmd=0x%02x\n",
+ ioc->name, __func__, mpt_GetIocState(ioc, 0),
+ cmd);
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
mpt_free_msg_frame(ioc, mf);
}
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [PATCH] mptfusion: print Doorbell register in a case of hard reset and timeout
2010-06-22 10:01 ` Kei Tokunaga
@ 2010-06-22 12:58 ` Desai, Kashyap
0 siblings, 0 replies; 5+ messages in thread
From: Desai, Kashyap @ 2010-06-22 12:58 UTC (permalink / raw)
To: Kei Tokunaga, James.Bottomley@HansenPartnership.com
Cc: linux-scsi@vger.kernel.org
James,
Can you please consider below patch sent by Kei as an Acked patch and consider it for next merge window.
A much thanks,
Kashyap
> -----Original Message-----
> From: Kei Tokunaga [mailto:tokunaga.keiich@jp.fujitsu.com]
> Sent: Tuesday, June 22, 2010 3:32 PM
> To: Desai, Kashyap
> Cc: linux-scsi@vger.kernel.org; Kei Tokunaga
> Subject: Re: [PATCH] mptfusion: print Doorbell register in a case of
> hard reset and timeout
>
> Desai, Kashyap wrote:
> >
> >> -----Original Message-----
> >> From: Kei Tokunaga [mailto:tokunaga.keiich@jp.fujitsu.com]
> >> Sent: Tuesday, June 22, 2010 2:48 PM
> >> To: Desai, Kashyap
> >> Cc: linux-scsi@vger.kernel.org; Kei Tokunaga
> >> Subject: Re: [PATCH] mptfusion: print Doorbell register in a case of
> >> hard reset and timeout
> >>
> >> Kei Tokunaga wrote:
> >>
> >>> Hi Kashyap,
> >>>
> >>> Printing Doorbell register in a case of hard reset and timeout
> >>> should be useful for figuring out the state of the system.
> >>>
> >> Hi Kashyap,
> >>
> >> Can you give this patch an ACK? I confirmed it still applies to
> >> 03.04.16.
> >>
> > Kei,
> >
> > Patch looks OK to me. I have commented few things below. Can you
> please correct it and resend?
> > Thanks, Kashyap
> Thanks for reviewing it. Here is a corrected version of it.
>
> Signed-off-by: Kei Tokunaga <tokunaga.keiich@jp.fujitsu.com>
>
> drivers/message/fusion/mptbase.c | 13 ++++++++-----
> drivers/message/fusion/mptctl.c | 18 ++++++++++++++----
> drivers/message/fusion/mptsas.c | 5 +++--
> drivers/message/fusion/mptscsih.c | 12 ++++++++----
> 4 files changed, 33 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/message/fusion/mptbase.c
> b/drivers/message/fusion/mptbase.c
> index c36d5b9..e319abc 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)
> if (ioc->mptbase_cmds.status &
> MPT_MGMT_STATUS_DID_IOCRESET)
> goto out;
> if (!timeleft) {
> - printk(KERN_DEBUG "%s: Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!!, doorbell=0x%08x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> mpt_free_msg_frame(ioc, mf);
> }
> @@ -6455,8 +6456,9 @@ out:
> mutex_unlock(&ioc->mptbase_cmds.mutex);
> if (issue_hard_reset) {
> issue_hard_reset = 0;
> - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!!, doorbell=0x%08x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> if (retry_count == 0) {
> if (mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP) != 0)
> retry_count++;
> @@ -7146,7 +7148,8 @@ mpt_HardResetHandler(MPT_ADAPTER *ioc, int
> sleepFlag)
> rc = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_RECOVER,
> sleepFlag);
> if (rc != 0) {
> printk(KERN_WARNING MYNAM
> - ": WARNING - (%d) Cannot recover %s\n", rc, ioc->name);
> + ": WARNING - (%d) Cannot recover %s,
> doorbell=0x%08x\n",
> + rc, ioc->name, mpt_GetIocState(ioc, 0));
> } else {
> if (ioc->hard_resets < -1)
> ioc->hard_resets++;
> diff --git a/drivers/message/fusion/mptctl.c
> b/drivers/message/fusion/mptctl.c
> index 9bd89ce..40046f5 100644
> --- a/drivers/message/fusion/mptctl.c
> +++ b/drivers/message/fusion/mptctl.c
> @@ -954,9 +954,12 @@ retry_wait:
> mpt_free_msg_frame(iocp, mf);
> goto fwdl_out;
> }
> - if (!timeleft)
> + if (!timeleft) {
> + printk(MYIOC_s_WARN_FMT
> + "FW download timeout, doorbell=0x%08x\n",
> + iocp->name, mpt_GetIocState(iocp, 0));
> mptctl_timeout_expired(iocp, mf);
> - else
> + } else
> goto retry_wait;
> goto fwdl_out;
> }
> @@ -2301,6 +2304,10 @@ retry_wait:
> goto done_free_mem;
> }
> if (!timeleft) {
> + printk(MYIOC_s_WARN_FMT
> + "mpt cmd timeout, doorbell=0x%08x"
> + " function=0x%x\n",
> + ioc->name, mpt_GetIocState(ioc, 0), function);
> if (function == MPI_FUNCTION_SCSI_TASK_MGMT)
> mutex_unlock(&ioc->taskmgmt_cmds.mutex);
> mptctl_timeout_expired(ioc, mf);
> @@ -2608,9 +2615,12 @@ retry_wait:
> mpt_free_msg_frame(ioc, mf);
> goto out;
> }
> - if (!timeleft)
> + if (!timeleft) {
> + printk(MYIOC_s_WARN_FMT
> + "HOST INFO command timeout,
> doorbell=0x%08x\n",
> + ioc->name, mpt_GetIocState(ioc, 0));
> mptctl_timeout_expired(ioc, mf);
> - else
> + } else
> goto retry_wait;
> goto out;
> }
> diff --git a/drivers/message/fusion/mptsas.c
> b/drivers/message/fusion/mptsas.c
> index f42781b..8cdc58c 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)
> mutex_unlock(&ioc->taskmgmt_cmds.mutex);
>
> if (issue_reset) {
> - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!! doorbell=0x%08x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> }
> mptsas_free_fw_event(ioc, fw_event);
> diff --git a/drivers/message/fusion/mptscsih.c
> b/drivers/message/fusion/mptscsih.c
> index c5c8fb8..dceb67a 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,
>
> CLEAR_MGMT_STATUS(ioc->taskmgmt_cmds.status)
> if (issue_hard_reset) {
> - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!! doorbell=0x%08x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0));
> retval = mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> mpt_free_msg_frame(ioc, mf);
> }
> @@ -3051,8 +3052,11 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD
> *io)
> goto out;
> }
> if (!timeleft) {
> - printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
> - ioc->name, __func__);
> + printk(MYIOC_s_WARN_FMT
> + "Issuing Reset from %s!! doorbell=0x%08xh"
> + " cmd=0x%02x\n",
> + ioc->name, __func__, mpt_GetIocState(ioc, 0),
> + cmd);
> mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
> mpt_free_msg_frame(ioc, mf);
> }
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-06-22 12:58 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-26 6:33 [PATCH] mptfusion: print Doorbell register in a case of hard reset and timeout Kei Tokunaga
2010-06-22 9:18 ` Kei Tokunaga
2010-06-22 9:30 ` Desai, Kashyap
2010-06-22 10:01 ` Kei Tokunaga
2010-06-22 12:58 ` Desai, Kashyap
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox