* [PATCH] PM / Wakeup / freezer: Check pm_wakeup_pending() before freeze_task()
@ 2025-03-18 6:17 liuyuan1
2025-04-15 18:33 ` Rafael J. Wysocki
0 siblings, 1 reply; 2+ messages in thread
From: liuyuan1 @ 2025-03-18 6:17 UTC (permalink / raw)
To: rafael, len.brown, pavel; +Cc: linux-pm, linux-kernel, chenzhengding, liuyuan1
Check pm_wakeup_pending() before freeze_task() can reduce
overhead by not freeze tasks in aborted case. freeze_task()
will cause high cpu loading especially when system has a large
number of tasks need to be freeze.
Signed-off-by: liuyuan1 <liuyuan1@oppo.com>
---
kernel/power/process.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/kernel/power/process.c b/kernel/power/process.c
index 66ac067..84704b3 100644
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -49,6 +49,12 @@ static int try_to_freeze_tasks(bool user_only)
while (true) {
todo = 0;
+ if (pm_wakeup_pending()) {
+ wakeup = true;
+ todo++;
+ break;
+ }
+
read_lock(&tasklist_lock);
for_each_process_thread(g, p) {
if (p == current || !freeze_task(p))
@@ -66,11 +72,6 @@ static int try_to_freeze_tasks(bool user_only)
if (!todo || time_after(jiffies, end_time))
break;
- if (pm_wakeup_pending()) {
- wakeup = true;
- break;
- }
-
/*
* We need to retry, but first give the freezing tasks some
* time to enter the refrigerator. Start with an initial
--
2.7.4
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] PM / Wakeup / freezer: Check pm_wakeup_pending() before freeze_task()
2025-03-18 6:17 [PATCH] PM / Wakeup / freezer: Check pm_wakeup_pending() before freeze_task() liuyuan1
@ 2025-04-15 18:33 ` Rafael J. Wysocki
0 siblings, 0 replies; 2+ messages in thread
From: Rafael J. Wysocki @ 2025-04-15 18:33 UTC (permalink / raw)
To: liuyuan1; +Cc: rafael, len.brown, pavel, linux-pm, linux-kernel, chenzhengding
On Tue, Mar 18, 2025 at 7:18 AM liuyuan1 <liuyuan1@oppo.com> wrote:
>
> Check pm_wakeup_pending() before freeze_task() can reduce
> overhead by not freeze tasks in aborted case. freeze_task()
> will cause high cpu loading especially when system has a large
> number of tasks need to be freeze.
>
> Signed-off-by: liuyuan1 <liuyuan1@oppo.com>
> ---
> kernel/power/process.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/power/process.c b/kernel/power/process.c
> index 66ac067..84704b3 100644
> --- a/kernel/power/process.c
> +++ b/kernel/power/process.c
> @@ -49,6 +49,12 @@ static int try_to_freeze_tasks(bool user_only)
>
> while (true) {
> todo = 0;
> + if (pm_wakeup_pending()) {
> + wakeup = true;
> + todo++;
This is going to produce a confusing message below.
> + break;
> + }
> +
> read_lock(&tasklist_lock);
> for_each_process_thread(g, p) {
> if (p == current || !freeze_task(p))
> @@ -66,11 +72,6 @@ static int try_to_freeze_tasks(bool user_only)
> if (!todo || time_after(jiffies, end_time))
> break;
>
> - if (pm_wakeup_pending()) {
> - wakeup = true;
> - break;
> - }
> -
> /*
> * We need to retry, but first give the freezing tasks some
> * time to enter the refrigerator. Start with an initial
> --
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-04-15 18:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-18 6:17 [PATCH] PM / Wakeup / freezer: Check pm_wakeup_pending() before freeze_task() liuyuan1
2025-04-15 18:33 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®