Skip to content

Commit ac6efb1

Browse files
Mani-Sadhasivammartinkpetersen
authored andcommitted
scsi: ufs: core: Do not set link to OFF state while waking up from hibernation
UFS link is just put into hibern8 state during the 'freeze' process of the hibernation. Afterwards, the system may get powered down. But that doesn't matter during wakeup. Because during wakeup from hibernation, UFS link is again put into hibern8 state by the restore kernel and then the control is handed over to the to image kernel. So in both the places, UFS link is never turned OFF. But ufshcd_system_restore() just assumes that the link will be in OFF state and sets the link state accordingly. And this breaks hibernation wakeup: [ 2445.371335] phy phy-1d87000.phy.3: phy_power_on was called before phy_init [ 2445.427883] ufshcd-qcom 1d84000.ufshc: Controller enable failed [ 2445.427890] ufshcd-qcom 1d84000.ufshc: ufshcd_host_reset_and_restore: Host init failed -5 [ 2445.427906] ufs_device_wlun 0:0:0:49488: ufshcd_wl_resume failed: -5 [ 2445.427918] ufs_device_wlun 0:0:0:49488: PM: dpm_run_callback(): scsi_bus_restore returns -5 [ 2445.427973] ufs_device_wlun 0:0:0:49488: PM: failed to restore async: error -5 So fix the issue by removing the code that sets the link to OFF state. Cc: Anjana Hari <quic_ahari@quicinc.com> Cc: stable@vger.kernel.org # 6.3 Fixes: 88441a8 ("scsi: ufs: core: Add hibernation callbacks") Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Link: https://lore.kernel.org/r/20240718170659.201647-1-manivannan.sadhasivam@linaro.org Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent da3e19e commit ac6efb1

File tree

1 file changed

+0
-3
lines changed

1 file changed

+0
-3
lines changed

drivers/ufs/core/ufshcd.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10277,9 +10277,6 @@ int ufshcd_system_restore(struct device *dev)
1027710277
*/
1027810278
ufshcd_readl(hba, REG_UTP_TASK_REQ_LIST_BASE_H);
1027910279

10280-
/* Resuming from hibernate, assume that link was OFF */
10281-
ufshcd_set_link_off(hba);
10282-
1028310280
return 0;
1028410281

1028510282
}

0 commit comments

Comments
 (0)