Re: [PATCH] scsi: ufs: core: quiesce request queues before check pending cmds
From: Peter Wang (王信友)
Date: Tue Jun 25 2024 - 23:52:24 EST
On Tue, 2024-06-25 at 09:13 -0700, Bart Van Assche wrote:
>
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> On 6/24/24 8:38 PM, Peter Wang (王信友) wrote:
> > But ufshcd_scsi_block_requests usage is correct in SDR mode.
>
> ufshcd_scsi_block_requests() uses scsi_block_requests(). It is almost
> never correct to use scsi_block_requests() in a blk-mq driver because
> scsi_block_requests() does not wait for ongoing request submission
> calls to complete. scsi_block_requests() is a legacy from the time
> when
> all request dispatching and queueing was protected by the SCSI host
> lock, a change that was made in 2010 or about 14 years ago. See also
>
https://lore.kernel.org/linux-scsi/20101105002409.GA21714@xxxxxxxxxxxxx/
>
> > So, I think ufshcd_wait_for_doorbell_clr should be revise.
> > Check tr_doorbell in SDR mode. (before 8d077ede48c1 do)
> > Check each HWQ's are all empty in MCQ mode. (need think how to do)
> > Make sure all requests is complete, and finish this function' job
> > correctly.
> > Or there still have a gap in ufshcd_wait_for_doorbell_clr.
>
> ufshcd_wait_for_doorbell_clr() should be removed and
> ufshcd_clock_scaling_prepare() should use blk_mq_freeze_*().
> See also my patch "ufs: Simplify the clock scaling mechanism
> implementation" from 5 years ago
> (
> https://lore.kernel.org/linux-scsi/20191112173743.141503-5-bvanassche@xxxxxxx/
> ).
>
> Best regards,
>
> Bart.
Hi Bart,
Yes, remove ufshcd_wait_for_doorbell_clr() is more reasonable if this
function cannot make sure all on-going request is done.
Thanks.
Peter