aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/cppc_cpufreq.c
diff options
context:
space:
mode:
authorPrashant Malani <[email protected]>2025-07-22 05:55:40 +0000
committerRafael J. Wysocki <[email protected]>2025-07-22 10:13:12 +0000
commit0a1416a49e63c320f6e6c1c8d07e1b58c0d4a3f3 (patch)
treea0d49536d90e3751382fe2c3f6f82a2c0d4cd717 /drivers/cpufreq/cppc_cpufreq.c
parentMerge tag 'cpufreq-arm-updates-6.17' of git://git.kernel.org/pub/scm/linux/ke... (diff)
downloadkernel-0a1416a49e63c320f6e6c1c8d07e1b58c0d4a3f3.tar.gz
kernel-0a1416a49e63c320f6e6c1c8d07e1b58c0d4a3f3.zip
cpufreq: CPPC: Mark driver with NEED_UPDATE_LIMITS flag
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/[email protected]/ [1] Suggested-by: Rafael J. Wysocki <[email protected]> Signed-off-by: Prashant Malani <[email protected]> Acked-by: Viresh Kumar <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Rafael J. Wysocki <[email protected]>
Diffstat (limited to 'drivers/cpufreq/cppc_cpufreq.c')
-rw-r--r--drivers/cpufreq/cppc_cpufreq.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c
index a1fd0ff22bc5..4a17162a392d 100644
--- a/drivers/cpufreq/cppc_cpufreq.c
+++ b/drivers/cpufreq/cppc_cpufreq.c
@@ -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,