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. --- 25-akpm/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 Mon Feb 16 12:48:03 2004 +++ 25-akpm/kernel/kthread.c Mon Feb 16 12:48:03 2004 @@ -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); _