sched, tracing: Fix trace_sched_pi_setprio() for deboosting
[sfrench/cifs-2.6.git] / include / trace / events / sched.h
index da10aa21bebc847bd1c71d1ffed177494bcb774e..0be866c91f62d055f5a6a3ab25a263a11f111916 100644 (file)
@@ -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 __get_task_state(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)
 );
 
@@ -435,7 +435,9 @@ TRACE_EVENT(sched_pi_setprio,
                memcpy(__entry->comm, tsk->comm, TASK_COMM_LEN);
                __entry->pid            = tsk->pid;
                __entry->oldprio        = tsk->prio;
-               __entry->newprio        = pi_task ? pi_task->prio : tsk->prio;
+               __entry->newprio        = pi_task ?
+                               min(tsk->normal_prio, pi_task->prio) :
+                               tsk->normal_prio;
                /* XXX SCHED_DEADLINE bits missing */
        ),