On 12/21, Avri Altman wrote: > > > > > > On 12/21, Avri Altman wrote: > > > > > > When gate_work/ungate_work gets an error during hibern8_enter or > > > > exit, > > > > > > ufshcd_err_handler() > > > > > > ufshcd_scsi_block_requests() > > > > > > ufshcd_reset_and_restore() > > > > > > ufshcd_clear_ua_wluns() -> stuck > > > > > > ufshcd_scsi_unblock_requests() > > > > > > > > > > > > In order to avoid it, ufshcd_clear_ua_wluns() can be called per > > recovery > > > > > > flows > > > > > > such as suspend/resume, link_recovery, and error_handler. > > > > > Not sure that suspend/resume are UAC events? > > > > > > > > Could you elaborate a bit? The goal is to clear UAC after UFS reset > > happens. > > > So why calling it on every suspend and resume? > > > > 1. If UAC was cleared, there's no impact. > But the command is still sent.
No, ufshcd_clear_ua_wluns() will return by hba->wlun_dev_clr_ua. > > > 2. ufshcd_link_recovery() can reset UFS directly by ufs_mtk_resume(). > > 3. ufshcd_suspend can call ufshcd_host_reset_and_restore() as well. > Seems excessive IMO. > Why not selectively send when indeed required, e.g. on reset? I think hba->wlun_dev_clr_ua is the indicator whether there was a reset or not.