diff options
| -rw-r--r-- | arch/arm/common/gic.c | 7 | ||||
| -rw-r--r-- | arch/arm/include/asm/smp.h | 6 | ||||
| -rw-r--r-- | arch/arm/include/asm/smp_plat.h | 6 | ||||
| -rw-r--r-- | arch/arm/kernel/setup.c | 14 | ||||
| -rw-r--r-- | arch/arm/kernel/smp.c | 14 | ||||
| -rw-r--r-- | arch/arm/mach-exynos/hotplug.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-exynos/platsmp.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-highbank/highbank.c | 3 | ||||
| -rw-r--r-- | arch/arm/mach-imx/src.c | 5 | ||||
| -rw-r--r-- | arch/arm/mach-msm/hotplug.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-msm/platsmp.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-realview/hotplug.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-shmobile/smp-r8a7779.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-shmobile/smp-sh73a0.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/hotplug.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-ux500/platsmp.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-vexpress/hotplug.c | 1 | ||||
| -rw-r--r-- | arch/arm/plat-versatile/platsmp.c | 1 | 
18 files changed, 35 insertions, 31 deletions
diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c index b2dc2dd7f1d..c47d6199b78 100644 --- a/arch/arm/common/gic.c +++ b/arch/arm/common/gic.c @@ -41,6 +41,7 @@  #include <asm/irq.h>  #include <asm/exception.h> +#include <asm/smp_plat.h>  #include <asm/mach/irq.h>  #include <asm/hardware/gic.h> @@ -352,11 +353,7 @@ static void __init gic_dist_init(struct gic_chip_data *gic)  	unsigned int gic_irqs = gic->gic_irqs;  	struct irq_domain *domain = &gic->domain;  	void __iomem *base = gic_data_dist_base(gic); -	u32 cpu = 0; - -#ifdef CONFIG_SMP -	cpu = cpu_logical_map(smp_processor_id()); -#endif +	u32 cpu = cpu_logical_map(smp_processor_id());  	cpumask = 1 << cpu;  	cpumask |= cpumask << 8; diff --git a/arch/arm/include/asm/smp.h b/arch/arm/include/asm/smp.h index 1e5717afc4a..ae29293270a 100644 --- a/arch/arm/include/asm/smp.h +++ b/arch/arm/include/asm/smp.h @@ -71,12 +71,6 @@ extern void platform_secondary_init(unsigned int cpu);  extern void platform_smp_prepare_cpus(unsigned int);  /* - * Logical CPU mapping. - */ -extern int __cpu_logical_map[NR_CPUS]; -#define cpu_logical_map(cpu)	__cpu_logical_map[cpu] - -/*   * Initial data for bringing up a secondary CPU.   */  struct secondary_data { diff --git a/arch/arm/include/asm/smp_plat.h b/arch/arm/include/asm/smp_plat.h index f24c1b9e211..558d6c80aca 100644 --- a/arch/arm/include/asm/smp_plat.h +++ b/arch/arm/include/asm/smp_plat.h @@ -43,4 +43,10 @@ static inline int cache_ops_need_broadcast(void)  }  #endif +/* + * Logical CPU mapping. + */ +extern int __cpu_logical_map[]; +#define cpu_logical_map(cpu)	__cpu_logical_map[cpu] +  #endif diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index ab70c912453..a255c39612c 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -426,6 +426,20 @@ void cpu_init(void)  	    : "r14");  } +int __cpu_logical_map[NR_CPUS]; + +void __init smp_setup_processor_id(void) +{ +	int i; +	u32 cpu = is_smp() ? read_cpuid_mpidr() & 0xff : 0; + +	cpu_logical_map(0) = cpu; +	for (i = 1; i < NR_CPUS; ++i) +		cpu_logical_map(i) = i == cpu ? 0 : i; + +	printk(KERN_INFO "Booting Linux on physical CPU %d\n", cpu); +} +  static void __init setup_processor(void)  {  	struct proc_info_list *list; diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 26cdc494ee9..cdeb727527d 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -233,20 +233,6 @@ void __ref cpu_die(void)  }  #endif /* CONFIG_HOTPLUG_CPU */ -int __cpu_logical_map[NR_CPUS]; - -void __init smp_setup_processor_id(void) -{ -	int i; -	u32 cpu = is_smp() ? read_cpuid_mpidr() & 0xff : 0; - -	cpu_logical_map(0) = cpu; -	for (i = 1; i < NR_CPUS; ++i) -		cpu_logical_map(i) = i == cpu ? 0 : i; - -	printk(KERN_INFO "Booting Linux on physical CPU %d\n", cpu); -} -  /*   * Called by both boot and secondaries to move global data into   * per-processor storage. diff --git a/arch/arm/mach-exynos/hotplug.c b/arch/arm/mach-exynos/hotplug.c index da70e7e3993..dd1ad55524c 100644 --- a/arch/arm/mach-exynos/hotplug.c +++ b/arch/arm/mach-exynos/hotplug.c @@ -16,6 +16,7 @@  #include <linux/io.h>  #include <asm/cacheflush.h> +#include <asm/smp_plat.h>  #include <mach/regs-pmu.h> diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c index 683aec786b7..0f2035a1eb6 100644 --- a/arch/arm/mach-exynos/platsmp.c +++ b/arch/arm/mach-exynos/platsmp.c @@ -23,6 +23,7 @@  #include <asm/cacheflush.h>  #include <asm/hardware/gic.h> +#include <asm/smp_plat.h>  #include <asm/smp_scu.h>  #include <mach/hardware.h> diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c index 7afbe1e55be..8394d512a40 100644 --- a/arch/arm/mach-highbank/highbank.c +++ b/arch/arm/mach-highbank/highbank.c @@ -25,6 +25,7 @@  #include <linux/smp.h>  #include <asm/cacheflush.h> +#include <asm/smp_plat.h>  #include <asm/smp_scu.h>  #include <asm/hardware/arm_timer.h>  #include <asm/hardware/timer-sp.h> @@ -72,9 +73,7 @@ static void __init highbank_map_io(void)  void highbank_set_cpu_jump(int cpu, void *jump_addr)  { -#ifdef CONFIG_SMP  	cpu = cpu_logical_map(cpu); -#endif  	writel(virt_to_phys(jump_addr), HB_JUMP_TABLE_VIRT(cpu));  	__cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);  	outer_clean_range(HB_JUMP_TABLE_PHYS(cpu), diff --git a/arch/arm/mach-imx/src.c b/arch/arm/mach-imx/src.c index 29bd1243781..e15f1555c59 100644 --- a/arch/arm/mach-imx/src.c +++ b/arch/arm/mach-imx/src.c @@ -15,6 +15,7 @@  #include <linux/of.h>  #include <linux/of_address.h>  #include <linux/smp.h> +#include <asm/smp_plat.h>  #define SRC_SCR				0x000  #define SRC_GPR1			0x020 @@ -24,10 +25,6 @@  static void __iomem *src_base; -#ifndef CONFIG_SMP -#define cpu_logical_map(cpu)		0 -#endif -  void imx_enable_cpu(int cpu, bool enable)  {  	u32 mask, val; diff --git a/arch/arm/mach-msm/hotplug.c b/arch/arm/mach-msm/hotplug.c index 41c252de021..a446fc14221 100644 --- a/arch/arm/mach-msm/hotplug.c +++ b/arch/arm/mach-msm/hotplug.c @@ -11,6 +11,7 @@  #include <linux/smp.h>  #include <asm/cacheflush.h> +#include <asm/smp_plat.h>  extern volatile int pen_release; diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c index 0b3e357c4c8..db0117ec55f 100644 --- a/arch/arm/mach-msm/platsmp.c +++ b/arch/arm/mach-msm/platsmp.c @@ -20,6 +20,7 @@  #include <asm/cacheflush.h>  #include <asm/cputype.h>  #include <asm/mach-types.h> +#include <asm/smp_plat.h>  #include <mach/msm_iomap.h> diff --git a/arch/arm/mach-realview/hotplug.c b/arch/arm/mach-realview/hotplug.c index ac1aed2a8da..eb55f05bef3 100644 --- a/arch/arm/mach-realview/hotplug.c +++ b/arch/arm/mach-realview/hotplug.c @@ -13,6 +13,7 @@  #include <linux/smp.h>  #include <asm/cacheflush.h> +#include <asm/smp_plat.h>  extern volatile int pen_release; diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c index cc97ef892d1..4fe2e9eaf50 100644 --- a/arch/arm/mach-shmobile/smp-r8a7779.c +++ b/arch/arm/mach-shmobile/smp-r8a7779.c @@ -25,6 +25,7 @@  #include <linux/delay.h>  #include <mach/common.h>  #include <mach/r8a7779.h> +#include <asm/smp_plat.h>  #include <asm/smp_scu.h>  #include <asm/smp_twd.h>  #include <asm/hardware/gic.h> diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c index be1ade76ccc..0d159d64a34 100644 --- a/arch/arm/mach-shmobile/smp-sh73a0.c +++ b/arch/arm/mach-shmobile/smp-sh73a0.c @@ -23,6 +23,7 @@  #include <linux/spinlock.h>  #include <linux/io.h>  #include <mach/common.h> +#include <asm/smp_plat.h>  #include <asm/smp_scu.h>  #include <asm/smp_twd.h>  #include <asm/hardware/gic.h> diff --git a/arch/arm/mach-ux500/hotplug.c b/arch/arm/mach-ux500/hotplug.c index 572015e57cd..c76f0f456f0 100644 --- a/arch/arm/mach-ux500/hotplug.c +++ b/arch/arm/mach-ux500/hotplug.c @@ -13,6 +13,7 @@  #include <linux/smp.h>  #include <asm/cacheflush.h> +#include <asm/smp_plat.h>  extern volatile int pen_release; diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c index a19e398dade..d2058ef8345 100644 --- a/arch/arm/mach-ux500/platsmp.c +++ b/arch/arm/mach-ux500/platsmp.c @@ -19,6 +19,7 @@  #include <asm/cacheflush.h>  #include <asm/hardware/gic.h> +#include <asm/smp_plat.h>  #include <asm/smp_scu.h>  #include <mach/hardware.h>  #include <mach/setup.h> diff --git a/arch/arm/mach-vexpress/hotplug.c b/arch/arm/mach-vexpress/hotplug.c index 813ee08f96e..3034a4dab4a 100644 --- a/arch/arm/mach-vexpress/hotplug.c +++ b/arch/arm/mach-vexpress/hotplug.c @@ -13,6 +13,7 @@  #include <linux/smp.h>  #include <asm/cacheflush.h> +#include <asm/smp_plat.h>  #include <asm/system.h>  extern volatile int pen_release; diff --git a/arch/arm/plat-versatile/platsmp.c b/arch/arm/plat-versatile/platsmp.c index 92f18d372b6..49c7db48c7f 100644 --- a/arch/arm/plat-versatile/platsmp.c +++ b/arch/arm/plat-versatile/platsmp.c @@ -16,6 +16,7 @@  #include <linux/smp.h>  #include <asm/cacheflush.h> +#include <asm/smp_plat.h>  #include <asm/hardware/gic.h>  /*  |