cpu frequency scaling autoloading

Herton Ronaldo Krzesinski herton.krzesinski at canonical.com
Wed Jul 25 15:29:21 UTC 2012


On Wed, Jul 25, 2012 at 11:37:07AM +0100, Andy Whitcroft wrote:
> TLDR: It was recently commented that we have a policy to building cpufreq
> drivers because they are not autoloadable, but that there had been some
> fixes made to fix this.  As part of that we took an action to investigate.
> This upstream work is not yet complete but it does appear we can pull
> out a fair number of these drivers to modules and let them autoload.
> 
> In v3.4-rc1 the commit below added support for loading cpufreq drivers
> via either CPU features or PCI ids:
> 
>   commit fa8031aefec0cf7ea6c2387c93610d99d9659aa2
>   Author: Andi Kleen <ak at linux.intel.com>
>   Date:   Thu Jan 26 00:09:12 2012 +0100
> 
>     cpufreq: Add support for x86 cpuinfo auto loading v4
> 
> And the following commit added autoloading for acpi-cpufreq:
> 
>   commit 9061e0e16700ef228837e96987ff51794c956197
>   Author: Andi Kleen <ak at linux.intel.com>
>   Date:   Thu Jan 26 00:09:08 2012 +0100
> 
>     ACPI: Load acpi-cpufreq from processor driver automatically
> 
> On the face of it this would let us pull all of these drivers to modules.
> However, looking at these commits they do not as yet allow autoloading
> of the three speedstep-drivers.  The comments in the Makefile also infer
> that there are a couple of further constraints to be considered:
> 
>   # Link order matters. K8 is preferred to ACPI because of firmware bugs
>     in early
>   # K8 systems. ACPI is preferred to all other hardware-specific drivers.
>   # speedstep-* is preferred over p4-clockmod.
> 
> From this I believe we would need to continue to build in powernow-k8 in
> order to ensure it loads before acpi-cpufreq.  Plus we have to build in the
> speedstep-* drivers due to the lack of enabled autoload there.  Finally
> we we should build in acpi-cpufreq to maintain the described orderings.
> The remainder may return to modules.  Later should the speedstep-* drivers
> be sorted out we could pull everything but the powernow-k8 drivers out.
> 
> In short currently we can move the following =m:
>   CONFIG_X86_POWERNOW_K6
>   CONFIG_X86_POWERNOW_K7
>   CONFIG_X86_LONGHAUL
>   CONFIG_X86_LONGRUN
>   CONFIG_X86_GX_SUSPMOD
>   CONFIG_X86_CPUFREQ_NFORCE2

May be some of these could be disabled, since we only provide a PAE
enabled kernel now. I don't think we boot on K6s anymore, so for example
CONFIG_X86_POWERNOW_K6 could be disabled. Other is X86_GX_SUSPMOD, not
sure geode platform has any cpu with pae.

