aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-05-14 02:47:40 -0400
committerThomas Gleixner <tglx@linutronix.de>2008-05-17 16:57:20 -0400
commita738d897b7b03b83488ae74a9bc03d26a2875dc6 (patch)
treea5eadb80fb893a36d3653fd9cfc0ba5acaa0e30b
parentf26a3988917913b3d11b2bd741601a2c64ab9204 (diff)
x86: remove mwait capability C-state check
Vegard Nossum reports: | powertop shows between 200-400 wakeups/second with the description | "<kernel IPI>: Rescheduling interrupts" when all processors have load (e.g. | I need to run two busy-loops on my 2-CPU system for this to show up). | | The bisect resulted in this commit: | | commit 0c07ee38c9d4eb081758f5ad14bbffa7197e1aec | Date: Wed Jan 30 13:33:16 2008 +0100 | | x86: use the correct cpuid method to detect MWAIT support for C states remove the functional effects of this patch and make mwait unconditional. A future patch will turn off mwait on specific CPUs where that causes power to be wasted. Bisected-by: Vegard Nossum <vegard.nossum@gmail.com> Tested-by: Vegard Nossum <vegard.nossum@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--arch/x86/kernel/process.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index 67e9b4a1e89d..c7b6a694ca22 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -99,15 +99,6 @@ static void mwait_idle(void)
99 local_irq_enable(); 99 local_irq_enable();
100} 100}
101 101
102
103static int __cpuinit mwait_usable(const struct cpuinfo_x86 *c)
104{
105 if (force_mwait)
106 return 1;
107 /* Any C1 states supported? */
108 return c->cpuid_level >= 5 && ((cpuid_edx(5) >> 4) & 0xf) > 0;
109}
110
111/* 102/*
112 * On SMP it's slightly faster (but much more power-consuming!) 103 * On SMP it's slightly faster (but much more power-consuming!)
113 * to poll the ->work.need_resched flag instead of waiting for the 104 * to poll the ->work.need_resched flag instead of waiting for the
@@ -131,7 +122,7 @@ void __cpuinit select_idle_routine(const struct cpuinfo_x86 *c)
131 " performance may degrade.\n"); 122 " performance may degrade.\n");
132 } 123 }
133#endif 124#endif
134 if (cpu_has(c, X86_FEATURE_MWAIT) && mwait_usable(c)) { 125 if (cpu_has(c, X86_FEATURE_MWAIT)) {
135 /* 126 /*
136 * Skip, if setup has overridden idle. 127 * Skip, if setup has overridden idle.
137 * One CPU supports mwait => All CPUs supports mwait 128 * One CPU supports mwait => All CPUs supports mwait