diff options
author | Michael Cree <mcree@orcon.net.nz> | 2010-09-19 02:05:40 -0400 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2010-09-18 23:06:19 -0400 |
commit | bdc8b8914b17cf97b53e5f7af8168d68cfb089d6 (patch) | |
tree | 6535ea69d983e8e124e3566cd5d6847ab3a4d831 /arch | |
parent | 531f0474bf889d489b28ea4b15e87b7cbb77f580 (diff) |
alpha: Shift perf event pending work earlier in timer interrupt
Pending work from the performance event subsystem is executed in
the timer interrupt. This patch shifts the call to
perf_event_do_pending() before the call to update_process_times()
as the latter may call back into the perf event subsystem and it
is prudent to have the pending work executed first.
Signed-off-by: Michael Cree <mcree@orcon.net.nz>
Signed-off-by: Matt Turner <mattst88@gmail.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/alpha/kernel/time.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c index eacceb26d9c8..396af1799ea4 100644 --- a/arch/alpha/kernel/time.c +++ b/arch/alpha/kernel/time.c @@ -191,16 +191,16 @@ irqreturn_t timer_interrupt(int irq, void *dev) write_sequnlock(&xtime_lock); -#ifndef CONFIG_SMP - while (nticks--) - update_process_times(user_mode(get_irq_regs())); -#endif - if (test_perf_event_pending()) { clear_perf_event_pending(); perf_event_do_pending(); } +#ifndef CONFIG_SMP + while (nticks--) + update_process_times(user_mode(get_irq_regs())); +#endif + return IRQ_HANDLED; } |