Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7d9a8a9f authored by Srinivas Pandruvada's avatar Srinivas Pandruvada Committed by Rafael J. Wysocki
Browse files

cpufreq: intel_pstate: Lower frequency than expected under no_turbo



When turbo is not disabled by BIOS, but user disabled from intel P-State
sysfs and changes max/min using cpufreq sysfs, the resultant frequency
is lower than what user requested.

The reason for this, when the perf limits are calculated in set_policy()
callback, they are with reference to max cpu frequency (turbo frequency
), but when enforced in the intel_pstate_get_min_max() they are with
reference to max available performance as documented in the intel_pstate
documentation (in this case max non turbo P-State).

This needs similar change as done in intel_cpufreq_verify_policy() for
passive mode. Set policy->cpuinfo.max_freq based on the turbo status.

Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent fb1fe104
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -2153,6 +2153,20 @@ static int intel_pstate_set_policy(struct cpufreq_policy *policy)

static int intel_pstate_verify_policy(struct cpufreq_policy *policy)
{
	struct cpudata *cpu = all_cpu_data[policy->cpu];
	struct perf_limits *perf_limits;

	if (policy->policy == CPUFREQ_POLICY_PERFORMANCE)
		perf_limits = &performance_limits;
	else
		perf_limits = &powersave_limits;

	update_turbo_state();
	policy->cpuinfo.max_freq = perf_limits->turbo_disabled ||
					perf_limits->no_turbo ?
					cpu->pstate.max_freq :
					cpu->pstate.turbo_freq;

	cpufreq_verify_within_cpu_limits(policy);

	if (policy->policy != CPUFREQ_POLICY_POWERSAVE &&