Messages in this thread Patch in this message | | | Date | Wed, 23 Jan 2008 11:53:53 -0500 | From | Steven Rostedt <> | Subject | Re: [PATCH 19/20 -v5] Trace irq disabled critical timings |
| |
On Wed, Jan 23, 2008 at 11:02:55AM -0500, Steven Rostedt wrote: > This patch adds latency tracing for critical timings > (how long interrupts are disabled for). > > "irqsoff" is added to /debugfs/tracing/available_tracers >
> Index: linux-mcount.git/kernel/lockdep.c > =================================================================== > --- linux-mcount.git.orig/kernel/lockdep.c 2008-01-23 10:26:11.000000000 -0500 > +++ linux-mcount.git/kernel/lockdep.c 2008-01-23 10:27:53.000000000 -0500 > @@ -39,6 +39,7 @@ > #include <linux/irqflags.h> > #include <linux/utsname.h> > #include <linux/hash.h> > +#include <linux/mcount.h> > > #include <asm/sections.h> > > @@ -2009,7 +2010,7 @@ void early_boot_irqs_on(void) > /* > * Hardirqs will be enabled: > */ > -void trace_hardirqs_on(void) > +void notrace trace_hardirqs_on_caller(unsigned long a0) > { > struct task_struct *curr = current; > unsigned long ip; > @@ -2050,14 +2051,24 @@ void trace_hardirqs_on(void) > curr->hardirq_enable_ip = ip; > curr->hardirq_enable_event = ++curr->irq_events; > debug_atomic_inc(&hardirqs_on_events); > + time_hardirqs_on(CALLER_ADDR0, a0); > } > +EXPORT_SYMBOL(trace_hardirqs_on_caller); > > +void notrace trace_hardirqs_on(void) { > + trace_hardirqs_on_caller(CALLER_ADDR0); > +} > EXPORT_SYMBOL(trace_hardirqs_on); >
vvvvvvvvvvvvvvvv
> +void notrace trace_hardirqs_off(void) { > + trace_hardirqs_off_caller(CALLER_ADDR0); > +} > +EXPORT_SYMBOL(trace_hardirqs_off); > +
^^^^^^^^^^^^^^^^
> /* > * Hardirqs were disabled: > */ > -void trace_hardirqs_off(void) > +void notrace trace_hardirqs_off_caller(unsigned long a0) > { > struct task_struct *curr = current; > > @@ -2075,10 +2086,15 @@ void trace_hardirqs_off(void) > curr->hardirq_disable_ip = _RET_IP_; > curr->hardirq_disable_event = ++curr->irq_events; > debug_atomic_inc(&hardirqs_off_events); > + time_hardirqs_off(CALLER_ADDR0, a0); > } else > debug_atomic_inc(&redundant_hardirqs_off); > } >
> +void notrace trace_hardirqs_off(void) { > + trace_hardirqs_off_caller(CALLER_ADDR0); > +} > + > EXPORT_SYMBOL(trace_hardirqs_off); >
Bah, I didn't refresh quilt! I'll update the website with a -v5a with this fix.
-- Steve
> /*
| |