[RFC,8/9] intel_pstate: ignore scheduler cpufreq callbacks on remote CPUs

Message ID fdd9ba5de92726cc953d36c0a84f68dda5356dd3.1489058244.git.viresh.kumar@linaro.org
State New
Headers show
Series
  • Untitled series #691
Related show

Commit Message

Viresh Kumar March 9, 2017, 11:45 a.m.
From: Steve Muckle <smuckle.linux@gmail.com>


In preparation for the scheduler cpufreq callback happening on remote
CPUs, check for this case in intel_pstate which currently requires the
callback run on the local CPU. Such callbacks are ignored for now.

Signed-off-by: Steve Muckle <smuckle.linux@gmail.com>

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

---
 drivers/cpufreq/intel_pstate.c | 3 +++
 1 file changed, 3 insertions(+)

-- 
2.7.1.410.g6faf27b

Comments

Rafael J. Wysocki March 29, 2017, 10:15 p.m. | #1
On Thursday, March 09, 2017 05:15:18 PM Viresh Kumar wrote:
> From: Steve Muckle <smuckle.linux@gmail.com>

> 

> In preparation for the scheduler cpufreq callback happening on remote

> CPUs, check for this case in intel_pstate which currently requires the

> callback run on the local CPU. Such callbacks are ignored for now.

> 

> Signed-off-by: Steve Muckle <smuckle.linux@gmail.com>

> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

> ---

>  drivers/cpufreq/intel_pstate.c | 3 +++

>  1 file changed, 3 insertions(+)

> 

> diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c

> index 3d37219a0dd7..bd60f1cd7ea6 100644

> --- a/drivers/cpufreq/intel_pstate.c

> +++ b/drivers/cpufreq/intel_pstate.c

> @@ -1930,6 +1930,9 @@ static void intel_pstate_update_util(struct update_util_data *data, u64 time,

>  	struct cpudata *cpu = container_of(data, struct cpudata, update_util);

>  	u64 delta_ns;

>  

> +	if (smp_processor_id() != data->cpu)

> +		return;

> +

>  	if (pstate_funcs.get_target_pstate == get_target_pstate_use_cpu_load) {

>  		if (flags & SCHED_CPUFREQ_IOWAIT) {

>  			cpu->iowait_boost = int_tofp(1);

> 


This would need to be updated on top of some intel_pstate changes in the queue.

Thanks,
Rafael

Patch

diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 3d37219a0dd7..bd60f1cd7ea6 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -1930,6 +1930,9 @@  static void intel_pstate_update_util(struct update_util_data *data, u64 time,
 	struct cpudata *cpu = container_of(data, struct cpudata, update_util);
 	u64 delta_ns;
 
+	if (smp_processor_id() != data->cpu)
+		return;
+
 	if (pstate_funcs.get_target_pstate == get_target_pstate_use_cpu_load) {
 		if (flags & SCHED_CPUFREQ_IOWAIT) {
 			cpu->iowait_boost = int_tofp(1);