Messages in this thread | | | Subject | Re: [PATCH v14 1/2] scsi: ufs: Enable power management for wlun | From | "Asutosh Das (asd)" <> | Date | Wed, 31 Mar 2021 18:40:06 -0700 |
| |
On 3/31/2021 11:19 AM, Adrian Hunter wrote: > On 31/03/21 1:31 am, Asutosh Das wrote: >> During runtime-suspend of ufs host, the scsi devices are >> already suspended and so are the queues associated with them. >> But the ufs host sends SSU (START_STOP_UNIT) to wlun >> during its runtime-suspend. >> During the process blk_queue_enter checks if the queue is not in >> suspended state. If so, it waits for the queue to resume, and never >> comes out of it. >> The commit >> (d55d15a33: scsi: block: Do not accept any requests while suspended) >> adds the check if the queue is in suspended state in blk_queue_enter(). >> >> Call trace: >> __switch_to+0x174/0x2c4 >> __schedule+0x478/0x764 >> schedule+0x9c/0xe0 >> blk_queue_enter+0x158/0x228 >> blk_mq_alloc_request+0x40/0xa4 >> blk_get_request+0x2c/0x70 >> __scsi_execute+0x60/0x1c4 >> ufshcd_set_dev_pwr_mode+0x124/0x1e4 >> ufshcd_suspend+0x208/0x83c >> ufshcd_runtime_suspend+0x40/0x154 >> ufshcd_pltfrm_runtime_suspend+0x14/0x20 >> pm_generic_runtime_suspend+0x28/0x3c >> __rpm_callback+0x80/0x2a4 >> rpm_suspend+0x308/0x614 >> rpm_idle+0x158/0x228 >> pm_runtime_work+0x84/0xac >> process_one_work+0x1f0/0x470 >> worker_thread+0x26c/0x4c8 >> kthread+0x13c/0x320 >> ret_from_fork+0x10/0x18 >> >> Fix this by registering ufs device wlun as a scsi driver and >> registering it for block runtime-pm. Also make this as a >> supplier for all other luns. That way, this device wlun >> suspends after all the consumers and resumes after >> hba resumes. >> >> Co-developed-by: Can Guo <cang@codeaurora.org> >> Signed-off-by: Can Guo <cang@codeaurora.org> >> Signed-off-by: Asutosh Das <asutoshd@codeaurora.org> >> --- > Hi Adrian Thanks for the comments. > Looks good but still doesn't seem to based on the latest tree. > Umm, it's based on the below: git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git Branch: refs/heads/for-next
The top most change is e27f3c8 on 27th March'21. Which tree are you referring to that'd be latest?
> Also came across the issue below: > > <SNIP> > >> +#ifdef CONFIG_PM_SLEEP >> +static int ufshcd_wl_poweroff(struct device *dev) >> +{ >> + ufshcd_wl_shutdown(dev); > > This turned out to be wrong. This is a PM op and SCSI has already > quiesced the sdev's. All that is needed isOk. I'll fix it in the next version.
> > __ufshcd_wl_suspend(hba, UFS_SHUTDOWN_PM); > >> + return 0; >> +} >> +#endif
-- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, Linux Foundation Collaborative Project
| |