From c5f8fe8068f9827deb3f720d71fc7c5153390603 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Mon, 5 May 2008 13:09:15 -0400 Subject: PR6481: timer reset needs irqs reenabled --- runtime/ChangeLog | 6 ++++++ runtime/time.c | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'runtime') diff --git a/runtime/ChangeLog b/runtime/ChangeLog index f5ae91fb..8410b918 100644 --- a/runtime/ChangeLog +++ b/runtime/ChangeLog @@ -1,3 +1,9 @@ +2008-05-05 Frank Ch. Eigler + + PR 6481. + * time.c (__stp_time_timer_callback): Reenable irq's before + mod_timer. + 2008-05-05 David Smith * task_finder.c (stap_utrace_detach_ops): Make sure we ignore diff --git a/runtime/time.c b/runtime/time.c index 52a2edbb..8a0b6fad 100644 --- a/runtime/time.c +++ b/runtime/time.c @@ -131,10 +131,13 @@ __stp_time_timer_callback(unsigned long val) time->base_cycles = cycles; write_sequnlock(&time->lock); + local_irq_restore(flags); + /* PR6481: reenable IRQs before resetting the timer. + XXX: The worst that can probably happen is that we get + two consecutive timer resets. */ + if (likely(stp_timer_reregister)) mod_timer(&time->timer, jiffies + 1); - - local_irq_restore(flags); } /* This is called as an IPI, with interrupts disabled. */ -- cgit