Message ID | 1742278664-398536-1-git-send-email-liuyuan1@oppo.com |
---|---|
State | New |
Headers | show |
Series | PM / Wakeup / freezer: Check pm_wakeup_pending() before freeze_task() | expand |
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 > --
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
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(-)