summaryrefslogtreecommitdiff
path: root/arch/arm/kernel/smp.c
diff options
context:
space:
mode:
authorAntti P Miettinen <amiettinen@nvidia.com>2012-04-04 20:59:52 +0300
committerSimone Willett <swillett@nvidia.com>2012-04-05 18:37:25 -0700
commit4f57f3899e460628f97e106318327f5331e7463a (patch)
tree55dbae68ddcbdad78da5c9e380ce3da6acfcad8e /arch/arm/kernel/smp.c
parent28119d9c0a2bd77a2b6fdb918f082a115d8d37de (diff)
ARM: Fix calling ipi_timer() from local timer IRQ
Commit d4c9c46147102dfc403691ed52609ae36ba5df08 moved irq_enter()/irq_exit() calls around. This caused irq_enter()/irq_exit() for ipi_timer() to be missing when ipi_timer() was called from local timer IRQ. Add the missing calls. Bug 961231 Change-Id: I32bfdf2620ca3df31d90f16924b06f4a1e24c0b7 Signed-off-by: Antti P Miettinen <amiettinen@nvidia.com> Signed-off-by: Shridhar Rasal <srasal@nvidia.com> Reviewed-on: http://git-master/r/94566 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'arch/arm/kernel/smp.c')
-rw-r--r--arch/arm/kernel/smp.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index 31a129b46b0f..bdfb37c59531 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -457,7 +457,9 @@ static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent);
static void ipi_timer(void)
{
struct clock_event_device *evt = &__get_cpu_var(percpu_clockevent);
+ irq_enter();
evt->event_handler(evt);
+ irq_exit();
}
#ifdef CONFIG_LOCAL_TIMERS
@@ -630,9 +632,7 @@ asmlinkage void __exception_irq_entry do_IPI(int ipinr, struct pt_regs *regs)
switch (ipinr) {
case IPI_TIMER:
- irq_enter();
ipi_timer();
- irq_exit();
break;
case IPI_RESCHEDULE: