mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCHSET sched_ext/for-7.5] sched_ext: Sync tools headers with scx and fix unsigned enum reads
@ 2026-10-23 23:20 Tejun Heo
  2026-10-23 23:20 ` [PATCH 1/4] sched_ext: Don't sign-extend unsigned enums in __COMPAT_read_enum() Tejun Heo
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Tejun Heo @ 2026-10-23 23:20 UTC (permalink / raw)
  To: sched-ext
  Cc: David Vernet, Andrea Righi, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel, Tejun Heo

Hello,

This patchset fixes __COMPAT_read_enum() sign-extending unsigned 4-byte
enums, which made SCX_RESCUE_DISABLE read as 0xffffffffffffffff, syncs the
shared headers in tools/sched_ext/include with the scx repo, and drops the
enum lookup table entries for enumerators the kernel no longer has. The scx
side is https://github.com/sched-ext/scx/pull/3930, merged, and
https://github.com/sched-ext/scx/pull/3932.

With both applied, the shared headers in tools/sched_ext/include are
identical to scx's except the two generated tables, enum_defs.autogen.h and
enums_abi.autogen.h, which each side regenerates from its own vmlinux.h.

Based on sched_ext/for-7.5 (dd3b1d9be27c).

This patchset contains the following 4 patches.

 0001 sched_ext: Don't sign-extend unsigned enums in __COMPAT_read_enum()
 0002 sched_ext: Sync tools autogen enum lookup tables from the scx repo
 0003 sched_ext: Sync common and compat headers from the scx repo
 0004 sched_ext: Drop stale entries from the enum lookup tables

The patchset is also available in the following git branch:

 git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git enums-sync

diffstat follows. Thanks.

 tools/sched_ext/include/scx/bpf_arena_common.bpf.h | 23 +++++++++++++++++++++-
 tools/sched_ext/include/scx/common.bpf.h           |  9 +++++++++
 tools/sched_ext/include/scx/compat.bpf.h           | 16 +++++++--------
 tools/sched_ext/include/scx/compat.h               |  6 +++++-
 tools/sched_ext/include/scx/enums.autogen.bpf.h    | 18 +++--------------
 tools/sched_ext/include/scx/enums.autogen.h        |  6 +-----
 tools/sched_ext/scx_flatcg.bpf.c                   |  5 -----
 7 files changed, 48 insertions(+), 35 deletions(-)

--
tejun

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

* [PATCH 1/4] sched_ext: Don't sign-extend unsigned enums in __COMPAT_read_enum()
  2026-10-23 23:20 [PATCHSET sched_ext/for-7.5] sched_ext: Sync tools headers with scx and fix unsigned enum reads Tejun Heo
@ 2026-10-23 23:20 ` Tejun Heo
  2026-10-23 23:21 ` [PATCH 2/4] sched_ext: Sync tools autogen enum lookup tables from the scx repo Tejun Heo
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Tejun Heo @ 2026-10-23 23:20 UTC (permalink / raw)
  To: sched-ext
  Cc: David Vernet, Andrea Righi, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel, Tejun Heo

__COMPAT_read_enum() looks an enumerator up in the running kernel's BTF. For
a 4-byte enum, it assigns struct btf_enum.val, an __s32, to the u64 result,
which sign-extends. BTF records the enum's signedness in the type's kflag.
The code ignores it, so an unsigned enumerator with bit 31 set is
sign-extended too.

b1c2a6b0d90d ("sched_ext: scx_qmap: Read SCX_RESCUE_DISABLE through the enum
lookup tables") added SCX_RESCUE_DISABLE to the enum lookup tables. It is
U32_MAX in enum scx_consts and the only such enumerator in the tables. BPF
code sees it as 0xffffffffffffffff instead of 0xffffffff, so a comparison
against a u32 holding the real value never matches.

scx_qmap, its only user, narrows the value to u32 in userspace and is
unaffected.

Sign-extend only when the kflag says the enum is signed and zero-extend
otherwise. A signed enum keeps the sign extension, which is what C gives
when the enumerator converts to u64. SCX_TASK_CURSOR, 1 << 31 in a signed
enum, still reads 0xffffffff80000000. Verified with a probe against a built
kernel's BTF.

Signed-off-by: Tejun Heo <tj@kernel.org>
---
 tools/sched_ext/include/scx/compat.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/sched_ext/include/scx/compat.h b/tools/sched_ext/include/scx/compat.h
index 07fb55e63c57..c8d7280ceffa 100644
--- a/tools/sched_ext/include/scx/compat.h
+++ b/tools/sched_ext/include/scx/compat.h
@@ -143,7 +143,11 @@ static inline bool __COMPAT_read_enum(const char *type, const char *name, u64 *v
 				if (t->size == 8 && !strncmp(type, "scx_", 4))
 					return __COMPAT_recover_truncated_enum64(type, name,
 										 (u32)e[i].val, v);
-				*v = e[i].val;
+				/* kflag marks a signed enum */
+				if (btf_kflag(t))
+					*v = (s64)e[i].val;
+				else
+					*v = (u32)e[i].val;
 				return true;
 			}
 		}
-- 
2.56.0


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

* [PATCH 2/4] sched_ext: Sync tools autogen enum lookup tables from the scx repo
  2026-10-23 23:20 [PATCHSET sched_ext/for-7.5] sched_ext: Sync tools headers with scx and fix unsigned enum reads Tejun Heo
  2026-10-23 23:20 ` [PATCH 1/4] sched_ext: Don't sign-extend unsigned enums in __COMPAT_read_enum() Tejun Heo
