diff mbox

[3/3] cpufreq: Remove unnecessary use of policy->shared_type

Message ID 902bed453159832925df76e24806f3b919fdfc74.1359700706.git.viresh.kumar@linaro.org (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Viresh Kumar Feb. 1, 2013, 6:40 a.m. UTC
policy->shared_type field was added only for SoCs with ACPI support:

commit 3b2d99429e3386b6e2ac949fc72486509c8bbe36
Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Date:   Wed Dec 14 15:05:00 2005 -0500

    P-state software coordination for ACPI core

    http://bugzilla.kernel.org/show_bug.cgi?id=5737

Many non-ACPI systems are filling this field by mistake, which makes its usage
confusing. Lets clean it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
---
 arch/arm/mach-tegra/cpu-tegra.c  | 1 -
 drivers/cpufreq/cpufreq-cpu0.c   | 1 -
 drivers/cpufreq/db8500-cpufreq.c | 2 --
 drivers/cpufreq/omap-cpufreq.c   | 4 +---
 include/linux/cpufreq.h          | 3 ++-
 5 files changed, 3 insertions(+), 8 deletions(-)

Comments

Viresh Kumar Feb. 1, 2013, 6:41 a.m. UTC | #1
On 1 February 2013 12:10, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> policy->shared_type field was added only for SoCs with ACPI support:
>
> commit 3b2d99429e3386b6e2ac949fc72486509c8bbe36
> Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
> Date:   Wed Dec 14 15:05:00 2005 -0500
>
>     P-state software coordination for ACPI core
>
>     http://bugzilla.kernel.org/show_bug.cgi?id=5737
>
> Many non-ACPI systems are filling this field by mistake, which makes its usage
> confusing. Lets clean it.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Stephen Warren <swarren@nvidia.com>
> Cc: Shawn Guo <shawn.guo@linaro.org>
> Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
> ---
>  arch/arm/mach-tegra/cpu-tegra.c  | 1 -
>  drivers/cpufreq/cpufreq-cpu0.c   | 1 -
>  drivers/cpufreq/db8500-cpufreq.c | 2 --
>  drivers/cpufreq/omap-cpufreq.c   | 4 +---
>  include/linux/cpufreq.h          | 3 ++-
>  5 files changed, 3 insertions(+), 8 deletions(-)

ARM mail servers are broken, please find patch attached.
--
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
Santosh Shilimkar Feb. 1, 2013, 6:47 a.m. UTC | #2
On Friday 01 February 2013 12:10 PM, Viresh Kumar wrote:
> policy->shared_type field was added only for SoCs with ACPI support:
>
> commit 3b2d99429e3386b6e2ac949fc72486509c8bbe36
> Author: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
> Date:   Wed Dec 14 15:05:00 2005 -0500
>
>      P-state software coordination for ACPI core
>
>      http://bugzilla.kernel.org/show_bug.cgi?id=5737
>
> Many non-ACPI systems are filling this field by mistake, which makes its usage
> confusing. Lets clean it.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Stephen Warren <swarren@nvidia.com>
> Cc: Shawn Guo <shawn.guo@linaro.org>
> Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
> ---
I haven't looked at the cpufreq code recently but remember
that it was needed to ensure that all the CPU which
share clock/voltage gets updated (affected cpus) on
freq change. The CPUs which needs SW co-ordination, should
have this flag enabled and OMAP was falling in that category.

May be I miss-understood its use, but can you confirm that
SW co-ordination logic continues to work without this flag ?

Regards,
Santosh

--
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
Viresh Kumar Feb. 1, 2013, 7:13 a.m. UTC | #3
On 1 February 2013 12:17, Santosh Shilimkar <santosh.shilimkar@ti.com> wrote:
> I haven't looked at the cpufreq code recently but remember
> that it was needed to ensure that all the CPU which
> share clock/voltage gets updated (affected cpus) on
> freq change. The CPUs which needs SW co-ordination, should
> have this flag enabled and OMAP was falling in that category.

Freq change are done by the target routines of platform cpufreq drivers
and they do something like:

	for_each_cpu(freqs.cpu, policy->cpus)
		cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);

