===================================================================
@@ -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 */
===================================================================
@@ -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);
===================================================================
@@ -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)
* Arun R Bharadwaj <arun@linux.vnet.ibm.com> [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 <arun@linux.vnet.ibm.com> --- 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(-)