public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
* [PATCH 0/3] sched_ext cleanup and toolchain compatibility fixes
@ 2026-03-06  7:31 Zhao Mengmeng
  2026-03-06  7:31 ` [PATCH 1/3] sched_ext: remove SCX_OPS_HAS_CGROUP_WEIGHT Zhao Mengmeng
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Zhao Mengmeng @ 2026-03-06  7:31 UTC (permalink / raw)
  To: tj, void, arighi, changwoo, nathan, nick.desaulniers+lkml, morbo,
	justinstitt, emil
  Cc: sched-ext, linux-kernel, bpf, llvm, zhaomengmeng

From: Zhao Mengmeng <zhaomengmeng@kylinos.cn>

This series contains:
1. remove SCX_OPS_HAS_CGROUP_WEIGHT, which was documented to
be deleted on 6.18. 
2. Update scx enum autogens by using scripts in scx repo.
3. Make scheduler scx_sdt runnable on older clang version. clang 17 and
18 tested with no verifier rejections.

Zhao Mengmeng (3):
  sched_ext: remove SCX_OPS_HAS_CGROUP_WEIGHT
  tools/sched_ext: Update scx enum autogens
  tools/sched_ext: scx_sdt: Fix BPF verifier rejection on older LLVMs

 kernel/sched/ext.c                            |  3 ---
 kernel/sched/ext_internal.h                   |  8 +-----
 .../sched_ext/include/scx/enum_defs.autogen.h | 26 ++++++++++++++-----
 .../sched_ext/include/scx/enums.autogen.bpf.h |  4 +--
 tools/sched_ext/include/scx/enums.autogen.h   |  3 +--
 tools/sched_ext/scx_flatcg.bpf.c              |  2 +-
 tools/sched_ext/scx_sdt.bpf.c                 | 20 +++++++++++++-
 7 files changed, 42 insertions(+), 24 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/3] sched_ext: remove SCX_OPS_HAS_CGROUP_WEIGHT
  2026-03-06  7:31 [PATCH 0/3] sched_ext cleanup and toolchain compatibility fixes Zhao Mengmeng
@ 2026-03-06  7:31 ` Zhao Mengmeng
  2026-03-06  7:31 ` [PATCH 2/3] tools/sched_ext: Update scx enum autogens Zhao Mengmeng
  2026-03-06  7:31 ` [PATCH 3/3] tools/sched_ext: scx_sdt: Fix BPF verifier rejection on older LLVMs Zhao Mengmeng
  2 siblings, 0 replies; 6+ messages in thread
From: Zhao Mengmeng @ 2026-03-06  7:31 UTC (permalink / raw)
  To: tj, void, arighi, changwoo, nathan, nick.desaulniers+lkml, morbo,
	justinstitt, emil
  Cc: sched-ext, linux-kernel, bpf, llvm, zhaomengmeng

From: Zhao Mengmeng <zhaomengmeng@kylinos.cn>

While running scx_flatcg, dmesg prints "SCX_OPS_HAS_CGROUP_WEIGHT is
deprecated and a noop", in code, SCX_OPS_HAS_CGROUP_WEIGHT has been
marked as DEPRECATED, and will be removed on 6.18. Now it's time to do it.

Signed-off-by: Zhao Mengmeng <zhaomengmeng@kylinos.cn>
---
 kernel/sched/ext.c               | 3 ---
 kernel/sched/ext_internal.h      | 8 +-------
 tools/sched_ext/scx_flatcg.bpf.c | 2 +-
 3 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c
index b9247c9f0430..fd83af17d46d 100644
--- a/kernel/sched/ext.c
+++ b/kernel/sched/ext.c
@@ -5062,9 +5062,6 @@ static int validate_ops(struct scx_sched *sch, const struct sched_ext_ops *ops)
 		return -EINVAL;
 	}
 
-	if (ops->flags & SCX_OPS_HAS_CGROUP_WEIGHT)
-		pr_warn("SCX_OPS_HAS_CGROUP_WEIGHT is deprecated and a noop\n");
-
 	if (ops->cpu_acquire || ops->cpu_release)
 		pr_warn("ops->cpu_acquire/release() are deprecated, use sched_switch TP instead\n");
 
