[BUG REPORT] MHI's resume from hibernate is broken

Muhammad Usama Anjum Usama.Anjum at collabora.com
Thu Feb 20 04:34:06 PST 2025


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dynamic.log
Type: text/x-log
Size: 21722 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/ath11k/attachments/20250220/7fa08e42/attachment-0001.bin>


More information about the ath11k mailing list