On Mon, Jul 18, 2011 at 12:37:38PM -0400, Matthew Garrett wrote: > One feature present in powernow-k8 that isn't present in acpi-cpufreq is > support for enabling or disabling AMD's core performance boost technology. > This patch adds that support to acpi-cpufreq, but also extends it to allow > Intel's dynamic acceleration to be disabled via the same interface. The > sysfs entry retains the cpb name for compatibility purposes. > > Signed-off-by: Matthew Garrett <mjg@xxxxxxxxxx> > --- > drivers/cpufreq/acpi-cpufreq.c | 191 ++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 191 insertions(+), 0 deletions(-) > > diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c > index 298d451..0a92277 100644 > --- a/drivers/cpufreq/acpi-cpufreq.c > +++ b/drivers/cpufreq/acpi-cpufreq.c > @@ -76,6 +76,107 @@ static struct acpi_processor_performance __percpu *acpi_perf_data; > static struct cpufreq_driver acpi_cpufreq_driver; > > static unsigned int acpi_pstate_strict; > +static bool cpb_enabled, cpb_supported; > +static struct msr __percpu *msrs; > + > +static bool cpb_state(unsigned int cpu) > +{ > + struct acpi_cpufreq_data *data = per_cpu(acfreq_data, cpu); > + u32 lo, hi; > + u64 msr; > + > + switch (data->cpu_feature) { > + case SYSTEM_INTEL_MSR_CAPABLE: > + rdmsr_on_cpu(cpu, MSR_IA32_MISC_ENABLE, &lo, &hi); > + msr = lo | ((u64)hi << 32); > + return !(msr & MSR_IA32_MISC_ENABLE_TURBO_DISABLE); > + case SYSTEM_AMD_MSR_CAPABLE: > + rdmsr_on_cpu(cpu, MSR_K7_HWCR, &lo, &hi); > + msr = lo | ((u64)hi << 32); > + return !(msr & BIT(25)); > + } > + return false; > +} You need to handle the case where boosting is not even supported by the CPU. For example, a Barcelona CPU does not boost but I get $ cat /sys/devices/system/cpu/cpu0/cpufreq/boost 1 This is because this bit in the register is simply reserved and it countains some random value (0 in this case). What you need to do is look at the cpu_enabled variable which is caching the current boost state. Besides, you don't want to do a MSR read everytime you 'cat' the sysfs entry. See how powernow-k8 does it. I'm guessing with Intel it should be similar. Thanks. -- Regards/Gruss, Boris. Advanced Micro Devices GmbH Einsteinring 24, 85609 Dornach GM: Alberto Bozzo Reg: Dornach, Landkreis Muenchen HRB Nr. 43632 WEEE Registernr: 129 19551 -- To unsubscribe from this list: send the line "unsubscribe cpufreq" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html