summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/stackcollapse.py
diff options
context:
space:
mode:
authorAlexandra Lu <alexandra.lu@nokia.com>2026-08-07 14:33:53 +0000
committerManivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>2026-09-26 12:17:12 +0200
commit95601e9948b42f82600ff2d9e0c2f699a067d561 (patch)
tree61b0600165a2d1a51f9ff7bf58a1a5ad1a8d598b /tools/perf/scripts/python/stackcollapse.py
parent83c29a55b89e0de6e15bcc6c21b16b4b75ec3e89 (diff)
downloadlinux-next-95601e9948b42f82600ff2d9e0c2f699a067d561.tar.gz
linux-next-95601e9948b42f82600ff2d9e0c2f699a067d561.zip
bus: mhi: host: pci_generic: Fix runtime PM imbalance for no_m3 devices
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: LLM Signed-off-by: Alexandra Lu <alexandra.lu@nokia.com> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com> Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com> Link: https://patch.msgid.link/20260807143353.1932381-1-alexandra.lu@nokia.com
Diffstat (limited to 'tools/perf/scripts/python/stackcollapse.py')
0 files changed, 0 insertions, 0 deletions