Hi Rafael,
This series fixes all cpufreq drivers that provide a 'target_index' callback or in other words, which provide a freq-table to cpufreq core, to make sure they *only* use the 'index' argument to ->target_index() with the policy->freq_table.
This change allows us to remove the (duplicate) sorted-freq-table, which was added by following series:
[PATCH V2 0/2] cpufreq: Use sorted frequency tables
The final code looks like this: - drivers provide a freq table to the cpufreq core - core makes a copy of that and sort that in ascending order of frequencies. This is what we get from policy->freq_table. - drivers can now free the freq-table they provided earlier. - ->target_index() contains the 'index' to this sorted policy->freq_table.
This is based of the two series I have posted until now:
[PATCH V2 0/6] cpufreq: cleanups and reorganization [PATCH V2 0/2] cpufreq: Use sorted frequency tables
All the patches are pushed here for testing in case anyone wants to try:
git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git cpufreq/sorted-freq-table
The 3 series combined makes freq-table traversing to find a match really fast and efficient. Which will also allow us to use it for new governors like schedutil.
-- viresh
Viresh Kumar (11): ARM: davinci: Sort frequency table cpufreq: davinci: Reuse cpufreq_generic_frequency_table_verify() cpufreq: Use policy->freq_table in ->target_index() cpufreq: blackfin: Use 'index' only to index into policy->freq_table cpufreq: elanfreq: Use 'index' only to index into policy->freq_table cpufreq: exynos: Use 'index' only to index into policy->freq_table cpufreq: ia64: Use 'index' only to index into policy->freq_table cpufreq: imx: Use 'index' only to index into policy->freq_table cpufreq: maple: Use 'index' only to index into policy->freq_table cpufreq: Keep a single (sorted) freq_table cpufreq: drivers: Free frequency tables after being used
arch/arm/mach-davinci/da850.c | 16 ++++++++------- drivers/cpufreq/acpi-cpufreq.c | 7 +++---- drivers/cpufreq/arm_big_little.c | 2 +- drivers/cpufreq/at32ap-cpufreq.c | 8 ++++---- drivers/cpufreq/blackfin-cpufreq.c | 17 +++++++++++----- drivers/cpufreq/cpufreq-dt.c | 9 ++++----- drivers/cpufreq/cpufreq.c | 6 +----- drivers/cpufreq/cris-artpec3-cpufreq.c | 2 +- drivers/cpufreq/cris-etraxfs-cpufreq.c | 2 +- drivers/cpufreq/davinci-cpufreq.c | 22 +-------------------- drivers/cpufreq/dbx500-cpufreq.c | 3 ++- drivers/cpufreq/e_powersaver.c | 26 +++++++++++++----------- drivers/cpufreq/elanfreq.c | 8 +++++++- drivers/cpufreq/exynos5440-cpufreq.c | 13 ++++++++---- drivers/cpufreq/freq_table.c | 36 +++++++++++++--------------------- drivers/cpufreq/ia64-acpi-cpufreq.c | 16 ++++++++++----- drivers/cpufreq/imx6q-cpufreq.c | 13 +++++++++--- drivers/cpufreq/kirkwood-cpufreq.c | 2 +- drivers/cpufreq/loongson1-cpufreq.c | 10 +--------- drivers/cpufreq/loongson2_cpufreq.c | 5 ++--- drivers/cpufreq/maple-cpufreq.c | 6 ++++++ include/linux/cpufreq.h | 9 ++------- 22 files changed, 117 insertions(+), 121 deletions(-)