9942cb22ea
Create a new method to get a unique and fixed max frequency. Currently cpuinfo.max_freq or the highest (or last) state of performance domain are used as the max frequency when computing the frequency for a level of utilization, but: - cpuinfo_max_freq can change at runtime. boost is one example of such change. - cpuinfo.max_freq and last item of the PD can be different leading to different results between cpufreq and energy model. We need to save the reference frequency that has been used when computing the CPUs capacity and use this fixed and coherent value to convert between frequency and CPU's capacity. In fact, we already save the frequency that has been used when computing the capacity of each CPU. We extend the precision to save kHz instead of MHz currently and we modify the type to be aligned with other variables used when converting frequency to capacity and the other way. [ mingo: Minor edits. ] Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Tested-by: Lukasz Luba <lukasz.luba@arm.com> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com> Acked-by: Sudeep Holla <sudeep.holla@arm.com> Link: https://lore.kernel.org/r/20231211104855.558096-2-vincent.guittot@linaro.org
23 lines
773 B
C
23 lines
773 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _ASM_RISCV_TOPOLOGY_H
|
|
#define _ASM_RISCV_TOPOLOGY_H
|
|
|
|
#include <linux/arch_topology.h>
|
|
|
|
/* Replace task scheduler's default frequency-invariant accounting */
|
|
#define arch_scale_freq_tick topology_scale_freq_tick
|
|
#define arch_set_freq_scale topology_set_freq_scale
|
|
#define arch_scale_freq_capacity topology_get_freq_scale
|
|
#define arch_scale_freq_invariant topology_scale_freq_invariant
|
|
#define arch_scale_freq_ref topology_get_freq_ref
|
|
|
|
/* Replace task scheduler's default cpu-invariant accounting */
|
|
#define arch_scale_cpu_capacity topology_get_cpu_scale
|
|
|
|
/* Enable topology flag updates */
|
|
#define arch_update_cpu_topology topology_update_cpu_topology
|
|
|
|
#include <asm-generic/topology.h>
|
|
|
|
#endif /* _ASM_RISCV_TOPOLOGY_H */
|