[PATCH v3 1/3] PM: Make pm_wakeup_clear() call more clear

Samuel Wu posted 3 patches 1 month, 2 weeks ago
[PATCH v3 1/3] PM: Make pm_wakeup_clear() call more clear
Posted by Samuel Wu 1 month, 2 weeks ago
Move pm_wakeup_clear() to the same location as other functions that do
bookkeeping prior to suspend_prepare(). Since calling pm_wakeup_clear()
is a prerequisite to setting up for suspend and enabling functionalities
of suspend (like aborting during suspend), moving pm_wakeup_clear()
higher up the call stack makes its intent more clear and obvious that it
is called prior to suspend_prepare().

With this patch, there is a slightly larger window when abort events
can be registered, but otherwise suspend functionality is the same.

Suggested-by: Saravana Kannan <saravanak@google.com>
Signed-off-by: Samuel Wu <wusamuel@google.com>
---
 kernel/power/process.c | 1 -
 kernel/power/suspend.c | 1 +
 2 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/power/process.c b/kernel/power/process.c
index dc0dfc349f22..8ff68ebaa1e0 100644
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -132,7 +132,6 @@ int freeze_processes(void)
 	if (!pm_freezing)
 		static_branch_inc(&freezer_active);
 
-	pm_wakeup_clear(0);
 	pm_freezing = true;
 	error = try_to_freeze_tasks(true);
 	if (!error)
diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
index b4ca17c2fecf..4bb4686c1c08 100644
--- a/kernel/power/suspend.c
+++ b/kernel/power/suspend.c
@@ -595,6 +595,7 @@ static int enter_state(suspend_state_t state)
 	}
 
 	pm_pr_dbg("Preparing system for sleep (%s)\n", mem_sleep_labels[state]);
+	pm_wakeup_clear(0);
 	pm_suspend_clear_flags();
 	error = suspend_prepare(state);
 	if (error)
-- 
2.51.0.261.g7ce5a0a67e-goog
Re: [PATCH v3 1/3] PM: Make pm_wakeup_clear() call more clear
Posted by Rafael J. Wysocki 4 weeks, 1 day ago
On Thu, Aug 21, 2025 at 2:42 AM Samuel Wu <wusamuel@google.com> wrote:
>
> Move pm_wakeup_clear() to the same location as other functions that do
> bookkeeping prior to suspend_prepare(). Since calling pm_wakeup_clear()
> is a prerequisite to setting up for suspend and enabling functionalities
> of suspend (like aborting during suspend), moving pm_wakeup_clear()
> higher up the call stack makes its intent more clear and obvious that it
> is called prior to suspend_prepare().
>
> With this patch, there is a slightly larger window when abort events
> can be registered, but otherwise suspend functionality is the same.
>
> Suggested-by: Saravana Kannan <saravanak@google.com>
> Signed-off-by: Samuel Wu <wusamuel@google.com>
> ---
>  kernel/power/process.c | 1 -
>  kernel/power/suspend.c | 1 +
>  2 files changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/power/process.c b/kernel/power/process.c
> index dc0dfc349f22..8ff68ebaa1e0 100644
> --- a/kernel/power/process.c
> +++ b/kernel/power/process.c
> @@ -132,7 +132,6 @@ int freeze_processes(void)
>         if (!pm_freezing)
>                 static_branch_inc(&freezer_active);
>
> -       pm_wakeup_clear(0);
>         pm_freezing = true;
>         error = try_to_freeze_tasks(true);
>         if (!error)
> diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c
> index b4ca17c2fecf..4bb4686c1c08 100644
> --- a/kernel/power/suspend.c
> +++ b/kernel/power/suspend.c
> @@ -595,6 +595,7 @@ static int enter_state(suspend_state_t state)
>         }
>
>         pm_pr_dbg("Preparing system for sleep (%s)\n", mem_sleep_labels[state]);
> +       pm_wakeup_clear(0);
>         pm_suspend_clear_flags();
>         error = suspend_prepare(state);
>         if (error)
> --

Applied as 6.18 material with Saravana's R-by and minor edits in the
subject and changelog.

Thanks!