diff --git a/kernel/sched/ext_internal.h b/kernel/sched/ext_internal.h
index bd26811fea99..3c86c53e1975 100644
--- a/kernel/sched/ext_internal.h
+++ b/kernel/sched/ext_internal.h
@@ -174,19 +174,13 @@ enum scx_ops_flags {
 	 */
 	SCX_OPS_BUILTIN_IDLE_PER_NODE	= 1LLU << 6,
 
-	/*
-	 * CPU cgroup support flags
-	 */
-	SCX_OPS_HAS_CGROUP_WEIGHT	= 1LLU << 16,	/* DEPRECATED, will be removed on 6.18 */
-
 	SCX_OPS_ALL_FLAGS		= SCX_OPS_KEEP_BUILTIN_IDLE |
 					  SCX_OPS_ENQ_LAST |
 					  SCX_OPS_ENQ_EXITING |
 					  SCX_OPS_ENQ_MIGRATION_DISABLED |
 					  SCX_OPS_ALLOW_QUEUED_WAKEUP |
 					  SCX_OPS_SWITCH_PARTIAL |
-					  SCX_OPS_BUILTIN_IDLE_PER_NODE |
-					  SCX_OPS_HAS_CGROUP_WEIGHT,
+					  SCX_OPS_BUILTIN_IDLE_PER_NODE,
 
 	/* high 8 bits are internal, don't include in SCX_OPS_ALL_FLAGS */
 	__SCX_OPS_INTERNAL_MASK		= 0xffLLU << 56,
diff --git a/tools/sched_ext/scx_flatcg.bpf.c b/tools/sched_ext/scx_flatcg.bpf.c
index 0e785cff0f24..a8a9234bb41e 100644
--- a/tools/sched_ext/scx_flatcg.bpf.c
+++ b/tools/sched_ext/scx_flatcg.bpf.c
@@ -960,5 +960,5 @@ SCX_OPS_DEFINE(flatcg_ops,
 	       .cgroup_move		= (void *)fcg_cgroup_move,
 	       .init			= (void *)fcg_init,
 	       .exit			= (void *)fcg_exit,
-	       .flags			= SCX_OPS_HAS_CGROUP_WEIGHT | SCX_OPS_ENQ_EXITING,
+	       .flags			= SCX_OPS_ENQ_EXITING,
 	       .name			= "flatcg");
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] tools/sched_ext: Update scx enum autogens
  2026-03-06  7:31 [PATCH 0/3] sched_ext cleanup and toolchain compatibility fixes Zhao Mengmeng
  2026-03-06  7:31 ` [PATCH 1/3] sched_ext: remove SCX_OPS_HAS_CGROUP_WEIGHT Zhao Mengmeng
@ 2026-03-06  7:31 ` Zhao Mengmeng
  2026-03-06 14:40   ` Andrea Righi
  2026-03-06  7:31 ` [PATCH 3/3] tools/sched_ext: scx_sdt: Fix BPF verifier rejection on older LLVMs Zhao Mengmeng
  2 siblings, 1 reply; 6+ messages in thread
From: Zhao Mengmeng @ 2026-03-06  7:31 UTC (permalink / raw)
  To: tj, void, arighi, changwoo, nathan, nick.desaulniers+lkml, morbo,
	justinstitt, emil
  Cc: sched-ext, linux-kernel, bpf, llvm, zhaomengmeng

From: Zhao Mengmeng <zhaomengmeng@kylinos.cn>

Use scripts in scx repo to update these autogen files:

1. enum_defs.autogen.h: Remove SCX_OPS_HAS_CGROUP_WEIGHT, add other new
enums
2. enums.autogen.bpf.h and enums.autogen.h: Remove SCX_RQ_BAL_PENDING and
Use python scripts generation instead of manual edit style.

Signed-off-by: Zhao Mengmeng <zhaomengmeng@kylinos.cn>
---
 .../sched_ext/include/scx/enum_defs.autogen.h | 26 ++++++++++++++-----
 .../sched_ext/include/scx/enums.autogen.bpf.h |  4 +--
 tools/sched_ext/include/scx/enums.autogen.h   |  3 +--
 3 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/tools/sched_ext/include/scx/enum_defs.autogen.h b/tools/sched_ext/include/scx/enum_defs.autogen.h
