[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1706828.TqVJcHNWlq@vostro.rjw.lan>
Date: Thu, 11 Apr 2013 23:34:03 +0200
From: "Rafael J. Wysocki" <rjw@...k.pl>
To: Viresh Kumar <viresh.kumar@...aro.org>
Cc: cpufreq@...r.kernel.org, linux-pm@...r.kernel.org,
linux-kernel@...r.kernel.org, robin.randhawa@....com,
Steve.Bannister@....com, Liviu.Dudau@....com,
charles.garcia-tobin@....com, arvind.chauhan@....com,
linaro-kernel@...ts.linaro.org, patches@...aro.org
Subject: Re: [PATCH] cpufreq: Call __cpufreq_governor() with correct policy->cpus mask
On Thursday, April 11, 2013 01:34:53 PM Viresh Kumar wrote:
> __cpufreq_governor() must be called with correct policy->cpus mask. In
> __cpufreq_remove_dev() we initially clear policy->cpus with cpumask_clear_cpu()
> and then call __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT). In case
> governor is doing some per-cpu stuff in EXIT callback, this can create uncertain
> behavior.
>
> Generic governors in drivers/cpufreq/ doesn't do any per-cpu stuff in EXIT
> callback and so we don't face any issues currently. But its better to keep the
> code clean, so we don't face any issues in future.
>
> Now, we call cpumask_clear_cpu() only when multiple cpus are managed by policy.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@...aro.org>
Applied.
Thanks,
Rafael
> ---
> drivers/cpufreq/cpufreq.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> index fd97a62..3564947 100644
> --- a/drivers/cpufreq/cpufreq.c
> +++ b/drivers/cpufreq/cpufreq.c
> @@ -1105,7 +1105,9 @@ static int __cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif
>
> WARN_ON(lock_policy_rwsem_write(cpu));
> cpus = cpumask_weight(data->cpus);
> - cpumask_clear_cpu(cpu, data->cpus);
> +
> + if (cpus > 1)
> + cpumask_clear_cpu(cpu, data->cpus);
> unlock_policy_rwsem_write(cpu);
>
> if (cpu != data->cpu) {
>
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists