sched: idle_balance() does not call load_balance_newidle()
authorVaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Mon, 8 Dec 2008 15:22:49 +0000 (20:52 +0530)
committerIngo Molnar <mingo@elte.hu>
Mon, 8 Dec 2008 15:48:00 +0000 (16:48 +0100)
Impact: fix SD_BALANCE_NEWIDLEand broaden its use

load_balance_newidle() does not get called if SD_BALANCE_NEWIDLE is
set at higher level domain (3-CPU) and not in low level domain (2-MC).

pulled_task is initialised to -1 and checked for non-zero which is
always true if the lowest level sched_domain does not have
SD_BALANCE_NEWIDLE flag set.

Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched.c

index 74498c840f933e7a1c63dd7ffb8e8db270e2bc34..bb9c6384d07740f53454c3732792be5dea3fa53e 100644 (file)
@@ -3685,7 +3685,7 @@ out_balanced:
 static void idle_balance(int this_cpu, struct rq *this_rq)
 {
        struct sched_domain *sd;
-       int pulled_task = -1;
+       int pulled_task = 0;
        unsigned long next_balance = jiffies + HZ;
        cpumask_t tmpmask;