From: "Siddha, Suresh B" Recent changes to active load balance (sched2-fix-smt-scheduling-problems.patch in -mm) is not resulting in any task movement from busiest to target_cpu. Attached patch(ontop of -mm) fixes this issue. Signed-off-by: Suresh Siddha Cc: Ingo Molnar Cc: Nick Piggin Signed-off-by: Andrew Morton --- kernel/sched.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-) diff -puN kernel/sched.c~sched2-fix-smt-scheduling-problems-fix kernel/sched.c --- 25/kernel/sched.c~sched2-fix-smt-scheduling-problems-fix 2005-04-25 18:32:19.005310240 -0700 +++ 25-akpm/kernel/sched.c 2005-04-25 18:32:28.330892536 -0700 @@ -2106,7 +2106,7 @@ static inline void idle_balance(int this */ static void active_load_balance(runqueue_t *busiest_rq, int busiest_cpu) { - struct sched_domain *tmp = NULL, *sd; + struct sched_domain *sd; runqueue_t *target_rq; int target_cpu = busiest_rq->push_cpu; @@ -2127,13 +2127,10 @@ static void active_load_balance(runqueue double_lock_balance(busiest_rq, target_rq); /* Search for an sd spanning us and the target CPU. */ - for_each_domain(target_cpu, sd) { + for_each_domain(target_cpu, sd) if ((sd->flags & SD_LOAD_BALANCE) && - cpu_isset(busiest_cpu, sd->span)) { - sd = tmp; + cpu_isset(busiest_cpu, sd->span)) break; - } - } if (unlikely(sd == NULL)) goto out; _