Messages in this thread | | | From | "Rafael J. Wysocki" <> | Date | Thu, 25 Jun 2020 13:44:34 +0200 | Subject | Re: [PATCH v2 2/2] cpufreq: Specify default governor on command line |
| |
On Thu, Jun 25, 2020 at 1:36 PM Viresh Kumar <viresh.kumar@linaro.org> wrote: > > After your last email (reply to my patch), I noticed a change which > isn't required. :) > > On 23-06-20, 15:21, Quentin Perret wrote: > > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c > > index 0128de3603df..4b1a5c0173cf 100644 > > --- a/drivers/cpufreq/cpufreq.c > > +++ b/drivers/cpufreq/cpufreq.c > > @@ -50,6 +50,9 @@ static LIST_HEAD(cpufreq_governor_list); > > #define for_each_governor(__governor) \ > > list_for_each_entry(__governor, &cpufreq_governor_list, governor_list) > > > > +static char cpufreq_param_governor[CPUFREQ_NAME_LEN]; > > +static struct cpufreq_governor *default_governor; > > + > > /** > > * The "cpufreq driver" - the arch- or hardware-dependent low > > * level driver of CPUFreq support, and its spinlock. This lock > > @@ -1055,7 +1058,6 @@ __weak struct cpufreq_governor *cpufreq_default_governor(void) > > > > static int cpufreq_init_policy(struct cpufreq_policy *policy) > > { > > - struct cpufreq_governor *def_gov = cpufreq_default_governor(); > > struct cpufreq_governor *gov = NULL; > > unsigned int pol = CPUFREQ_POLICY_UNKNOWN; > > > > @@ -1065,8 +1067,8 @@ static int cpufreq_init_policy(struct cpufreq_policy *policy) > > if (gov) { > > pr_debug("Restoring governor %s for cpu %d\n", > > policy->governor->name, policy->cpu); > > - } else if (def_gov) { > > - gov = def_gov; > > + } else if (default_governor) { > > + gov = default_governor; > > } else { > > return -ENODATA; > > } > > > > @@ -1074,8 +1076,8 @@ static int cpufreq_init_policy(struct cpufreq_policy *policy) > > /* Use the default policy if there is no last_policy. */ > > if (policy->last_policy) { > > pol = policy->last_policy; > > - } else if (def_gov) { > > - pol = cpufreq_parse_policy(def_gov->name); > > + } else if (default_governor) { > > + pol = cpufreq_parse_policy(default_governor->name); > > This change is not right IMO. This part handles the set-policy case, > where there are no governors. Right now this code, for some reasons > unknown to me, forcefully uses the default governor set to indicate > the policy, which is not a great idea in my opinion TBH. This doesn't > and shouldn't care about governor modules and should only be looking > at strings instead of governor pointer.
Sounds right.
> Rafael, I even think we should remove this code completely and just > rely on what the driver has sent to us. Using the selected governor > for set policy drivers is very confusing and also we shouldn't be > forced to compiling any governor for the set-policy case.
Well, AFAICS the idea was to use the default governor as a kind of default policy proxy, but I agree that strings should be sufficient for that.
I'll have a look at what to do with that code.
| |