[PATCH 6/6] omap: Fix SMP on UP interrupt handling for multi-omap

Shilimkar, Santosh santosh.shilimkar at ti.com
Fri Sep 3 08:06:27 EDT 2010


> -----Original Message-----
> From: linux-omap-owner at vger.kernel.org [mailto:linux-omap-
> owner at vger.kernel.org] On Behalf Of Tony Lindgren
> Sent: Thursday, September 02, 2010 9:54 PM
> To: Russell King - ARM Linux
> Cc: linux-omap at vger.kernel.org; linux-arm-kernel at lists.infradead.org;
> Bryan Wu; Will Deacon
> Subject: [PATCH 6/6] omap: Fix SMP on UP interrupt handling for multi-omap
> 
> From c04a57fc3b41d886f56ccdc27cf9758de0c95202 Mon Sep 17 00:00:00 2001
> From: Tony Lindgren <tony at atomide.com>
> Date: Tue, 17 Aug 2010 13:33:23 +0300
> Subject: [PATCH 6/6] omap: Fix SMP on UP interrupt handling for multi-omap
> 
> Fix SMP on UP interrupt handling for multi-omap
> 
> Signed-off-by: Tony Lindgren <tony at atomide.com>
> ---
>  arch/arm/mach-omap2/omap-smp.c |   13 +++++++++----
>  arch/arm/mach-omap2/timer-gp.c |    7 +++++--
>  2 files changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/omap-smp.c b/arch/arm/mach-omap2/omap-
> smp.c
> index 9e9f70e..a8bb49c 100644
> --- a/arch/arm/mach-omap2/omap-smp.c
> +++ b/arch/arm/mach-omap2/omap-smp.c
> @@ -22,6 +22,7 @@
> 
>  #include <asm/cacheflush.h>
>  #include <asm/localtimer.h>
> +#include <asm/smp_plat.h>
>  #include <asm/smp_scu.h>
>  #include <mach/hardware.h>
>  #include <mach/omap4-common.h>
> @@ -114,11 +115,15 @@ void __init smp_init_cpus(void)
>  {
>  	unsigned int i, ncores;
> 
> -	/* Never released */
> -	scu_base = ioremap(OMAP44XX_SCU_BASE, SZ_256);
> -	BUG_ON(!scu_base);
> +	if (smp_on_up()) {
> +		ncores = 1;
I am not sure if this is the correct approach. The SCU 
hardware is not present other than OMAP4. So we should
just return here when the silicon is not omap4.
	if (!cpu_is_omap44xx())
		return -ENODEV;
> +	} else {
> +		/* Never released */
> +		scu_base = ioremap(OMAP44XX_SCU_BASE, SZ_256);
> +		BUG_ON(!scu_base);
> 
> -	ncores = get_core_count();
> +		ncores = get_core_count();
> +	}
> 
>  	for (i = 0; i < ncores; i++)
>  		set_cpu_possible(i, true);
> diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-
> gp.c
> index 74fbed8..badf5f2 100644
> --- a/arch/arm/mach-omap2/timer-gp.c
> +++ b/arch/arm/mach-omap2/timer-gp.c
> @@ -37,6 +37,7 @@
>  #include <linux/clockchips.h>
> 
>  #include <asm/mach/time.h>
> +#include <asm/smp_plat.h>
>  #include <plat/dmtimer.h>
>  #include <asm/localtimer.h>
> 
> @@ -228,8 +229,10 @@ static void __init omap2_gp_clocksource_init(void)
>  static void __init omap2_gp_timer_init(void)
>  {
>  #ifdef CONFIG_LOCAL_TIMERS
> -	twd_base = ioremap(OMAP44XX_LOCAL_TWD_BASE, SZ_256);
> -	BUG_ON(!twd_base);
> +	if (smp_on_up()) {
> +		twd_base = ioremap(OMAP44XX_LOCAL_TWD_BASE, SZ_256);
> +		BUG_ON(!twd_base);
> +	}
>  #endif
>  	omap_dm_timer_init();
> 
> --
> 1.7.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the linux-arm-kernel mailing list