From: Anton Blanchard Implement powersave_nap sysctl, like ppc32. This allows us to disable the nap function which is useful when profiling with oprofile (to get an accurate count of idle time). Signed-off-by: Anton Blanchard Signed-off-by: Andrew Morton --- 25-akpm/arch/ppc64/kernel/idle.c | 34 ++++++++++++++++++++++++++++++++++ 25-akpm/arch/ppc64/kernel/setup.c | 2 -- 2 files changed, 34 insertions(+), 2 deletions(-) diff -puN arch/ppc64/kernel/idle.c~ppc64-powersave_nap-sysctl arch/ppc64/kernel/idle.c --- 25/arch/ppc64/kernel/idle.c~ppc64-powersave_nap-sysctl Tue Sep 14 15:45:13 2004 +++ 25-akpm/arch/ppc64/kernel/idle.c Tue Sep 14 15:45:13 2004 @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include #include @@ -296,6 +298,38 @@ int cpu_idle(void) return 0; } +int powersave_nap; + +#ifdef CONFIG_SYSCTL +/* + * Register the sysctl to set/clear powersave_nap. + */ +static ctl_table powersave_nap_ctl_table[]={ + { + .ctl_name = KERN_PPC_POWERSAVE_NAP, + .procname = "powersave-nap", + .data = &powersave_nap, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_dointvec, + }, + { 0, }, +}; +static ctl_table powersave_nap_sysctl_root[] = { + { 1, "kernel", NULL, 0, 0755, powersave_nap_ctl_table, }, + { 0,}, +}; + +static int __init +register_powersave_nap_sysctl(void) +{ + register_sysctl_table(powersave_nap_sysctl_root, 0); + + return 0; +} +__initcall(register_powersave_nap_sysctl); +#endif + int idle_setup(void) { #ifdef CONFIG_PPC_ISERIES diff -puN arch/ppc64/kernel/setup.c~ppc64-powersave_nap-sysctl arch/ppc64/kernel/setup.c --- 25/arch/ppc64/kernel/setup.c~ppc64-powersave_nap-sysctl Tue Sep 14 15:45:13 2004 +++ 25-akpm/arch/ppc64/kernel/setup.c Tue Sep 14 15:45:13 2004 @@ -82,8 +82,6 @@ unsigned long decr_overclock_proc0 = 1; unsigned long decr_overclock_set = 0; unsigned long decr_overclock_proc0_set = 0; -int powersave_nap; - unsigned char aux_device_present; #ifdef CONFIG_MAGIC_SYSRQ _