Re: [PATCH v1] ucsi_ccg: Disable async suspend in ucsi_ccg_probe()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux