diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 4b3c81cb3794..cd81d03cc427 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4055,6 +4055,9 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) if (READ_ONCE(p->on_rq) && ttwu_runnable(p, wake_flags)) goto unlock; + if (READ_ONCE(p->__state) & TASK_UNINTERRUPTIBLE) + trace_sched_blocked_reason(p); + #ifdef CONFIG_SMP /* * Ensure we load p->on_cpu _after_ p->on_rq, otherwise it would be diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 18aba5481cc4..ddc7272c696d 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -978,7 +978,6 @@ update_stats_enqueue_sleeper(struct cfs_rq *cfs_rq, struct sched_entity *se) } trace_sched_stat_blocked(tsk, delta); - trace_sched_blocked_reason(tsk); /* * Blocking time is in units of nanosecs, so shift by