Re: [PATCH] bus: mhi: host: pci_generic: Fix runtime PM imbalance for no_m3 devices
Manivannan Sadhasivam <[email protected]>
| Newsgroups | dev.linux.lists.mhi,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <qxdxn5mfqeoaefyl6nft3xzqwpsyariiwd2uyrusg3huh2llks@eges52jkri6r> |
On Fri, Aug 07, 2026 at 02:33:53PM +0000, Alexandra Lu wrote:
> mhi_pci_probe() drops the runtime PM reference taken by local_pci_probe()
> only when the device supports both PME from D3hot and M3, but
> mhi_pci_remove() re-takes it based on PME capability alone, without
> checking no_m3.
>
> For a device that is PME capable and has no_m3 set, probe therefore never
> drops the reference while remove takes an extra one, leaving the runtime
> PM usage count one higher after every bind/unbind cycle. That is benign
> for the device being removed, since the PCI core resumes it to D0 on
> unbind regardless, but the struct device outlives the binding, so the
> count accumulates across repeated cycles and can end up preventing
> runtime suspend altogether.
>
> Cache no_m3 in the driver's private data, as is already done for
> reset_on_remove, and gate the removal side on it as well. Unlike
> reset_on_remove it is cached for virtual functions too, because the probe
> side gate tests info->no_m3 for physical and virtual functions alike.
>
> QDU100 is currently the only device that sets no_m3.
>
> Fixes: 0494cf9793b7 ("bus: mhi: host: pci_generic: Disable runtime PM for QDU100")
> Assisted-by: Cursor:claude-opus-5
> Signed-off-by: Alexandra Lu <[email protected]>
LGTM! But since the MHI tree is closed for v7.3, this patch will get applied
only when v7.3-rc1 is released.
- Mani
--
மணிவண்ணன் சதாசிவம்