On 7/9/25 1:31 PM, Tudor Ambarus wrote: > On some platforms, device dependencies are not properly represented by > device links, which can cause issues when asynchronous power management > is enabled. While it is possible to disable this via sysfs, doing so > at runtime can race with the first system suspend event. > > This patch introduces a kernel command-line parameter, "pm_async", which > can be set to "off" to globally disable asynchronous suspend and resume > operations from early boot. It effectively provides a way to set the > initial value of the existing pm_async sysfs knob at boot time. This > offers a robust method to fall back to synchronous (sequential) operation, > which can stabilize platforms with problematic dependencies and also > serve as a useful debugging tool. > > The default behavior remains unchanged (asynchronous enabled). To disable > it, boot the kernel with the "pm_async=off" parameter. > > Signed-off-by: Tudor Ambarus <tudor.ambarus@xxxxxxxxxx> > --- > Dealing with the pixel6 downstream drivers to cope with the changes from > https://lore.kernel.org/linux-pm/10629535.nUPlyArG6x@xxxxxxxxxxxxx/. > > Similar to what people already reported it seems pixel6 lacks proper > device links dependencies downstream causing i2c and spi client drivers > to fail to suspend. Add kernel param to disable async suspend/resume. > --- > Changes in v3: > - update documentation with "pm_async=" and "Format: off" (Randy) > - reword documentation to make it clear "on" isn't a selectable option > for pm_async because it's the default behavior. > - Link to v2: https://lore.kernel.org/r/20250708-pm-async-off-v2-1-7fada54f01c0@xxxxxxxxxx > > Changes in v2: > - update the documentation and the commit message to describe that the > "pm_async" kernel parameter provides a way to change the initial value > of the existing /sys/power/pm_async sysfs knob. > - Link to v1: https://lore.kernel.org/r/20250708-pm-async-off-v1-1-1b200cc03d9c@xxxxxxxxxx > --- > Documentation/admin-guide/kernel-parameters.txt | 12 ++++++++++++ > kernel/power/main.c | 9 +++++++++ > 2 files changed, 21 insertions(+) > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index f1f2c0874da9ddfc95058c464fdf5dabaf0de713..06beacf208de3242a3b4bb2413ab6cd3e0083f15 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -5000,6 +5000,18 @@ > that number, otherwise (e.g., 'pmu_override=on'), MMCR1 > remains 0. > > + pm_async= [PM] > + Format: off > + This parameter sets the initial value of the > + /sys/power/pm_async sysfs knob at boot time. > + If set to "off", disables asynchronous suspend and > + resume of devices during system-wide power transitions. > + This can be useful on platforms where device > + dependencies are not well-defined, or for debugging > + power management issues. Asynchronous operations are > + enabled by default. > + > + I just noticed an extra new line here, that checkpatch didn't catch. Please let me know if I have to resubmit, or it can be amended when/if applied. Cheers, ta