mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
tools/power x86_energy_perf_policy: Prefer driver HWP limits
When we are successful in using cpufreq min/max limits, skip setting the raw MSR limits entirely. This is necessary to avoid undoing any modification that the cpufreq driver makes to our sysfs request. eg. intel_pstate may take our request for a limit that is valid according to HWP.CAP.MIN/MAX and clip it to be within the range available in PLATFORM_INFO. Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
f8241f5426
commit
2734fdbc9b
|
|
@ -62,6 +62,7 @@ unsigned char turbo_update_value;
|
|||
unsigned char update_hwp_epp;
|
||||
unsigned char update_hwp_min;
|
||||
unsigned char update_hwp_max;
|
||||
unsigned char hwp_limits_done_via_sysfs;
|
||||
unsigned char update_hwp_desired;
|
||||
unsigned char update_hwp_window;
|
||||
unsigned char update_hwp_use_pkg;
|
||||
|
|
@ -951,8 +952,10 @@ int ratio_2_sysfs_khz(int ratio)
|
|||
}
|
||||
/*
|
||||
* If HWP is enabled and cpufreq sysfs attribtes are present,
|
||||
* then update sysfs, so that it will not become
|
||||
* stale when we write to MSRs.
|
||||
* then update via sysfs. The intel_pstate driver may modify (clip)
|
||||
* this request, say, when HWP_CAP is outside of PLATFORM_INFO limits,
|
||||
* and the driver-chosen value takes precidence.
|
||||
*
|
||||
* (intel_pstate's max_perf_pct and min_perf_pct will follow cpufreq,
|
||||
* so we don't have to touch that.)
|
||||
*/
|
||||
|
|
@ -1007,6 +1010,8 @@ int update_sysfs(int cpu)
|
|||
if (update_hwp_max)
|
||||
update_cpufreq_scaling_freq(1, cpu, req_update.hwp_max);
|
||||
|
||||
hwp_limits_done_via_sysfs = 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1085,10 +1090,10 @@ int update_hwp_request_msr(int cpu)
|
|||
if (debug)
|
||||
print_hwp_request(cpu, &req, "old: ");
|
||||
|
||||
if (update_hwp_min)
|
||||
if (update_hwp_min && !hwp_limits_done_via_sysfs)
|
||||
req.hwp_min = req_update.hwp_min;
|
||||
|
||||
if (update_hwp_max)
|
||||
if (update_hwp_max && !hwp_limits_done_via_sysfs)
|
||||
req.hwp_max = req_update.hwp_max;
|
||||
|
||||
if (update_hwp_desired)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user