Index: linux-2.6/kernel/sched.c =================================================================== --- linux-2.6.orig/kernel/sched.c 2005-06-08 00:01:53.000000000 +1000 +++ linux-2.6/kernel/sched.c 2005-06-08 00:02:47.000000000 +1000 @@ -1113,6 +1113,7 @@ static int sched_balance_self(int cpu, i cpumask_t span; struct sched_group *group; int new_cpu; + int weight; span = sd->span; group = find_idlest_group(sd, t, cpu); @@ -1127,8 +1128,9 @@ static int sched_balance_self(int cpu, i cpu = new_cpu; nextlevel: sd = NULL; + weight = cpus_weight(span); for_each_domain(cpu, tmp) { - if (cpus_subset(span, tmp->span)) + if (weight <= cpus_weight(tmp->span)) break; if (tmp->flags & flag) sd = tmp;