From: Bart Van Assche <bvanassche@acm.org>
To: Kiwoong Kim <kwmad.kim@samsung.com>,
linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
alim.akhtar@samsung.com, avri.altman@wdc.com, jejb@linux.ibm.com,
martin.petersen@oracle.com, beanhuo@micron.com,
cang@codeaurora.org, adrian.hunter@intel.com, sc.suh@samsung.com,
hy50.seo@samsung.com, sh425.lee@samsung.com,
bhoon95.kim@samsung.com, vkumar.1997@samsung.com
Subject: Re: [PATCH v1] scsi: ufs: clear doorbell for hibern8 errors when using ah8
Date: Thu, 7 Oct 2021 14:47:11 -0700 [thread overview]
Message-ID: <b548158d-a155-bde9-caff-0f3fefbda403@acm.org> (raw)
In-Reply-To: <1633592411-129911-1-git-send-email-kwmad.kim@samsung.com>
On 10/7/21 12:40 AM, Kiwoong Kim wrote:
> When an scsi command is dispatched right after host complete
> all the pending requests goes to idle and ufs driver tries
> to ring a doorbell, host might be still during entering into
> hibern8. If an error occurrs during that period, the doorbell
> might not be zero. In this case, clearing it should be needed
> to requeue its command.
> Currently, ufshcd_err_handler goes directly to reset when the
> driver's link state is broken. This patch is to make it clear
> doorbells in the case. In the situation, communication would
> be disabled, so TM isn't necessary or we can say it's not
> available.
The above text is too hard to comprehend. Please make it more clear. As
an example, in the first sentence, what does "goes to idle" apply to?
Does it apply to "SCSI command", "pending requests" or something else?
What mechanism does "If an error occurs" refer to? A SCSI command
processing error, a link error or another type of error?
> Here's an actual symptom that I've faced. At the time, tag #17
> is still pended even after host reset. And then the block timer
> is expired.
pended -> pending.
> exynos-ufs 11100000.ufs: ufshcd_check_errors: Auto Hibern8
> Enter failed - status: 0x00000040, upmcrs: 0x00000001
> ..
> host_regs: 00000050: b8671000 00000008 00020000 00000000
> ..
> exynos-ufs 11100000.ufs: ufshcd_abort: Device abort task at tag 17
The relationship between the example and the description above the
example is not clear. If a command is pending before the error handler
starts, aborting that command fails and the host is not reset then the
command will still be pending after the error handler has finished.
> @@ -6138,7 +6139,12 @@ static void ufshcd_err_handler(struct Scsi_Host *host)
> (hba->saved_uic_err & (UFSHCD_UIC_DL_NAC_RECEIVED_ERROR |
> UFSHCD_UIC_DL_TCx_REPLAY_ERROR)))) {
> needs_reset = true;
> - goto do_reset;
> + spin_lock_irqsave(hba->host->host_lock, flags);
> + if (!hba->ahit && ufshcd_is_link_broken(hba))
> + link_broken_in_ah8 = true;
> + spin_unlock_irqrestore(hba->host->host_lock, flags);
> + if (!link_broken_in_ah8)
> + goto do_reset;
> }
>
My understanding is that hba->ahit == 0 means that auto-hibernation is
disabled. Hence, the above code sets 'link_broken_in_ah8' only if
auto-hibernation is disabled. So what does the name of the variable
'link_broken_in_ah8' mean?
> @@ -6168,6 +6174,9 @@ static void ufshcd_err_handler(struct Scsi_Host *host)
> }
> }
>
> + if (link_broken_in_ah8)
> + goto lock_skip_pending_xfer_clear;
> +
> /* Clear pending task management requests */
> for_each_set_bit(tag, &hba->outstanding_tasks, hba->nutmrs) {
> if (ufshcd_clear_tm_cmd(hba, tag)) {
Why is skipping the ufshcd_clear_tm_cmd() calls useful in this case?
Thanks,
Bart.
next prev parent reply other threads:[~2021-10-07 21:47 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20211007075635epcas2p16af95ce29750417f34f8490b0d8000d4@epcas2p1.samsung.com>
2021-10-07 7:40 ` Kiwoong Kim
2021-10-07 21:47 ` Bart Van Assche [this message]
2021-10-08 2:02 ` Kiwoong Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b548158d-a155-bde9-caff-0f3fefbda403@acm.org \
--to=bvanassche@acm.org \
--cc=adrian.hunter@intel.com \
--cc=alim.akhtar@samsung.com \
--cc=avri.altman@wdc.com \
--cc=beanhuo@micron.com \
--cc=bhoon95.kim@samsung.com \
--cc=cang@codeaurora.org \
--cc=hy50.seo@samsung.com \
--cc=jejb@linux.ibm.com \
--cc=kwmad.kim@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=sc.suh@samsung.com \
--cc=sh425.lee@samsung.com \
--cc=vkumar.1997@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®