Re:Re: Re: [PATCH] bus: mhi: host: pci_generic: Update the default autosuspend_delay_ms as 5000ms

From: Slark Xiao

Date: Tue Oct 20 2026 - 06:32:23 EST




At 2026-10-20 15:27:43, "Loic Poulain" <loic.poulain@xxxxxxxxxxxxxxxx> wrote:
>Hi Slark,
>
>On Tue, Oct 20, 2026 at 5:20 AM Slark Xiao <slark_xiao@xxxxxxx> wrote:
>>
>>
>> At 2026-10-19 15:41:27, "Loic Poulain" <loic.poulain@xxxxxxxxxxxxxxxx> wrote:
>> >On Mon, Oct 19, 2026 at 7:52 AM Slark Xiao <slark_xiao@xxxxxxx> wrote:
>> >>
>> >> For some MHI devices in some specific scenario, the default value
>> >> of autosuspend_delay_ms may not enough to handle last wake event.
>> >> This may lead to some unexpected problems.
>> >>
>> >> Refer to the Qualcomm's Windows settings and we checked this with
>> >> Quaclomm over case, Qualcomm recommend us to set this as 5000ms.
>> >
>> >Qualcomm
>> >
>> >> Qualcomm also suggests us to update this for all MHI devices.
>> >> Since this setting has affected some existed kernel versions, it's
>> >> better to be applied to stable version.
>> >
>> >This looks more like a workaround than a proper fix. It would be
>> >helpful to describe the underlying issue, including the timing and
>> >sequence of events that make this necessary. In principle, either the
>> >device can be suspended at that point or it cannot. Relying on a
>> >delayed suspend feels fragile and may end up masking the real problem.
>> >
>> Hi Loic,
>> Honestly, Qualcomm has been analyzing for over 2 months and still hasn't
>> identified the root cause.
>>
>> Actually I have explained the reasons behind the events to Mani in another
>> thread, you can refer to https://lore.kernel.org/mhi/20260919095506.9570-1-slark_xiao@xxxxxxx/
>>
>> From Qualcomm's perspective, 2 seconds is not enough for their default design.
>> They recommended us to update this value to 5 seconds and Mani checked this
>> internally as well. So we decided to update this 5 seconds setting to all MHI devices.
>
>Thanks. I'm really surprised we still don't have a more precise
>understanding or description of the underlying issue. That said, I
>think it's reasonable to proceed with this as an initial workaround.
>
>Could you please send a v2 that introduces a define for the 5000 ms
>timeout? It would also be helpful to add a comment explaining that
>this value is required to accommodate the 'late wake-event issue'.
>
>Regards,
>Loic

Do you mean something like below?

/* Add define of initial autosuspend_delay_ms to accommodate a potential 'late wake-event' issue */
#define MHI_AUTOSUSPEND_DELAY_MS 5000
......
- pm_runtime_set_autosuspend_delay(&pdev->dev, 2000);
+ pm_runtime_set_autosuspend_delay(&pdev->dev, MHI_AUTOSUSPEND_DELAY_MS);

Thanks

>>
>> Thanks
>> >>
>> >> Fixes: d3800c1dce24 ("bus: mhi: pci_generic: Add support for runtime PM")
>> >> Cc: stable@xxxxxxxxxxxxxxx
>> >> Signed-off-by: Slark Xiao <slark_xiao@xxxxxxx>
>> >> ---
>> >> drivers/bus/mhi/host/pci_generic.c | 2 +-
>> >> 1 file changed, 1 insertion(+), 1 deletion(-)
>> >>
>> >> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
>> >> index 7193a384cca4..40735beb46cb 100644
>> >> --- a/drivers/bus/mhi/host/pci_generic.c
>> >> +++ b/drivers/bus/mhi/host/pci_generic.c
>> >> @@ -1483,7 +1483,7 @@ static int mhi_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
>> >>
>> >> /* Allow runtime suspend only if both PME from D3Hot and M3 are supported */
>> >> if (pci_pme_capable(pdev, PCI_D3hot) && !(info->no_m3)) {
>> >> - pm_runtime_set_autosuspend_delay(&pdev->dev, 2000);
>> >> + pm_runtime_set_autosuspend_delay(&pdev->dev, 5000);
>> >> pm_runtime_use_autosuspend(&pdev->dev);
>> >> pm_runtime_mark_last_busy(&pdev->dev);
>> >> pm_runtime_put_noidle(&pdev->dev);
>> >> --
>> >> 2.53.0
>> >>