Re: [RFC PATCH] usb: dwc3: core: resume xHCI child on runtime resume in host mode

From: Greg Kroah-Hartman

Date: Tue Aug 11 2026 - 20:18:58 EST


On Tue, Aug 11, 2026 at 05:08:17PM +0800, Junzhong Pan wrote:
> USB controller runtime suspend halts the controller on disconnection.
> It relies on platforms with custom connection notification to start
> the controller again.
>
> The host branch of dwc3_runtime_resume() does nothing currently. There
> are two paths that can trigger a runtime resume of the dwc3 core in
> host mode:
>
> (a) Wake lands on the xHCI child (DT platforms, e.g. Qualcomm, i.MX8MP)
> A platform wakeup IRQ fires and the glue handler calls
> pm_runtime_resume(&xhci->dev). Runtime PM walks upward, resumes
> the dwc3 parent first, then resumes xHCI. Both wake correctly.
>
> (b) Wake lands on the dwc3 parent (ACPI platforms)
> When an ACPI Notify(ACPI_NOTIFY_DEVICE_WAKE) targets the dwc3
> parent device -- for example via a Generic Event Device on a
> hardware-reduced platform where dwc3 is enumerated as an ACPI
> device without a glue driver -- the ACPI core turns this into
> pm_request_resume(dwc3_dev). Runtime PM does not propagate resume
> downward, so the xHCI child stays suspended. Root hub polling is
> never re-armed, and a device plugged in while suspended is silently
> dropped.
>
> This patch fills in the host branch to cover case (b) by requesting an
> async resume of the xHCI child so xhci_resume() can restore the port
> state machine and re-arm root hub polling. Async is required to avoid
> deadlocking on the parent's own rpm_resume() re-entry.
>
> Signed-off-by: Junzhong Pan <panjunzhong@xxxxxxxxxxxxxxxxxx>
> ---
> base-commit: d58772d8520c7ef247c4b95c9bd76d3a25da9ff5
> drivers/usb/dwc3/core.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)

Did you get LLM help with creating this patch?

thanks,

greg k-h