2020-03-31 16:11:28

by Can Guo

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

From: Asutosh Das <[email protected]>

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.

Signed-off-by: Asutosh Das <[email protected]>
Signed-off-by: Can Guo <[email protected]>
---
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.


2020-04-14 13:48:22

by Martin K. Petersen

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


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

Avri, Alim: Any opinions on this change in behavior wrt. your
controllers? Would a quirk or callback be preferred to changing this for
everyone?

--
Martin K. Petersen Oracle Linux Engineering

2020-04-14 13:53:04

by Alim Akhtar

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

Hi Can,

> -----Original Message-----
> From: Can Guo <[email protected]>
> Sent: 28 March 2020 07:58
> To: [email protected]; [email protected];
> [email protected]; [email protected]; linux-
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]
> Cc: Alim Akhtar <[email protected]>; Avri Altman
> <[email protected]>; James E.J. Bottomley <[email protected]>; Martin
> K. Petersen <[email protected]>; Stanley Chu
> <[email protected]>; Bean Huo <[email protected]>; Bart Van
> Assche <[email protected]>; Venkat Gopalakrishnan
> <[email protected]>; Tomas Winkler <[email protected]>; open
> list <[email protected]>
> Subject: [PATCH v1 1/1] scsi: ufs: full reinit upon resume if link was off
>
> From: Asutosh Das <[email protected]>
>
> 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 <[email protected]>
> Signed-off-by: Can Guo <[email protected]>
> ---
I don't have a way to test this path as of now, changes looks ok though.
Reviewed-by: Alim Akhtar <[email protected]>

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


2020-04-15 09:54:40

by Can Guo

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

Hi Alim,

On 2020-04-14 10:30, Alim Akhtar wrote:
> Hi Can,
>
>> -----Original Message-----
>> From: Can Guo <[email protected]>
>> Sent: 28 March 2020 07:58
>> To: [email protected]; [email protected];
>> [email protected]; [email protected]; linux-
>> [email protected]; [email protected]; [email protected];
>> [email protected]; [email protected]
>> Cc: Alim Akhtar <[email protected]>; Avri Altman
>> <[email protected]>; James E.J. Bottomley <[email protected]>;
>> Martin
>> K. Petersen <[email protected]>; Stanley Chu
>> <[email protected]>; Bean Huo <[email protected]>; Bart Van
>> Assche <[email protected]>; Venkat Gopalakrishnan
>> <[email protected]>; Tomas Winkler <[email protected]>;
>> open
>> list <[email protected]>
>> Subject: [PATCH v1 1/1] scsi: ufs: full reinit upon resume if link was
>> off
>>
>> From: Asutosh Das <[email protected]>
>>
>> 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 <[email protected]>
>> Signed-off-by: Can Guo <[email protected]>
>> ---
> I don't have a way to test this path as of now, changes looks ok
> though.
> Reviewed-by: Alim Akhtar <[email protected]>
>
>> 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.

2020-04-17 11:18:33

by Avri Altman

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

Hi,
>
>
> > 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.
>
> Avri, Alim: Any opinions on this change in behavior wrt. your
> controllers? Would a quirk or callback be preferred to changing this for
> everyone?
You have a v2 of this patch and a Reviewed-by tag by Alim.
It looks fine to me as well.

Thanks,
Avri

>
> --
> Martin K. Petersen Oracle Linux Engineering