Skip to content

Commit

Permalink
tracing/core: Add current context on tracing recursion warning
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Frederic Weisbecker committed Apr 19, 2009
1 parent 8e668b5 commit e057a5e
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions kernel/trace/ring_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -1495,6 +1495,13 @@ static int trace_recursive_lock(void)
if (unlikely(current->trace_recursion & (1 << level))) {
/* Disable all tracing before we do anything else */
tracing_off_permanent();

printk_once(KERN_WARNING "Tracing recursion: "
"HC[%lu]:SC[%lu]:NMI[%lu]\n",
hardirq_count() >> HARDIRQ_SHIFT,
softirq_count() >> SOFTIRQ_SHIFT,
in_nmi());

WARN_ON_ONCE(1);
return -1;
}
Expand Down

0 comments on commit e057a5e

Please sign in to comment.