RE: [PATCH 0/2] usb: host: Drop resume calls on {e,o}hci_platform_suspend()
From: Biju Das
Date: Sun Dec 07 2025 - 13:18:51 EST
Hi Alan Stern,
> -----Original Message-----
> From: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> Sent: 07 December 2025 17:22
> Subject: Re: [PATCH 0/2] usb: host: Drop resume calls on {e,o}hci_platform_suspend()
> >
> >
> > [2]
> > [ 47.965220] Filesystems sync: 0.000 seconds
> > [ 47.971883] Freezing user space processes
> > [ 47.977739] Freezing user space processes completed (elapsed 0.001 seconds)
> > [ 47.984772] OOM killer disabled.
> > [ 47.988065] Freezing remaining freezable tasks
> > [ 47.993681] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
> > [ 48.001143] printk: Suspending console(s) (use no_console_suspend to debug)
> > [ 48.077166] renesas-gbeth 15c30000.ethernet end0: Link is Down
> > [ 48.081846] pwm-rzg2l-gpt 13010000.pwm: PM: dpm_run_callback(): rzg2l_gpt_suspend [pwm_rzg2l_gpt]
> returns -110
> > [ 48.081937] pwm-rzg2l-gpt 13010000.pwm: PM: failed to suspend: error -110
>
> Okay, here we see that pwm-rzg2l-gpt failed to suspend.
>
> > [ 48.082157] PM: Some devices failed to suspend, or early wake event detected
> > [ 48.091749] dwmac4: Master AXI performs any burst length
> > [ 48.091829] renesas-gbeth 15c30000.ethernet end0: No Safety Features support found
> > [ 48.091924] renesas-gbeth 15c30000.ethernet end0: IEEE 1588-2008 Advanced Timestamp supported
> > [ 48.092073] renesas-gbeth 15c30000.ethernet end0: configuring for phy/rgmii-id link mode
> > [ 48.100718] dwmac4: Master AXI performs any burst length
> > [ 48.100791] renesas-gbeth 15c40000.ethernet end1: No Safety Features support found
> > [ 48.100875] renesas-gbeth 15c40000.ethernet end1: IEEE 1588-2008 Advanced Timestamp supported
> > [ 48.101016] renesas-gbeth 15c40000.ethernet end1: configuring for phy/rgmii-id link mode
> > [ 48.149094] usb usb1: root hub lost power or was reset
> > [ 48.149136] usb usb2: root hub lost power or was reset
> > [ 48.361219] OOM killer enabled.
>
> And here we see no sign of a resume for pwm-rzg2l-gpt.
>
> When recovering from a failed suspend transition, the kernel resumes only the devices that did suspend
> correctly. The code that handles this is in drivers/base/power/main.c, and it's rather intricate and
> difficult to follow.
>
> In short, dpm_resume() invokes the resume callback only for devices that are on dpm_suspended_list.
> Devices are added to this list by dpm_suspend(), and if the suspend callback fails they are supposed
> to be removed from the list.
Oops, I missed this.
I put a print in resume() of PWM and confirmed it does not call resume() of the failed suspended device.
Cheers,
Biju