@@ -43,7 +43,6 @@ options should be enabled to use sched_ext:
4343 CONFIG_DEBUG_INFO_BTF=y
4444 CONFIG_BPF_JIT_ALWAYS_ON=y
4545 CONFIG_BPF_JIT_DEFAULT_ON=y
46- CONFIG_PAHOLE_HAS_BTF_TAG=y
4746
4847 sched_ext is used only when the BPF scheduler is loaded and running.
4948
@@ -58,7 +57,8 @@ in ``ops->flags``, all ``SCHED_NORMAL``, ``SCHED_BATCH``, ``SCHED_IDLE``, and
5857However, when the BPF scheduler is loaded and ``SCX_OPS_SWITCH_PARTIAL `` is
5958set in ``ops->flags ``, only tasks with the ``SCHED_EXT `` policy are scheduled
6059by sched_ext, while tasks with ``SCHED_NORMAL ``, ``SCHED_BATCH `` and
61- ``SCHED_IDLE `` policies are scheduled by the fair-class scheduler.
60+ ``SCHED_IDLE `` policies are scheduled by the fair-class scheduler which has
61+ higher sched_class precedence than ``SCHED_EXT ``.
6262
6363Terminating the sched_ext scheduler program, triggering `SysRq-S `, or
6464detection of any internal error including stalled runnable tasks aborts the
@@ -345,6 +345,8 @@ Where to Look
345345 The functions prefixed with ``scx_bpf_ `` can be called from the BPF
346346 scheduler.
347347
348+ * ``kernel/sched/ext_idle.c `` contains the built-in idle CPU selection policy.
349+
348350* ``tools/sched_ext/ `` hosts example BPF scheduler implementations.
349351
350352 * ``scx_simple[.bpf].c ``: Minimal global FIFO scheduler example using a
@@ -353,13 +355,35 @@ Where to Look
353355 * ``scx_qmap[.bpf].c ``: A multi-level FIFO scheduler supporting five
354356 levels of priority implemented with ``BPF_MAP_TYPE_QUEUE ``.
355357
358+ * ``scx_central[.bpf].c ``: A central FIFO scheduler where all scheduling
359+ decisions are made on one CPU, demonstrating ``LOCAL_ON `` dispatching,
360+ tickless operation, and kthread preemption.
361+
362+ * ``scx_cpu0[.bpf].c ``: A scheduler that queues all tasks to a shared DSQ
363+ and only dispatches them on CPU0 in FIFO order. Useful for testing bypass
364+ behavior.
365+
366+ * ``scx_flatcg[.bpf].c ``: A flattened cgroup hierarchy scheduler
367+ implementing hierarchical weight-based cgroup CPU control by compounding
368+ each cgroup's share at every level into a single flat scheduling layer.
369+
370+ * ``scx_pair[.bpf].c ``: A core-scheduling example that always makes
371+ sibling CPU pairs execute tasks from the same CPU cgroup.
372+
373+ * ``scx_sdt[.bpf].c ``: A variation of ``scx_simple `` demonstrating BPF
374+ arena memory management for per-task data.
375+
376+ * ``scx_userland[.bpf].c ``: A minimal scheduler demonstrating user space
377+ scheduling. Tasks with CPU affinity are direct-dispatched in FIFO order;
378+ all others are scheduled in user space by a simple vruntime scheduler.
379+
356380ABI Instability
357381===============
358382
359383The APIs provided by sched_ext to BPF schedulers programs have no stability
360384guarantees. This includes the ops table callbacks and constants defined in
361385``include/linux/sched/ext.h ``, as well as the ``scx_bpf_ `` kfuncs defined in
362- ``kernel/sched/ext.c ``.
386+ ``kernel/sched/ext.c `` and `` kernel/sched/ext_idle.c `` .
363387
364388While we will attempt to provide a relatively stable API surface when
365389possible, they are subject to change without warning between kernel
0 commit comments