[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