Re: [PATCH v6 6/7][Resend] cpufreq: Support for fast frequency switching

From: Rafael J. Wysocki
Date: Tue Mar 29 2016 - 08:08:07 EST


On Monday, March 28, 2016 12:33:41 PM Viresh Kumar wrote:
> forgot to review acpi update earlier ..
>
> On 22-03-16, 02:53, Rafael J. Wysocki wrote:
> > Index: linux-pm/drivers/cpufreq/acpi-cpufreq.c
> > ===================================================================
> > --- linux-pm.orig/drivers/cpufreq/acpi-cpufreq.c
> > +++ linux-pm/drivers/cpufreq/acpi-cpufreq.c
> > @@ -458,6 +458,43 @@ static int acpi_cpufreq_target(struct cp
> > return result;
> > }
> >
> > +unsigned int acpi_cpufreq_fast_switch(struct cpufreq_policy *policy,
> > + unsigned int target_freq)
> > +{
> > + struct acpi_cpufreq_data *data = policy->driver_data;
> > + struct acpi_processor_performance *perf;
> > + struct cpufreq_frequency_table *entry;
> > + unsigned int next_perf_state, next_freq, freq;
> > +
> > + /*
> > + * Find the closest frequency above target_freq.
> > + *
> > + * The table is sorted in the reverse order with respect to the
> > + * frequency and all of the entries are valid (see the initialization).
> > + */
> > + entry = data->freq_table;
> > + do {
> > + entry++;
> > + freq = entry->frequency;
> > + } while (freq >= target_freq && freq != CPUFREQ_TABLE_END);
>
> Consider this table:
>
> 11000
> 10000
> 9000
>
> And a target-freq of 10000.
>
> Wouldn't you end up selecting 11000 ? Or did I misread it ?

In that case the loop will break for freq = 9000 (as per the above
freq >= freq_target check), so it looks like you've misread it.

Thanks,
Rafael