From: Rusty Russell kthreads use keventd, so they inherit its cpus_allowed mask. Unset it. All current users set it explicity anyway, but it's nice to fix. --- kernel/kthread.c | 3 +++ 1 files changed, 3 insertions(+) diff -puN kernel/kthread.c~kthread-affinity-fix kernel/kthread.c --- 25/kernel/kthread.c~kthread-affinity-fix 2004-02-08 21:30:54.000000000 -0800 +++ 25-akpm/kernel/kthread.c 2004-02-08 21:30:54.000000000 -0800 @@ -44,6 +44,9 @@ static int kthread(void *_create) sigprocmask(SIG_BLOCK, &blocked, NULL); flush_signals(current); + /* By default we can run anywhere, unlike keventd. */ + set_cpus_allowed(current, CPU_MASK_ALL); + /* OK, tell user we're spawned, wait for stop or wakeup */ __set_current_state(TASK_INTERRUPTIBLE); complete(&create->started); _