@ 2026-10-23 23:21 ` Tejun Heo
  2026-10-23 23:21 ` [PATCH 3/4] sched_ext: Sync common and compat headers " Tejun Heo
  2026-10-23 23:21 ` [PATCH 4/4] sched_ext: Drop stale entries from the enum lookup tables Tejun Heo
  3 siblings, 0 replies; 5+ messages in thread
From: Tejun Heo @ 2026-10-23 23:21 UTC (permalink / raw)
  To: sched-ext
  Cc: David Vernet, Andrea Righi, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel, Tejun Heo

Sync the two enum lookup tables, enums.autogen.h and enums.autogen.bpf.h,
with the scx repo at a094b6ec68c9 ("scheds/include: Sync with kernel
sched_ext/for-7.5 (b1c2a6b0d90d)").

The kernel copy gains SCX_ENQ_CPU_SELECTED, which scx added in f2fd24198edc
("scheds/include: Add SCX_ENQ_CPU_SELECTED to the enum tables"). The flag's
value changed in 376f8963bbda ("sched: Re-arrange the {EN,DE}QUEUE flags"),
so BPF code should read it from the running kernel.

ebf993609d70 ("sched_ext: Regenerate tools autogen enum headers")
regenerated the other two tables, enum_defs.autogen.h and
enums_abi.autogen.h, from this tree's vmlinux.h. They are newer than scx's
copies and stay as they are.

Signed-off-by: Tejun Heo <tj@kernel.org>
---
 tools/sched_ext/include/scx/enums.autogen.bpf.h | 3 +++
 tools/sched_ext/include/scx/enums.autogen.h     | 1 +
 2 files changed, 4 insertions(+)

diff --git a/tools/sched_ext/include/scx/enums.autogen.bpf.h b/tools/sched_ext/include/scx/enums.autogen.bpf.h
index d0c37018659e..db23be9cc88b 100644
--- a/tools/sched_ext/include/scx/enums.autogen.bpf.h
+++ b/tools/sched_ext/include/scx/enums.autogen.bpf.h
@@ -130,6 +130,9 @@ const volatile u64 __SCX_ENQ_WAKEUP __weak;
 const volatile u64 __SCX_ENQ_HEAD __weak;
 #define SCX_ENQ_HEAD __SCX_ENQ_HEAD
 
+const volatile u64 __SCX_ENQ_CPU_SELECTED __weak;
+#define SCX_ENQ_CPU_SELECTED __SCX_ENQ_CPU_SELECTED
+
 const volatile u64 __SCX_ENQ_PREEMPT __weak;
 #define SCX_ENQ_PREEMPT __SCX_ENQ_PREEMPT
 
diff --git a/tools/sched_ext/include/scx/enums.autogen.h b/tools/sched_ext/include/scx/enums.autogen.h
index c4a7260f0983..369f8d88c7db 100644
--- a/tools/sched_ext/include/scx/enums.autogen.h
+++ b/tools/sched_ext/include/scx/enums.autogen.h
@@ -48,6 +48,7 @@
 	SCX_ENUM_SET(skel, scx_kick_flags, SCX_KICK_ALL_FLAGS); \
 	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_WAKEUP); \
 	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_HEAD); \
+	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_CPU_SELECTED); \
 	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_PREEMPT); \
 	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_PREEMPT_LAZY); \
 	SCX_ENUM_SET(skel, scx_enq_flags, SCX_ENQ_IMMED); \
-- 
2.56.0


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

* [PATCH 3/4] sched_ext: Sync common and compat headers from the scx repo
  2026-10-23 23:20 [PATCHSET sched_ext/for-7.5] sched_ext: Sync tools headers with scx and fix unsigned enum reads Tejun Heo
  2026-10-23 23:20 ` [PATCH 1/4] sched_ext: Don't sign-extend unsigned enums in __COMPAT_read_enum() Tejun Heo
  2026-10-23 23:21 ` [PATCH 2/4] sched_ext: Sync tools autogen enum lookup tables from the scx repo Tejun Heo
@ 2026-10-23 23:21 ` Tejun Heo
  2026-10-23 23:21 ` [PATCH 4/4] sched_ext: Drop stale entries from the enum lookup tables Tejun Heo
  3 siblings, 0 replies; 5+ messages in thread
From: Tejun Heo @ 2026-10-23 23:21 UTC (permalink / raw)
  To: sched-ext
  Cc: David Vernet, Andrea Righi, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel, Tejun Heo

Sync common.bpf.h, compat.bpf.h and bpf_arena_common.bpf.h with the scx repo
at a094b6ec68c9 ("scheds/include: Sync with kernel sched_ext/for-7.5
(b1c2a6b0d90d)"), which accumulated the following since the last sync:

- common.bpf.h gained div_round_up(), the bpf_local_irq_save() and
  bpf_local_irq_restore() declarations for scx's irqsave spinlock guard, and
  the bpf_call_rcu() declaration, whose bpf_rcu_callback_t came into for-7.5
  with the bpf-next-7.4 merge.

- The scx_bpf_task_set_slice() and scx_bpf_task_set_dsq_vtime() compat
  wrappers return the kfunc's bool instead of dropping it.

- bpf_arena_common.bpf.h has an opt-in arena mode, SCX_ARENA_SCALAR, for
  loaders that set BPF_F_ARENA_SCALAR.

scx_flatcg.bpf.c defined a static div_round_up() of its own, which the macro
of the same name now breaks. Drop it, as the macro computes the same value.

Signed-off-by: Tejun Heo <tj@kernel.org>
---
 .../include/scx/bpf_arena_common.bpf.h        | 23 ++++++++++++++++++-
 tools/sched_ext/include/scx/common.bpf.h      |  9 ++++++++
 tools/sched_ext/include/scx/compat.bpf.h      | 16 ++++++-------
 tools/sched_ext/scx_flatcg.bpf.c              |  5 ----
 4 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/tools/sched_ext/include/scx/bpf_arena_common.bpf.h b/tools/sched_ext/include/scx/bpf_arena_common.bpf.h
index 2043d66940ea..fa6dd9c9c295 100644
--- a/tools/sched_ext/include/scx/bpf_arena_common.bpf.h
+++ b/tools/sched_ext/include/scx/bpf_arena_common.bpf.h
@@ -14,7 +14,28 @@
  */
 #endif
 
-#if defined(__BPF_FEATURE_ADDR_SPACE_CAST) && !defined(BPF_ARENA_FORCE_ASM)
+#if defined(SCX_ARENA_SCALAR)
+/*
+ * Arena pointers without address_space(1).
+ *
+ * Under BPF_F_ARENA_SCALAR a load or store through a plain scalar is an arena
+ * access: the JIT adds the arena base to the address's low 32 bits. A pointer
+ * loaded from arena memory is a scalar to the verifier anyway, so the tag and
+ * the casts LLVM emits for it can go, which makes the code a lot tidier.
+ *
+ * On a global, address_space(1) does two things: it places the variable in
+ * .addr_space.1, which libbpf maps into the arena, and it makes LLVM cast every
+ * access to it. SEC(".addr_space.1") does only the first, which is all that is
+ * still needed. An object that lives in the arena is therefore declared
+ * __arena_global, since __arena on it now places nothing.
+ */
+#define __arena
+#define __arena_global SEC(".addr_space.1")
+#define cast_kern(ptr)
+#define cast_user(ptr)
+/* the loader keys BPF_F_ARENA_SCALAR on this marker */
+const volatile bool __SCX_MARKER_arena_scalar __weak = true;
+#elif defined(__BPF_FEATURE_ADDR_SPACE_CAST) && !defined(BPF_ARENA_FORCE_ASM)
 #ifndef __arena
 #define __arena __attribute__((address_space(1)))
 #endif
diff --git a/tools/sched_ext/include/scx/common.bpf.h b/tools/sched_ext/include/scx/common.bpf.h
index 9376d5704a47..4e7836526684 100644
--- a/tools/sched_ext/include/scx/common.bpf.h
+++ b/tools/sched_ext/include/scx/common.bpf.h
@@ -29,6 +29,8 @@
 #include "bpf_arena_common.bpf.h"
 #include "const-defs.h"
 
+#define div_round_up(a, b) (((a) + (b) - 1) / (b))
+
 #define PF_IDLE				0x00000002	/* I am an IDLE thread */
 #define PF_IO_WORKER			0x00000010	/* Task is an IO worker */
 #define PF_WQ_WORKER			0x00000020	/* I'm a workqueue worker */
@@ -127,6 +129,9 @@ void scx_bpf_sub_revoke(u64 cgroup_id, u64 caps, const struct scx_cmask __arena
 s32 scx_bpf_sub_caps(u64 cgroup_id, u64 caps, struct scx_cmask __arena *out__arena) __ksym __weak;
 s32 scx_bpf_sub_kill_bstr(u64 cgroup_id, char *fmt, unsigned long long *data, u32 data__sz) __ksym __weak;
 
+int bpf_call_rcu(struct bpf_rcu_head *rh, void *map__const_map,
+		 bpf_rcu_callback_t callback) __ksym __weak;
+
 /*
  * Use the following as @it__iter when calling scx_bpf_dsq_move[_vtime]() from
  * within bpf_for_each() loops.
@@ -645,6 +650,10 @@ static inline bool is_migration_disabled(const struct task_struct *p)
 void bpf_rcu_read_lock(void) __ksym;
 void bpf_rcu_read_unlock(void) __ksym;
 
+/* irq */
+void bpf_local_irq_save(unsigned long *flags) __ksym __weak;
+void bpf_local_irq_restore(unsigned long *flags) __ksym __weak;
+
 /* resilient qspinlock */
 int bpf_res_spin_lock(struct bpf_res_spin_lock *lock) __ksym __weak;
 void bpf_res_spin_unlock(struct bpf_res_spin_lock *lock) __ksym __weak;
diff --git a/tools/sched_ext/include/scx/compat.bpf.h b/tools/sched_ext/include/scx/compat.bpf.h
index 254882bd8ce6..3520a749f8ce 100644
--- a/tools/sched_ext/include/scx/compat.bpf.h
+++ b/tools/sched_ext/include/scx/compat.bpf.h
@@ -462,20 +462,20 @@ scx_bpf_dsq_insert(struct task_struct *p, u64 dsq_id, u64 slice, u64 enq_flags)
 bool scx_bpf_task_set_slice___new(struct task_struct *p, u64 slice) __ksym __weak;
 bool scx_bpf_task_set_dsq_vtime___new(struct task_struct *p, u64 vtime) __ksym __weak;
 
-static inline void scx_bpf_task_set_slice(struct task_struct *p, u64 slice)
+static inline bool scx_bpf_task_set_slice(struct task_struct *p, u64 slice)
 {
 	if (bpf_ksym_exists(scx_bpf_task_set_slice___new))
-		scx_bpf_task_set_slice___new(p, slice);
-	else
-		p->scx.slice = slice;
+		return scx_bpf_task_set_slice___new(p, slice);
+	p->scx.slice = slice;
+	return true;
 }
 
-static inline void scx_bpf_task_set_dsq_vtime(struct task_struct *p, u64 vtime)
+static inline bool scx_bpf_task_set_dsq_vtime(struct task_struct *p, u64 vtime)
 {
 	if (bpf_ksym_exists(scx_bpf_task_set_dsq_vtime___new))
-		scx_bpf_task_set_dsq_vtime___new(p, vtime);
-	else
-		p->scx.dsq_vtime = vtime;
+		return scx_bpf_task_set_dsq_vtime___new(p, vtime);
+	p->scx.dsq_vtime = vtime;
+	return true;
 }
 
 /* v7.4: Add scx_bpf_task_set_lazy_resched(). */
diff --git a/tools/sched_ext/scx_flatcg.bpf.c b/tools/sched_ext/scx_flatcg.bpf.c
index 5e6abd0bccb3..1d168d492203 100644
--- a/tools/sched_ext/scx_flatcg.bpf.c
+++ b/tools/sched_ext/scx_flatcg.bpf.c
@@ -132,11 +132,6 @@ struct {
 /* gets inc'd on weight tree changes to expire the cached hweights */
 u64 hweight_gen = 1;
 
-static u64 div_round_up(u64 dividend, u64 divisor)
-{
-	return (dividend + divisor - 1) / divisor;
-}
-
 static bool cgv_node_less(struct bpf_rb_node *a, const struct bpf_rb_node *b)
 {
 	struct cgv_node *cgc_a, *cgc_b;
-- 
2.56.0


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

* [PATCH 4/4] sched_ext: Drop stale entries from the enum lookup tables
  2026-10-23 23:20 [PATCHSET sched_ext/for-7.5] sched_ext: Sync tools headers with scx and fix unsigned enum reads Tejun Heo
                   ` (2 preceding siblings ...)
  2026-10-23 23:21 ` [PATCH 3/4] sched_ext: Sync common and compat headers " Tejun Heo
@ 2026-10-23 23:21 ` Tejun Heo
  3 siblings, 0 replies; 5+ messages in thread
