lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJZ5v0gMk+Jt5WBUB=+cvv2YoU+49nRxL4KPRGm9TAdzkUvQhQ@mail.gmail.com>
Date: Tue, 8 Jul 2025 16:38:19 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Tudor Ambarus <tudor.ambarus@...aro.org>
Cc: Jonathan Corbet <corbet@....net>, "Rafael J. Wysocki" <rafael@...nel.org>, Pavel Machek <pavel@...nel.org>, 
	Len Brown <len.brown@...el.com>, linux-doc@...r.kernel.org, 
	linux-kernel@...r.kernel.org, linux-pm@...r.kernel.org, 
	peter.griffin@...aro.org, andre.draszik@...aro.org, willmcvicker@...gle.com, 
	kernel-team@...roid.com
Subject: Re: [PATCH] PM: add kernel parameter to disable asynchronous suspend/resume

On Tue, Jul 8, 2025 at 4:28 PM Tudor Ambarus <tudor.ambarus@...aro.org> 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. This provides a robust way 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.

IIUC, this effectively is a way to change the initial value of the
existing pm_async sysfs knob.

Might be worth mentioning in the changelog.

> Signed-off-by: Tudor Ambarus <tudor.ambarus@...aro.org>
> ---
> Dealing with the pixel6 downstream drivers to cope with the changes from
> https://lore.kernel.org/linux-pm/10629535.nUPlyArG6x@rjwysocki.net/.
>
> 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.
> ---
>  Documentation/admin-guide/kernel-parameters.txt | 9 +++++++++
>  kernel/power/main.c                             | 9 +++++++++
>  2 files changed, 18 insertions(+)
>
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index f1f2c0874da9ddfc95058c464fdf5dabaf0de713..55ba3e747d86c09a0696e105a1d9cd99218f0c07 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -5000,6 +5000,15 @@
>                         that number, otherwise (e.g., 'pmu_override=on'), MMCR1
>                         remains 0.
>
> +       pm_async        [PM]
> +                       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. Defaults to "on" (asynchronous
> +                       operations enabled).

And here too because it is now unclear how this relates to the pm_sync
under /sys/power/.

> +
> +
>         pm_debug_messages       [SUSPEND,KNL]
>                         Enable suspend/resume debug messages during boot up.
>
> diff --git a/kernel/power/main.c b/kernel/power/main.c
> index 3d484630505ae91fea29f7f9b3fbcf7e585955d8..3cf2d7e72567ecbea2cd80acd3c7f6da85f5bef4 100644
> --- a/kernel/power/main.c
> +++ b/kernel/power/main.c
> @@ -8,6 +8,7 @@
>
>  #include <linux/acpi.h>
>  #include <linux/export.h>
> +#include <linux/init.h>
>  #include <linux/kobject.h>
>  #include <linux/string.h>
>  #include <linux/pm-trace.h>
> @@ -112,6 +113,14 @@ int pm_notifier_call_chain(unsigned long val)
>  /* If set, devices may be suspended and resumed asynchronously. */
>  int pm_async_enabled = 1;
>
> +static int __init pm_async_setup(char *str)
> +{
> +       if (!strcmp(str, "off"))
> +               pm_async_enabled = 0;
> +       return 1;
> +}
> +__setup("pm_async=", pm_async_setup);
> +
>  static ssize_t pm_async_show(struct kobject *kobj, struct kobj_attribute *attr,
>                              char *buf)
>  {
>
> ---

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