mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 20:54:03 +02:00
cpufreq: intel_pstate: Introduce intel_pstate_update_freq_limits()
Introduce a new helper function, intel_pstate_update_freq_limits(), for updating the max and turbo frequency values for the given CPU after updating the corresponding P-states. Use it in intel_pstate_get_hwp_cap() and intel_pstate_get_cpu_pstates(), in the latter case instead of the direct updates of the max and turbo frequency values in intel_pstate_hybrid_hwp_adjust(). No intentional functional impact. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Link: https://patch.msgid.link/2277328.irdbgypaU6@rafael.j.wysocki
This commit is contained in:
parent
db53c573d3
commit
773e484787
|
|
@ -586,11 +586,6 @@ static void intel_pstate_hybrid_hwp_adjust(struct cpudata *cpu)
|
|||
|
||||
hwp_is_hybrid = true;
|
||||
|
||||
cpu->pstate.turbo_freq = rounddown(cpu->pstate.turbo_pstate * scaling,
|
||||
perf_ctl_scaling);
|
||||
cpu->pstate.max_freq = rounddown(cpu->pstate.max_pstate * scaling,
|
||||
perf_ctl_scaling);
|
||||
|
||||
freq = perf_ctl_max_phys * perf_ctl_scaling;
|
||||
cpu->pstate.max_pstate_physical = intel_pstate_freq_to_hwp(cpu, freq);
|
||||
|
||||
|
|
@ -1180,6 +1175,22 @@ static bool hybrid_clear_max_perf_cpu(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void intel_pstate_update_freq_limits(struct cpudata *cpu)
|
||||
{
|
||||
int scaling = cpu->pstate.scaling;
|
||||
unsigned int turbo_freq = cpu->pstate.turbo_pstate * scaling;
|
||||
unsigned int max_freq = cpu->pstate.max_pstate * scaling;
|
||||
int perf_ctl_scaling = cpu->pstate.perf_ctl_scaling;
|
||||
|
||||
if (scaling != perf_ctl_scaling) {
|
||||
turbo_freq = rounddown(turbo_freq, perf_ctl_scaling);
|
||||
max_freq = rounddown(max_freq, perf_ctl_scaling);
|
||||
}
|
||||
|
||||
cpu->pstate.turbo_freq = turbo_freq;
|
||||
cpu->pstate.max_freq = max_freq;
|
||||
}
|
||||
|
||||
static void __intel_pstate_get_hwp_cap(struct cpudata *cpu)
|
||||
{
|
||||
u64 cap;
|
||||
|
|
@ -1192,20 +1203,8 @@ static void __intel_pstate_get_hwp_cap(struct cpudata *cpu)
|
|||
|
||||
static void intel_pstate_get_hwp_cap(struct cpudata *cpu)
|
||||
{
|
||||
int scaling = cpu->pstate.scaling;
|
||||
|
||||
__intel_pstate_get_hwp_cap(cpu);
|
||||
|
||||
cpu->pstate.max_freq = cpu->pstate.max_pstate * scaling;
|
||||
cpu->pstate.turbo_freq = cpu->pstate.turbo_pstate * scaling;
|
||||
if (scaling != cpu->pstate.perf_ctl_scaling) {
|
||||
int perf_ctl_scaling = cpu->pstate.perf_ctl_scaling;
|
||||
|
||||
cpu->pstate.max_freq = rounddown(cpu->pstate.max_freq,
|
||||
perf_ctl_scaling);
|
||||
cpu->pstate.turbo_freq = rounddown(cpu->pstate.turbo_freq,
|
||||
perf_ctl_scaling);
|
||||
}
|
||||
intel_pstate_update_freq_limits(cpu);
|
||||
}
|
||||
|
||||
static void hybrid_update_capacity(struct cpudata *cpu)
|
||||
|
|
@ -2326,6 +2325,7 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
|
|||
if (pstate_funcs.get_cpu_scaling) {
|
||||
cpu->pstate.scaling = pstate_funcs.get_cpu_scaling(cpu->cpu);
|
||||
intel_pstate_hybrid_hwp_adjust(cpu);
|
||||
intel_pstate_update_freq_limits(cpu);
|
||||
} else {
|
||||
cpu->pstate.scaling = perf_ctl_scaling;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user