Re: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 - 22:07:19 EST


At 2026-10-20 19:42:50, "Loic Poulain" <loic.poulain@xxxxxxxxxxxxxxxx> wrote:
>On Tue, Oct 20, 2026 at 12:31 PM Slark Xiao <slark_xiao@xxxxxxx> wrote:
>>
>>
>>
>> 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);
>
>Yes.
>
Update it later. Thanks for your confirmation.
>>
>> 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
>> >> >>