Skip to content

Commit afd05be

Browse files
committed
cgroup/cpuset: Extend kthread_is_per_cpu() check to all PF_NO_SETAFFINITY tasks
JIRA: https://issues.redhat.com/browse/RHEL-107751 commit 39b5ef7 Author: Waiman Long <longman@redhat.com> Date: Thu, 8 May 2025 15:24:13 -0400 cgroup/cpuset: Extend kthread_is_per_cpu() check to all PF_NO_SETAFFINITY tasks Commit ec5fbdf ("cgroup/cpuset: Enable update_tasks_cpumask() on top_cpuset") enabled us to pull CPUs dedicated to child partitions from tasks in top_cpuset by ignoring per cpu kthreads. However, there can be other kthreads that are not per cpu but have PF_NO_SETAFFINITY flag set to indicate that we shouldn't mess with their CPU affinity. For other kthreads, their affinity will be changed to skip CPUs dedicated to child partitions whether it is an isolating or a scheduling one. As all the per cpu kthreads have PF_NO_SETAFFINITY set, the PF_NO_SETAFFINITY tasks are essentially a superset of per cpu kthreads. Fix this issue by dropping the kthread_is_per_cpu() check and checking the PF_NO_SETAFFINITY flag instead. Fixes: ec5fbdf ("cgroup/cpuset: Enable update_tasks_cpumask() on top_cpuset") Signed-off-by: Waiman Long <longman@redhat.com> Acked-by: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Waiman Long <longman@redhat.com>
1 parent 7a2eb3c commit afd05be

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

kernel/cgroup/cpuset.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,9 +1130,11 @@ void cpuset_update_tasks_cpumask(struct cpuset *cs, struct cpumask *new_cpus)
11301130

11311131
if (top_cs) {
11321132
/*
1133-
* Percpu kthreads in top_cpuset are ignored
1133+
* PF_NO_SETAFFINITY tasks are ignored.
1134+
* All per cpu kthreads should have PF_NO_SETAFFINITY
1135+
* flag set, see kthread_set_per_cpu().
11341136
*/
1135-
if (kthread_is_per_cpu(task))
1137+
if (task->flags & PF_NO_SETAFFINITY)
11361138
continue;
11371139
cpumask_andnot(new_cpus, possible_mask, subpartitions_cpus);
11381140
} else {

0 commit comments

Comments
 (0)