From: Tejun Heo @ 2026-10-23 23:21 UTC (permalink / raw)
  To: sched-ext
  Cc: David Vernet, Andrea Righi, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel, Tejun Heo

The enum lookup tables, enums.autogen.h and enums.autogen.bpf.h, are
maintained by hand despite their names. Five entries name enums the kernel
no longer has. Their lookups in the running kernel's BTF store 0, and
nothing in tools/ uses them. Drop them. No behavior change.

Suggested-by: Andrea Righi <arighi@nvidia.com>
Link: https://lore.kernel.org/all/atr0I5EF7hmM_m7Y@gpd4/
Signed-off-by: Tejun Heo <tj@kernel.org>
---
 tools/sched_ext/include/scx/enums.autogen.bpf.h | 15 ---------------
 tools/sched_ext/include/scx/enums.autogen.h     |  5 -----
 2 files changed, 20 deletions(-)

diff --git a/tools/sched_ext/include/scx/enums.autogen.bpf.h b/tools/sched_ext/include/scx/enums.autogen.bpf.h
index db23be9cc88b..8c9ecad561c9 100644
--- a/tools/sched_ext/include/scx/enums.autogen.bpf.h
+++ b/tools/sched_ext/include/scx/enums.autogen.bpf.h
@@ -22,24 +22,12 @@ 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
-
-const volatile u64 __SCX_RQ_BYPASSING __weak;
-#define SCX_RQ_BYPASSING __SCX_RQ_BYPASSING
-
 const volatile u64 __SCX_RQ_CLK_VALID __weak;
 #define SCX_RQ_CLK_VALID __SCX_RQ_CLK_VALID
 
 const volatile u64 __SCX_RQ_IN_WAKEUP __weak;
 #define SCX_RQ_IN_WAKEUP __SCX_RQ_IN_WAKEUP
 
