* [PATCH] selftests/sched_ext: Fix flaky ddsp failure tests on busy systems
@ 2026-08-11 14:13 Michal Blaszczyk
2026-08-14 22:34 ` Tejun Heo
0 siblings, 1 reply; 2+ messages in thread
From: Michal Blaszczyk @ 2026-08-11 14:13 UTC (permalink / raw)
To: Tejun Heo, David Vernet, Andrea Righi, Changwoo Min
Cc: Michal Blaszczyk, sched-ext, linux-kernel
The ddsp_vtimelocal_fail and ddsp_bogus_dsq_fail tests skip calling
scx_bpf_dsq_insert_vtime() if scx_bpf_pick_idle_cpu() fails to find
an idle CPU (returns -1). On loaded systems, this results in the tests
skipping the very assertions they are meant to verify.
Eliminate this flakiness by falling back to prev_cpu if no idle CPU is
found, ensuring the illegal dispatch operations are unconditionally
attempted and tested.
Fixes: a5db7817af78 ("sched_ext: Add selftests")
Signed-off-by: Michal Blaszczyk <michalblk@google.com>
---
.../sched_ext/ddsp_bogus_dsq_fail.bpf.c | 20 +++++++++----------
.../sched_ext/ddsp_vtimelocal_fail.bpf.c | 13 ++++++------
2 files changed, 15 insertions(+), 18 deletions(-)
diff --git a/tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c b/tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c
index 6f4c3f5a1c5d..7ef9de7b27eb 100644
--- a/tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c
+++ b/tools/testing/selftests/sched_ext/ddsp_bogus_dsq_fail.bpf.c
@@ -14,18 +14,16 @@ s32 BPF_STRUCT_OPS(ddsp_bogus_dsq_fail_select_cpu, struct task_struct *p,
s32 prev_cpu, u64 wake_flags)
{
s32 cpu = scx_bpf_pick_idle_cpu(p->cpus_ptr, 0);
+ if (cpu < 0)
+ cpu = prev_cpu;
- if (cpu >= 0) {
- /*
- * If we dispatch to a bogus DSQ that will fall back to the
- * builtin global DSQ, we fail gracefully.
- */
- scx_bpf_dsq_insert_vtime(p, 0xcafef00d, SCX_SLICE_DFL,
- p->scx.dsq_vtime, 0);
- return cpu;
- }
-
- return prev_cpu;
+ /*
+ * If we dispatch to a bogus DSQ that will fall back to the
+ * builtin global DSQ, we fail gracefully.
+ */
+ scx_bpf_dsq_insert_vtime(p, 0xcafef00d, SCX_SLICE_DFL,
+ p->scx.dsq_vtime, 0);
+ return cpu;
}
void BPF_STRUCT_OPS(ddsp_bogus_dsq_fail_exit, struct scx_exit_info *ei)
diff --git a/tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c b/tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c
index e4a55027778f..82dca4cdc0a6 100644
--- a/tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c
+++ b/tools/testing/selftests/sched_ext/ddsp_vtimelocal_fail.bpf.c
@@ -14,15 +14,14 @@ s32 BPF_STRUCT_OPS(ddsp_vtimelocal_fail_select_cpu, struct task_struct *p,
s32 prev_cpu, u64 wake_flags)
{
s32 cpu = scx_bpf_pick_idle_cpu(p->cpus_ptr, 0);
+ if (cpu < 0)
+ cpu = prev_cpu;
- if (cpu >= 0) {
- /* Shouldn't be allowed to vtime dispatch to a builtin DSQ. */
- scx_bpf_dsq_insert_vtime(p, SCX_DSQ_LOCAL, SCX_SLICE_DFL,
- p->scx.dsq_vtime, 0);
- return cpu;
- }
+ /* Shouldn't be allowed to vtime dispatch to a builtin DSQ. */
+ scx_bpf_dsq_insert_vtime(p, SCX_DSQ_LOCAL, SCX_SLICE_DFL,
+ p->scx.dsq_vtime, 0);
- return prev_cpu;
+ return cpu;
}
void BPF_STRUCT_OPS(ddsp_vtimelocal_fail_exit, struct scx_exit_info *ei)
--
2.55.0.679.g6767b8d81c-goog
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] selftests/sched_ext: Fix flaky ddsp failure tests on busy systems
2026-08-11 14:13 [PATCH] selftests/sched_ext: Fix flaky ddsp failure tests on busy systems Michal Blaszczyk
@ 2026-08-14 22:34 ` Tejun Heo
0 siblings, 0 replies; 2+ messages in thread
From: Tejun Heo @ 2026-08-14 22:34 UTC (permalink / raw)
To: Michal Blaszczyk
Cc: David Vernet, Andrea Righi, Changwoo Min, sched-ext, linux-kernel
On Tue, Aug 11, 2026 at 02:13:58PM +0000, Michal Blaszczyk wrote:
> The ddsp_vtimelocal_fail and ddsp_bogus_dsq_fail tests skip calling
> scx_bpf_dsq_insert_vtime() if scx_bpf_pick_idle_cpu() fails to find
> an idle CPU (returns -1). On loaded systems, this results in the tests
> skipping the very assertions they are meant to verify.
>
> Eliminate this flakiness by falling back to prev_cpu if no idle CPU is
> found, ensuring the illegal dispatch operations are unconditionally
> attempted and tested.
Applied to sched_ext/for-7.3 with the description updated to say that
scx_bpf_pick_idle_cpu() returns a negative error code on failure rather
than -1.
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-14 22:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-11 14:13 [PATCH] selftests/sched_ext: Fix flaky ddsp failure tests on busy systems Michal Blaszczyk
2026-08-14 22:34 ` Tejun Heo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox