Re: [PATCH V3 2/2] cpufreq: intel_pstate: Implement ->resolve_freq()

Rafael J. Wysocki
2019-08-06T08:06:15Z

On Tue, Aug 6, 2019 at 6:10 AM Viresh Kumar <viresh.kumar@linaro.org> wrote:
>
> On 02-08-19, 11:28, Rafael J. Wysocki wrote:
> > On Friday, August 2, 2019 11:17:55 AM CEST Rafael J. Wysocki wrote:
> > > On Fri, Aug 2, 2019 at 7:44 AM Viresh Kumar <viresh.kumar@linaro.org> wrote:
> > > >
> > > > Intel pstate driver exposes min_perf_pct and max_perf_pct sysfs files,
> > > > which can be used to force a limit on the min/max P state of the driver.
> > > > Though these files eventually control the min/max frequencies that the
> > > > CPUs will run at, they don't make a change to policy->min/max values.
> > >
> > > That's correct.
> > >
> > > > When the values of these files are changed (in passive mode of the
> > > > driver), it leads to calling ->limits() callback of the cpufreq
> > > > governors, like schedutil. On a call to it the governors shall
> > > > forcefully update the frequency to come within the limits.
> > >
> > > OK, so the problem is that it is a bug to invoke the governor's ->limits()
> > > callback without updating policy->min/max, because that's what
> > > "limits" mean to the governors.
> > >
> > > Fair enough.
> >
> > AFAICS this can be addressed by adding PM QoS freq limits requests of each CPU to
> > intel_pstate in the passive mode such that changing min_perf_pct or max_perf_pct
> > will cause these requests to be updated.
>
> Right, that sounds like a good plan.
>
> But that will never make it to the stable kernels as there will be a
> long dependency of otherwise unrelated patches to get that done. My
> initial thought was to get this patch merged as it is and then later
> migrate to QoS, but since this patch doesn't fix ondemand and
> conservative, this patch isn't good enough as well.

Right.

> Maybe we should add the regular notifier based solution first, mark it
> for stable kernels, and then add the QoS specific solution ?

I'm not sure if -stable kernels really need a fix here.

Let's just make sure that the mainline is OK and let's go straight for
the final approach.