From: Bart Van Assche <bvanassche@acm.org>
To: "Peter Wang (王信友)" <peter.wang@mediatek.com>,
"martin.petersen@oracle.com" <martin.petersen@oracle.com>
Cc: "avri.altman@wdc.com" <avri.altman@wdc.com>,
"jejb@linux.ibm.com" <jejb@linux.ibm.com>,
Sanjeev Y <Sanjeev.Y@mediatek.com>,
"santoshsy@gmail.com" <santoshsy@gmail.com>,
"quic_nguyenb@quicinc.com" <quic_nguyenb@quicinc.com>,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
"manivannan.sadhasivam@linaro.org"
<manivannan.sadhasivam@linaro.org>,
"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>,
"James.Bottomley@HansenPartnership.com"
<James.Bottomley@HansenPartnership.com>
Subject: Re: [PATCH] scsi: core: ufs: Fix a hang in the error handler
Date: Tue, 27 May 2025 15:01:58 -0700 [thread overview]
Message-ID: <ecfd1748-d257-48ae-808e-c672ac2f1536@acm.org> (raw)
In-Reply-To: <2ab0ae98fd101d893d4f20112771cdb623fbca67.camel@mediatek.com>
On 5/26/25 6:21 AM, Peter Wang (王信友) wrote:
> On Fri, 2025-05-23 at 13:14 -0700, Bart Van Assche wrote:
>>
>> From: Sanjeev Yadav <sanjeev.y@mediatek.com>
>>
>> ufshcd_err_handling_prepare() calls ufshcd_rpm_get_sync(). The latter
>> function can only succeed if UFSHCD_EH_IN_PROGRESS is not set because
>> resuming involves submitting a SCSI command and ufshcd_queuecommand()
>> returns SCSI_MLQUEUE_HOST_BUSY if UFSHCD_EH_IN_PROGRESS is set. Fix
>> this hang by setting UFSHCD_EH_IN_PROGRESS after
>> ufshcd_rpm_get_sync() has been called instead of before.
>>
>> Backtrace:
>> __switch_to+0x174/0x338
>> __schedule+0x600/0x9e4
>> schedule+0x7c/0xe8
>> schedule_timeout+0xa4/0x1c8
>> io_schedule_timeout+0x48/0x70
>> wait_for_common_io+0xa8/0x160 //waiting on START_STOP
>> wait_for_completion_io_timeout+0x10/0x20
>> blk_execute_rq+0xe4/0x1e4
>> scsi_execute_cmd+0x108/0x244
>> ufshcd_set_dev_pwr_mode+0xe8/0x250
>> __ufshcd_wl_resume+0x94/0x354
>> ufshcd_wl_runtime_resume+0x3c/0x174
>> scsi_runtime_resume+0x64/0xa4
>> rpm_resume+0x15c/0xa1c
>> __pm_runtime_resume+0x4c/0x90 // Runtime resume ongoing
>> ufshcd_err_handler+0x1a0/0xd08
>> process_one_work+0x174/0x808
>> worker_thread+0x15c/0x490
>> kthread+0xf4/0x1ec
>> ret_from_fork+0x10/0x20
>>
>> Signed-off-by: Sanjeev Yadav <sanjeev.y@mediatek.com>
>> [ bvanassche: rewrote patch description ]
>> Fixes: 62694735ca95 ("[SCSI] ufs: Add runtime PM support for UFS host
>> controller driver")
>> Signed-off-by: Bart Van Assche <bvanassche@acm.org>
>
> I'm a bit curious why the ufshcd_err_handler was triggered?
> Because during the runtime suspend/resume process, if there
> are any errors, it should use ufshcd_link_recovery directly?
Hi Peter,
I have not yet tried to perform a full root-cause analysis. I decided
to share this patch since this issue has been observed not only by the
author of the above patch but also by my colleagues.
Regarding your question, are you referring to the ufshcd_link_recovery()
call in ufshcd_eh_host_reset_handler()? ufshcd_eh_host_reset_handler()
is not the only function that can trigger the UFS error handler. There
are several ufshcd_schedule_eh_work() calls outside the
ufshcd_eh_host_reset_handler() function.
Bart.
next prev parent reply other threads:[~2025-05-27 22:02 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-23 20:14 [PATCH] scsi: core: ufs: Fix a hang in the error handler Bart Van Assche
2025-05-26 13:21 ` Peter Wang (王信友)
2025-05-27 22:01 ` Bart Van Assche [this message]
2025-05-28 8:32 ` Peter Wang (王信友)
2025-05-28 15:43 ` Bart Van Assche
2025-05-29 9:43 ` Peter Wang (王信友)
2025-06-04 2:00 ` Martin K. Petersen
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=ecfd1748-d257-48ae-808e-c672ac2f1536@acm.org \
--to=bvanassche@acm.org \
--cc=James.Bottomley@HansenPartnership.com \
--cc=Sanjeev.Y@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=avri.altman@wdc.com \
--cc=jejb@linux.ibm.com \
--cc=linux-scsi@vger.kernel.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=martin.petersen@oracle.com \
--cc=matthias.bgg@gmail.com \
--cc=peter.wang@mediatek.com \
--cc=quic_nguyenb@quicinc.com \
--cc=santoshsy@gmail.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