ttwu_do_wakeup() is called when the task's state is switched back to TASK_RUNNING, whether or not the task actually scheduled out. Tracing the wakeup event when the task never scheduled out is quite confusing. It should only trace the task wake up if the task actually did go to sleep. Move the tracepoint from ttwu_do_wakeup() to ttwu_activate() where it is called only if the task is really woken up and not just have its state changed.
Signed-off-by: Dongsheng Yang <[email protected]> --- kernel/sched/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9074c6d..0cae994 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1420,6 +1420,7 @@ static void ttwu_activate(struct rq *rq, struct task_struct *p, int en_flags) { activate_task(rq, p, en_flags); p->on_rq = 1; + trace_sched_wakeup(p, true); /* if a worker is waking up, notify workqueue */ if (p->flags & PF_WQ_WORKER) @@ -1433,7 +1434,6 @@ static void ttwu_do_wakeup(struct rq *rq, struct task_struct *p, int wake_flags) { check_preempt_curr(rq, p, wake_flags); - trace_sched_wakeup(p, true); p->state = TASK_RUNNING; #ifdef CONFIG_SMP -- 1.8.2.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

