diff options
author | Antti P Miettinen <amiettinen@nvidia.com> | 2012-04-04 20:59:52 +0300 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-04-05 18:37:25 -0700 |
commit | 4f57f3899e460628f97e106318327f5331e7463a (patch) | |
tree | 55dbae68ddcbdad78da5c9e380ce3da6acfcad8e /arch/arm/kernel/smp.c | |
parent | 28119d9c0a2bd77a2b6fdb918f082a115d8d37de (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.c | 4 |
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: |