summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/progs/icmp_send.c
diff options
context:
space:
mode:
authorLiang Luo <luoliang@kylinos.cn>2026-09-23 19:07:37 +0800
committerTejun Heo <tj@kernel.org>2026-09-23 08:16:10 -1000
commit4409a85735cdca5c4c400c0dad1feee091872eee (patch)
tree3451cf6a81b061464dbb4f5754517587ffaf111c /tools/testing/selftests/bpf/progs/icmp_send.c
parentd781d1b78acf547bafeb1592e8ba4020dce515c6 (diff)
sched_ext: Count SCX_EV_SUB_BYPASS_DISPATCH in the dispatch fallback
When a descendant scheduler enters bypass mode, its tasks are parked in the bypass DSQs of the nearest non-bypassing ancestor, which is then responsible for running them. On behalf of such a non-bypassing host, scx_dispatch_sched() consumes those bypass DSQs from two places: the attempt made every SCX_BYPASS_HOST_NTH dispatches, and the end-of-dispatch fallback that keeps the CPU from going idle while bypassed descendants still have tasks queued. The former increments SCX_EV_SUB_BYPASS_DISPATCH but the latter does not, even though both perform the same scx_consume_dispatch_q() on the same bypass DSQ. The descendant bypass dispatches done by the fallback are therefore missing from the counter exposed via sysfs, scx_dump_state() and the scx_bpf_events() kfunc, which under-reports the actual number of such dispatches. Add the missing __scx_add_event() so the fallback counts them too. When @sch itself is bypassing, scx_dispatch_sched() takes the earlier self-bypass branch and returns before reaching these host paths; that mode is accounted for by SCX_EV_BYPASS_DISPATCH at enqueue time and is intentionally left unchanged. Fixes: 025b1bd41965 ("sched_ext: Implement hierarchical bypass mode") Signed-off-by: Liang Luo <luoliang@kylinos.cn> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'tools/testing/selftests/bpf/progs/icmp_send.c')
0 files changed, 0 insertions, 0 deletions