The following commit has been merged into the sched/core branch of tip: Commit-ID: 2917406c352757642c3c1a13a4c99c96e6d22fde Gitweb: https://git.kernel.org/tip/2917406c352757642c3c1a13a4c99c96e6d22fde Author: Barry Song <song.bao.hua@xxxxxxxxxxxxx> AuthorDate: Sat, 16 Oct 2021 19:11:09 +08:00 Committer: Peter Zijlstra <peterz@xxxxxxxxxxxxx> CommitterDate: Tue, 07 Dec 2021 15:14:10 +01:00 sched/fair: Document the slow path and fast path in select_task_rq_fair All People I know including myself took a long time to figure out that typical wakeup will always go to fast path and never go to slow path except WF_FORK and WF_EXEC. Vincent reminded me once in a linaro meeting and made me understand slow path won't happen for WF_TTWU. But my other friends repeatedly wasted a lot of time on testing this path like me before I reminded them. So obviously the code needs some document. Signed-off-by: Barry Song <song.bao.hua@xxxxxxxxxxxxx> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> Link: https://lkml.kernel.org/r/20211016111109.5559-1-21cnbao@xxxxxxxxx --- kernel/sched/fair.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 0672218..f34f2f3 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6917,6 +6917,11 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int wake_flags) break; } + /* + * Usually only true for WF_EXEC and WF_FORK, as sched_domains + * usually do not have SD_BALANCE_WAKE set. That means wakeup + * will usually go to the fast path. + */ if (tmp->flags & sd_flag) sd = tmp; else if (!want_affine)