]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cpufreq: CPPC: Mark driver with NEED_UPDATE_LIMITS flag
authorPrashant Malani <pmalani@google.com>
Tue, 22 Jul 2025 05:55:40 +0000 (05:55 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 22 Jul 2025 10:13:12 +0000 (12:13 +0200)
AMU counters on certain CPPC-based platforms tend to yield inaccurate
delivered performance measurements on systems that are idle/mostly idle.
This results in an inaccurate frequency being stored by cpufreq in its
policy structure when the CPU is brought online. [1]

Consequently, if the userspace governor tries to set the frequency to a
new value, there is a possibility that it would be the erroneous value
stored earlier. In such a scenario, cpufreq would assume that the
requested frequency has already been set and return early, resulting in
the correct/new frequency request never making it to the hardware.

Since the operating frequency is liable to this sort of inconsistency,
mark the CPPC driver with CPUFREQ_NEED_UPDATE_LIMITS so that it is always
invoked when a target frequency update is requested.

Link: https://lore.kernel.org/linux-pm/20250619000925.415528-3-pmalani@google.com/
Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Prashant Malani <pmalani@google.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Link: https://patch.msgid.link/20250722055611.130574-2-pmalani@google.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/cppc_cpufreq.c

index a1fd0ff22bc55f60b53448f08b2e38d60f4dbd5f..4a17162a392da7c2d67dc87a6bee5e52028b6398 100644 (file)
@@ -910,7 +910,7 @@ static struct freq_attr *cppc_cpufreq_attr[] = {
 };
 
 static struct cpufreq_driver cppc_cpufreq_driver = {
-       .flags = CPUFREQ_CONST_LOOPS,
+       .flags = CPUFREQ_CONST_LOOPS | CPUFREQ_NEED_UPDATE_LIMITS,
        .verify = cppc_verify_policy,
        .target = cppc_cpufreq_set_target,
        .get = cppc_cpufreq_get_rate,