Index: linux-2.6.22-rc4-mm2/kernel/sched.c =================================================================== --- linux-2.6.22-rc4-mm2.orig/kernel/sched.c 2007-06-18 20:41:46.000000000 -0700 +++ linux-2.6.22-rc4-mm2/kernel/sched.c 2007-06-18 20:44:00.000000000 -0700 @@ -2493,17 +2493,18 @@ static void idle_balance(int this_cpu, s unsigned long next_balance = jiffies + 60 * HZ; for_each_domain(this_cpu, sd) { - if (sd->flags & SD_BALANCE_NEWIDLE) { + unsigned long interval; + + if (sd->flags & SD_BALANCE_NEWIDLE) /* If we've pulled tasks over stop searching: */ - pulled_task = load_balance_newidle(this_cpu, - this_rq, sd); - if (time_after(next_balance, - sd->last_balance + sd->balance_interval)) - next_balance = sd->last_balance - + sd->balance_interval; - if (pulled_task) - break; - } + pulled_task = load_balance_newidle(this_cpu,this_rq, sd); + + interval = msecs_to_jiffies(sd->balance_interval); + if (time_after(next_balance, + sd->last_balance + interval)) + next_balance = sd->last_balance + interval; + if (pulled_task) + break; } if (!pulled_task) /*