]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/sched_ext: Fix peek_dsq.bpf.c compile error for clang 17
authorZhao Mengmeng <zhaomengmeng@kylinos.cn>
Tue, 3 Mar 2026 07:23:17 +0000 (15:23 +0800)
committerTejun Heo <tj@kernel.org>
Tue, 3 Mar 2026 08:00:34 +0000 (22:00 -1000)
When compiling sched_ext selftests using clang 17.0.6, it raised
compiler crash and build error:

Error at line 68: Unsupport signed division for DAG: 0x55b2f9a60240:
i64 = sdiv 0x55b2f9a609b0, Constant:i64<100>, peek_dsq.bpf.c:68:25 @[
peek_dsq.bpf.c:95:4 @[ peek_dsq.bpf.c:169:8 @[ peek
_dsq.bpf.c:140:6 ] ] ]Please convert to unsigned div/mod

After digging, it's not a compiler error, clang supported Signed division
only when using -mcpu=v4, while we use -mcpu=v3 currently, the better way
is to use unsigned div, see [1] for details.

[1] https://github.com/llvm/llvm-project/issues/70433

Signed-off-by: Zhao Mengmeng <zhaomengmeng@kylinos.cn>
Reviewed-by: Andrea Righi <arighi@nvidia.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
tools/testing/selftests/sched_ext/peek_dsq.bpf.c

index a3faf5bb49d6ed86527297527189e96a4eab0222..784f2f6c1af9b132f0424df5be355f338f8b4a8b 100644 (file)
@@ -58,14 +58,14 @@ static void record_peek_result(long pid)
 {
        u32 slot_key;
        long *slot_pid_ptr;
-       int ix;
+       u32 ix;
 
        if (pid <= 0)
                return;
 
        /* Find an empty slot or one with the same PID */
        bpf_for(ix, 0, 10) {
-               slot_key = (pid + ix) % MAX_SAMPLES;
+               slot_key = ((u64)pid + ix) % MAX_SAMPLES;
                slot_pid_ptr = bpf_map_lookup_elem(&peek_results, &slot_key);
                if (!slot_pid_ptr)
                        continue;