On 9/23/24 7:17 PM, Seunghwan Baek wrote:> That's because SSU (Start Stop Unit) command must be sent during
shutdown process. If SDEV_OFFLINE is set for wlun, SSU command cannot be sent because it is rejected by the scsi layer. Therefore, we consider to set SDEV_QUIESCE for wlun, and set SDEV_OFFLINE for other lus.
Right. Since ufshcd_wl_shutdown() is expected to stop all DMA related to the UFS host, shouldn't there be a scsi_device_quiesce(sdev) call after the __ufshcd_wl_suspend(hba,
UFS_SHUTDOWN_PM) call?
Thanks,
Bart.
Yes. __ufshcd_wl_suspend(hba, UFS_SHUTDOWN_PM) should be called after scsi_device_quiesce(sdev). Generally, the SSU command is the last command before UFS power off. Therefore, if __ufshcd_wl_suspend is performed before scsi_device_quiesce, other commands may be performed after the SSU command and UFS may not guarantee the operation of the SSU command, which may cause other problems. This order must be
guaranteed.
And with SDEV_QUIESCE, deadlock issue cannot be avoided due to requeue. We need to return the i/o error with SDEV_OFFLINE to avoid the mentioned deadlock problem.
(+ more CC added.) Dear All.
Could you please update for this patch? If you have any opinions about this patch, share and comment it.
Thanks. BRs.
Looks good to me.
Thanks. Kiwoong Kim.