From: Vaibhav Nagarnaik Date: Wed, 3 Aug 2011 00:52:37 +0000 (+1000) Subject: The x86 timer interrupt handler is the only handler not traced in the X-Git-Tag: next-20110809~1^2~73 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=6db0c5e3c009195e16ac7cc51b79abdff9634144;p=karo-tx-linux.git The x86 timer interrupt handler is the only handler not traced in the irq/irq_handler_{entry|exit} trace events. Add tracepoints to the interrupt handler to trace it. Signed-off-by: Vaibhav Nagarnaik Cc: Frederic Weisbecker Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Steven Rostedt Cc: Michael Rubin Cc: David Sharp Signed-off-by: Andrew Morton --- diff --git a/arch/x86/kernel/time.c b/arch/x86/kernel/time.c index dd5fbf4101fc..25046df137f2 100644 --- a/arch/x86/kernel/time.c +++ b/arch/x86/kernel/time.c @@ -52,6 +52,13 @@ unsigned long profile_pc(struct pt_regs *regs) } EXPORT_SYMBOL(profile_pc); +static irqreturn_t timer_interrupt(int irq, void *dev_id); +static struct irqaction irq0 = { + .handler = timer_interrupt, + .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL | IRQF_TIMER, + .name = "timer" +}; + /* * Default timer interrupt handler for PIT/HPET */ @@ -60,7 +67,9 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id) /* Keep nmi watchdog up to date */ inc_irq_stat(irq0_irqs); + trace_irq_handler_entry(irq, &irq0); global_clock_event->event_handler(global_clock_event); + trace_irq_handler_exit(irq, &irq0, 1); /* MCA bus quirk: Acknowledge irq0 by setting bit 7 in port 0x61 */ if (MCA_bus) @@ -69,12 +78,6 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id) return IRQ_HANDLED; } -static struct irqaction irq0 = { - .handler = timer_interrupt, - .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL | IRQF_TIMER, - .name = "timer" -}; - void __init setup_default_timer_irq(void) { setup_irq(0, &irq0);