We want to be able to force the kthreads affinity when we'll repinplement isolcpus= on top of housekeeping. Unfortunately many kthreads also override their own affinity so we may need to revisit some of them.
Signed-off-by: Frederic Weisbecker <[email protected]> Cc: Chris Metcalf <[email protected]> Cc: Rik van Riel <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Mike Galbraith <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Christoph Lameter <[email protected]> Cc: Paul E. McKenney <[email protected]> Cc: Wanpeng Li <[email protected]> Cc: Luiz Capitulino <[email protected]> --- include/linux/housekeeping.h | 1 + kernel/kthread.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/linux/housekeeping.h b/include/linux/housekeeping.h index 0959601..2a9b808 100644 --- a/include/linux/housekeeping.h +++ b/include/linux/housekeeping.h @@ -11,6 +11,7 @@ enum hk_flags { HK_FLAG_MISC = (1 << 2), HK_FLAG_SCHED = (1 << 3), HK_FLAG_WORKQUEUE = (1 << 4), + HK_FLAG_KTHREAD = (1 << 5), }; #ifdef CONFIG_CPU_ISOLATION diff --git a/kernel/kthread.c b/kernel/kthread.c index 26db528..d4f1e63 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -21,6 +21,7 @@ #include <linux/ptrace.h> #include <linux/uaccess.h> #include <linux/cgroup.h> +#include <linux/housekeeping.h> #include <trace/events/sched.h> static DEFINE_SPINLOCK(kthread_create_lock); @@ -317,7 +318,7 @@ struct task_struct *__kthread_create_on_node(int (*threadfn)(void *data), * The kernel thread should not inherit these properties. */ sched_setscheduler_nocheck(task, SCHED_NORMAL, ¶m); - set_cpus_allowed_ptr(task, cpu_all_mask); + set_cpus_allowed_ptr(task, housekeeping_cpumask(HK_FLAG_KTHREAD)); } kfree(create); return task; @@ -536,7 +537,7 @@ int kthreadd(void *unused) /* Setup a clean context for our children to inherit. */ set_task_comm(tsk, "kthreadd"); ignore_signals(tsk); - set_cpus_allowed_ptr(tsk, cpu_all_mask); + set_cpus_allowed_ptr(tsk, housekeeping_cpumask(HK_FLAG_KTHREAD)); set_mems_allowed(node_states[N_MEMORY]); current->flags |= PF_NOFREEZE; -- 2.7.4

