sched/core: Avoid selecting the task that is throttled to run when core-sched enable
authorHao Jia <jiahao.os@bytedance.com>
Thu, 16 Mar 2023 08:18:06 +0000 (16:18 +0800)
committerPeter Zijlstra <peterz@infradead.org>
Wed, 22 Mar 2023 09:10:58 +0000 (10:10 +0100)
commit530bfad1d53d103f98cec66a3e491a36d397884d
treed770ca67d960ed90c160e70f733a430ed0f5b1a6
parentd91e15a21d4b3823ce93a42b05f0d171689f4e6a
sched/core: Avoid selecting the task that is throttled to run when core-sched enable

When {rt, cfs}_rq or dl task is throttled, since cookied tasks
are not dequeued from the core tree, So sched_core_find() and
sched_core_next() may return throttled task, which may
cause throttled task to run on the CPU.

So we add checks in sched_core_find() and sched_core_next()
to make sure that the return is a runnable task that is
not throttled.

Co-developed-by: Cruz Zhao <CruzZhao@linux.alibaba.com>
Signed-off-by: Cruz Zhao <CruzZhao@linux.alibaba.com>
Signed-off-by: Hao Jia <jiahao.os@bytedance.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20230316081806.69544-1-jiahao.os@bytedance.com
kernel/sched/core.c
kernel/sched/deadline.c
kernel/sched/fair.c
kernel/sched/rt.c
kernel/sched/sched.h