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