index dcc945304760..0f4ee052c0ef 100644
--- a/tools/sched_ext/include/scx/enum_defs.autogen.h
+++ b/tools/sched_ext/include/scx/enum_defs.autogen.h
@@ -14,7 +14,11 @@
 #define HAVE_SCX_EXIT_MSG_LEN
 #define HAVE_SCX_EXIT_DUMP_DFL_LEN
 #define HAVE_SCX_CPUPERF_ONE
-#define HAVE_SCX_OPS_TASK_ITER_BATCH
+#define HAVE_SCX_TASK_ITER_BATCH
+#define HAVE_SCX_BYPASS_LB_DFL_INTV_US
+#define HAVE_SCX_BYPASS_LB_DONOR_PCT
+#define HAVE_SCX_BYPASS_LB_MIN_DELTA_DIV
+#define HAVE_SCX_BYPASS_LB_BATCH
 #define HAVE_SCX_CPU_PREEMPT_RT
 #define HAVE_SCX_CPU_PREEMPT_DL
 #define HAVE_SCX_CPU_PREEMPT_STOP
@@ -27,6 +31,7 @@
 #define HAVE_SCX_DSQ_INVALID
 #define HAVE_SCX_DSQ_GLOBAL
 #define HAVE_SCX_DSQ_LOCAL
+#define HAVE_SCX_DSQ_BYPASS
 #define HAVE_SCX_DSQ_LOCAL_ON
 #define HAVE_SCX_DSQ_LOCAL_CPU_MASK
 #define HAVE_SCX_DSQ_ITER_REV
@@ -36,6 +41,10 @@
 #define HAVE___SCX_DSQ_ITER_ALL_FLAGS
 #define HAVE_SCX_DSQ_LNODE_ITER_CURSOR
 #define HAVE___SCX_DSQ_LNODE_PRIV_SHIFT
+#define HAVE_SCX_ENABLING
+#define HAVE_SCX_ENABLED
+#define HAVE_SCX_DISABLING
+#define HAVE_SCX_DISABLED
 #define HAVE_SCX_ENQ_WAKEUP
 #define HAVE_SCX_ENQ_HEAD
 #define HAVE_SCX_ENQ_CPU_SELECTED
@@ -45,8 +54,10 @@
 #define HAVE___SCX_ENQ_INTERNAL_MASK
 #define HAVE_SCX_ENQ_CLEAR_OPSS
 #define HAVE_SCX_ENQ_DSQ_PRIQ
+#define HAVE_SCX_ENQ_NESTED
 #define HAVE_SCX_TASK_DSQ_ON_PRIQ
 #define HAVE_SCX_TASK_QUEUED
+#define HAVE_SCX_TASK_IN_CUSTODY
 #define HAVE_SCX_TASK_RESET_RUNNABLE_AT
 #define HAVE_SCX_TASK_DEQD_FOR_SLEEP
 #define HAVE_SCX_TASK_STATE_SHIFT
@@ -55,6 +66,7 @@
 #define HAVE_SCX_TASK_CURSOR
 #define HAVE_SCX_ECODE_RSN_HOTPLUG
 #define HAVE_SCX_ECODE_ACT_RESTART
+#define HAVE_SCX_EFLAG_INITIALIZED
 #define HAVE_SCX_EXIT_NONE
 #define HAVE_SCX_EXIT_DONE
 #define HAVE_SCX_EXIT_UNREG
@@ -81,33 +93,33 @@
 #define HAVE_SCX_OPI_CPU_HOTPLUG_BEGIN
 #define HAVE_SCX_OPI_CPU_HOTPLUG_END
 #define HAVE_SCX_OPI_END
-#define HAVE_SCX_OPS_ENABLING
-#define HAVE_SCX_OPS_ENABLED
-#define HAVE_SCX_OPS_DISABLING
-#define HAVE_SCX_OPS_DISABLED
 #define HAVE_SCX_OPS_KEEP_BUILTIN_IDLE
 #define HAVE_SCX_OPS_ENQ_LAST
 #define HAVE_SCX_OPS_ENQ_EXITING
 #define HAVE_SCX_OPS_SWITCH_PARTIAL
 #define HAVE_SCX_OPS_ENQ_MIGRATION_DISABLED
 #define HAVE_SCX_OPS_ALLOW_QUEUED_WAKEUP
