mbox series

[v5,0/3] scsi: ufs: Add error handling of Auto-Hibernate

Message ID 1558421094-3182-1-git-send-email-stanley.chu@mediatek.com (mailing list archive)
Headers show
Series scsi: ufs: Add error handling of Auto-Hibernate | expand

Message

Stanley Chu May 21, 2019, 6:44 a.m. UTC
Currently auto-hibernate is activated if host supports
auto-hibern8 capability. However error-handling is not implemented,
which makes the feature somewhat risky.

If either "Hibernate Enter" or "Hibernate Exit" fail during
auto-hibernate flow, the corresponding interrupt
"UIC_HIBERNATE_ENTER" or "UIC_HIBERNATE_EXIT" shall be raised
according to UFS specification.

This patch adds auto-hibernate error-handling:

- Monitor "Hibernate Enter" and "Hibernate Exit" interrupts after
  auto-hibernate feature is activated.

- If fail happens, trigger error-handling just like "manual-hibernate"
  fail and apply the same recovery flow: schedule UFS error handler in
  ufshcd_check_errors(), and then do host reset and restore
  in UFS error handler.

v5:
 - Also re-factor checking of Auto-Hibernation support in other places, e.g., in ufshcd_auto_hibern8_enable() and in ufs-sysfs (Avri Altman)
 - Change order of patch "scsi: ufs: Introduce ufshcd_is_auto_hibern8_supported()" to #1 as a preparation patch of whole series

v4:
 - Replace original patch "[3/3] scsi: ufs: Use re-factored Auto-Hibernate function" by a new preparation patch "[2/3] scsi: ufs: Introduce ufshcd_is_auto_hibern8_supported()" for re-factoring ufshcd_is_auto_hibern8_supported (Avri Altman)
 - Refine UIC mask definitions (Avri Altman)

v3:
 - Fix typo in patch "scsi: ufs: Do not overwrite Auto-Hibernate timer" (Avri Altman)
 - Rebase to Linux 5.2-rc1

v2:
 - Fix sentences in commit message (Marc Gonzalez)
 - Make "Auto-Hibernate" error detection more precise (Bean Huo)

Stanley Chu (3):
  scsi: ufs: Introduce ufshcd_is_auto_hibern8_supported()
  scsi: ufs: Do not overwrite Auto-Hibernate timer
  scsi: ufs: Add error-handling of Auto-Hibernate

 drivers/scsi/ufs/ufs-sysfs.c |  6 +++---
 drivers/scsi/ufs/ufshcd.c    | 35 +++++++++++++++++++++++++++++++++--
 drivers/scsi/ufs/ufshcd.h    |  5 +++++
 drivers/scsi/ufs/ufshci.h    |  6 ++++--
 4 files changed, 45 insertions(+), 7 deletions(-)

Comments

Avri Altman May 21, 2019, 8:41 a.m. UTC | #1
This series looks fine to me.

Thanks,
Avri

> 
> Currently auto-hibernate is activated if host supports
> auto-hibern8 capability. However error-handling is not implemented,
> which makes the feature somewhat risky.
> 
> If either "Hibernate Enter" or "Hibernate Exit" fail during
> auto-hibernate flow, the corresponding interrupt
> "UIC_HIBERNATE_ENTER" or "UIC_HIBERNATE_EXIT" shall be raised
> according to UFS specification.
> 
> This patch adds auto-hibernate error-handling:
> 
> - Monitor "Hibernate Enter" and "Hibernate Exit" interrupts after
>   auto-hibernate feature is activated.
> 
> - If fail happens, trigger error-handling just like "manual-hibernate"
>   fail and apply the same recovery flow: schedule UFS error handler in
>   ufshcd_check_errors(), and then do host reset and restore
>   in UFS error handler.
> 
> v5:
>  - Also re-factor checking of Auto-Hibernation support in other places, e.g., in
> ufshcd_auto_hibern8_enable() and in ufs-sysfs (Avri Altman)
>  - Change order of patch "scsi: ufs: Introduce
> ufshcd_is_auto_hibern8_supported()" to #1 as a preparation patch of whole
> series
> 
> v4:
>  - Replace original patch "[3/3] scsi: ufs: Use re-factored Auto-Hibernate
> function" by a new preparation patch "[2/3] scsi: ufs: Introduce
> ufshcd_is_auto_hibern8_supported()" for re-factoring
> ufshcd_is_auto_hibern8_supported (Avri Altman)
>  - Refine UIC mask definitions (Avri Altman)
> 
> v3:
>  - Fix typo in patch "scsi: ufs: Do not overwrite Auto-Hibernate timer" (Avri
> Altman)
>  - Rebase to Linux 5.2-rc1
> 
> v2:
>  - Fix sentences in commit message (Marc Gonzalez)
>  - Make "Auto-Hibernate" error detection more precise (Bean Huo)
> 
> Stanley Chu (3):
>   scsi: ufs: Introduce ufshcd_is_auto_hibern8_supported()
>   scsi: ufs: Do not overwrite Auto-Hibernate timer
>   scsi: ufs: Add error-handling of Auto-Hibernate
> 
>  drivers/scsi/ufs/ufs-sysfs.c |  6 +++---
>  drivers/scsi/ufs/ufshcd.c    | 35 +++++++++++++++++++++++++++++++++--
>  drivers/scsi/ufs/ufshcd.h    |  5 +++++
>  drivers/scsi/ufs/ufshci.h    |  6 ++++--
>  4 files changed, 45 insertions(+), 7 deletions(-)
> 
> --
> 2.18.0
Martin K. Petersen May 30, 2019, 2:19 a.m. UTC | #2
Stanley,

> Currently auto-hibernate is activated if host supports auto-hibern8
> capability. However error-handling is not implemented, which makes the
> feature somewhat risky.

Applied to 5.3/scsi-queue, thanks!