The only requirement from cpufreq core is to keep cpus sharing clock
in policy->cpus.

> May be I miss-understood its use, but can you confirm that
> SW co-ordination logic continues to work without this flag ?

I believe it should work. It works for the systems i worked on:

SPEAr13xx: Dual Cortex A9
ARM TC2: two clusters of A15s and A7s.
--
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
Santosh Shilimkar Feb. 1, 2013, 7:33 a.m. UTC | #4
On Friday 01 February 2013 12:43 PM, Viresh Kumar wrote:
> On 1 February 2013 12:17, Santosh Shilimkar <santosh.shilimkar@ti.com> wrote:
>> I haven't looked at the cpufreq code recently but remember
>> that it was needed to ensure that all the CPU which
>> share clock/voltage gets updated (affected cpus) on
>> freq change. The CPUs which needs SW co-ordination, should
>> have this flag enabled and OMAP was falling in that category.
>
> Freq change are done by the target routines of platform cpufreq drivers
> and they do something like:
>
> 	for_each_cpu(freqs.cpu, policy->cpus)
> 		cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
>
> The only requirement from cpufreq core is to keep cpus sharing clock
> in policy->cpus.
>
I am not talking about just notifiers. This is for external users who
has subscribed for notifiers. The point is whether the core CPUFReq
gets updated without that flag for all affected CPU.

>> May be I miss-understood its use, but can you confirm that
>> SW co-ordination logic continues to work without this flag ?
>
> I believe it should work. It works for the systems i worked on:
>
> SPEAr13xx: Dual Cortex A9
> ARM TC2: two clusters of A15s and A7s.
>
I will give a try some time next week on OMAP.

Regards
Santosh
--
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
Viresh Kumar Feb. 1, 2013, 8:02 a.m. UTC | #5
On 1 February 2013 13:03, Santosh Shilimkar <santosh.shilimkar@ti.com> wrote:
> I am not talking about just notifiers. This is for external users who
> has subscribed for notifiers. The point is whether the core CPUFReq
> gets updated without that flag for all affected CPU.

Yes, its safe. Follow this thread, yesterday i explained this to Tomasz Figa:

http://www.spinics.net/lists/arm-kernel/msg221629.html
--
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
Santosh Shilimkar Feb. 1, 2013, 8:52 a.m. UTC | #6
On Friday 01 February 2013 01:32 PM, Viresh Kumar wrote:
> On 1 February 2013 13:03, Santosh Shilimkar <santosh.shilimkar@ti.com> wrote:
>> I am not talking about just notifiers. This is for external users who
>> has subscribed for notifiers. The point is whether the core CPUFReq
>> gets updated without that flag for all affected CPU.
>
> Yes, its safe. Follow this thread, yesterday i explained this to Tomasz Figa:
>
> http://www.spinics.net/lists/arm-kernel/msg221629.html
>
That part was very clear to me Viresh. Anyway thanks for the link.
 From what I read so far, it might just work but I would want to
try it out before acking the approach.

Regards,
Santosh



--
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
Santosh Shilimkar Feb. 1, 2013, 9:07 a.m. UTC | #7
Viresh,

On Friday 01 February 2013 02:22 PM, Santosh Shilimkar wrote:
> On Friday 01 February 2013 01:32 PM, Viresh Kumar wrote:
>> On 1 February 2013 13:03, Santosh Shilimkar <santosh.shilimkar@ti.com>
>> wrote:
>>> I am not talking about just notifiers. This is for external users who
>>> has subscribed for notifiers. The point is whether the core CPUFReq
>>> gets updated without that flag for all affected CPU.
>>
>> Yes, its safe. Follow this thread, yesterday i explained this to
>> Tomasz Figa:
>>
>> http://www.spinics.net/lists/arm-kernel/msg221629.html
>>
> That part was very clear to me Viresh. Anyway thanks for the link.
>  From what I read so far, it might just work but I would want to
> try it out before acking the approach.
>
You are correct. Sorry for oversight on your initial point about the
usage of the flag. When I added that flag, I just went by the
description thinking the cpufreq core booking and stat updates
use the flag. Its not the case.