-#define HAVE_SCX_OPS_HAS_CGROUP_WEIGHT
+#define HAVE_SCX_OPS_BUILTIN_IDLE_PER_NODE
 #define HAVE_SCX_OPS_ALL_FLAGS
+#define HAVE___SCX_OPS_INTERNAL_MASK
+#define HAVE_SCX_OPS_HAS_CPU_PREEMPT
 #define HAVE_SCX_OPSS_NONE
 #define HAVE_SCX_OPSS_QUEUEING
 #define HAVE_SCX_OPSS_QUEUED
 #define HAVE_SCX_OPSS_DISPATCHING
 #define HAVE_SCX_OPSS_QSEQ_SHIFT
 #define HAVE_SCX_PICK_IDLE_CORE
+#define HAVE_SCX_PICK_IDLE_IN_NODE
 #define HAVE_SCX_OPS_NAME_LEN
 #define HAVE_SCX_SLICE_DFL
+#define HAVE_SCX_SLICE_BYPASS
 #define HAVE_SCX_SLICE_INF
 #define HAVE_SCX_RQ_ONLINE
 #define HAVE_SCX_RQ_CAN_STOP_TICK
-#define HAVE_SCX_RQ_BAL_PENDING
 #define HAVE_SCX_RQ_BAL_KEEP
 #define HAVE_SCX_RQ_BYPASSING
 #define HAVE_SCX_RQ_CLK_VALID
+#define HAVE_SCX_RQ_BAL_CB_PENDING
 #define HAVE_SCX_RQ_IN_WAKEUP
 #define HAVE_SCX_RQ_IN_BALANCE
 #define HAVE_SCX_TASK_NONE
diff --git a/tools/sched_ext/include/scx/enums.autogen.bpf.h b/tools/sched_ext/include/scx/enums.autogen.bpf.h
index 5da50f937684..2b9540f0b3d5 100644
--- a/tools/sched_ext/include/scx/enums.autogen.bpf.h
+++ b/tools/sched_ext/include/scx/enums.autogen.bpf.h
@@ -19,9 +19,6 @@ const volatile u64 __SCX_RQ_ONLINE __weak;
 const volatile u64 __SCX_RQ_CAN_STOP_TICK __weak;
 #define SCX_RQ_CAN_STOP_TICK __SCX_RQ_CAN_STOP_TICK
 
-const volatile u64 __SCX_RQ_BAL_PENDING __weak;
-#define SCX_RQ_BAL_PENDING __SCX_RQ_BAL_PENDING
-
 const volatile u64 __SCX_RQ_BAL_KEEP __weak;
 #define SCX_RQ_BAL_KEEP __SCX_RQ_BAL_KEEP
 
@@ -129,3 +126,4 @@ const volatile u64 __SCX_ENQ_DSQ_PRIQ __weak;
 
 const volatile u64 __SCX_DEQ_SCHED_CHANGE __weak;
 #define SCX_DEQ_SCHED_CHANGE __SCX_DEQ_SCHED_CHANGE
+
diff --git a/tools/sched_ext/include/scx/enums.autogen.h b/tools/sched_ext/include/scx/enums.autogen.h
index fc9a7a4d9dea..c615cb323f8b 100644
--- a/tools/sched_ext/include/scx/enums.autogen.h
+++ b/tools/sched_ext/include/scx/enums.autogen.h
@@ -10,7 +10,6 @@
 	SCX_ENUM_SET(skel, scx_public_consts, SCX_SLICE_INF); \
 	SCX_ENUM_SET(skel, scx_rq_flags, SCX_RQ_ONLINE); \
 	SCX_ENUM_SET(skel, scx_rq_flags, SCX_RQ_CAN_STOP_TICK); \
-	SCX_ENUM_SET(skel, scx_rq_flags, SCX_RQ_BAL_PENDING); \
 	SCX_ENUM_SET(skel, scx_rq_flags, SCX_RQ_BAL_KEEP); \
 	SCX_ENUM_SET(skel, scx_rq_flags, SCX_RQ_BYPASSING); \
 	SCX_ENUM_SET(skel, scx_rq_flags, SCX_RQ_CLK_VALID); \
@@ -46,5 +45,5 @@
 	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_LAST); \
 	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_CLEAR_OPSS); \
 	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_DSQ_PRIQ); \
