]> www.infradead.org Git - users/hch/misc.git/commitdiff
scsi: ufs: host: mediatek: Enhance recovery on resume failure
authorPeter Wang <peter.wang@mediatek.com>
Wed, 3 Sep 2025 02:44:38 +0000 (10:44 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 10 Sep 2025 02:46:22 +0000 (22:46 -0400)
Improve the recovery process for failed resume operations. Log the
device's power status and return 0 if both resume and recovery fail to
prevent I/O hang.

Signed-off-by: Peter Wang <peter.wang@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/host/ufs-mediatek.c

index e62f02b7ca76a5681831af700da72f10ec73ea11..804a18fe2198eeafe37b0d9fe02399a457faeeec 100644 (file)
@@ -1775,8 +1775,21 @@ static int ufs_mtk_resume(struct ufs_hba *hba, enum ufs_pm_op pm_op)
        }
 
        return 0;
+
 fail:
-       return ufshcd_link_recovery(hba);
+       /*
+        * Check if the platform (parent) device has resumed, and ensure that
+        * power, clock, and MTCMOS are all turned on.
+        */
+       err = ufshcd_link_recovery(hba);
+       if (err) {
+               dev_err(hba->dev, "Device PM: req=%d, status:%d, err:%d\n",
+                       hba->dev->power.request,
+                       hba->dev->power.runtime_status,
+                       hba->dev->power.runtime_error);
+       }
+
+       return 0; /* Cannot return a failure, otherwise, the I/O will hang. */
 }
 
 static void ufs_mtk_dbg_register_dump(struct ufs_hba *hba)