aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2009-04-19 17:38:12 -0400
committerFrederic Weisbecker <fweisbec@gmail.com>2009-04-19 17:38:12 -0400
commite057a5e5647a1c9d0d0054fbd298bfa04b3d1cb4 (patch)
tree4495ffacfb31ff535c9e6fde5ea03f62dd3c3b53 /kernel/trace
parent8e668b5b3455207e4540fc7ccab9ecf70142f288 (diff)
tracing/core: Add current context on tracing recursion warning
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. v2: Use printk_once() v3: drop {hardirq,softirq}_context which depend on lockdep, only keep what is part of current->trace_recursion, sufficient to debug the warning source. [ Impact: print context necessary to debug recursion ] Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Diffstat (limited to 'kernel/trace')
-rw-r--r--kernel/trace/ring_buffer.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index b421b0ea9112..bffde630c4e2 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -1495,6 +1495,13 @@ static int trace_recursive_lock(void)
1495 if (unlikely(current->trace_recursion & (1 << level))) { 1495 if (unlikely(current->trace_recursion & (1 << level))) {
1496 /* Disable all tracing before we do anything else */ 1496 /* Disable all tracing before we do anything else */
1497 tracing_off_permanent(); 1497 tracing_off_permanent();
1498
1499 printk_once(KERN_WARNING "Tracing recursion: "
1500 "HC[%lu]:SC[%lu]:NMI[%lu]\n",
1501 hardirq_count() >> HARDIRQ_SHIFT,
1502 softirq_count() >> SOFTIRQ_SHIFT,
1503 in_nmi());
1504
1498 WARN_ON_ONCE(1); 1505 WARN_ON_ONCE(1);
1499 return -1; 1506 return -1;
1500 } 1507 }