-	SCX_ENUM_SET(skel, scx_deq_flags, SCX_DEQ_SCHED_CHANGE); \
+	SCX_ENUM_SET(skel, scx_enq_flags, SCX_DEQ_SCHED_CHANGE); \
 } while (0)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] tools/sched_ext: scx_sdt: Fix BPF verifier rejection on older LLVMs
  2026-03-06  7:31 [PATCH 0/3] sched_ext cleanup and toolchain compatibility fixes Zhao Mengmeng
  2026-03-06  7:31 ` [PATCH 1/3] sched_ext: remove SCX_OPS_HAS_CGROUP_WEIGHT Zhao Mengmeng
  2026-03-06  7:31 ` [PATCH 2/3] tools/sched_ext: Update scx enum autogens Zhao Mengmeng
@ 2026-03-06  7:31 ` Zhao Mengmeng
  2 siblings, 0 replies; 6+ messages in thread
From: Zhao Mengmeng @ 2026-03-06  7:31 UTC (permalink / raw)
  To: tj, void, arighi, changwoo, nathan, nick.desaulniers+lkml, morbo,
	justinstitt, emil
  Cc: sched-ext, linux-kernel, bpf, llvm, zhaomengmeng

From: Zhao Mengmeng <zhaomengmeng@kylinos.cn>

Under Clang 17/18, when running scx_sdt scheduler, it fails with:

libbpf: prog 'sdt_init_task': BPF program load failed: -EACCES
libbpf: prog 'sdt_init_task': -- BEGIN PROG LOAD LOG --
...
; desc = desc_find_empty(alloc->root, &idx); @ scx_sdt.bpf.c:479
43: (79) r8 = *(u64 *)(r6 +32)        ; frame1: R6=map_value(map=scx_sdt.bss,ks=4,vs=200,off=120) R8=scalar()
; for (level = zero; level < SDT_TASK_LEVELS && can_loop; level++) { @ scx_sdt.bpf.c:407
44: (e5) may_goto pc+51
; idx |= pos; @ scx_sdt.bpf.c:418
96: (bf) r7 = r2                      ; frame1: R2=0 R7=0
97: (bf) r1 = r10                     ; frame1: R1=fp0 R10=fp0
;  @ scx_sdt.bpf.c:0
98: (07) r1 += -56                    ; frame1: R1=fp-56
; bpf_for(u, 0, SDT_TASK_LEVELS) { @ scx_sdt.bpf.c:447
99: (b4) w2 = 0                       ; frame1: R2=0
100: (b4) w3 = 3                      ; frame1: R3=3
101: (85) call bpf_iter_num_new#82234         ; frame1: R0=scalar() fp-56=iter_num(ref_id=2,state=active,depth=0)
102: (18) r9 = 0x1ffffffffffffff8     ; frame1: R9=0x1ffffffffffffff8
104: (bf) r1 = r10                    ; frame1: R1=fp0 R10=fp0
;  @ scx_sdt.bpf.c:0
105: (07) r1 += -56                   ; frame1: R1=fp-56
; bpf_for(u, 0, SDT_TASK_LEVELS) { @ scx_sdt.bpf.c:447
106: (85) call bpf_iter_num_next#82235        ; frame1: R0=0 fp-56=iter_num(ref_id=2,state=drained,depth=0)
107: (15) if r0 == 0x0 goto pc+29     ; frame1: R0=0
; if (tmp->nr_free > 0) @ scx_sdt.bpf.c:456
137: (bf) r1 = r10                    ; frame1: R1=fp0 R10=fp0
; bpf_for(u, 0, SDT_TASK_LEVELS) { @ scx_sdt.bpf.c:447
138: (07) r1 += -56                   ; frame1: R1=fp-56
139: (85) call bpf_iter_num_destroy#82232     ; frame1:
140: (b7) r9 = 0                      ; frame1: R9=0
; if (unlikely(desc == NULL)) { @ scx_sdt.bpf.c:480
141: (15) if r8 == 0x0 goto pc+15     ; frame1: R8=scalar(umin=1)
; chunk = desc->chunk; @ scx_sdt.bpf.c:485
142: (79) r4 = *(u64 *)(r8 +72)
R8 invalid mem access 'scalar'

The reason is these older compilers lacks native support for
__BPF_FEATURE_ADDR_SPACE_CAST, __arena macro is defined as empty.

Fix it by adding cast_kern when dereferencing variables with __arena tag.

Signed-off-by: Zhao Mengmeng <zhaomengmeng@kylinos.cn>
---
 tools/sched_ext/scx_sdt.bpf.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/tools/sched_ext/scx_sdt.bpf.c b/tools/sched_ext/scx_sdt.bpf.c
index 31b09958e8d5..caacc55bd7a5 100644
--- a/tools/sched_ext/scx_sdt.bpf.c
+++ b/tools/sched_ext/scx_sdt.bpf.c
@@ -148,6 +148,7 @@ static sdt_desc_t *scx_alloc_chunk(void)
 
 	out = desc;
 
+	cast_kern(desc);
 	desc->nr_free = SDT_TASK_ENTS_PER_CHUNK;
 	desc->chunk = chunk;
 
@@ -244,6 +245,7 @@ int mark_nodes_avail(sdt_desc_t *lv_desc[SDT_TASK_LEVELS], __u64 lv_pos[SDT_TASK
 		/* Only propagate upwards if we are the parent's only free chunk. */
 		desc = lv_desc[level];
 
+		cast_kern(desc);
 		ret = set_idx_state(desc, lv_pos[level], false);
 		if (unlikely(ret != 0))
 			return ret;
@@ -298,20 +300,26 @@ int scx_alloc_free_idx(struct scx_allocator *alloc, __u64 idx)
 		if (level == SDT_TASK_LEVELS - 1)
 			break;
 
+		cast_kern(desc);
 		chunk = desc->chunk;
 
+		cast_kern(chunk);
 		desc_children = (sdt_desc_t * __arena *)chunk->descs;
+		cast_kern(desc_children);
 		desc = desc_children[pos];
 
 		if (unlikely(!desc))
 			return -EINVAL;
 	}
 
+	cast_kern(desc);
 	chunk = desc->chunk;
 
 	pos = idx & mask;
+	cast_kern(chunk);
 	data = chunk->data[pos];
 	if (likely(data)) {
+		cast_kern(data);
 		*data = (struct sdt_data) {
 			.tid.genn = data->tid.genn + 1,
 		};
@@ -378,6 +386,7 @@ __u64 chunk_find_empty(sdt_desc_t __arg_arena *desc)
 	__u64 freeslots;
 	__u64 i;
 
+	cast_kern(desc);
 	for (i = 0; i < SDT_TASK_CHUNK_BITMAP_U64S; i++) {
 		freeslots = ~desc->allocated[i];
 		if (freeslots == (__u64)0)
@@ -426,9 +435,12 @@ static sdt_desc_t * desc_find_empty(sdt_desc_t *desc, __u64 *idxp)
 			break;
 
 		/* Allocate an internal node if necessary. */
+		cast_kern(desc);
 		chunk = desc->chunk;
+		cast_kern(chunk);
 		desc_children = (sdt_desc_t * __arena *)chunk->descs;
 
+		cast_kern(desc_children);
 		desc = desc_children[pos];
 		if (!desc) {
 			desc = scx_alloc_chunk();
@@ -448,6 +460,7 @@ static sdt_desc_t * desc_find_empty(sdt_desc_t *desc, __u64 *idxp)
 		level = SDT_TASK_LEVELS - 1 - u;
 		tmp = lv_desc[level];
 
+		cast_kern(tmp);
 		ret = set_idx_state(tmp, lv_pos[level], true);
 		if (ret != 0)
 			break;
@@ -482,10 +495,12 @@ void __arena *scx_alloc(struct scx_allocator *alloc)
 		return NULL;
 	}
 
+	cast_kern(desc);
 	chunk = desc->chunk;
 
 	/* Populate the leaf node if necessary. */
 	pos = idx & (SDT_TASK_ENTS_PER_CHUNK - 1);
+	cast_kern(chunk);
 	data = chunk->data[pos];
 	if (!data) {
 		data = scx_alloc_from_pool(&alloc->pool);
@@ -503,10 +518,12 @@ void __arena *scx_alloc(struct scx_allocator *alloc)
 	alloc_stats.alloc_ops += 1;
 	alloc_stats.active_allocs += 1;
 
+	cast_kern(data);
 	data->tid.idx = idx;
 
 	bpf_spin_unlock(&alloc_lock);
 
+	cast_user(data);
 	return data;
 }
 
@@ -544,9 +561,10 @@ void __arena *scx_task_alloc(struct task_struct *p)
 	if (unlikely(!data))
 		return NULL;
 
+	mval->data = data;
+	cast_kern(data);
 	mval->tid = data->tid;
 	mval->tptr = (__u64) p;
-	mval->data = data;
 
 	return (void __arena *)data->payload;
 }
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/3] tools/sched_ext: Update scx enum autogens
  2026-03-06  7:31 ` [PATCH 2/3] tools/sched_ext: Update scx enum autogens Zhao Mengmeng