-const volatile u64 __SCX_RQ_IN_BALANCE __weak;
-#define SCX_RQ_IN_BALANCE __SCX_RQ_IN_BALANCE
-
 const volatile u64 __SCX_RQ_IN_DISPATCH __weak;
 #define SCX_RQ_IN_DISPATCH __SCX_RQ_IN_DISPATCH
 
@@ -103,9 +91,6 @@ const volatile u64 __SCX_TASK_READY __weak;
 const volatile u64 __SCX_TASK_ENABLED __weak;
 #define SCX_TASK_ENABLED __SCX_TASK_ENABLED
 
-const volatile u64 __SCX_TASK_NR_STATES __weak;
-#define SCX_TASK_NR_STATES __SCX_TASK_NR_STATES
-
 const volatile u64 __SCX_TASK_DSQ_ON_PRIQ __weak;
 #define SCX_TASK_DSQ_ON_PRIQ __SCX_TASK_DSQ_ON_PRIQ
 
diff --git a/tools/sched_ext/include/scx/enums.autogen.h b/tools/sched_ext/include/scx/enums.autogen.h
index 369f8d88c7db..1df2b8a505ff 100644
--- a/tools/sched_ext/include/scx/enums.autogen.h
+++ b/tools/sched_ext/include/scx/enums.autogen.h
@@ -12,12 +12,8 @@
 	SCX_ENUM_SET(skel, scx_consts, SCX_RESCUE_DISABLE); \
 	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); \
 	SCX_ENUM_SET(skel, scx_rq_flags, SCX_RQ_IN_WAKEUP); \
