sched_ext, scx_qmap: Add and use SCX_ENQ_CPU_SELECTED
authorTejun Heo <tj@kernel.org>
Fri, 27 Sep 2024 23:46:13 +0000 (13:46 -1000)
committerTejun Heo <tj@kernel.org>
Mon, 7 Oct 2024 20:16:18 +0000 (10:16 -1000)
commit9b671793c7d95f020791415cbbcc82b9c007d19c
tree72fdcc3b6fbdd872da738c6a1fad14a3c6c8e796
parentf207dc2dcdcf0e1e7d260b392784855ce8d84147
sched_ext, scx_qmap: Add and use SCX_ENQ_CPU_SELECTED

scx_qmap and other schedulers in the SCX repo are using SCX_ENQ_WAKEUP to
tell whether ops.select_cpu() was called. This is incorrect as
ops.select_cpu() can be skipped in the wakeup path and leads to e.g.
incorrectly skipping direct dispatch for tasks that are bound to a single
CPU.

sched core has been updated to specify ENQUEUE_RQ_SELECTED if
->select_task_rq() was called. Map it to SCX_ENQ_CPU_SELECTED and update
scx_qmap to test it instead of SCX_ENQ_WAKEUP.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: David Vernet <void@manifault.com>
Cc: Daniel Hodges <hodges.daniel.scott@gmail.com>
Cc: Changwoo Min <multics69@gmail.com>
Cc: Andrea Righi <andrea.righi@linux.dev>
Cc: Dan Schatzberg <schatzberg.dan@gmail.com>
kernel/sched/ext.c
tools/sched_ext/scx_qmap.bpf.c