From: Chaotian Jing <chaotian.jing@mediatek.com>
To: Bart Van Assche <bvanassche@acm.org>
Cc: beanhuo@micron.com, linux-scsi@vger.kernel.org,
martin.petersen@oracle.com, andy.teng@mediatek.com,
jejb@linux.ibm.com, chun-hung.wu@mediatek.com,
kuohong.wang@mediatek.com, linux-kernel@vger.kernel.org,
asutoshd@codeaurora.org, avri.altman@wdc.com,
cang@codeaurora.org, linux-mediatek@lists.infradead.org,
peter.wang@mediatek.com, alim.akhtar@samsung.com,
jiajie.hao@mediatek.com, Stanley Chu <stanley.chu@mediatek.com>,
cc.chou@mediatek.com, linux-arm-kernel@lists.infradead.org,
matthias.bgg@gmail.com
Subject: Re: [SPAM]Re: [PATCH v7] scsi: ufs: Quiesce all scsi devices before shutdown
Date: Tue, 4 Aug 2020 11:19:10 +0800 [thread overview]
Message-ID: <1596511150.22157.12.camel@mhfsdcap03> (raw)
In-Reply-To: <f40ad9e1-2e45-f21c-d067-eff579982cc7@acm.org>
On Mon, 2020-08-03 at 09:04 -0700, Bart Van Assche wrote:
> On 2020-08-03 03:04, Stanley Chu wrote:
> > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> > index 307622284239..7cb220b3fde0 100644
> > --- a/drivers/scsi/ufs/ufshcd.c
> > +++ b/drivers/scsi/ufs/ufshcd.c
> > @@ -8640,6 +8640,7 @@ EXPORT_SYMBOL(ufshcd_runtime_idle);
> > int ufshcd_shutdown(struct ufs_hba *hba)
> > {
> > int ret = 0;
> > + struct scsi_target *starget;
> >
> > if (!hba->is_powered)
> > goto out;
> > @@ -8647,11 +8648,27 @@ int ufshcd_shutdown(struct ufs_hba *hba)
> > if (ufshcd_is_ufs_dev_poweroff(hba) && ufshcd_is_link_off(hba))
> > goto out;
> >
> > - if (pm_runtime_suspended(hba->dev)) {
> > - ret = ufshcd_runtime_resume(hba);
> > - if (ret)
> > - goto out;
> > - }
> > + /*
> > + * Let runtime PM framework manage and prevent concurrent runtime
> > + * operations with shutdown flow.
> > + */
> > + pm_runtime_get_sync(hba->dev);
> > +
> > + /*
> > + * Quiesce all SCSI devices to prevent any non-PM requests sending
> > + * from block layer during and after shutdown.
> > + *
> > + * Here we can not use blk_cleanup_queue() since PM requests
> > + * (with BLK_MQ_REQ_PREEMPT flag) are still required to be sent
> > + * through block layer. Therefore SCSI command queued after the
> > + * scsi_target_quiesce() call returned will block until
> > + * blk_cleanup_queue() is called.
> > + *
> > + * Besides, scsi_target_"un"quiesce (e.g., scsi_target_resume) can
> > + * be ignored since shutdown is one-way flow.
> > + */
> > + list_for_each_entry(starget, &hba->host->__targets, siblings)
> > + scsi_target_quiesce(starget);
> >
> > ret = ufshcd_suspend(hba, UFS_SHUTDOWN_PM);
> > out:
>
> This seems wrong to me. Since ufshcd_shutdown() shuts down the link I think
> it should call scsi_remove_device() instead of scsi_target_quiesce().
>
> Thanks,
>
> Bart.
>
> Hi Bart & Can & Stanley,
I have a question about this:
thread A is running the shutdown flow, but thread B is still access
UFS(sda/sdb/sdc..), is it expected ? after the sd_shutdown() completed,
if thread B still has access to UFS(sda/sdb/sdc...), it will make the
sd_shutdown() make no sense because the sd_resume() will send ssu to
start sda/sdb/sdc.
so can we avoid this and ensure that there is no request to sda after
sda's shutdown() is completed ?
so that is it possible to modify the sd_shutdown() ? take "sda" for
example: after sync cache && ssu to stop sda, do blk_cleanup_queue()
then it will ensure no runtime resume of sda and no more new requests to
sda.
then, for UFSHCI host driver, its shutdown() no need and should not
handle the sda/sdb/sdc's queue and device status, because these
devices(sda/sdb/sdc) has already complete its shutdown.
just like part of Can's comment, UFSHCI's shutdown() should only handle
hba->sdev_ufs_device.
>
> _______________________________________________
> Linux-mediatek mailing list
> Linux-mediatek@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-mediatek
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-08-04 3:22 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-03 10:04 [PATCH v7] scsi: ufs: Quiesce all scsi devices before shutdown Stanley Chu
2020-08-03 11:50 ` Can Guo
2020-08-03 12:04 ` Can Guo
2020-08-03 12:51 ` Can Guo
2020-08-03 16:04 ` Bart Van Assche
2020-08-04 3:19 ` Chaotian Jing [this message]
2020-08-04 3:46 ` [SPAM]Re: " Bart Van Assche
2020-08-13 8:55 ` Stanley Chu
2020-08-14 2:52 ` Bart Van Assche
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=1596511150.22157.12.camel@mhfsdcap03 \
--to=chaotian.jing@mediatek.com \
--cc=alim.akhtar@samsung.com \
--cc=andy.teng@mediatek.com \
--cc=asutoshd@codeaurora.org \
--cc=avri.altman@wdc.com \
--cc=beanhuo@micron.com \
--cc=bvanassche@acm.org \
--cc=cang@codeaurora.org \
--cc=cc.chou@mediatek.com \
--cc=chun-hung.wu@mediatek.com \
--cc=jejb@linux.ibm.com \
--cc=jiajie.hao@mediatek.com \
--cc=kuohong.wang@mediatek.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=matthias.bgg@gmail.com \
--cc=peter.wang@mediatek.com \
--cc=stanley.chu@mediatek.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;
as well as URLs for NNTP newsgroup(s).