mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
FROMGIT: ufs: relocate flush of exceptional event
I found one case as follows and the current flush
location doesn't guarantee disabling BKOPS in the
case of requsting device power off.
1) The exceptional event handler is queued.
2) ufs suspend starts with a request of device power off
3) BKOPS is disabled in ufs suspend
4) The queued work for the handler is done and BKOPS
is enabled again.
Bug: 177395905
Change-Id: Ib69b8ebfb97469ff37ef8a70bdbc1ac2e79adcb0
(cherry picked from commit 6948a96a0d
https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git 5.11/scsi-fixes)
Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>
Reviewed-by: Can Guo <cang@codeaurora.org>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d9ade6f2d9
commit
63e416b3ca
@@ -8676,6 +8676,8 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
|
||||
ufshcd_wb_need_flush(hba));
|
||||
}
|
||||
|
||||
flush_work(&hba->eeh_work);
|
||||
|
||||
if (req_dev_pwr_mode != hba->curr_dev_pwr_mode) {
|
||||
if ((ufshcd_is_runtime_pm(pm_op) && !hba->auto_bkops_enabled) ||
|
||||
!ufshcd_is_runtime_pm(pm_op)) {
|
||||
@@ -8690,7 +8692,6 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
|
||||
}
|
||||
}
|
||||
|
||||
flush_work(&hba->eeh_work);
|
||||
ret = ufshcd_link_state_transition(hba, req_link_state, 1);
|
||||
if (ret)
|
||||
goto set_dev_active;
|
||||
|
||||
Reference in New Issue
Block a user