From: Zhao Yakui <yakui.zhao@xxxxxxxxx> "idle=halt" forces Linux to use only HLT for the idle loop. This disables all fancy idle features, such as MWAIT and C-states deeper than C1. However, it is not as extreme as "idle=poll", which disabled all idle power savings features. While those fancy features save power, this option is useful when there are either platform or Linux bugs, or suspected latency issues related to those features. Signed-off-by: Zhao Yakui <yakui.zhao@xxxxxxxxx> Signed-off-by: Len Brown <len.brown@xxxxxxxxx> --- Documentation/kernel-parameters.txt | 4 +++- arch/x86/kernel/process.c | 3 +++ 2 files changed, 6 insertions(+), 1 deletions(-) diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index e07c432..1623c2f 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -785,7 +785,7 @@ and is between 256 and 4096 characters. It is defined in the file See Documentation/ide/ide.txt. idle= [X86] - Format: idle=poll or idle=mwait + Format: idle=poll or idle=mwait, idle = halt Poll forces a polling idle loop that can slightly improves the performance of waking up a idle CPU, but will use a lot of power and make the system run hot. Not recommended. @@ -793,6 +793,8 @@ and is between 256 and 4096 characters. It is defined in the file to not use it because it doesn't save as much power as a normal idle loop use the MONITOR/MWAIT idle loop anyways. Performance should be the same as idle=poll. + idle = halt . Halt is forced to be used for CPU idle. + In such case C2/C3 won't be used again. ide-pci-generic.all-generic-ide [HW] (E)IDE subsystem Claim all unknown PCI IDE storage controllers. diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index ba370dc..6a35c7d 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -6,6 +6,7 @@ #include <linux/sched.h> #include <linux/module.h> #include <linux/pm.h> +#include <asm/system.h> struct kmem_cache *task_xstate_cachep; @@ -169,6 +170,8 @@ static int __init idle_setup(char *str) pm_idle = poll_idle; } else if (!strcmp(str, "mwait")) force_mwait = 1; + else if (!strcmp(str, "halt")) + pm_idle = default_idle; else return -1; -- 1.5.6 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html