On Mon, 2 Mar 2026 08:47:17 +0100, Andrea Righi wrote: > On Mon, Mar 02, 2026 at 02:48:51PM +0800, Feng Yang wrote: > > From: Feng Yang <[email protected]> > > > > When __COMPAT_scx_bpf_pick_idle_cpu_node selects an idle CPU, > > it reports that the CPU should be marked as busy. > > > > Fixes: 5ae5161820e5 ("selftests/sched_ext: Add NUMA-aware scheduler test") > > Signed-off-by: Feng Yang <[email protected]> > > --- > > tools/testing/selftests/sched_ext/numa.bpf.c | 8 ++++---- > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > diff --git a/tools/testing/selftests/sched_ext/numa.bpf.c > > b/tools/testing/selftests/sched_ext/numa.bpf.c > > index a79d86ed54a1..98423628b05c 100644 > > --- a/tools/testing/selftests/sched_ext/numa.bpf.c > > +++ b/tools/testing/selftests/sched_ext/numa.bpf.c > > @@ -44,12 +44,12 @@ s32 BPF_STRUCT_OPS(numa_select_cpu, > > */ > > cpu = __COMPAT_scx_bpf_pick_idle_cpu_node(p->cpus_ptr, node, > > __COMPAT_SCX_PICK_IDLE_IN_NODE); > > - if (cpu < 0) > > + if (cpu < 0) { > > cpu = __COMPAT_scx_bpf_pick_any_cpu_node(p->cpus_ptr, node, > > __COMPAT_SCX_PICK_IDLE_IN_NODE); > > - > > - if (is_cpu_idle(cpu, node)) > > - scx_bpf_error("CPU %d should be marked as busy", cpu); > > + if (is_cpu_idle(cpu, node)) > > + scx_bpf_error("CPU %d should be marked as busy", cpu); > > + } > > No, this is not correct. The CPU returned by scx_bpf_pick_idle_cpu_node() > should be marked as busy at this point (bit is set in the idle cpumask), > essentially it has been reserved/allocated by the caller.
Okay, I misunderstood. The CI test of this patch (https://patchwork.kernel.org/project/netdevbpf/list/?series=1058866&state=*) resulted in the error "CPU 0 should be marked as busy"(https://github.com/kernel-patches/bpf/actions/runs/22548310848/job/65314767856), but I don't see the connection between them that would cause this error. Could you explain why this happens? Thanks, Feng > Maybe we can add a comment if we think it's not clear enough, but the > original code looks correct. > > > > > if (__COMPAT_scx_bpf_cpu_node(cpu) != node) > > scx_bpf_error("CPU %d should be in node %d", cpu, node); > > -- > > 2.43.0 > > > > Thanks, > -Andrea

