@@ -640,6 +640,19 @@ static int acpi_cpufreq_blacklist(struct cpuinfo_x86 *c)
}
#endif
+static int acpi_cpufreq_get_base_frequency(int cpu, unsigned int *start)
+{
+ u64 tar;
+ int err;
+
+ err = rdmsrl_safe_on_cpu(cpu, MSR_TURBO_ACTIVATION_RATIO, &tar);
+ if (!err)
+ /* only supported in core cpus so scaling is fixed */
+ *start = tar * 100000;
+
+ return err;
+}
+
static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
{
unsigned int i;
@@ -916,6 +929,18 @@ static void __init acpi_cpufreq_boost_init(void)
__register_cpu_notifier(&boost_nb);
cpu_notifier_register_done();
+
+ /* Check if we need to register base freq */
+ if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) {
+ u64 tar;
+ int err;
+
+ err = rdmsrl_safe(MSR_TURBO_ACTIVATION_RATIO, &tar);
+ if (!err)
+ acpi_cpufreq_driver.base_frequency =
+ acpi_cpufreq_get_base_frequency;
+ }
+
}
}
Using new cpufreq base_frequency, displaying the correct base frequency. Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> --- drivers/cpufreq/acpi-cpufreq.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)