cpufreq: move frequency table helpers to extra module
PATCH 1/1 cpufreq: move frequency table helpers to extra module
The CPU frequency table helpers can easily be modularized -- especially as they are not needed on all architectures, or for all drivers.
arch/i386/Kconfig | 20 +++- arch/sparc64/Kconfig | 7 + drivers/cpufreq/Makefile | 2 drivers/cpufreq/freq_table.c | 201 +++++++++++++++++++++++++++++++++++++++++++ include/linux/cpufreq.h | 3 kernel/cpufreq.c | 188 ---------------------------------------- 6 files changed, 228 insertions(+), 194 deletions(-)
arch/i386/Kconfig +15 -5
@@ -983,9 +983,19 @@ If in doubt, say N. +config CPU_FREQ_TABLE + tristate "CPU frequency table helpers" + depends on CPU_FREQ + default y + help + Many CPUFreq drivers use these helpers, so only say N here if + the CPUFreq driver of your choice doesn't need these helpers. + + If in doubt, say Y. + config X86_ACPI_CPUFREQ tristate "ACPI Processor P-States driver" - depends on CPU_FREQ && ACPI_PROCESSOR + depends on CPU_FREQ && ACPI_PROCESSOR && CPU_FREQ_TABLE help This driver adds a CPUFreq driver which utilizes the ACPI Processor Performance States.
@@ -996,7 +1006,7 @@ config X86_POWERNOW_K6 tristate "AMD Mobile K6-2/K6-3 PowerNow!" - depends on CPU_FREQ + depends on CPU_FREQ && CPU_FREQ_TABLE help This adds the CPUFreq driver for mobile AMD K6-2+ and mobile AMD K6-3+ processors.
@@ -1007,7 +1017,7 @@ config ELAN_CPUFREQ tristate "AMD Elan" - depends on CPU_FREQ && MELAN + depends on CPU_FREQ && MELAN && CPU_FREQ_TABLE ---help--- This adds the CPUFreq driver for AMD Elan SC400 and SC410 processors.
@@ -1034,7 +1044,7 @@ config X86_SPEEDSTEP tristate "Intel Speedstep" - depends on CPU_FREQ + depends on CPU_FREQ && CPU_FREQ_TABLE help This adds the CPUFreq driver for certain mobile Intel Pentium III (Coppermine), all mobile Intel Pentium III-M (Tulatin) and all
@@ -1046,7 +1056,7 @@ config X86_P4_CLOCKMOD tristate "Intel Pentium 4 clock modulation" - depends on CPU_FREQ + depends on CPU_FREQ && CPU_FREQ_TABLE help This adds the CPUFreq driver for Intel Pentium 4 / XEON processors.
arch/sparc64/Kconfig +6 -1
@@ -162,9 +162,14 @@ If in doubt, say N. +config CPU_FREQ_TABLE + tristate + default y + + config US3_FREQ tristate "UltraSPARC-III CPU Frequency driver" - depends on CPU_FREQ + depends on CPU_FREQ && CPU_FREQ_TABLE help This adds the CPUFreq driver for UltraSPARC-III processors.
drivers/Makefile +1 -0
@@ -45,3 +45,4 @@ obj-$(CONFIG_ISDN_BOOL) += isdn/ obj-$(CONFIG_MCA) += mca/ obj-$(CONFIG_EISA) += eisa/ +obj-$(CONFIG_CPU_FREQ) += cpufreq/
drivers/cpufreq/Makefile +2 -0
@@ -0,0 +1,2 @@ +#CPUfreq governors and cross-arch helpers +obj-$(CONFIG_CPU_FREQ_TABLE) += freq_table.o
drivers/cpufreq/freq_table.c +201 -0
201 lines not on this page · raw message
include/linux/cpufreq.h +3 -0
@@ -297,6 +297,7 @@#endif /* CONFIG_CPU_FREQ_24_API */ +#if defined(CONFIG_CPU_FREQ_TABLE ) || defined(CONFIG_CPU_FREQ_TABLE_MODULE )/********************************************************************* * FREQUENCY TABLE HELPERS * *********************************************************************/
@@ -326,4 +327,6 @@unsigned int relation, unsigned int *index); +#endif /* CONFIG_CPU_FREQ_TABLE */ +#endif /* _LINUX_CPUFREQ_H */
kernel/cpufreq.c +0 -188
191 lines not on this page · raw message
Quoted 3 lines · Dominik Brodowski
The CPU frequency table helpers can easily be modularized -- especially as they are not needed on all architectures, or for all drivers.
As most of the x86 drivers have been converted now, it looks like it'd make more sense to conditionalise this on architecture, and move the remaining x86 drivers over to the helpers (longrun/longhaul).
It just strikes me as silly that we have a config option that when disabled could end up showing no chip drivers when the conversion is complete.
Dave
Signature · 2 lines
| Dave Jones. http://www.codemonkey.org.uk | SuSE Labs
Quoted 8 lines · Dave Jones
Quoted 3 lines · Dominik Brodowski
The CPU frequency table helpers can easily be modularized -- especially as they are not needed on all architectures, or for all drivers.
As most of the x86 drivers have been converted now, it looks like it'd make more sense to conditionalise this on architecture, and move the remaining x86 drivers over to the helpers (longrun/longhaul).
Longhaul yes, Longrun no. On longrun you can't set the speed to a specific frequency[*], only to a _frequency range_. So the frequency table helpers aren't needed there. Also, for gx-suspmod, which allows really fine-grained setting of frequencies, the frequency table helpers don't make sense.
Quoted 3 lines
It just strikes me as silly that we have a config option that when disabled could end up showing no chip drivers when the conversion is complete.
So, even when the conversion is complete, there are two drivers which can be compiled. Additionally, some users (or distros!) might prefer modularizing this.
Dominik
[*] you can set policy->max = policy->min, but that really doesn't make sense on longrun.
Hi,
Quoted 7 lines · Dominik Brodowski
arch/i386/Kconfig +7
-0+config CPU_FREQ_TABLE + tristate "CPU frequency table helpers" + depends on CPU_FREQ + default y + help + Many CPUFreq drivers use these helpers, so only say N here if + the CPUFreq driver of your choice doesn't need these helpers.
arch/i386/Kconfig line 1001
Quoted 10 lines
arch/i386/Kconfig +4
-1+ + If in doubt, say Y. + config X86_ACPI_CPUFREQ tristate "ACPI Processor P-States driver" - depends on CPU_FREQ && ACPI_PROCESSOR + depends on CPU_FREQ && ACPI_PROCESSOR && CPU_FREQ_TABLE help This driver adds a CPUFreq driver which utilizes the ACPI Processor Performance States.
If CPU_FREQ_TABLE itself depends on CPU_FREQ, then X86_ACPI_CPUFREQ automatically depends on CPU_FREQ too, so you can remove CPU_FREQ from the dependency list.
You can also put X86_ACPI_CPUFREQ and all following options, which depend on CPU_FREQ_TABLE, within an "if CPU_FREQ_TABLE" ... "endif" block.
bye, Roman
PATCH 1/1 cpufreq: move frequency table helpers to extra module
The CPU frequency table helpers can easily be modularized -- especially as they are not needed on all architectures, or for all drivers (even on x86 -- see longrun and gx-suspmod). Thanks to Roman Zippel and Dave Jones for their feedback.
arch/i386/Kconfig | 20 +++- arch/sparc64/Kconfig | 7 + drivers/cpufreq/Makefile | 2 drivers/cpufreq/freq_table.c | 201 +++++++++++++++++++++++++++++++++++++++++++ include/linux/cpufreq.h | 3 kernel/cpufreq.c | 188 ---------------------------------------- 6 files changed, 228 insertions(+), 194 deletions(-)
arch/i386/Kconfig +15 -5
@@ -983,9 +983,19 @@ If in doubt, say N. +config CPU_FREQ_TABLE + tristate "CPU frequency table helpers" + depends on CPU_FREQ + default y + help + Many CPUFreq drivers use these helpers, so only say N here if + the CPUFreq driver of your choice doesn't need these helpers. + + If in doubt, say Y. + config X86_ACPI_CPUFREQ tristate "ACPI Processor P-States driver" - depends on CPU_FREQ && ACPI_PROCESSOR + depends on CPU_FREQ_TABLE && ACPI_PROCESSOR help This driver adds a CPUFreq driver which utilizes the ACPI Processor Performance States.
@@ -996,7 +1006,7 @@ config X86_POWERNOW_K6 tristate "AMD Mobile K6-2/K6-3 PowerNow!" - depends on CPU_FREQ + depends on CPU_FREQ_TABLE help This adds the CPUFreq driver for mobile AMD K6-2+ and mobile AMD K6-3+ processors.
@@ -1007,7 +1017,7 @@ config ELAN_CPUFREQ tristate "AMD Elan" - depends on CPU_FREQ && MELAN + depends on CPU_FREQ_TABLE && MELAN ---help--- This adds the CPUFreq driver for AMD Elan SC400 and SC410 processors.
@@ -1034,7 +1044,7 @@ config X86_SPEEDSTEP tristate "Intel Speedstep" - depends on CPU_FREQ + depends on CPU_FREQ_TABLE help This adds the CPUFreq driver for certain mobile Intel Pentium III (Coppermine), all mobile Intel Pentium III-M (Tulatin) and all
@@ -1046,7 +1056,7 @@ config X86_P4_CLOCKMOD tristate "Intel Pentium 4 clock modulation" - depends on CPU_FREQ + depends on CPU_FREQ_TABLE help This adds the CPUFreq driver for Intel Pentium 4 / XEON processors.
arch/sparc64/Kconfig +6 -1
@@ -162,9 +162,14 @@ If in doubt, say N. +config CPU_FREQ_TABLE + tristate + default y + + config US3_FREQ tristate "UltraSPARC-III CPU Frequency driver" - depends on CPU_FREQ + depends on CPU_FREQ_TABLE help This adds the CPUFreq driver for UltraSPARC-III processors.
drivers/Makefile +1 -0
@@ -45,3 +45,4 @@ obj-$(CONFIG_ISDN_BOOL) += isdn/ obj-$(CONFIG_MCA) += mca/ obj-$(CONFIG_EISA) += eisa/ +obj-$(CONFIG_CPU_FREQ) += cpufreq/
drivers/cpufreq/Makefile +2 -0
@@ -0,0 +1,2 @@ +#CPUfreq governors and cross-arch helpers +obj-$(CONFIG_CPU_FREQ_TABLE) += freq_table.o
drivers/cpufreq/freq_table.c +201 -0
201 lines not on this page · raw message
include/linux/cpufreq.h +3 -0
@@ -297,6 +297,7 @@#endif /* CONFIG_CPU_FREQ_24_API */ +#if defined(CONFIG_CPU_FREQ_TABLE ) || defined(CONFIG_CPU_FREQ_TABLE_MODULE )/********************************************************************* * FREQUENCY TABLE HELPERS * *********************************************************************/
@@ -326,4 +327,6 @@unsigned int relation, unsigned int *index); +#endif /* CONFIG_CPU_FREQ_TABLE */ +#endif /* _LINUX_CPUFREQ_H */
kernel/cpufreq.c +0 -188
191 lines not on this page · raw message
Dominic,
this broke ACPI.
In file included from drivers/acpi/processor.c:49:
include/acpi/processor.h:78: field `freq_table' has incomplete type
AGAIN.
For about the 15th time.
You guys need to talk more. A LOT more. Or y ou need to start checking who is actually _using_ the frequency code, and when you make changes to the interfaces you need to _update_ the users, instead of just causing kernel compiles to fail every frigging time you make a change.
Linus
PATCH 1/1 cpufreq: fix compilation of ACPI if !CPU_FREQ [Was: Re: [PATCH UPDATED] cpufreq: move frequency table helpers to extra module]
Quoted 9 lines · Linus Torvalds
Dominic,
this broke ACPI.In file included from
drivers/acpi/processor.c:49:
include/acpi/processor.h:78: field `freq_table' has incomplete typeAGAIN.
Quoted 8 lines
For about the 15th time.
You guys need to talk more. A LOT more. Or y ou need to start checking who is actually _using_ the frequency code, and when you make changes to the interfaces you need to _update_ the users, instead of just causing kernel compiles to fail every frigging time you make a change.
Linus
Linus,
here's the compile fix for this breakage which only appears if CONFIG_ACPI && !(CONFIG_CPU_FREQ_TABLE || CONFIG_CPU_FREQ_TABLE_MODULE) Unfortunately, I forgot to test-compile this combination. Sorry about that.
Dominik
include/linux/cpufreq.h +2 -1
@@ -299,7 +299,7 @@#endif /* CONFIG_CPU_FREQ_24_API */ -#if defined(CONFIG_CPU_FREQ_TABLE ) || defined(CONFIG_CPU_FREQ_TABLE_MODULE ) +/********************************************************************* * FREQUENCY TABLE HELPERS * *********************************************************************/
@@ -313,6 +313,7 @@* order */ }; +#if defined(CONFIG_CPU_FREQ_TABLE ) || defined(CONFIG_CPU_FREQ_TABLE_MODULE )int cpufreq_frequency_table_cpuinfo (struct cpufreq_policy *policy,struct cpufreq_frequency_table *table);