* [PATCH] sched/tracing: Fix task state recording/printout
@ 2017-11-22 12:05 Thomas Gleixner
2017-11-24 8:49 ` [tip:sched/urgent] sched/debug: " tip-bot for Thomas Gleixner
0 siblings, 1 reply; 2+ messages in thread
From: Thomas Gleixner @ 2017-11-22 12:05 UTC (permalink / raw)
To: LKML; +Cc: Steven Rostedt, Peter Zijlstra, Ingo Molnar, Paul E. McKenney
The recent conversion of the task state recording to use task_state_index()
broke the sched_switch tracepoint task state output.
task_state_index() returns surprisingly an index (0-7) which is then
printed with __print_flags() applying bitmasks. Not really working and
resulting in weird states like 'prev_state=t' instead of 'prev_state=I'.
Use TASK_REPORT_MAX instead of TASK_STATE_MAX to report preemption. Build a
bitmask from the return value of task_state_index() and store it in
entry->prev_state, which makes __print_flags() work as expected.
Fixes: efb40f588b43 ("sched/tracing: Fix trace_sched_switch task-state printing")
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
---
include/trace/events/sched.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -116,9 +116,9 @@ static inline long __trace_sched_switch_
* RUNNING (we will not have dequeued if state != RUNNING).
*/
if (preempt)
- return TASK_STATE_MAX;
+ return TASK_REPORT_MAX;
- return task_state_index(p);
+ return 1 << task_state_index(p);
}
#endif /* CREATE_TRACE_POINTS */
@@ -164,7 +164,7 @@ TRACE_EVENT(sched_switch,
{ 0x40, "P" }, { 0x80, "I" }) :
"R",
- __entry->prev_state & TASK_STATE_MAX ? "+" : "",
+ __entry->prev_state & TASK_REPORT_MAX ? "+" : "",
__entry->next_comm, __entry->next_pid, __entry->next_prio)
);
^ permalink raw reply [flat|nested] 2+ messages in thread
* [tip:sched/urgent] sched/debug: Fix task state recording/printout
2017-11-22 12:05 [PATCH] sched/tracing: Fix task state recording/printout Thomas Gleixner
@ 2017-11-24 8:49 ` tip-bot for Thomas Gleixner
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Thomas Gleixner @ 2017-11-24 8:49 UTC (permalink / raw)
To: linux-tip-commits
Cc: mingo, linux-kernel, torvalds, paulmck, peterz, rostedt, hpa, tglx
Commit-ID: 3f5fe9fef5b2da06b6319fab8123056da5217c3f
Gitweb: https://git.kernel.org/tip/3f5fe9fef5b2da06b6319fab8123056da5217c3f
Author: Thomas Gleixner <tglx@linutronix.de>
AuthorDate: Wed, 22 Nov 2017 13:05:48 +0100
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 24 Nov 2017 08:39:12 +0100
sched/debug: Fix task state recording/printout
The recent conversion of the task state recording to use task_state_index()
broke the sched_switch tracepoint task state output.
task_state_index() returns surprisingly an index (0-7) which is then
printed with __print_flags() applying bitmasks. Not really working and
resulting in weird states like 'prev_state=t' instead of 'prev_state=I'.
Use TASK_REPORT_MAX instead of TASK_STATE_MAX to report preemption. Build a
bitmask from the return value of task_state_index() and store it in
entry->prev_state, which makes __print_flags() work as expected.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: stable@vger.kernel.org
Fixes: efb40f588b43 ("sched/tracing: Fix trace_sched_switch task-state printing")
Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1711221304180.1751@nanos
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
include/trace/events/sched.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h
index 306b31d..bc01e06 100644
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -116,9 +116,9 @@ static inline long __trace_sched_switch_state(bool preempt, struct task_struct *
* RUNNING (we will not have dequeued if state != RUNNING).
*/
if (preempt)
- return TASK_STATE_MAX;
+ return TASK_REPORT_MAX;
- return task_state_index(p);
+ return 1 << task_state_index(p);
}
#endif /* CREATE_TRACE_POINTS */
@@ -164,7 +164,7 @@ TRACE_EVENT(sched_switch,
{ 0x40, "P" }, { 0x80, "I" }) :
"R",
- __entry->prev_state & TASK_STATE_MAX ? "+" : "",
+ __entry->prev_state & TASK_REPORT_MAX ? "+" : "",
__entry->next_comm, __entry->next_pid, __entry->next_prio)
);
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-11-24 8:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-22 12:05 [PATCH] sched/tracing: Fix task state recording/printout Thomas Gleixner
2017-11-24 8:49 ` [tip:sched/urgent] sched/debug: " tip-bot for Thomas Gleixner
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.