> 
> I have pushed patches to move the above to modules to quantal.  It would
> be good to get some testing on these especially if you have any of the
> specific hardware.
> 
> Full background data below.
> 
> -apw
> 
> obj-$(CONFIG_X86_POWERNOW_K8)           += powernow-k8.o mperf.o
>   drivers/cpufreq/powernow-k8.c:MODULE_DEVICE_TABLE(x86cpu, powernow_k8_ids);
>   debian.master/config/config.common.ubuntu:CONFIG_X86_POWERNOW_K8=y
> 
> obj-$(CONFIG_X86_ACPI_CPUFREQ)          += acpi-cpufreq.o mperf.o
>  autoloads on acpi table identifying specific control element
>  debian.master/config/config.common.ubuntu:CONFIG_X86_ACPI_CPUFREQ=y
> 
> obj-$(CONFIG_X86_PCC_CPUFREQ)           += pcc-cpufreq.o
>  XXX NOT AUTOLOADABLE 
>  debian.master/config/config.common.ubuntu:CONFIG_X86_PCC_CPUFREQ=m
> 
> obj-$(CONFIG_X86_POWERNOW_K6)           += powernow-k6.o
>   drivers/cpufreq/powernow-k6.c:MODULE_DEVICE_TABLE(x86cpu, powernow_k6_ids);
>   debian.master/config/config.common.ubuntu:CONFIG_X86_POWERNOW_K6=y
> 
> obj-$(CONFIG_X86_POWERNOW_K7)           += powernow-k7.o
>   drivers/cpufreq/powernow-k7.c:MODULE_DEVICE_TABLE(x86cpu, powernow_k7_cpuids);
>   debian.master/config/config.common.ubuntu:CONFIG_X86_POWERNOW_K7=y
> 
> obj-$(CONFIG_X86_LONGHAUL)              += longhaul.o
>   drivers/cpufreq/longhaul.c:MODULE_DEVICE_TABLE(x86cpu, longhaul_id);
>   debian.master/config/config.common.ubuntu:CONFIG_X86_LONGHAUL=y
> 
> obj-$(CONFIG_X86_E_POWERSAVER)          += e_powersaver.o
>   drivers/cpufreq/e_powersaver.c:MODULE_DEVICE_TABLE(x86cpu, eps_cpu_id);
>   debian.master/config/config.common.ubuntu:# CONFIG_X86_E_POWERSAVER is not set
> 
> obj-$(CONFIG_ELAN_CPUFREQ)              += elanfreq.o
>   drivers/cpufreq/elanfreq.c:MODULE_DEVICE_TABLE(x86cpu, elan_id);
>   NO CONFIG MENTION -- not enableable
> 
> obj-$(CONFIG_SC520_CPUFREQ)             += sc520_freq.o
>   drivers/cpufreq/sc520_freq.c:MODULE_DEVICE_TABLE(x86cpu, sc520_ids);
>   NO CONFIG MENTION -- not enableable
> 
> obj-$(CONFIG_X86_LONGRUN)               += longrun.o
>   drivers/cpufreq/longrun.c:MODULE_DEVICE_TABLE(x86cpu, longrun_ids);
>   debian.master/config/config.common.ubuntu:CONFIG_X86_LONGRUN=y
> 
> obj-$(CONFIG_X86_GX_SUSPMOD)            += gx-suspmod.o
>   drivers/cpufreq/gx-suspmod.c:MODULE_DEVICE_TABLE(pci, gx_chipset_tbl);
>   debian.master/config/config.common.ubuntu:CONFIG_X86_GX_SUSPMOD=y
> 
> obj-$(CONFIG_X86_SPEEDSTEP_ICH)         += speedstep-ich.o
>   drivers/cpufreq/speedstep-ich.c:MODULE_DEVICE_TABLE(x86cpu, ss_smi_ids); /* XXX DISABLED */
>   debian.master/config/config.common.ubuntu:CONFIG_X86_SPEEDSTEP_ICH=y
> 
> obj-$(CONFIG_X86_SPEEDSTEP_SMI)         += speedstep-smi.o
>   drivers/cpufreq/speedstep-smi.c:MODULE_DEVICE_TABLE(x86cpu, ss_smi_ids); /* XXX DISABLED */
>   debian.master/config/config.common.ubuntu:CONFIG_X86_SPEEDSTEP_SMI=y
> 
> obj-$(CONFIG_X86_SPEEDSTEP_CENTRINO)    += speedstep-centrino.o
>   drivers/cpufreq/speedstep-centrino.c:MODULE_DEVICE_TABLE(x86cpu, centrino_ids); /* XXX DISABLED */
>   debian.master/config/config.common.ubuntu:CONFIG_X86_SPEEDSTEP_CENTRINO=y
> 
> obj-$(CONFIG_X86_P4_CLOCKMOD)           += p4-clockmod.o
>   drivers/cpufreq/p4-clockmod.c: * Intentionally no MODULE_DEVICE_TABLE here: this driver should not
>   debian.master/config/config.common.ubuntu:CONFIG_X86_P4_CLOCKMOD=m
> 
> obj-$(CONFIG_X86_CPUFREQ_NFORCE2)       += cpufreq-nforce2.o
>   drivers/cpufreq/cpufreq-nforce2.c:MODULE_DEVICE_TABLE(pci, nforce2_ids);
>   debian.master/config/config.common.ubuntu:CONFIG_X86_CPUFREQ_NFORCE2=y
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
> 

-- 
[]'s
Herton




More information about the kernel-team mailing list