Thanks for the fix. For the patch,
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
--
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 mbox

Patch

diff --git a/arch/arm/mach-tegra/cpu-tegra.c b/arch/arm/mach-tegra/cpu-tegra.c
index e7ddcb2..a36a03d 100644
--- a/arch/arm/mach-tegra/cpu-tegra.c
+++ b/arch/arm/mach-tegra/cpu-tegra.c
@@ -243,7 +243,6 @@  static int tegra_cpu_init(struct cpufreq_policy *policy)
 	/* FIXME: what's the actual transition time? */
 	policy->cpuinfo.transition_latency = 300 * 1000;
 
-	policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
 	cpumask_copy(policy->cpus, cpu_possible_mask);
 
 	if (policy->cpu == 0)
diff --git a/drivers/cpufreq/cpufreq-cpu0.c b/drivers/cpufreq/cpufreq-cpu0.c
index 38ae178..6a538de 100644
--- a/drivers/cpufreq/cpufreq-cpu0.c
+++ b/drivers/cpufreq/cpufreq-cpu0.c
@@ -146,7 +146,6 @@  static int cpu0_cpufreq_init(struct cpufreq_policy *policy)
 	 * share the clock and voltage and clock.  Use cpufreq affected_cpus
 	 * interface to have all CPUs scaled together.
 	 */
-	policy->shared_type = CPUFREQ_SHARED_TYPE_ANY;
 	cpumask_setall(policy->cpus);
 
 	cpufreq_frequency_table_get_attr(freq_table, policy->cpu);
diff --git a/drivers/cpufreq/db8500-cpufreq.c b/drivers/cpufreq/db8500-cpufreq.c
index e12dff6..79a8486 100644
--- a/drivers/cpufreq/db8500-cpufreq.c
+++ b/drivers/cpufreq/db8500-cpufreq.c
@@ -130,8 +130,6 @@  static int __cpuinit db8500_cpufreq_init(struct cpufreq_policy *policy)
 	/* policy sharing between dual CPUs */
 	cpumask_setall(policy->cpus);
 
-	policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
-
 	return 0;
 }
 
diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
index 97102b0..9128c07 100644
--- a/drivers/cpufreq/omap-cpufreq.c
+++ b/drivers/cpufreq/omap-cpufreq.c
@@ -214,10 +214,8 @@  static int __cpuinit omap_cpu_init(struct cpufreq_policy *policy)
 	 * interface to handle this scenario. Additional is_smp() check
 	 * is to keep SMP_ON_UP build working.
 	 */
-	if (is_smp()) {
-		policy->shared_type = CPUFREQ_SHARED_TYPE_ANY;
+	if (is_smp())
 		cpumask_setall(policy->cpus);
-	}
 
 	/* FIXME: what's the actual transition time? */
 	policy->cpuinfo.transition_latency = 300 * 1000;
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
index 6bf3f2d..a22944c 100644
--- a/include/linux/cpufreq.h
+++ b/include/linux/cpufreq.h
@@ -93,7 +93,7 @@  struct cpufreq_policy {
 	cpumask_var_t		cpus;	/* Online CPUs only */
 	cpumask_var_t		related_cpus; /* Online + Offline CPUs */
 
-	unsigned int		shared_type; /* ANY or ALL affected CPUs
+	unsigned int		shared_type; /* ACPI: ANY or ALL affected CPUs
 						should set cpufreq */
 	unsigned int		cpu;    /* cpu nr of CPU managing this policy */
 	unsigned int		last_cpu; /* cpu nr of previous CPU that managed
@@ -122,6 +122,7 @@  struct cpufreq_policy {
 #define CPUFREQ_START			(3)
 #define CPUFREQ_UPDATE_POLICY_CPU	(4)
 
+/* Only for ACPI */
 #define CPUFREQ_SHARED_TYPE_NONE (0) /* None */
 #define CPUFREQ_SHARED_TYPE_HW	 (1) /* HW does needed coordination */
 #define CPUFREQ_SHARED_TYPE_ALL	 (2) /* All dependent CPUs should set freq */