Rusty says: Actually, the #ifdef around that function is wrong: #if defined(CONFIG_NUMA) || defined(CONFIG_HOTPLUG_CPU) /* If dest_cpu is allowed for this process, migrate us to it. */ void migrate_to_cpu(int dest_cpu) We don't use this for HOTPLUG_CPU, but we call __migrate_task() directly. ie. #ifdef CONFIG_NUMA is sufficient. --- kernel/sched.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff -puN kernel/sched.c~migrate_to_cpu-dependency-fix kernel/sched.c --- 25/kernel/sched.c~migrate_to_cpu-dependency-fix 2004-02-19 01:40:05.000000000 -0800 +++ 25-akpm/kernel/sched.c 2004-02-19 01:40:05.000000000 -0800 @@ -1114,8 +1114,10 @@ enum idle_type #ifdef CONFIG_SMP -#if defined(CONFIG_NUMA) || defined(CONFIG_HOTPLUG_CPU) -/* If dest_cpu is allowed for this process, migrate us to it. */ +#ifdef CONFIG_NUMA +/* + * If dest_cpu is allowed for this process, migrate us to it. + */ void migrate_to_cpu(int dest_cpu) { runqueue_t *rq; @@ -1145,9 +1147,7 @@ void migrate_to_cpu(int dest_cpu) out: task_rq_unlock(rq, &flags); } -#endif /* CONFIG_NUMA || CONFIG_HOTPLUG_CPU */ -#ifdef CONFIG_NUMA /* * Find the least loaded CPU. Slightly favor the current CPU by * setting its runqueue length as the minimum to start. _