Re: [PATCH V3 4/5] cpufreq: Register notifiers with the PM QoS framework

From: Rafael J. Wysocki
Date: Tue Jun 18 2019 - 18:28:15 EST


On Tuesday, June 18, 2019 1:25:22 PM CEST Viresh Kumar wrote:
> On 18-06-19, 01:26, Rafael J. Wysocki wrote:
> > On Monday, June 10, 2019 12:51:35 PM CEST Viresh Kumar wrote:
> > > +static int cpufreq_notifier_min(struct notifier_block *nb, unsigned long freq,
> > > + void *data)
> > > +{
> > > + struct cpufreq_policy *policy = container_of(nb, struct cpufreq_policy, nb_min);
> > > +
> > > + return cpufreq_update_freq(policy);
> > > +}
> > > +
> > > +static int cpufreq_notifier_max(struct notifier_block *nb, unsigned long freq,
> > > + void *data)
> > > +{
> > > + struct cpufreq_policy *policy = container_of(nb, struct cpufreq_policy, nb_max);
> > > +
> > > + return cpufreq_update_freq(policy);
> > > +}
> >
> > This is a bit convoluted.
> >
> > Two different notifiers are registered basically for the same thing.
> >
> > Any chance to use just one?
>
> The way QoS is designed, it handles one value only at a time and we need two,
> min/max. I thought a lot about it earlier and this is what I came up with :(
>
> You have any suggestions here ?

In patch [3/5] you could point notifiers for both min and max freq to the same
notifier head. Both of your notifiers end up calling cpufreq_update_policy()
anyway.