@ 2026-03-06 14:40   ` Andrea Righi
  2026-03-07  1:54     ` Zhao mengmeng
  0 siblings, 1 reply; 6+ messages in thread
From: Andrea Righi @ 2026-03-06 14:40 UTC (permalink / raw)
  To: Zhao Mengmeng
  Cc: tj, void, changwoo, nathan, nick.desaulniers+lkml, morbo,
	justinstitt, emil, sched-ext, linux-kernel, bpf, llvm,
	zhaomengmeng

On Fri, Mar 06, 2026 at 03:31:09PM +0800, Zhao Mengmeng wrote:
> From: Zhao Mengmeng <zhaomengmeng@kylinos.cn>
...
> @@ -46,5 +45,5 @@
>  	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_LAST); \
>  	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_CLEAR_OPSS); \
>  	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_DSQ_PRIQ); \
> -	SCX_ENUM_SET(skel, scx_deq_flags, SCX_DEQ_SCHED_CHANGE); \
> +	SCX_ENUM_SET(skel, scx_enq_flags, SCX_DEQ_SCHED_CHANGE); \

This is wrong, SCX_DEQ_SCHED_CHANGE is moved from scx_deq_flags to
scx_enq_flags.

-Andrea

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/3] tools/sched_ext: Update scx enum autogens
  2026-03-06 14:40   ` Andrea Righi
@ 2026-03-07  1:54     ` Zhao mengmeng
  0 siblings, 0 replies; 6+ messages in thread
