diff options
author | Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | 2011-03-16 19:05:47 -0400 |
---|---|---|
committer | Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> | 2011-03-16 19:05:47 -0400 |
commit | ec216cea8c0e853ac73edb255378c52bd3cd106d (patch) | |
tree | de9bf242298a6817798ca106d829a23273d5ae21 /arch | |
parent | cc2898f8c9b1ebaa11805886ab1f8c595ed13c2f (diff) |
lttng-revert-powerpc-irq-instrumentation
Revert powerpc: tracing: Add powerpc tracepoints for interrupt entry and exit
commit 1bf4af165050d90ea6659ffb2536ec8ca783aab5
Author: Anton Blanchard <anton@samba.org>
Date: Mon Oct 26 18:47:42 2009 +0000
powerpc: tracing: Add powerpc tracepoints for interrupt entry and exit
This adds powerpc-specific tracepoints for interrupt entry and exit.
While we already have generic irq_handler_entry and irq_handler_exit
tracepoints there are cases on our virtualised powerpc machines where an
interrupt is presented to the OS, but subsequently handled by the hypervisor.
This means no OS interrupt handler is invoked.
Here is an example on a POWER6 machine with the patch below applied:
<idle>-0 [006] 3243.949840744: irq_entry: pt_regs=c0000000ce31fb10
<idle>-0 [006] 3243.949850520: irq_exit: pt_regs=c0000000ce31fb10
<idle>-0 [007] 3243.950218208: irq_entry: pt_regs=c0000000ce323b10
<idle>-0 [007] 3243.950224080: irq_exit: pt_regs=c0000000ce323b10
<idle>-0 [000] 3244.021879320: irq_entry: pt_regs=c000000000a63aa0
<idle>-0 [000] 3244.021883616: irq_handler_entry: irq=87 handler=eth0
<idle>-0 [000] 3244.021887328: irq_handler_exit: irq=87 return=handled
<idle>-0 [000] 3244.021897408: irq_exit: pt_regs=c000000000a63aa0
Here we see two phantom interrupts (no handler was invoked), followed
by a real interrupt for eth0. Without the tracepoints in this patch we
would have missed the phantom interrupts.
Mathieu:
Allright, so the "handler" tracepoint does not get executed. Can we just
instrument the generic irq routines in kernel/irq/handle.c instead of doing this
asm-specific stuff ?
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
CC: Anton Blanchard <anton@samba.org>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/include/asm/trace.h | 3 | ||||
-rw-r--r-- | arch/powerpc/kernel/irq.c | 4 |
2 files changed, 2 insertions, 5 deletions
diff --git a/arch/powerpc/include/asm/trace.h b/arch/powerpc/include/asm/trace.h index cbe2297d68b..d1c27723f84 100644 --- a/arch/powerpc/include/asm/trace.h +++ b/arch/powerpc/include/asm/trace.h @@ -7,7 +7,7 @@ #include <linux/tracepoint.h> struct pt_regs; - +#if 0 /* disabled by Mathieu Desnoyers. Belongs to generic IRQS. */ TRACE_EVENT(irq_entry, TP_PROTO(struct pt_regs *regs), @@ -41,6 +41,7 @@ TRACE_EVENT(irq_exit, TP_printk("pt_regs=%p", __entry->regs) ); +#endif //0 TRACE_EVENT(timer_interrupt_entry, diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index ce557f6f00f..d21cf5bc503 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c @@ -401,8 +401,6 @@ void do_IRQ(struct pt_regs *regs) struct pt_regs *old_regs = set_irq_regs(regs); unsigned int irq; - trace_irq_entry(regs); - irq_enter(); check_stack_overflow(); @@ -425,8 +423,6 @@ void do_IRQ(struct pt_regs *regs) timer_interrupt(regs); } #endif - - trace_irq_exit(regs); } void __init init_IRQ(void) |