Message ID | 20230425031721epcms2p5d4de65616478c967d466626e20c42a3a@epcms2p5 (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | scsi: ufs: core: Fix IO hang that occurs when BKOPS fails in W-LUN suspend | expand |
> Even when urgent BKOPS fails, the consumer will get stuck in runtime > suspend status. Like commit 1a5665fc8d7a ("scsi: ufs: core: WLUN suspend > SSU/enter hibern8 fail recovery"), trigger the error handler and return > -EBUSY to break the suspend. > > Fixes: b294ff3e3449 ("scsi: ufs: core: Enable power management for wlun") > Signed-off-by: Keoseong Park <keosung.park@samsung.com> Reviewed-by: Avri Altman <avri.altman@wdc.com> Thanks, Avri > --- > drivers/ufs/core/ufshcd.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c > index 9434328ba323..24966e9af720 100644 > --- a/drivers/ufs/core/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -9457,8 +9457,16 @@ static int __ufshcd_wl_suspend(struct ufs_hba > *hba, enum ufs_pm_op pm_op) > * that performance might be impacted. > */ > ret = ufshcd_urgent_bkops(hba); > - if (ret) > + if (ret) { > + /* > + * If return err in suspend flow, IO will hang. > + * Trigger error handler and break suspend for > + * error recovery. > + */ > + ufshcd_force_error_recovery(hba); > + ret = -EBUSY; > goto enable_scaling; > + } > } else { > /* make sure that auto bkops is disabled */ > ufshcd_disable_auto_bkops(hba); > -- > 2.17.1
On Tue, 25 Apr 2023 12:17:21 +0900, Keoseong Park wrote: > Even when urgent BKOPS fails, the consumer will get stuck in runtime > suspend status. Like commit 1a5665fc8d7a ("scsi: ufs: core: WLUN suspend > SSU/enter hibern8 fail recovery"), trigger the error handler and return > -EBUSY to break the suspend. > > Applied to 6.4/scsi-fixes, thanks! [1/1] scsi: ufs: core: Fix IO hang that occurs when BKOPS fails in W-LUN suspend https://git.kernel.org/mkp/scsi/c/1a7edd041f2d
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 9434328ba323..24966e9af720 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -9457,8 +9457,16 @@ static int __ufshcd_wl_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) * that performance might be impacted. */ ret = ufshcd_urgent_bkops(hba); - if (ret) + if (ret) { + /* + * If return err in suspend flow, IO will hang. + * Trigger error handler and break suspend for + * error recovery. + */ + ufshcd_force_error_recovery(hba); + ret = -EBUSY; goto enable_scaling; + } } else { /* make sure that auto bkops is disabled */ ufshcd_disable_auto_bkops(hba);
Even when urgent BKOPS fails, the consumer will get stuck in runtime suspend status. Like commit 1a5665fc8d7a ("scsi: ufs: core: WLUN suspend SSU/enter hibern8 fail recovery"), trigger the error handler and return -EBUSY to break the suspend. Fixes: b294ff3e3449 ("scsi: ufs: core: Enable power management for wlun") Signed-off-by: Keoseong Park <keosung.park@samsung.com> --- drivers/ufs/core/ufshcd.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)