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. 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: Do not overwrite Auto-Hibernate timer scsi: ufs: Add error-handling of Auto-Hibernate scsi: ufs: Use re-factored Auto-Hibernate function drivers/scsi/ufs/ufshcd.c | 33 ++++++++++++++++++++++++++++++++- drivers/scsi/ufs/ufshcd.h | 5 +++++ drivers/scsi/ufs/ufshci.h | 3 +++ 3 files changed, 40 insertions(+), 1 deletion(-) -- 2.18.0