Skip to content
  • Thomas Gleixner's avatar
    sched/debug: Fix task state recording/printout · 3f5fe9fe
    Thomas Gleixner authored
    
    
    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: default avatarThomas 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: efb40f58 ("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: default avatarIngo Molnar <mingo@kernel.org>
    3f5fe9fe