• Tejun Heo's avatar
    sched_ext: Track tasks that are subjects of the in-flight SCX operation · 36454023
    Tejun Heo authored
    When some SCX operations are in flight, it is known that the subject task's
    rq lock is held throughout which makes it safe to access certain fields of
    the task - e.g. its current task_group. We want to add SCX kfunc helpers
    that can make use of this guarantee - e.g. to help determining the currently
    associated CPU cgroup from the task's current task_group.
    
    As it'd be dangerous call such a helper on a task which isn't rq lock
    protected, the helper should be able to verify the input task and reject
    accordingly. This patch adds sched_ext_entity.kf_tasks[] that track the
    tasks which are currently being operated on by a terminal SCX operation. The
    new SCX_CALL_OP_[2]TASK[_RET]() can be used when invoking SCX operations
    which take tasks as arguments and the scx_kf_allowed_on_arg_tasks() can be
    used by kfunc helpers to verify the input task status.
    
    Note that as sched_ext_entity.kf_tasks[] can't handle nesting, the tracking
    is currently only limited to terminal SCX operations. If needed in the
    future, this restriction can be removed by moving the tracking to the task
    side with a couple per-task counters.
    
    v2: Updated to reflect the addition of SCX_KF_SELECT_CPU.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Reviewed-by: default avatarDavid Vernet <dvernet@meta.com>
    36454023
ext.c 149 KB