diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2025-03-24 10:35:26 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-03-24 10:35:26 -0400 |
commit | bd176ff969fbde282f5e3335fe3e45e341427941 (patch) | |
tree | df59a524cd2cc57e38d181cf20a918aebbba06aa /kernel/sched/core.c | |
parent | a415e1f10898f9cb706c57814655cfe578cd8374 (diff) |
trace_sched_switch -> trace_sched_wakinglatency_debug
Diffstat (limited to 'kernel/sched/core.c')
-rw-r--r-- | kernel/sched/core.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index dae03d76cd2c..172defd6ed83 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4200,15 +4200,19 @@ int try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) goto out; trace_sched_waking(p); + + if (p->sleep_timestamp) + sched_wakeup_backtrace(p, p->sleep_timestamp); + p->sleep_timestamp = 0; ttwu_do_wakeup(p); goto out; } - +#if 0 u64 sleep_start; if (p->sleep_timestamp && (sleep_start = xchg(&p->sleep_timestamp, 0))) sched_wakeup_backtrace(p, sleep_start); - +#endif /* * If we are going to wake up a thread waiting for CONDITION we * need to ensure that CONDITION=1 done by the caller can not be @@ -4222,6 +4226,10 @@ int try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) trace_sched_waking(p); + if (p->sleep_timestamp) + sched_wakeup_backtrace(p, p->sleep_timestamp); + p->sleep_timestamp = 0; + /* * Ensure we load p->on_rq _after_ p->state, otherwise it would * be possible to, falsely, observe p->on_rq == 0 and get stuck @@ -6763,6 +6771,7 @@ picked: psi_sched_switch(prev, next, !task_on_rq_queued(prev) || prev->se.sched_delayed); + prev->sleep_timestamp = ktime_get_ns(); trace_sched_switch(preempt, prev, next, prev_state); /* Also unlocks the rq: */ |