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

From: Can Guo
Date: Tue Apr 14 2020 - 01:56:23 EST


Hi Alim,

On 2020-04-14 10:30, Alim Akhtar wrote:
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

Good catch.

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.


OK.

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

Shall fix.

+ * 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.

Thanks.
Can Guo.