diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-11-15 04:42:08 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-12-03 03:26:30 -0500 |
commit | ad3b6993b9c5482e8a2ec5aed181538c921fdcbd (patch) | |
tree | ec14d13777bc9b7d495929d74a83c36687ec4eab /arch/arm/mach-ux500 | |
parent | d92e04713c6323e09a0d0fdfa0d7cbcedb175e49 (diff) |
ARM: SMP: pass an ipi number to smp_cross_call()
This allows us to use smp_cross_call() to trigger a number of different
software generated interrupts, rather than combining them all on one
SGI. Recover the SGI number via do_IPI.
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-ux500')
-rw-r--r-- | arch/arm/mach-ux500/include/mach/smp.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-ux500/platsmp.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/mach-ux500/include/mach/smp.h b/arch/arm/mach-ux500/include/mach/smp.h index 197e8417375e..bd57c50a5b86 100644 --- a/arch/arm/mach-ux500/include/mach/smp.h +++ b/arch/arm/mach-ux500/include/mach/smp.h | |||
@@ -18,8 +18,8 @@ extern void u8500_secondary_startup(void); | |||
18 | /* | 18 | /* |
19 | * We use IRQ1 as the IPI | 19 | * We use IRQ1 as the IPI |
20 | */ | 20 | */ |
21 | static inline void smp_cross_call(const struct cpumask *mask) | 21 | static inline void smp_cross_call(const struct cpumask *mask, int ipi) |
22 | { | 22 | { |
23 | gic_raise_softirq(mask, 1); | 23 | gic_raise_softirq(mask, ipi); |
24 | } | 24 | } |
25 | #endif | 25 | #endif |
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c index 9e4c678de785..b8987bd21249 100644 --- a/arch/arm/mach-ux500/platsmp.c +++ b/arch/arm/mach-ux500/platsmp.c | |||
@@ -78,7 +78,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) | |||
78 | __cpuc_flush_dcache_area((void *)&pen_release, sizeof(pen_release)); | 78 | __cpuc_flush_dcache_area((void *)&pen_release, sizeof(pen_release)); |
79 | outer_clean_range(__pa(&pen_release), __pa(&pen_release) + 1); | 79 | outer_clean_range(__pa(&pen_release), __pa(&pen_release) + 1); |
80 | 80 | ||
81 | smp_cross_call(cpumask_of(cpu)); | 81 | smp_cross_call(cpumask_of(cpu), 1); |
82 | 82 | ||
83 | timeout = jiffies + (1 * HZ); | 83 | timeout = jiffies + (1 * HZ); |
84 | while (time_before(jiffies, timeout)) { | 84 | while (time_before(jiffies, timeout)) { |