diff mbox

[RFC,4/8] ARM: exynos4: convert logical CPU numbers to physical numbers

Message ID 1312926162-22469-5-git-send-email-will.deacon@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Will Deacon Aug. 9, 2011, 9:42 p.m. UTC
This patch uses the new cpu_logical_map() macro for converting logical
CPU numbers into physical numbers when dealing with the pen_release
variable in the SMP boot and CPU hotplug paths.

Cc: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 arch/arm/mach-exynos4/hotplug.c |    2 +-
 arch/arm/mach-exynos4/platsmp.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Kyungmin Park Aug. 10, 2011, 1:07 a.m. UTC | #1
Tested-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>

On Wed, Aug 10, 2011 at 6:42 AM, Will Deacon <will.deacon@arm.com> wrote:
> This patch uses the new cpu_logical_map() macro for converting logical
> CPU numbers into physical numbers when dealing with the pen_release
> variable in the SMP boot and CPU hotplug paths.
>
> Cc: Kukjin Kim <kgene.kim@samsung.com>
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  arch/arm/mach-exynos4/hotplug.c |    2 +-
>  arch/arm/mach-exynos4/platsmp.c |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-exynos4/hotplug.c b/arch/arm/mach-exynos4/hotplug.c
> index 7490789..da70e7e 100644
> --- a/arch/arm/mach-exynos4/hotplug.c
> +++ b/arch/arm/mach-exynos4/hotplug.c
> @@ -75,7 +75,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
>                    :
>                    : "memory", "cc");
>
> -               if (pen_release == cpu) {
> +               if (pen_release == cpu_logical_map(cpu)) {
>                        /*
>                         * OK, proper wakeup, we're done
>                         */
> diff --git a/arch/arm/mach-exynos4/platsmp.c b/arch/arm/mach-exynos4/platsmp.c
> index 7c2282c..0733814 100644
> --- a/arch/arm/mach-exynos4/platsmp.c
> +++ b/arch/arm/mach-exynos4/platsmp.c
> @@ -126,7 +126,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
>         * Note that "pen_release" is the hardware CPU ID, whereas
>         * "cpu" is Linux's internal ID.
>         */
> -       write_pen_release(cpu);
> +       write_pen_release(cpu_logical_map(cpu));
>
>        if (!(__raw_readl(S5P_ARM_CORE1_STATUS) & S5P_CORE_LOCAL_PWR_EN)) {
>                __raw_writel(S5P_CORE_LOCAL_PWR_EN,
> --
> 1.7.0.4
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
Will Deacon Aug. 10, 2011, 8:46 a.m. UTC | #2
On Wed, Aug 10, 2011 at 02:07:46AM +0100, Kyungmin Park wrote:
> Tested-by: Kyungmin Park <kyungmin.park@samsung.com>
> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>

Cheers for that. Did you have a go at booting on a CPU other than physical
CPU 0?

Thanks,

Will
Kyungmin Park Aug. 10, 2011, 8:49 a.m. UTC | #3
On Wed, Aug 10, 2011 at 5:46 PM, Will Deacon <will.deacon@arm.com> wrote:
> On Wed, Aug 10, 2011 at 02:07:46AM +0100, Kyungmin Park wrote:
>> Tested-by: Kyungmin Park <kyungmin.park@samsung.com>
>> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
>
> Cheers for that. Did you have a go at booting on a CPU other than physical
> CPU 0?

No, how to test it?
>
> Thanks,
>
> Will
>
Will Deacon Aug. 10, 2011, 8:57 a.m. UTC | #4
On Wed, Aug 10, 2011 at 09:49:45AM +0100, Kyungmin Park wrote:
> On Wed, Aug 10, 2011 at 5:46 PM, Will Deacon <will.deacon@arm.com> wrote:
> > On Wed, Aug 10, 2011 at 02:07:46AM +0100, Kyungmin Park wrote:
> >> Tested-by: Kyungmin Park <kyungmin.park@samsung.com>
> >> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
> >
> > Cheers for that. Did you have a go at booting on a CPU other than physical
> > CPU 0?
> 
> No, how to test it?

Well, it depends on how your bootloader is configured. You want to throw
CPU1 at the kernel whilst putting CPU0 into the pen.

Of course, that might not be possible on your platform, but at least with
these patches it's not the core code getting in the way.

Will
diff mbox

Patch

diff --git a/arch/arm/mach-exynos4/hotplug.c b/arch/arm/mach-exynos4/hotplug.c
index 7490789..da70e7e 100644
--- a/arch/arm/mach-exynos4/hotplug.c
+++ b/arch/arm/mach-exynos4/hotplug.c
@@ -75,7 +75,7 @@  static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
 		    :
 		    : "memory", "cc");
 
-		if (pen_release == cpu) {
+		if (pen_release == cpu_logical_map(cpu)) {
 			/*
 			 * OK, proper wakeup, we're done
 			 */
diff --git a/arch/arm/mach-exynos4/platsmp.c b/arch/arm/mach-exynos4/platsmp.c
index 7c2282c..0733814 100644
--- a/arch/arm/mach-exynos4/platsmp.c
+++ b/arch/arm/mach-exynos4/platsmp.c
@@ -126,7 +126,7 @@  int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
 	 * Note that "pen_release" is the hardware CPU ID, whereas
 	 * "cpu" is Linux's internal ID.
 	 */
-	write_pen_release(cpu);
+	write_pen_release(cpu_logical_map(cpu));
 
 	if (!(__raw_readl(S5P_ARM_CORE1_STATUS) & S5P_CORE_LOCAL_PWR_EN)) {
 		__raw_writel(S5P_CORE_LOCAL_PWR_EN,