[2.5.] cpufreq: parallel use of /proc/sys/cpu/ and /proc/cpufreq interfaces
Subsystems (2)
PATCH 1/1 [2.5.] cpufreq: parallel use of /proc/sys/cpu/ and /proc/cpufreq interfaces
Both the deprecated /proc/sys/cpu/ interface, and the new policy-based /proc/cpufreq interface can work nicely in the same kernel.
Dominik
kernel/cpufreq.c renamed from usr/src/linux/kernel/cpufreq.c +10 -22
@@ -4,7 +4,7 @@* Copyright (C) 2001 Russell King * (C) 2002 Dominik Brodowski <[email protected]> * -* $Id: cpufreq.c,v 1.43 2002/09/21 09:05:29 db Exp $ +* $Id: cpufreq.c,v 1.45 2002/10/08 14:54:23 db Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as
@@ -21,13 +21,10 @@#include <linux/interrupt.h> #include <linux/spinlock.h> #include <linux/ctype.h> +#include <linux/proc_fs.h> #include <asm/uaccess.h> -#ifdef CONFIG_CPU_FREQ_26_API -#include <linux/proc_fs.h> -#endif -#ifdef CONFIG_CPU_FREQ_24_API #include <linux/sysctl.h> #endif
@@ -200,7 +197,6 @@__setup ("cpufreq=" , cpufreq_setup); -#ifdef CONFIG_CPU_FREQ_26_API #ifdef CONFIG_PROC_FS /**
@@ -335,7 +331,6 @@ return; }#endif /* CONFIG_PROC_FS */ -#endif /* CONFIG_CPU_FREQ_26_API */
@@ -344,10 +339,6 @@*********************************************************************/ #ifdef CONFIG_CPU_FREQ_24_API -/* NOTE #1: when you use this API, you may not use any other calls, -* except cpufreq_[un]register_notifier, of course. -*/ -/** * cpufreq_set - set the CPU frequency * @freq: target frequency in kHz
@@ -879,7 +870,7 @@ cpufreq_driver->policy[policy->cpu].max = policy->max; cpufreq_driver->policy[policy->cpu].policy = policy->policy; } - +#ifdef CONFIG_CPU_FREQ_24_API if (policy->cpu ==CPUFREQ_ALL_CPUS ) {for (i=0 ;i<NR_CPUS ;i++)
@@ -945,6 +936,13 @@case CPUFREQ_POSTCHANGE :adjust_jiffies (CPUFREQ_POSTCHANGE , freqs);notifier_call_chain (&cpufreq_transition_notifier_list,CPUFREQ_POSTCHANGE , freqs); +#ifdef CONFIG_CPU_FREQ_24_API +if (freqs->cpu ==CPUFREQ_ALL_CPUS ) { +for (i=0 ;i<NR_CPUS ;i++) + cpu_cur_freq[i] = freqs->new; + }else + cpu_cur_freq[freqs->cpu] = freqs->new; +#endif break ; }up (&cpufreq_notifier_sem);
@@ -992,9 +990,7 @@ ret =cpufreq_set_policy (&default_policy); -#ifdef CONFIG_CPU_FREQ_26_API cpufreq_proc_init (); -#endif #ifdef CONFIG_CPU_FREQ_24_API down (&cpufreq_driver_sem);
@@ -1042,9 +1038,7 @@up (&cpufreq_driver_sem); -#ifdef CONFIG_CPU_FREQ_26_API cpufreq_proc_exit (); -#endif #ifdef CONFIG_CPU_FREQ_24_API cpufreq_sysctl_exit ();
@@ -1086,13 +1080,7 @@ policy.cpu = i;up (&cpufreq_driver_sem); -#ifdef CONFIG_CPU_FREQ_26_API cpufreq_set_policy (&policy); -#endif - -#ifdef CONFIG_CPU_FREQ_24_API -cpufreq_set (cpu_cur_freq[i], i); -#endif }return 0 ;
include/linux/cpufreq.h renamed from usr/src/linux/include/linux/cpufreq.h +1 -6
@@ -5,7 +5,7 @@* (C) 2002 Dominik Brodowski <[email protected]> * * -* $Id: cpufreq.h,v 1.26 2002/09/21 09:05:29 db Exp $ +* $Id: cpufreq.h,v 1.27 2002/10/08 14:54:23 db Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as
@@ -148,11 +148,9 @@int cpufreq_set_policy (struct cpufreq_policy *policy);int cpufreq_get_policy (struct cpufreq_policy *policy,unsigned int cpu); -#ifdef CONFIG_CPU_FREQ_26_API #ifdef CONFIG_PM int cpufreq_restore (void );#endif -#endif #ifdef CONFIG_CPU_FREQ_24_API
@@ -160,9 +158,6 @@* CPUFREQ 2.4. INTERFACE * *********************************************************************/ int cpufreq_setmax (unsigned int cpu); -#ifdef CONFIG_PM -int cpufreq_restore (void ); -#endif int cpufreq_set (unsigned int kHz,unsigned int cpu);unsigned int cpufreq_get (unsigned int cpu);
arch/i386/Config.help renamed from arch/i386/Config.help.original +4 -6
@@ -852,12 +852,10 @@ CONFIG_CPU_FREQ_24_API This enables the /proc/sys/cpu/ sysctl interface for controlling - CPUFreq, as known from the 2.4.-kernel patches for CPUFreq. Note - that some drivers do not support this interface or offer less - functionality. - - If you say N here, you'll be able to control CPUFreq using the - new /proc/cpufreq interface. + CPUFreq, as known from the 2.4.-kernel patches for CPUFreq. 2.5 + uses /proc/cpufreq instead. Please note that some drivers do not + work with the 2.4. /proc/sys/cpu sysctl interface, so if in doubt, + say N here. For details, take a look at linux/Documentation/cpufreq.
arch/i386/config.in renamed from arch/i386/config.in.original +1 -4
@@ -192,10 +192,7 @@ bool 'CPU Frequency scaling' CONFIG_CPU_FREQ if [ "$CONFIG_CPU_FREQ" = "y" ]; then - bool ' /proc/sys/cpu/ interface (2.4.)' CONFIG_CPU_FREQ_24_API - if [ "$CONFIG_CPU_FREQ_24_API" = "n" ]; then - define_bool CONFIG_CPU_FREQ_26_API y - fi + bool ' /proc/sys/cpu/ interface (2.4. / OLD)' CONFIG_CPU_FREQ_24_API tristate ' AMD Mobile K6-2/K6-3 PowerNow!' CONFIG_X86_POWERNOW_K6 if [ "$CONFIG_MELAN" = "y" ]; then tristate ' AMD Elan' CONFIG_ELAN_CPUFREQ