tracing: Explain the trace recursion transition bit better

The current text of the explanation of the transition bit in the trace
recursion protection is not very clear. Improve the text, so that when all
the archs no longer have the issue of tracing between a start of a new
(interrupt) context and updating the preempt_count to reflect the new
context, that it may be removed.

Link: https://lore.kernel.org/all/20211018220203.064a42ed@gandalf.local.home/Suggested-by: default avatarPetr Mladek <pmladek@suse.com>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent ed292718
...@@ -168,8 +168,12 @@ static __always_inline int trace_test_and_set_recursion(unsigned long ip, unsign ...@@ -168,8 +168,12 @@ static __always_inline int trace_test_and_set_recursion(unsigned long ip, unsign
bit = trace_get_context_bit() + start; bit = trace_get_context_bit() + start;
if (unlikely(val & (1 << bit))) { if (unlikely(val & (1 << bit))) {
/* /*
* It could be that preempt_count has not been updated during * If an interrupt occurs during a trace, and another trace
* a switch between contexts. Allow for a single recursion. * happens in that interrupt but before the preempt_count is
* updated to reflect the new interrupt context, then this
* will think a recursion occurred, and the event will be dropped.
* Let a single instance happen via the TRANSITION_BIT to
* not drop those events.
*/ */
bit = TRACE_TRANSITION_BIT; bit = TRACE_TRANSITION_BIT;
if (val & (1 << bit)) { if (val & (1 << bit)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment