• Tejun Heo's avatar
    sched/core: Add ENQUEUE_RQ_SELECTED to indicate whether ->select_task_rq() was called · f207dc2d
    Tejun Heo authored
    During ttwu, ->select_task_rq() can be skipped if only one CPU is allowed or
    migration is disabled. sched_ext schedulers may perform operations such as
    direct dispatch from ->select_task_rq() path and it is useful for them to
    know whether ->select_task_rq() was skipped in the ->enqueue_task() path.
    
    Currently, sched_ext schedulers are using ENQUEUE_WAKEUP for this purpose
    and end up assuming incorrectly that ->select_task_rq() was called for tasks
    that are bound to a single CPU or migration disabled.
    
    Make select_task_rq() indicate whether ->select_task_rq() was called by
    setting WF_RQ_SELECTED in *wake_flags and make ttwu_do_activate() map that
    to ENQUEUE_RQ_SELECTED for ->enqueue_task().
    
    This will be used by sched_ext to fix ->select_task_rq() skip detection.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Acked-by: default avatarDavid Vernet <void@manifault.com>
    f207dc2d
core.c 271 KB