Commit 8673b83bf2f013379453b4779047bf3c6ae387e4

Authored by Ross Lagerwall
Committed by Rafael J. Wysocki
1 parent d683b96b07

acpi-cpufreq: set current frequency based on target P-State

Commit 4b31e774 (Always set P-state on initialization) fixed bug
#4634 and caused the driver to always set the target P-State at
least once since the initial P-State may not be the desired one.
Commit 5a1c0228 (cpufreq: Avoid calling cpufreq driver's target()
routine if target_freq == policy->cur) caused a regression in
this behavior.

This fixes the regression by setting policy->cur based on the CPU's
target frequency rather than the CPU's current reported frequency
(which may be different).  This means that the P-State will be set
initially if the CPU's target frequency is different from the
governor's target frequency.

This fixes an issue where setting the default governor to
performance wouldn't correctly enable turbo mode on all cores.

Signed-off-by: Ross Lagerwall <rosslagerwall@gmail.com>
Reviewed-by: Len Brown <len.brown@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Cc: 3.8+ <stable@vger.kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff

drivers/cpufreq/acpi-cpufreq.c
... ... @@ -347,11 +347,11 @@
347 347 switch (per_cpu(acfreq_data, cpumask_first(mask))->cpu_feature) {
348 348 case SYSTEM_INTEL_MSR_CAPABLE:
349 349 cmd.type = SYSTEM_INTEL_MSR_CAPABLE;
350   - cmd.addr.msr.reg = MSR_IA32_PERF_STATUS;
  350 + cmd.addr.msr.reg = MSR_IA32_PERF_CTL;
351 351 break;
352 352 case SYSTEM_AMD_MSR_CAPABLE:
353 353 cmd.type = SYSTEM_AMD_MSR_CAPABLE;
354   - cmd.addr.msr.reg = MSR_AMD_PERF_STATUS;
  354 + cmd.addr.msr.reg = MSR_AMD_PERF_CTL;
355 355 break;
356 356 case SYSTEM_IO_CAPABLE:
357 357 cmd.type = SYSTEM_IO_CAPABLE;