Thread (38 messages) 38 messages, 5 authors, 2025-08-15

Re: [RFC PATCH v1 5/9] freezer: set default freeze priority for PF_SUSPEND_TASK processes

From: Zihuan Zhang <hidden>
Date: 2025-08-11 09:25:27
Also in: linux-fsdevel, linux-mm, linux-pm, lkml

在 2025/8/8 22:39, Oleg Nesterov 写道:
On 08/07, Zihuan Zhang wrote:
quoted
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -147,6 +147,7 @@ int freeze_processes(void)

  	pm_wakeup_clear(0);
  	pm_freezing = true;
+	freeze_set_default_priority(current, FREEZE_PRIORITY_NEVER);
But why?

Again, freeze_task() will return false anyway, this process is
PF_SUSPEND_TASK.
I  think there is resaon put it here. For example, systemd-sleep is a 
user-space process that executes the suspend flow.

  If we don’t set its freeze priority explicitly, our current code may 
end up with this user process being the last one that cannot freeze.

Of course, we could adjust the code logic to handle it differently, but 
in our model its freeze priority is considered the lowest, so setting it 
here ensures consistent behavior.

quoted
@@ -218,6 +219,7 @@ void thaw_processes(void)
  	WARN_ON(!(curr->flags & PF_SUSPEND_TASK));
  	curr->flags &= ~PF_SUSPEND_TASK;

+	freeze_set_default_priority(current, FREEZE_PRIORITY_NORMAL);
  	usermodehelper_enable();
What if current->freeze_priority was changed via
/proc/pid/freeze_priority you add in 9/9 ?
Sorry, my oversight. You are right — in this case we probably should not 
allow user space to change the freeze_priority of a PF_SUSPEND_TASK. 
This would avoid unintended behavior during suspend.
Oleg.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help