mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 14:51:51 -04:00
sched_ext: Document why built-in DSQs are unsupported sources in scx_bpf_dsq_move_to_local()
Add a comment explaining the design intent behind rejecting built-in DSQs (%SCX_DSQ_GLOBAL and %SCX_DSQ_LOCAL*) as sources. Local DSQs support reenqueueing but the BPF scheduler cannot directly iterate or move tasks from them. %SCX_DSQ_GLOBAL is similar but also doesn't support reenqueueing because it maps to multiple per-node DSQs, making the scope difficult to define. Also annotate @dsq_id to make clear it must be a user-created DSQ. Suggested-by: Tejun Heo <tj@kernel.org> Signed-off-by: Cheng-Yang Chou <yphbchou0911@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
committed by
Tejun Heo
parent
d6edb15ad9
commit
238aa43f0b
@@ -8212,7 +8212,7 @@ __bpf_kfunc void scx_bpf_dispatch_cancel(const struct bpf_prog_aux *aux)
|
||||
|
||||
/**
|
||||
* scx_bpf_dsq_move_to_local - move a task from a DSQ to the current CPU's local DSQ
|
||||
* @dsq_id: DSQ to move task from
|
||||
* @dsq_id: DSQ to move task from. Must be a user-created DSQ
|
||||
* @aux: implicit BPF argument to access bpf_prog_aux hidden from BPF progs
|
||||
* @enq_flags: %SCX_ENQ_*
|
||||
*
|
||||
@@ -8220,6 +8220,14 @@ __bpf_kfunc void scx_bpf_dispatch_cancel(const struct bpf_prog_aux *aux)
|
||||
* local DSQ for execution with @enq_flags applied. Can only be called from
|
||||
* ops.dispatch().
|
||||
*
|
||||
* Built-in DSQs (%SCX_DSQ_GLOBAL and %SCX_DSQ_LOCAL*) are not supported as
|
||||
* sources. Local DSQs support reenqueueing (a task can be picked up for
|
||||
* execution, dequeued for property changes, or reenqueued), but the BPF
|
||||
* scheduler cannot directly iterate or move tasks from them. %SCX_DSQ_GLOBAL
|
||||
* is similar but also doesn't support reenqueueing, as it maps to multiple
|
||||
* per-node DSQs making the scope difficult to define; this may change in the
|
||||
* future.
|
||||
*
|
||||
* This function flushes the in-flight dispatches from scx_bpf_dsq_insert()
|
||||
* before trying to move from the specified DSQ. It may also grab rq locks and
|
||||
* thus can't be called under any BPF locks.
|
||||
|
||||
Reference in New Issue
Block a user