On Mon, May 12, 2025 at 03:26:53PM +0200, Rafael J. Wysocki wrote: > From: Jon Hunter <jonathanh@xxxxxxxxxx> > > Commit aa7a9275ab81 ("PM: sleep: Suspend async parents after suspending > children") had triggered a suspend issue on Tegra boards because it had > reordered the syspend of devices with async suspend enabled with respect > to some other devices. Specifically, the devices with async suspend > enabled that have no children are now suspended before any other devices > unless there are device links pointing to them as suppliers. > > The investigation that followed the failure report uncovered that async > suspend was enabled for the cypd4226 device that was a Type-C controller > with a dependency on USB PHY and it turned out that disabling async > suspend for that device made the issue go away. Since async suspend > takes dependencies between parents and children into account as well > as other dependencies between devices represented by device links, this > means that the cypd4226 has a dependency on another device that is > not represented in any form in the kernel (a "hidden" dependency), in > which case async suspend should not be enabled for it. > > Accordingly, make ucsi_ccg_probe() disable async suspend for the > devices handled by, which covers the cypd4226 device on the Tegra > boards as well as other devices likely to have similar "hidden" > dependencies. > > Fixes: aa7a9275ab81 ("PM: sleep: Suspend async parents after suspending children") > Closes: https://lore.kernel.org/linux-pm/c6cd714b-b0eb-42fc-b9b5-4f5f396fb4ec@xxxxxxxxxx/ > Reported-by: Jon Hunter <jonathanh@xxxxxxxxxx> > Tested-by: Jon Hunter <jonathanh@xxxxxxxxxx> > Signed-off-by: Jon Hunter <jonathanh@xxxxxxxxxx> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> Reviewed-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > --- > > Commit aa7a9275ab81 is in linux-next and it has not reached the mainline yet. > > Thanks! > > --- > drivers/usb/typec/ucsi/ucsi_ccg.c | 2 ++ > 1 file changed, 2 insertions(+) > > --- a/drivers/usb/typec/ucsi/ucsi_ccg.c > +++ b/drivers/usb/typec/ucsi/ucsi_ccg.c > @@ -1483,6 +1483,8 @@ > > i2c_set_clientdata(client, uc); > > + device_disable_async_suspend(uc->dev); > + > pm_runtime_set_active(uc->dev); > pm_runtime_enable(uc->dev); > pm_runtime_use_autosuspend(uc->dev); > > -- heikki