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

Reply via email to