Messages in this thread | | | From | "Rafael J. Wysocki" <> | Date | Tue, 22 Aug 2023 13:46:04 +0200 | Subject | Re: [PATCH v2] cpufreq: intel_pstate: set stale CPU frequency to minimum |
| |
On Sun, Aug 20, 2023 at 10:46 PM Doug Smythies <dsmythies@telus.net> wrote: > > The intel_pstate CPU frequency scaling driver does not > use policy->cur and it is 0. > When the CPU frequency is outdated arch_freq_get_on_cpu() > will default to the nominal clock frequency when its call to > cpufreq_quick_getpolicy_cur returns the never updated 0. > Thus, the listed frequency might be outside of currently > set limits. Some users are complaining about the high > reported frequency, albeit stale, when their system is > idle and/or it is above the reduced maximum they have set. > > This patch will maintain policy_cur for the intel_pstate > driver at the current minimum CPU frequency. > > Reported-by: Yang Jie <yang.jie@linux.intel.com> > Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217597 > Signed-off-by: Doug Smythies <dsmythies@telus.net> > --- > > v1 -> v2: > * v1 was a completely different approach, programming around > the issue rather than fixing it at the source. > reference: > https://patchwork.kernel.org/project/linux-pm/patch/006901d9be8c$f4439930$dccacb90$@telus.net/ > * v2 does not fix an issue with the intel_cpufreq CPU scaling > driver (A.K.A. the intel_pstate driver in passive mode) and > the schedutil CPU frequency scaling governor when HWP is enabled > where limit changes are not reflected in the stale listed frequencies. > A fix for that will be some future patch. > > --- > drivers/cpufreq/intel_pstate.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c > index 8ca2bce4341a..08284dee583a 100644 > --- a/drivers/cpufreq/intel_pstate.c > +++ b/drivers/cpufreq/intel_pstate.c > @@ -2609,6 +2609,11 @@ static int intel_pstate_set_policy(struct cpufreq_policy *policy) > intel_pstate_clear_update_util_hook(policy->cpu); > intel_pstate_hwp_set(policy->cpu); > } > + /* policy current is never updated with the intel_pstate driver > + * but it is used as a stale frequency value. So, keep it within > + * limits. > + */ > + policy->cur = policy->min; > > mutex_unlock(&intel_pstate_limits_lock); > > --
Applied as 6.6 material, with some mailer-induced white space damage fixed and the new comment adjusted to the kernel coding style.
Thanks!
| |