• Tejun Heo's avatar
    sched_ext: Allow BPF schedulers to disallow specific tasks from joining SCHED_EXT · 7bb6f081
    Tejun Heo authored
    BPF schedulers might not want to schedule certain tasks - e.g. kernel
    threads. This patch adds p->scx.disallow which can be set by BPF schedulers
    in such cases. The field can be changed anytime and setting it in
    ops.prep_enable() guarantees that the task can never be scheduled by
    sched_ext.
    
    scx_qmap is updated with the -d option to disallow a specific PID:
    
      # echo $$
      1092
      # grep -E '(policy)|(ext\.enabled)' /proc/self/sched
      policy                                       :                    0
      ext.enabled                                  :                    0
      # ./set-scx 1092
      # grep -E '(policy)|(ext\.enabled)' /proc/self/sched
      policy                                       :                    7
      ext.enabled                                  :                    0
    
    Run "scx_qmap -p -d 1092" in another terminal.
    
      # cat /sys/kernel/sched_ext/nr_rejected
      1
      # grep -E '(policy)|(ext\.enabled)' /proc/self/sched
      policy                                       :                    0
      ext.enabled                                  :                    0
      # ./set-scx 1092
      setparam failed for 1092 (Permission denied)
    
    - v4: Refreshed on top of tip:sched/core.
    
    - v3: Update description to reflect /sys/kernel/sched_ext interface change.
    
    - v2: Use atomic_long_t instead of atomic64_t for scx_kick_cpus_pnt_seqs to
          accommodate 32bit archs.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Suggested-by: default avatarBarret Rhoden <brho@google.com>
    Reviewed-by: default avatarDavid Vernet <dvernet@meta.com>
    Acked-by: default avatarJosh Don <joshdon@google.com>
    Acked-by: default avatarHao Luo <haoluo@google.com>
    Acked-by: default avatarBarret Rhoden <brho@google.com>
    7bb6f081
ext.h 3.09 KB