From: Zhao mengmeng @ 2026-03-07  1:54 UTC (permalink / raw)
  To: Andrea Righi
  Cc: tj, void, changwoo, nathan, nick.desaulniers+lkml, morbo,
	justinstitt, emil, sched-ext, linux-kernel, bpf, llvm,
	zhaomengmeng

On March 6, 2026 10:40:18 PM GMT+08:00, Andrea Righi <arighi@nvidia.com> wrote:
>On Fri, Mar 06, 2026 at 03:31:09PM +0800, Zhao Mengmeng wrote:
>> From: Zhao Mengmeng <zhaomengmeng@kylinos.cn>
>...
>> @@ -46,5 +45,5 @@
>>  	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_LAST); \
>>  	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_CLEAR_OPSS); \
>>  	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_DSQ_PRIQ); \
>> -	SCX_ENUM_SET(skel, scx_deq_flags, SCX_DEQ_SCHED_CHANGE); \
>> +	SCX_ENUM_SET(skel, scx_enq_flags, SCX_DEQ_SCHED_CHANGE); \
>
>This is wrong, SCX_DEQ_SCHED_CHANGE is moved from scx_deq_flags to
>scx_enq_flags.
>
>-Andrea

Thanks a lot.  I will send a v2 fix.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-03-07  1:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-06  7:31 [PATCH 0/3] sched_ext cleanup and toolchain compatibility fixes Zhao Mengmeng
2026-03-06  7:31 ` [PATCH 1/3] sched_ext: remove SCX_OPS_HAS_CGROUP_WEIGHT Zhao Mengmeng
2026-03-06  7:31 ` [PATCH 2/3] tools/sched_ext: Update scx enum autogens Zhao Mengmeng
2026-03-06 14:40   ` Andrea Righi
2026-03-07  1:54     ` Zhao mengmeng
2026-03-06  7:31 ` [PATCH 3/3] tools/sched_ext: scx_sdt: Fix BPF verifier rejection on older LLVMs Zhao Mengmeng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox