Thread (41 messages) 41 messages, 6 authors, 2025-09-13

Re: [PATCH] drvier: usb: dwc3: Fix runtime PM trying to activate child device xxx.dwc3 but parent is not active

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2025-08-27 14:52:21
Also in: linux-usb, lkml

Ryan:

You should present your questions to the maintainer of the kernel's 
Power Management subsystem, Rafael Wysocki (added to the To: list for 
this email).

Alan Stern

On Wed, Aug 27, 2025 at 10:09:10PM +0800, ryan zhou wrote:
Hi Roy,
Thank you for reviewing my patch.
quoted
Wouldn't the parent glue dev already resume before resuming the child dwc3?
No, in the following case, the parent device will not be reviewed
before resuming the child device.
Taking the 'imx8mp-dwc3' driver as an example.
Step 1.usb disconnect trigger: the child device dwc3 enter runtime
suspend state firstly, followed by
the parent device imx8mp-dwc3 enters runtime suspend
flow:dwc3_runtime_suspend->dwc3_imx8mp_runtime_suspend
Step2.system deep trigger:consistent with the runtime suspend flow,
child enters pm suspend and followed
by parent
flow: dwc3_pm_suspend->dwc3_imx8mp_pm_suspend
Step3: After dwc3_pm_suspend, and before dwc3_imx8mp_pm_suspend, a
task terminated the system suspend process
. The system will resume from the checkpoint, and resume devices in
the suspended state in the reverse
of pm suspend, but excluding the parent device imx8mp-dwc3 since it
did not execute the suspend process.
quoted
Why would 'runtime PM trying to activate child device xxx.dwc3 but parent is not active' happen in the first place?
Following the above analysis, dwc3_resume calls
pm_runtime_set_active(dev), it checks the
parent.power->runtime_status is not RPM_ACTIVE and outputs the error log.
quoted
What is the glue driver that's being used here? Knowing what's being done in the glue driver pm callbacks
would help in understanding the issue.
Refer to the driver 'dwc3-imx8mp.c' please, maybe you could help me
find a better solution.


Thanks,
ryan

Roy Luo [off-list ref] 于2025年8月27日周三 02:38写道:
quoted
On Tue, Aug 26, 2025 at 8:12 AM Ryan Zhou [off-list ref] wrote:
quoted
Issue description:
The parent device dwc3_glue has runtime PM enabled and is in the
runtime suspended state. The system enters the deep sleep process
but is interrupted by another task. When resuming dwc3,
console outputs the log 'runtime PM trying to activate child device
xxx.dwc3 but parent is not active'.
Wouldn't the parent glue dev already resume before resuming the child dwc3?
Why would 'runtime PM trying to activate child device xxx.dwc3 but parent is
not active' happen in the first place?
What is the glue driver that's being used here? Knowing what's being done in
the glue driver pm callbacks would help in understanding the issue.

Regards,
Roy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help