-	SCX_ENUM_SET(skel, scx_rq_flags, SCX_RQ_IN_BALANCE); \
 	SCX_ENUM_SET(skel, scx_rq_flags, SCX_RQ_IN_DISPATCH); \
 	SCX_ENUM_SET(skel, scx_dsq_id_flags, SCX_DSQ_FLAG_BUILTIN); \
 	SCX_ENUM_SET(skel, scx_dsq_id_flags, SCX_DSQ_FLAG_LOCAL_ON); \
@@ -39,7 +35,6 @@
 	SCX_ENUM_SET(skel, scx_ent_flags, SCX_TASK_INIT); \
 	SCX_ENUM_SET(skel, scx_ent_flags, SCX_TASK_READY); \
 	SCX_ENUM_SET(skel, scx_ent_flags, SCX_TASK_ENABLED); \
-	SCX_ENUM_SET(skel, scx_ent_flags, SCX_TASK_NR_STATES); \
 	SCX_ENUM_SET(skel, scx_ent_dsq_flags, SCX_TASK_DSQ_ON_PRIQ); \
 	SCX_ENUM_SET(skel, scx_kick_flags, SCX_KICK_IDLE); \
 	SCX_ENUM_SET(skel, scx_kick_flags, SCX_KICK_PREEMPT); \
-- 
2.56.0


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

end of thread, other threads:[~2026-10-23 23:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-23 23:20 [PATCHSET sched_ext/for-7.5] sched_ext: Sync tools headers with scx and fix unsigned enum reads Tejun Heo
2026-10-23 23:20 ` [PATCH 1/4] sched_ext: Don't sign-extend unsigned enums in __COMPAT_read_enum() Tejun Heo
2026-10-23 23:21 ` [PATCH 2/4] sched_ext: Sync tools autogen enum lookup tables from the scx repo Tejun Heo
2026-10-23 23:21 ` [PATCH 3/4] sched_ext: Sync common and compat headers " Tejun Heo
2026-10-23 23:21 ` [PATCH 4/4] sched_ext: Drop stale entries from the enum lookup tables Tejun Heo

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

all inboxes | Powered by JetHome®