From: Nick Piggin <nickpiggin@yahoo.com.au>

Remove the very aggressive idle stuff that has recently gone into 2.6 - it is
going against the direction we are trying to go.  Hopefully we can regain
performance through other methods.

Signed-off-by: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/include/asm-i386/topology.h   |    1 -
 25-akpm/include/asm-x86_64/topology.h |    1 -
 25-akpm/include/linux/topology.h      |    1 -
 25-akpm/kernel/sched.c                |   25 ++++---------------------
 4 files changed, 4 insertions(+), 24 deletions(-)

diff -puN include/asm-i386/topology.h~sched-remove-aggressive-idle-balancing include/asm-i386/topology.h
--- 25/include/asm-i386/topology.h~sched-remove-aggressive-idle-balancing	2005-02-24 19:54:53.000000000 -0800
+++ 25-akpm/include/asm-i386/topology.h	2005-02-24 19:54:53.000000000 -0800
@@ -85,7 +85,6 @@ static inline cpumask_t pcibus_to_cpumas
 	.flags			= SD_LOAD_BALANCE	\
 				| SD_BALANCE_EXEC	\
 				| SD_BALANCE_NEWIDLE	\
-				| SD_WAKE_IDLE		\
 				| SD_WAKE_BALANCE,	\
 	.last_balance		= jiffies,		\
 	.balance_interval	= 1,			\
diff -puN include/asm-x86_64/topology.h~sched-remove-aggressive-idle-balancing include/asm-x86_64/topology.h
--- 25/include/asm-x86_64/topology.h~sched-remove-aggressive-idle-balancing	2005-02-24 19:54:53.000000000 -0800
+++ 25-akpm/include/asm-x86_64/topology.h	2005-02-24 19:54:53.000000000 -0800
@@ -58,7 +58,6 @@ static inline cpumask_t __pcibus_to_cpum
 	.flags			= SD_LOAD_BALANCE	\
 				| SD_BALANCE_NEWIDLE	\
 				| SD_BALANCE_EXEC	\
-				| SD_WAKE_IDLE		\
 				| SD_WAKE_BALANCE,	\
 	.last_balance		= jiffies,		\
 	.balance_interval	= 1,			\
diff -puN include/linux/topology.h~sched-remove-aggressive-idle-balancing include/linux/topology.h
--- 25/include/linux/topology.h~sched-remove-aggressive-idle-balancing	2005-02-24 19:54:53.000000000 -0800
+++ 25-akpm/include/linux/topology.h	2005-02-24 19:54:53.000000000 -0800
@@ -124,7 +124,6 @@
 				| SD_BALANCE_NEWIDLE	\
 				| SD_BALANCE_EXEC	\
 				| SD_WAKE_AFFINE	\
-				| SD_WAKE_IDLE		\
 				| SD_WAKE_BALANCE,	\
 	.last_balance		= jiffies,		\
 	.balance_interval	= 1,			\
diff -puN kernel/sched.c~sched-remove-aggressive-idle-balancing kernel/sched.c
--- 25/kernel/sched.c~sched-remove-aggressive-idle-balancing	2005-02-24 19:54:53.000000000 -0800
+++ 25-akpm/kernel/sched.c	2005-02-24 19:54:53.000000000 -0800
@@ -414,22 +414,6 @@ static runqueue_t *this_rq_lock(void)
 	return rq;
 }
 
-#ifdef CONFIG_SCHED_SMT
-static int cpu_and_siblings_are_idle(int cpu)
-{
-	int sib;
-	for_each_cpu_mask(sib, cpu_sibling_map[cpu]) {
-		if (idle_cpu(sib))
-			continue;
-		return 0;
-	}
-
-	return 1;
-}
-#else
-#define cpu_and_siblings_are_idle(A) idle_cpu(A)
-#endif
-
 #ifdef CONFIG_SCHEDSTATS
 /*
  * Called when a process is dequeued from the active array and given
@@ -1652,16 +1636,15 @@ int can_migrate_task(task_t *p, runqueue
 
 	/*
 	 * Aggressive migration if:
-	 * 1) the [whole] cpu is idle, or
+	 * 1) task is cache cold, or
 	 * 2) too many balance attempts have failed.
 	 */
 
-	if (cpu_and_siblings_are_idle(this_cpu) || \
-			sd->nr_balance_failed > sd->cache_nice_tries)
+	if (sd->nr_balance_failed > sd->cache_nice_tries)
 		return 1;
 
 	if (task_hot(p, rq->timestamp_last_tick, sd))
-			return 0;
+		return 0;
 	return 1;
 }
 
@@ -2133,7 +2116,7 @@ static void active_load_balance(runqueue
 				if (cpu_isset(cpu, visited_cpus))
 					continue;
 				cpu_set(cpu, visited_cpus);
-				if (!cpu_and_siblings_are_idle(cpu) || cpu == busiest_cpu)
+				if (cpu == busiest_cpu)
 					continue;
 
 				target_rq = cpu_rq(cpu);
_