[v8 PATCH 8/8]: POWER: Enable default_idle when power_save=off.
From: Arun R Bharadwaj <hidden>
Date: 2009-10-08 09:56:52
Also in:
linux-acpi, linux-arch, lkml
* Arun R Bharadwaj [off-list ref] [2009-10-08 15:18:28]: This patch enables default_idle when power_save=off kernel boot option is specified. Earlier, this was done by setting ppc_md.power_save = NULL and hence HMT_low() and HMT_very_low() was called. Now this is defined under default_idle() and hence by setting boot_option_idle_override = 1, the cpuidle registration stuff does not happen and hence default_idle is chosen in cpuidle_idle_call. Signed-off-by: Arun R Bharadwaj <redacted> --- arch/powerpc/include/asm/processor.h | 2 ++ arch/powerpc/kernel/idle.c | 4 +++- arch/powerpc/platforms/pseries/processor_idle.c | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) Index: linux.trees.git/arch/powerpc/include/asm/processor.h ===================================================================
--- linux.trees.git.orig/arch/powerpc/include/asm/processor.h
+++ linux.trees.git/arch/powerpc/include/asm/processor.h@@ -332,6 +332,8 @@ static inline unsigned long get_clean_sp } #endif +extern int boot_option_idle_override; + #endif /* __KERNEL__ */ #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_PROCESSOR_H */
Index: linux.trees.git/arch/powerpc/kernel/idle.c ===================================================================
--- linux.trees.git.orig/arch/powerpc/kernel/idle.c
+++ linux.trees.git/arch/powerpc/kernel/idle.c@@ -40,9 +40,11 @@ #define cpu_should_die() 0 #endif +int boot_option_idle_override = 0; + static int __init powersave_off(char *arg) { - ppc_md.power_save = NULL; + boot_option_idle_override = 1; return 0; } __setup("powersave=off", powersave_off);
Index: linux.trees.git/arch/powerpc/platforms/pseries/processor_idle.c ===================================================================
--- linux.trees.git.orig/arch/powerpc/platforms/pseries/processor_idle.c
+++ linux.trees.git/arch/powerpc/platforms/pseries/processor_idle.c@@ -185,6 +185,11 @@ static int __init pseries_processor_idle int cpu; int result; + if (boot_option_idle_override) { + printk(KERN_DEBUG "Using default idle\n"); + return 0; + } + result = cpuidle_register_driver(&pseries_idle_driver); if (result < 0)