[PATCH v3] scsi: ufs: fix broken hba->outstanding_tasks

Avri Altman Avri.Altman at wdc.com
Mon Aug 19 23:59:20 PDT 2019

> Currently bits in hba->outstanding_tasks are cleared only after their
> corresponding task management commands are successfully done by
> __ufshcd_issue_tm_cmd().
> If timeout happens in a task management command, its corresponding
> bit in hba->outstanding_tasks will not be cleared until next task
> management command with the same tag used successfully finishes.
> This is wrong and can lead to some issues, like power issue.
> For example, ufshcd_release() and ufshcd_gate_work() will do nothing
> if hba->outstanding_tasks is not zero even if both UFS host and devices
> are actually idle.
> Solution is referried from error handling of device commands: bits in
> hba->outstanding_tasks shall be cleared regardless of their execution
> results.
> Signed-off-by: Stanley Chu <stanley.chu at mediatek.com>
> Signed-off-by: Chun-Hung Wu <chun-hung.wu at mediatek.com>
Reviewed-by: Avri Altman <avri.altman at wdc.com>

More information about the Linux-mediatek mailing list