Hello, CPPC cpufreq driver is used for ARM servers and this patch series tries to provide counter-based frequency invariance support for them in the absence for architecture specific counters (like AMUs).
This is tested with some hacks, as I didn't have access to the right hardware, on the ARM64 hikey board to check the overall functionality and that works fine. Vincent/Ionela, it would be nice if you guys can give this a shot on some real hardware where counters work. This is based of pm/linux-next (need some stuff from the arm64 tree). These patches should get merged via the arm64 tree only for the same reason. Changes since V2: - Not sending as an RFC anymore. - Several renames, reordering of code in 1/2 based on Ionela's comments. - Several rebase changes for 2/2. - The freq_scale calculations are optimized a bit. - Better overall commenting and commit logs. Changes since V1: - The interface for setting the callbacks is improved, so different parts looking to provide their callbacks don't need to think about each other. - Moved to per-cpu storage for storing the callback related data, AMU counters have higher priority with this. -- viresh Viresh Kumar (2): topology: Allow multiple entities to provide sched_freq_tick() callback cpufreq: cppc: Add support for frequency invariance arch/arm64/include/asm/topology.h | 10 +- arch/arm64/kernel/topology.c | 89 +++++++-------- drivers/base/arch_topology.c | 56 +++++++++- drivers/cpufreq/cppc_cpufreq.c | 179 ++++++++++++++++++++++++++++-- include/linux/arch_topology.h | 15 ++- kernel/sched/core.c | 1 + 6 files changed, 274 insertions(+), 76 deletions(-) -- 2.25.0.rc1.19.g042ed3e048af