On 2/20/25 12:50 PM, Manivannan Sadhasivam wrote: > On Mon, Feb 17, 2025 at 07:35:50PM +0500, Muhammad Usama Anjum wrote: >> On 2/14/25 12:04 PM, Manivannan Sadhasivam wrote: >>> Hi, >> Thank you so much for replying. >> >>> >>> + ath11k list and Jeff >>> >>> On Tue, Feb 11, 2025 at 01:15:55PM +0500, Muhammad Usama Anjum wrote: >>>> Hi, >>>> >>>> I've been digging in the MHI code to find the reason behind broken >>>> resume from hibernation for MHI. The same resume function is used >>>> for both resume from suspend and resume from hibernation. The resume >>>> from suspend works fine because at resume time the state of MHI is >>>> MHI_STATE_M3. On the other hand, the state is MHI_STATE_RESET when >>>> we resume from hibernation. >>>> >>>> It seems resume from MHI_STATE_RESET state isn't correctly supported. >>>> The channel state is MHI_CH_STATE_ENABLED at this point. We get error >>>> while switching channel state from MHI_CH_STATE_ENABLE to >>>> MHI_CH_STATE_RUNNING. Hence, channel state change fails and later mhi >>>> resume fails as well. >>>> >>>> I've put some debug prints to understand the issue. These may be >>>> helpful: >>>> >>>> [ 669.032683] mhi_update_channel_state: switch to MHI_CH_STATE_TYPE_START[2] channel state not possible cuzof channel current state[1]. mhi state: [0] Return -EINVAL >>>> [ 669.032685] mhi_prepare_channel: mhi_update_channel_state to MHI_CH_STATE_TYPE_START[2] returned -22 >>>> [ 669.032693] qcom_mhi_qrtr mhi0_IPCR: failed to prepare for autoqueue transfer -22 >>>> >>> >>> Thanks for the report! >>> >>> Could you please enable the MHI and ath11k debug logs and share the full dmesg >>> to help us understand the issue better? >> The ath11k debug was already enabled. CONFIG_MHI_BUS_DEBUG wasn't enabled. > > Sorry for not being clear. I asked you to enable the dev_dbg() logs in the MHI > driver. But it is not required. See below. I've disabled the MHI_BUG_DEBUG. It only enables some files. Ideally if those files being used, there shouldn't be any difference. But they are definitely changing the timings. > >> I've >> enabled it and now the hibernate is working without any issue. It is very strange >> how can CONFIG_MHI_BUS_DEBUG make any difference. I don't have much background on >> how it is helping. >> > > Probably some timing issue. But enabling the MHI debug logs could also hide the > issue. So you should disable the CONFIG_MHI_BUS_DEBUG option and collect the MHI > trace logs that we recently added. Disabled the MHI_BUS_DEBUG and collected logs by Dynamic debug: [ 584.040189] mhi mhi0: Allowing M3 transition [ 584.040202] mhi mhi0: Waiting for M3 completion [ 584.040480] mhi mhi0: State change event to state: M3 .. [ 584.535478] qcom_mhi_qrtr mhi0_IPCR: failed to prepare for autoqueue transfer -22 [ 584.535482] qcom_mhi_qrtr mhi0_IPCR: PM: dpm_run_callback(): qcom_mhi_qrtr_pm_resume_early [qrtr_mhi] returns -22 [ 584.535490] qcom_mhi_qrtr mhi0_IPCR: PM: failed to restore early: error -22 [ 584.831583] mhi mhi0: Entered with PM state: M3, MHI state: M3 It seems like the state save was success at hibernate time. The error is originating at resume from hibernation. I've attached the logs. > > Hope it will shed some light. > > - Mani > -- BR, Muhammad Usama Anjum