diff options
author | Andi Kleen <ak@suse.de> | 2007-05-02 13:27:12 -0400 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2007-05-02 13:27:12 -0400 |
commit | f039b754714a422959027cb18bb33760eb8153f0 (patch) | |
tree | c5f28502adf35f5ea7738a974cd7c4fc81e1dd21 /arch/i386/kernel/process.c | |
parent | c169859d6dfc7471ef9f2dbd720936e17906a084 (diff) |
[PATCH] x86: Don't use MWAIT on AMD Family 10
It doesn't put the CPU into deeper sleep states, so it's better to use the standard
idle loop to save power. But allow to reenable it anyways for benchmarking.
I also removed the obsolete idle=halt on i386
Cc: andreas.herrmann@amd.com
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/i386/kernel/process.c')
-rw-r--r-- | arch/i386/kernel/process.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/arch/i386/kernel/process.c b/arch/i386/kernel/process.c index 393a67d5d943..7e8e129b3d7d 100644 --- a/arch/i386/kernel/process.c +++ b/arch/i386/kernel/process.c | |||
@@ -272,25 +272,24 @@ void __devinit select_idle_routine(const struct cpuinfo_x86 *c) | |||
272 | } | 272 | } |
273 | } | 273 | } |
274 | 274 | ||
275 | static int __init idle_setup (char *str) | 275 | static int __init idle_setup(char *str) |
276 | { | 276 | { |
277 | if (!strncmp(str, "poll", 4)) { | 277 | if (!strcmp(str, "poll")) { |
278 | printk("using polling idle threads.\n"); | 278 | printk("using polling idle threads.\n"); |
279 | pm_idle = poll_idle; | 279 | pm_idle = poll_idle; |
280 | #ifdef CONFIG_X86_SMP | 280 | #ifdef CONFIG_X86_SMP |
281 | if (smp_num_siblings > 1) | 281 | if (smp_num_siblings > 1) |
282 | printk("WARNING: polling idle and HT enabled, performance may degrade.\n"); | 282 | printk("WARNING: polling idle and HT enabled, performance may degrade.\n"); |
283 | #endif | 283 | #endif |
284 | } else if (!strncmp(str, "halt", 4)) { | 284 | } else if (!strcmp(str, "mwait")) |
285 | printk("using halt in idle threads.\n"); | 285 | force_mwait = 1; |
286 | pm_idle = default_idle; | 286 | else |
287 | } | 287 | return -1; |
288 | 288 | ||
289 | boot_option_idle_override = 1; | 289 | boot_option_idle_override = 1; |
290 | return 1; | 290 | return 0; |
291 | } | 291 | } |
292 | 292 | early_param("idle", idle_setup); | |
293 | __setup("idle=", idle_setup); | ||
294 | 293 | ||
295 | void show_regs(struct pt_regs * regs) | 294 | void show_regs(struct pt_regs * regs) |
296 | { | 295 | { |