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