RE: [PATCH v1 1/1] scsi: ufs: full reinit upon resume if link was off

From: Alim Akhtar
Date: Mon Apr 13 2020 - 22:30:53 EST


Hi Can,

> -----Original Message-----
> From: Can Guo <cang@xxxxxxxxxxxxxx>
> Sent: 28 March 2020 07:58
> To: asutoshd@xxxxxxxxxxxxxx; nguyenb@xxxxxxxxxxxxxx;
> hongwus@xxxxxxxxxxxxxx; rnayak@xxxxxxxxxxxxxx; linux-
> scsi@xxxxxxxxxxxxxxx; kernel-team@xxxxxxxxxxx; saravanak@xxxxxxxxxx;
> salyzyn@xxxxxxxxxx; cang@xxxxxxxxxxxxxx
> Cc: Alim Akhtar <alim.akhtar@xxxxxxxxxxx>; Avri Altman
> <avri.altman@xxxxxxx>; James E.J. Bottomley <jejb@xxxxxxxxxxxxx>; Martin
> K. Petersen <martin.petersen@xxxxxxxxxx>; Stanley Chu
> <stanley.chu@xxxxxxxxxxxx>; Bean Huo <beanhuo@xxxxxxxxxx>; Bart Van
> Assche <bvanassche@xxxxxxx>; Venkat Gopalakrishnan
> <venkatg@xxxxxxxxxxxxxx>; Tomas Winkler <tomas.winkler@xxxxxxxxx>; open
> list <linux-kernel@xxxxxxxxxxxxxxx>
> Subject: [PATCH v1 1/1] scsi: ufs: full reinit upon resume if link was off
>
> From: Asutosh Das <asutoshd@xxxxxxxxxxxxxx>
>
> During suspend, if the link is put to off, it would require a full
initialization during
> resume. This patch resets and restores both the hba and the card during
> initialization.
>
In case you have faced issues by not doing what this patch does, it is worth
mentioning that in the commit mesg.

> Signed-off-by: Asutosh Das <asutoshd@xxxxxxxxxxxxxx>
> Signed-off-by: Can Guo <cang@xxxxxxxxxxxxxx>
> ---
I don't have a way to test this path as of now, changes looks ok though.
Reviewed-by: Alim Akhtar <alim.akhtar@xxxxxxxxxxx>

> drivers/scsi/ufs/ufshcd.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index
> f19a11e..21e41e5 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -8007,9 +8007,13 @@ static int ufshcd_resume(struct ufs_hba *hba, enum
> ufs_pm_op pm_op)
> else
> goto vendor_suspend;
> } else if (ufshcd_is_link_off(hba)) {
> - ret = ufshcd_host_reset_and_restore(hba);
> /*
> - * ufshcd_host_reset_and_restore() should have already
> + * A full initialization of the host and the device is
required
> + * since the link was put to off during suspend.
> + */
> + ret = ufshcd_reset_and_restore(hba);
> + /*
> + * ufshcd_reset_and_restore() should have already
> * set the link state as active
> */
> if (ret || !ufshcd_is_link_active(hba))
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
> Foundation Collaborative Project.