[PATCH] tracing/core: Add current context on tracing recursion warning

From: Frederic Weisbecker
Date: Sun Apr 19 2009 - 09:30:19 EST


In case of tracing recursion detection, we only get the stacktrace.
But the current context may be very useful to debug the issue.

This patch adds the softirq/hardirq/nmi context with the warning
using lockdep context display to have a familiar output.

[ Impact: more information in tracing recursion ]

Signed-off-by: Frederic Weisbecker <fweisbec@xxxxxxxxx>
---
kernel/trace/ring_buffer.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index b421b0e..27a6e7d 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -1493,8 +1493,21 @@ static int trace_recursive_lock(void)
level = trace_irq_level();

if (unlikely(current->trace_recursion & (1 << level))) {
+ static atomic_t warned;
+
/* Disable all tracing before we do anything else */
tracing_off_permanent();
+
+ if (atomic_inc_return(&warned) == 1) {
+ printk(KERN_WARNING "Tracing recursion: "
+ "[HC%u[%lu]:SC%u[%lu]:NMI[%lu]:HE%u:SE%u]\n",
+ current->hardirq_context,
+ hardirq_count() >> HARDIRQ_SHIFT,
+ current->softirq_context,
+ softirq_count() >> SOFTIRQ_SHIFT,
+ in_nmi(), current->hardirqs_enabled,
+ current->softirqs_enabled);
+ }
WARN_ON_ONCE(1);
return -1;
}
--
1.6.1


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/