Message ID | 1476380015-21001-1-git-send-email-hotran@apm.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Rafael Wysocki |
Headers | show |
On 10/13/2016 11:33 AM, Hoan Tran wrote: > The desired_perf is an abstract performance number. Its value should > be in the range of [lowest perf, highest perf] of CPPC. > The correct calculation is > desired_perf = freq * cppc_highest_perf / cppc_dmi_max_khz > > And cppc_cpufreq_set_target() returns if desired_perf is exactly > the same with the old perf. > > Signed-off-by: Hoan Tran <hotran@apm.com> Reviewed-by: Prashanth Prakash <pprakash@codeaurora.org> Hi Rafael, Can you please pick this one for 4.9, as it is bug fix? -- Thanks, Prashanth -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Oct 13, 2016 at 9:37 PM, Prakash, Prashanth <pprakash@codeaurora.org> wrote: > On 10/13/2016 11:33 AM, Hoan Tran wrote: >> The desired_perf is an abstract performance number. Its value should >> be in the range of [lowest perf, highest perf] of CPPC. >> The correct calculation is >> desired_perf = freq * cppc_highest_perf / cppc_dmi_max_khz >> >> And cppc_cpufreq_set_target() returns if desired_perf is exactly >> the same with the old perf. >> >> Signed-off-by: Hoan Tran <hotran@apm.com> > Reviewed-by: Prashanth Prakash <pprakash@codeaurora.org> > > Hi Rafael, > Can you please pick this one for 4.9, as it is bug fix? Sure, I will queue it up. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Oct 13, 2016 at 2:12 PM, Rafael J. Wysocki <rafael@kernel.org> wrote: > On Thu, Oct 13, 2016 at 9:37 PM, Prakash, Prashanth > <pprakash@codeaurora.org> wrote: >> On 10/13/2016 11:33 AM, Hoan Tran wrote: >>> The desired_perf is an abstract performance number. Its value should >>> be in the range of [lowest perf, highest perf] of CPPC. >>> The correct calculation is >>> desired_perf = freq * cppc_highest_perf / cppc_dmi_max_khz >>> >>> And cppc_cpufreq_set_target() returns if desired_perf is exactly >>> the same with the old perf. >>> >>> Signed-off-by: Hoan Tran <hotran@apm.com> >> Reviewed-by: Prashanth Prakash <pprakash@codeaurora.org> >> >> Hi Rafael, >> Can you please pick this one for 4.9, as it is bug fix? > > Sure, I will queue it up. > Thanks, Rafael and Prashanth ! Hoan > Thanks, > Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c index 1b2f28f..4852d9e 100644 --- a/drivers/cpufreq/cppc_cpufreq.c +++ b/drivers/cpufreq/cppc_cpufreq.c @@ -80,11 +80,17 @@ static int cppc_cpufreq_set_target(struct cpufreq_policy *policy, { struct cppc_cpudata *cpu; struct cpufreq_freqs freqs; + u32 desired_perf; int ret = 0; cpu = all_cpu_data[policy->cpu]; - cpu->perf_ctrls.desired_perf = (u64)target_freq * policy->max / cppc_dmi_max_khz; + desired_perf = (u64)target_freq * cpu->perf_caps.highest_perf / cppc_dmi_max_khz; + /* Return if it is exactly the same perf */ + if (desired_perf == cpu->perf_ctrls.desired_perf) + return ret; + + cpu->perf_ctrls.desired_perf = desired_perf; freqs.old = policy->cur; freqs.new = target_freq;
The desired_perf is an abstract performance number. Its value should be in the range of [lowest perf, highest perf] of CPPC. The correct calculation is desired_perf = freq * cppc_highest_perf / cppc_dmi_max_khz And cppc_cpufreq_set_target() returns if desired_perf is exactly the same with the old perf. Signed-off-by: Hoan Tran <hotran@apm.com> --- v2 * Return if desired_perf is the same with the old one (Prashanth's suggestion) drivers/cpufreq/cppc_cpufreq.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)