Commit 5c1e176781f43bc902a51e5832f789756bff911b ("sched: force
/sbin/init off isolated cpus") sets init's cpus_allowed to a subset of
cpu_online_map at boot time, which means that tasks won't be scheduled
on cpus that are added to the system later.
Make init's cpus_allowed a subset of cpu_possible_map instead. This
should still preserve the behavior that Nick's change intended.
Thanks to Giuliano Pochini for reporting this and testing the fix:
http://ozlabs.org/pipermail/linuxppc-dev/2006-December/029397.html
Signed-off-by: Nathan Lynch <[email protected]>
---
This is a regression from 2.6.18. Assuming this change is okay, this
should go to -stable for 2.6.19.x.
diff --git a/kernel/sched.c b/kernel/sched.c
index b515e3c..3c8b1c5 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -6875,7 +6875,7 @@ void __init sched_init_smp(void)
lock_cpu_hotplug();
arch_init_sched_domains(&cpu_online_map);
- cpus_andnot(non_isolated_cpus, cpu_online_map, cpu_isolated_map);
+ cpus_andnot(non_isolated_cpus, cpu_possible_map, cpu_isolated_map);
if (cpus_empty(non_isolated_cpus))
cpu_set(smp_processor_id(), non_isolated_cpus);
unlock_cpu_hotplug();
* Nathan Lynch <[email protected]> wrote:
> Commit 5c1e176781f43bc902a51e5832f789756bff911b ("sched: force
> /sbin/init off isolated cpus") sets init's cpus_allowed to a subset of
> cpu_online_map at boot time, which means that tasks won't be scheduled
> on cpus that are added to the system later.
>
> Make init's cpus_allowed a subset of cpu_possible_map instead. This
> should still preserve the behavior that Nick's change intended.
>
> Thanks to Giuliano Pochini for reporting this and testing the fix:
>
> http://ozlabs.org/pipermail/linuxppc-dev/2006-December/029397.html
>
> Signed-off-by: Nathan Lynch <[email protected]>
nicely spotted!
> - cpus_andnot(non_isolated_cpus, cpu_online_map, cpu_isolated_map);
> + cpus_andnot(non_isolated_cpus, cpu_possible_map, cpu_isolated_map);
Acked-by: Ingo Molnar <[email protected]>
Ingo