mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCHSET sched_ext/for-7.5] sched_ext: Regenerate the enum tables and drop scx_qmap's last compat lookup
@ 2026-10-23  0:03 Tejun Heo
  2026-10-23  0:03 ` [PATCH 1/2] sched_ext: Regenerate tools autogen enum headers Tejun Heo
  2026-10-23  0:03 ` [PATCH 2/2] sched_ext: scx_qmap: Read SCX_RESCUE_DISABLE through the enum lookup tables Tejun Heo
  0 siblings, 2 replies; 5+ messages in thread
From: Tejun Heo @ 2026-10-23  0:03 UTC (permalink / raw)
  To: sched-ext
  Cc: David Vernet, Andrea Righi, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel, Tejun Heo

Hello,

This follows up on the scx_qmap compat removal [1]. Andrea pointed out that
788b494fab1c ("sched_ext: scx_qmap: Drop the compat code") left one compat
lookup behind: the -B 0 case reads SCX_RESCUE_DISABLE with
__COMPAT_ENUM_OR_ZERO(). Userspace can read the enumerator only from BTF as
it is in the kernel-internal enum scx_consts, and the enum lookup tables
don't list it.

The first patch regenerates the two generated enum tables for the enums
added since the last regeneration. The second adds SCX_RESCUE_DISABLE to the
lookup tables and drops the compat lookup.

Verified that -B 0 disables rescue and that the default stays in place
without it.

[1] https://lore.kernel.org/r/20261019213221.2919481-1-tj@kernel.org

Based on sched_ext/for-7.5 (bbd3a3288035).

This patchset contains the following 2 patches.

 0001 sched_ext: Regenerate tools autogen enum headers
 0002 sched_ext: scx_qmap: Read SCX_RESCUE_DISABLE through 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 qmap-enums

diffstat follows. Thanks.

 tools/sched_ext/include/scx/enum_defs.autogen.h | 11 +++++++++++
 tools/sched_ext/include/scx/enums.autogen.bpf.h |  3 +++
 tools/sched_ext/include/scx/enums.autogen.h     |  1 +
 tools/sched_ext/include/scx/enums_abi.autogen.h | 21 ++++++++++++++++-----
 tools/sched_ext/scx_qmap.c                      |  2 +-
 5 files changed, 32 insertions(+), 6 deletions(-)

--
tejun

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

* [PATCH 1/2] sched_ext: Regenerate tools autogen enum headers
  2026-10-23  0:03 [PATCHSET sched_ext/for-7.5] sched_ext: Regenerate the enum tables and drop scx_qmap's last compat lookup Tejun Heo
@ 2026-10-23  0:03 ` Tejun Heo
  2026-10-23  5:44   ` Andrea Righi
  2026-10-23  0:03 ` [PATCH 2/2] sched_ext: scx_qmap: Read SCX_RESCUE_DISABLE through the enum lookup tables Tejun Heo
  1 sibling, 1 reply; 5+ messages in thread
From: Tejun Heo @ 2026-10-23  0:03 UTC (permalink / raw)
  To: sched-ext
  Cc: David Vernet, Andrea Righi, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel, Tejun Heo

Regenerate enum_defs.autogen.h and enums_abi.autogen.h from the current
vmlinux.h. The enums added since the last regeneration lacked presence
markers and ABI values.

Signed-off-by: Tejun Heo <tj@kernel.org>
---
 .../sched_ext/include/scx/enum_defs.autogen.h | 11 ++++++++++
 .../sched_ext/include/scx/enums_abi.autogen.h | 21 ++++++++++++++-----
 2 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/tools/sched_ext/include/scx/enum_defs.autogen.h b/tools/sched_ext/include/scx/enum_defs.autogen.h
index 4fa82033b99c..27b45040c88a 100644
--- a/tools/sched_ext/include/scx/enum_defs.autogen.h
+++ b/tools/sched_ext/include/scx/enum_defs.autogen.h
@@ -23,6 +23,8 @@
 #define HAVE_SCX_CAPS_REENQ_ON_LOSS
 #define HAVE_SCX_CID_SHARD_SIZE_DFL
 #define HAVE_SCX_CID_SHARD_MAX_CPUS
+#define HAVE_SCX_CID_SCHED_NONE
+#define HAVE_SCX_CID_SCHED_SELF
 #define HAVE_SCX_DSP_DFL_MAX_BATCH
 #define HAVE_SCX_DSP_MAX_LOOPS
 #define HAVE_SCX_WATCHDOG_MAX_TIMEOUT
@@ -71,6 +73,7 @@
 #define HAVE_SCX_DSQ_LOCAL_ON
 #define HAVE_SCX_DSQ_LOCAL_CPU_MASK
 #define HAVE_SCX_DSQ_ITER_REV
+#define HAVE___SCX_DSQ_ITER_HAS_REENQ
 #define HAVE___SCX_DSQ_ITER_HAS_SLICE
 #define HAVE___SCX_DSQ_ITER_HAS_VTIME
 #define HAVE___SCX_DSQ_ITER_USER_FLAGS
@@ -100,6 +103,7 @@
 #define HAVE_SCX_ENQ_APPLY_SLICE
 #define HAVE_SCX_ENQ_SLICE_DFL
 #define HAVE_SCX_TASK_DSQ_ON_PRIQ
+#define HAVE_SCX_TASK_DSQ_REENQ
 #define HAVE_SCX_TASK_QUEUED
 #define HAVE_SCX_TASK_IN_CUSTODY
 #define HAVE_SCX_TASK_RESET_RUNNABLE_AT
@@ -188,6 +192,7 @@
 #define HAVE_SCX_SLICE_INF
 #define HAVE_SCX_REENQ_ANY
 #define HAVE_SCX_REENQ_CAP_REVOKE
+#define HAVE_SCX_REENQ_MARKED
 #define HAVE___SCX_REENQ_FILTER_MASK
 #define HAVE___SCX_REENQ_USER_MASK
 #define HAVE_SCX_REENQ_TSR_RQ_OPEN
@@ -195,15 +200,21 @@
 #define HAVE___SCX_REENQ_TSR_MASK
 #define HAVE_SCX_RQ_ONLINE
 #define HAVE_SCX_RQ_CAN_STOP_TICK
+#define HAVE_SCX_RQ_OPS_ONLINE
 #define HAVE_SCX_RQ_CLK_VALID
 #define HAVE_SCX_RQ_BAL_CB_PENDING
 #define HAVE_SCX_RQ_SUB_IDLE_RENOTIFY
 #define HAVE_SCX_RQ_ROOT_IDLE_RENOTIFY
 #define HAVE_SCX_RQ_PROXY_RETRY
 #define HAVE_SCX_RQ_PROXY_TICK
+#define HAVE_SCX_RQ_PROXY_PENDING
+#define HAVE_SCX_RQ_PROXY_BLOCKING
 #define HAVE_SCX_RQ_IN_WAKEUP
 #define HAVE_SCX_RQ_IN_DISPATCH
 #define HAVE_SCX_SCHED_PCPU_BYPASSING
+#define HAVE_SCX_SCHED_PCPU_ECAPS_ENABLED
+#define HAVE_SCX_SCHED_PCPU_ECAPS_REPORT
+#define HAVE_SCX_SCHED_PCPU_ECAPS_OFFLINE
 #define HAVE_SCX_SLICE_OOB_DUR_BITS
 #define HAVE_SCX_SLICE_OOB_ID_BITS
 #define HAVE_SCX_SLICE_OOB_DUR_MASK
diff --git a/tools/sched_ext/include/scx/enums_abi.autogen.h b/tools/sched_ext/include/scx/enums_abi.autogen.h
index 1186daa9cb14..5cf54dcf5ffe 100644
--- a/tools/sched_ext/include/scx/enums_abi.autogen.h
+++ b/tools/sched_ext/include/scx/enums_abi.autogen.h
@@ -35,6 +35,8 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
 	{ "scx_cap_flags", "SCX_CAPS_REENQ_ON_LOSS", 0x3LLU },
 	{ "scx_cid_consts", "SCX_CID_SHARD_SIZE_DFL", 0x18LLU },
 	{ "scx_cid_consts", "SCX_CID_SHARD_MAX_CPUS", 0x200LLU },
+	{ "scx_cid_sched_consts", "SCX_CID_SCHED_NONE", 0xfffffffffffffffeLLU },
+	{ "scx_cid_sched_consts", "SCX_CID_SCHED_SELF", 0xffffffffffffffffLLU },
 	{ "scx_consts", "SCX_DSP_DFL_MAX_BATCH", 0x20LLU },
 	{ "scx_consts", "SCX_DSP_MAX_LOOPS", 0x20LLU },
 	{ "scx_consts", "SCX_WATCHDOG_MAX_TIMEOUT", 0x7530LLU },
@@ -83,10 +85,11 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
 	{ "scx_dsq_id_flags", "SCX_DSQ_LOCAL_ON", 0xc000000000000000LLU },
 	{ "scx_dsq_id_flags", "SCX_DSQ_LOCAL_CPU_MASK", 0xffffffffLLU },
 	{ "scx_dsq_iter_flags", "SCX_DSQ_ITER_REV", 0x10000LLU },
+	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_HAS_REENQ", 0x20000000LLU },
 	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_HAS_SLICE", 0x40000000LLU },
 	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_HAS_VTIME", 0x80000000LLU },
 	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_USER_FLAGS", 0x10000LLU },
-	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_ALL_FLAGS", 0xc0010000LLU },
+	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_ALL_FLAGS", 0xe0010000LLU },
 	{ "scx_dsq_lnode_flags", "SCX_DSQ_LNODE_ITER_CURSOR", 0x1LLU },
 	{ "scx_dsq_lnode_flags", "__SCX_DSQ_LNODE_PRIV_SHIFT", 0x10LLU },
 	{ "scx_enable_state", "SCX_ENABLING", 0x0LLU },
@@ -112,6 +115,7 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
 	{ "scx_enq_flags", "SCX_ENQ_APPLY_SLICE", 0x2000000000000000LLU },
 	{ "scx_enq_flags", "SCX_ENQ_SLICE_DFL", 0x4000000000000000LLU },
 	{ "scx_ent_dsq_flags", "SCX_TASK_DSQ_ON_PRIQ", 0x1LLU },
+	{ "scx_ent_dsq_flags", "SCX_TASK_DSQ_REENQ", 0x2LLU },
 	{ "scx_ent_flags", "SCX_TASK_QUEUED", 0x1LLU },
 	{ "scx_ent_flags", "SCX_TASK_IN_CUSTODY", 0x2LLU },
 	{ "scx_ent_flags", "SCX_TASK_RESET_RUNNABLE_AT", 0x4LLU },
@@ -169,10 +173,10 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
 	{ "scx_kick_flags", "SCX_KICK_ALL_FLAGS", 0xfLLU },
 	{ "scx_opi", "SCX_OPI_BEGIN", 0x0LLU },
 	{ "scx_opi", "SCX_OPI_NORMAL_BEGIN", 0x0LLU },
-	{ "scx_opi", "SCX_OPI_NORMAL_END", 0x21LLU },
-	{ "scx_opi", "SCX_OPI_CPU_HOTPLUG_BEGIN", 0x21LLU },
-	{ "scx_opi", "SCX_OPI_CPU_HOTPLUG_END", 0x23LLU },
-	{ "scx_opi", "SCX_OPI_END", 0x23LLU },
+	{ "scx_opi", "SCX_OPI_NORMAL_END", 0x23LLU },
+	{ "scx_opi", "SCX_OPI_CPU_HOTPLUG_BEGIN", 0x23LLU },
+	{ "scx_opi", "SCX_OPI_CPU_HOTPLUG_END", 0x25LLU },
+	{ "scx_opi", "SCX_OPI_END", 0x25LLU },
 	{ "scx_ops_flags", "SCX_OPS_KEEP_BUILTIN_IDLE", 0x1LLU },
 	{ "scx_ops_flags", "SCX_OPS_ENQ_LAST", 0x2LLU },
 	{ "scx_ops_flags", "SCX_OPS_ENQ_EXITING", 0x4LLU },
@@ -200,6 +204,7 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
 	{ "scx_public_consts", "SCX_SLICE_INF", 0xffffffffffffffffLLU },
 	{ "scx_reenq_flags", "SCX_REENQ_ANY", 0x1LLU },
 	{ "scx_reenq_flags", "SCX_REENQ_CAP_REVOKE", 0x2LLU },
+	{ "scx_reenq_flags", "SCX_REENQ_MARKED", 0x4LLU },
 	{ "scx_reenq_flags", "__SCX_REENQ_FILTER_MASK", 0xffffLLU },
 	{ "scx_reenq_flags", "__SCX_REENQ_USER_MASK", 0x1LLU },
 	{ "scx_reenq_flags", "SCX_REENQ_TSR_RQ_OPEN", 0x100000000LLU },
@@ -207,15 +212,21 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
 	{ "scx_reenq_flags", "__SCX_REENQ_TSR_MASK", 0xf00000000LLU },
 	{ "scx_rq_flags", "SCX_RQ_ONLINE", 0x1LLU },
 	{ "scx_rq_flags", "SCX_RQ_CAN_STOP_TICK", 0x2LLU },
+	{ "scx_rq_flags", "SCX_RQ_OPS_ONLINE", 0x4LLU },
 	{ "scx_rq_flags", "SCX_RQ_CLK_VALID", 0x20LLU },
 	{ "scx_rq_flags", "SCX_RQ_BAL_CB_PENDING", 0x40LLU },
 	{ "scx_rq_flags", "SCX_RQ_SUB_IDLE_RENOTIFY", 0x80LLU },
 	{ "scx_rq_flags", "SCX_RQ_ROOT_IDLE_RENOTIFY", 0x100LLU },
 	{ "scx_rq_flags", "SCX_RQ_PROXY_RETRY", 0x200LLU },
 	{ "scx_rq_flags", "SCX_RQ_PROXY_TICK", 0x400LLU },
+	{ "scx_rq_flags", "SCX_RQ_PROXY_PENDING", 0x800LLU },
+	{ "scx_rq_flags", "SCX_RQ_PROXY_BLOCKING", 0x1000LLU },
 	{ "scx_rq_flags", "SCX_RQ_IN_WAKEUP", 0x10000LLU },
 	{ "scx_rq_flags", "SCX_RQ_IN_DISPATCH", 0x20000LLU },
 	{ "scx_sched_pcpu_flags", "SCX_SCHED_PCPU_BYPASSING", 0x1LLU },
+	{ "scx_sched_pcpu_flags", "SCX_SCHED_PCPU_ECAPS_ENABLED", 0x2LLU },
+	{ "scx_sched_pcpu_flags", "SCX_SCHED_PCPU_ECAPS_REPORT", 0x4LLU },
+	{ "scx_sched_pcpu_flags", "SCX_SCHED_PCPU_ECAPS_OFFLINE", 0x8LLU },
 	{ "scx_slice_oob_consts", "SCX_SLICE_OOB_DUR_BITS", 0x2bLLU },
 	{ "scx_slice_oob_consts", "SCX_SLICE_OOB_ID_BITS", 0x14LLU },
 	{ "scx_slice_oob_consts", "SCX_SLICE_OOB_DUR_MASK", 0x7ffffffffffLLU },
-- 
2.56.0


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

* [PATCH 2/2] sched_ext: scx_qmap: Read SCX_RESCUE_DISABLE through the enum lookup tables
  2026-10-23  0:03 [PATCHSET sched_ext/for-7.5] sched_ext: Regenerate the enum tables and drop scx_qmap's last compat lookup Tejun Heo
  2026-10-23  0:03 ` [PATCH 1/2] sched_ext: Regenerate tools autogen enum headers Tejun Heo
@ 2026-10-23  0:03 ` Tejun Heo
  2026-10-23  5:45   ` Andrea Righi
  1 sibling, 1 reply; 5+ messages in thread
From: Tejun Heo @ 2026-10-23  0:03 UTC (permalink / raw)
  To: sched-ext
  Cc: David Vernet, Andrea Righi, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel, Tejun Heo

788b494fab1c ("sched_ext: scx_qmap: Drop the compat code") left one compat
lookup behind: the -B 0 case reads SCX_RESCUE_DISABLE with
__COMPAT_ENUM_OR_ZERO(). Userspace can read SCX_RESCUE_DISABLE only from BTF
as it is in the kernel-internal enum scx_consts. The enum lookup tables
already read their entries from BTF for every scheduler at open time.

Add SCX_RESCUE_DISABLE to the lookup tables and read it from the skeleton's
rodata. No behavior change.

Suggested-by: Andrea Righi <arighi@nvidia.com>
Link: https://lore.kernel.org/all/ataTuzRFTRm_pax6@gpd4/
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 +
 tools/sched_ext/scx_qmap.c                      | 2 +-
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/sched_ext/include/scx/enums.autogen.bpf.h b/tools/sched_ext/include/scx/enums.autogen.bpf.h
index 405a3e6b8f33..d0c37018659e 100644
--- a/tools/sched_ext/include/scx/enums.autogen.bpf.h
+++ b/tools/sched_ext/include/scx/enums.autogen.bpf.h
@@ -13,6 +13,9 @@ const volatile u64 __SCX_SLICE_DFL __weak;
 const volatile u64 __SCX_SLICE_INF __weak;
 #define SCX_SLICE_INF __SCX_SLICE_INF
 
+const volatile u64 __SCX_RESCUE_DISABLE __weak;
+#define SCX_RESCUE_DISABLE __SCX_RESCUE_DISABLE
+
 const volatile u64 __SCX_RQ_ONLINE __weak;
 #define SCX_RQ_ONLINE __SCX_RQ_ONLINE
 
diff --git a/tools/sched_ext/include/scx/enums.autogen.h b/tools/sched_ext/include/scx/enums.autogen.h
index 7ec2e5e41cb2..c4a7260f0983 100644
--- a/tools/sched_ext/include/scx/enums.autogen.h
+++ b/tools/sched_ext/include/scx/enums.autogen.h
@@ -9,6 +9,7 @@
 	SCX_ENUM_SET(skel, scx_public_consts, SCX_OPS_NAME_LEN); \
 	SCX_ENUM_SET(skel, scx_public_consts, SCX_SLICE_DFL); \
 	SCX_ENUM_SET(skel, scx_public_consts, SCX_SLICE_INF); \
+	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); \
diff --git a/tools/sched_ext/scx_qmap.c b/tools/sched_ext/scx_qmap.c
index 9b1cbe187ebd..fe2f206f5c8a 100644
--- a/tools/sched_ext/scx_qmap.c
+++ b/tools/sched_ext/scx_qmap.c
@@ -427,7 +427,7 @@ int main(int argc, char **argv)
 			u32 ppt = strtoul(optarg, NULL, 0);
 
 			if (!ppt)
-				ppt = __COMPAT_ENUM_OR_ZERO("scx_consts", "SCX_RESCUE_DISABLE");
+				ppt = skel->rodata->__SCX_RESCUE_DISABLE;
 			skel->struct_ops.qmap_ops->rescue_bandwidth_ppt = ppt;
 			break;
 		}
-- 
2.56.0


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

* Re: [PATCH 1/2] sched_ext: Regenerate tools autogen enum headers
  2026-10-23  0:03 ` [PATCH 1/2] sched_ext: Regenerate tools autogen enum headers Tejun Heo
@ 2026-10-23  5:44   ` Andrea Righi
  0 siblings, 0 replies; 5+ messages in thread
From: Andrea Righi @ 2026-10-23  5:44 UTC (permalink / raw)
  To: Tejun Heo
  Cc: sched-ext, David Vernet, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel

Hi Tejun,

On Thu, Oct 22, 2026 at 02:03:47PM -1000, Tejun Heo wrote:
> Regenerate enum_defs.autogen.h and enums_abi.autogen.h from the current
> vmlinux.h. The enums added since the last regeneration lacked presence
> markers and ABI values.
> 
> Signed-off-by: Tejun Heo <tj@kernel.org>

Not a blocker, but while looking at this I noticed that enums.autogen.h
(and the .bpf.h counterpart) still carries a few entries that no longer
exist in the kernel:

  SCX_RQ_BAL_PENDING
  SCX_RQ_BAL_KEEP
  SCX_RQ_BYPASSING
  SCX_RQ_IN_BALANCE
  SCX_TASK_NR_STATES

They're harmless, but I think we can drop them, maybe as a follow-up
change.

Reviewed-by: Andrea Righi <arighi@nvidia.com>

Thanks,
-Andrea

> ---
>  .../sched_ext/include/scx/enum_defs.autogen.h | 11 ++++++++++
>  .../sched_ext/include/scx/enums_abi.autogen.h | 21 ++++++++++++++-----
>  2 files changed, 27 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/sched_ext/include/scx/enum_defs.autogen.h b/tools/sched_ext/include/scx/enum_defs.autogen.h
> index 4fa82033b99c..27b45040c88a 100644
> --- a/tools/sched_ext/include/scx/enum_defs.autogen.h
> +++ b/tools/sched_ext/include/scx/enum_defs.autogen.h
> @@ -23,6 +23,8 @@
>  #define HAVE_SCX_CAPS_REENQ_ON_LOSS
>  #define HAVE_SCX_CID_SHARD_SIZE_DFL
>  #define HAVE_SCX_CID_SHARD_MAX_CPUS
> +#define HAVE_SCX_CID_SCHED_NONE
> +#define HAVE_SCX_CID_SCHED_SELF
>  #define HAVE_SCX_DSP_DFL_MAX_BATCH
>  #define HAVE_SCX_DSP_MAX_LOOPS
>  #define HAVE_SCX_WATCHDOG_MAX_TIMEOUT
> @@ -71,6 +73,7 @@
>  #define HAVE_SCX_DSQ_LOCAL_ON
>  #define HAVE_SCX_DSQ_LOCAL_CPU_MASK
>  #define HAVE_SCX_DSQ_ITER_REV
> +#define HAVE___SCX_DSQ_ITER_HAS_REENQ
>  #define HAVE___SCX_DSQ_ITER_HAS_SLICE
>  #define HAVE___SCX_DSQ_ITER_HAS_VTIME
>  #define HAVE___SCX_DSQ_ITER_USER_FLAGS
> @@ -100,6 +103,7 @@
>  #define HAVE_SCX_ENQ_APPLY_SLICE
>  #define HAVE_SCX_ENQ_SLICE_DFL
>  #define HAVE_SCX_TASK_DSQ_ON_PRIQ
> +#define HAVE_SCX_TASK_DSQ_REENQ
>  #define HAVE_SCX_TASK_QUEUED
>  #define HAVE_SCX_TASK_IN_CUSTODY
>  #define HAVE_SCX_TASK_RESET_RUNNABLE_AT
> @@ -188,6 +192,7 @@
>  #define HAVE_SCX_SLICE_INF
>  #define HAVE_SCX_REENQ_ANY
>  #define HAVE_SCX_REENQ_CAP_REVOKE
> +#define HAVE_SCX_REENQ_MARKED
>  #define HAVE___SCX_REENQ_FILTER_MASK
>  #define HAVE___SCX_REENQ_USER_MASK
>  #define HAVE_SCX_REENQ_TSR_RQ_OPEN
> @@ -195,15 +200,21 @@
>  #define HAVE___SCX_REENQ_TSR_MASK
>  #define HAVE_SCX_RQ_ONLINE
>  #define HAVE_SCX_RQ_CAN_STOP_TICK
> +#define HAVE_SCX_RQ_OPS_ONLINE
>  #define HAVE_SCX_RQ_CLK_VALID
>  #define HAVE_SCX_RQ_BAL_CB_PENDING
>  #define HAVE_SCX_RQ_SUB_IDLE_RENOTIFY
>  #define HAVE_SCX_RQ_ROOT_IDLE_RENOTIFY
>  #define HAVE_SCX_RQ_PROXY_RETRY
>  #define HAVE_SCX_RQ_PROXY_TICK
> +#define HAVE_SCX_RQ_PROXY_PENDING
> +#define HAVE_SCX_RQ_PROXY_BLOCKING
>  #define HAVE_SCX_RQ_IN_WAKEUP
>  #define HAVE_SCX_RQ_IN_DISPATCH
>  #define HAVE_SCX_SCHED_PCPU_BYPASSING
> +#define HAVE_SCX_SCHED_PCPU_ECAPS_ENABLED
> +#define HAVE_SCX_SCHED_PCPU_ECAPS_REPORT
> +#define HAVE_SCX_SCHED_PCPU_ECAPS_OFFLINE
>  #define HAVE_SCX_SLICE_OOB_DUR_BITS
>  #define HAVE_SCX_SLICE_OOB_ID_BITS
>  #define HAVE_SCX_SLICE_OOB_DUR_MASK
> diff --git a/tools/sched_ext/include/scx/enums_abi.autogen.h b/tools/sched_ext/include/scx/enums_abi.autogen.h
> index 1186daa9cb14..5cf54dcf5ffe 100644
> --- a/tools/sched_ext/include/scx/enums_abi.autogen.h
> +++ b/tools/sched_ext/include/scx/enums_abi.autogen.h
> @@ -35,6 +35,8 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
>  	{ "scx_cap_flags", "SCX_CAPS_REENQ_ON_LOSS", 0x3LLU },
>  	{ "scx_cid_consts", "SCX_CID_SHARD_SIZE_DFL", 0x18LLU },
>  	{ "scx_cid_consts", "SCX_CID_SHARD_MAX_CPUS", 0x200LLU },
> +	{ "scx_cid_sched_consts", "SCX_CID_SCHED_NONE", 0xfffffffffffffffeLLU },
> +	{ "scx_cid_sched_consts", "SCX_CID_SCHED_SELF", 0xffffffffffffffffLLU },
>  	{ "scx_consts", "SCX_DSP_DFL_MAX_BATCH", 0x20LLU },
>  	{ "scx_consts", "SCX_DSP_MAX_LOOPS", 0x20LLU },
>  	{ "scx_consts", "SCX_WATCHDOG_MAX_TIMEOUT", 0x7530LLU },
> @@ -83,10 +85,11 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
>  	{ "scx_dsq_id_flags", "SCX_DSQ_LOCAL_ON", 0xc000000000000000LLU },
>  	{ "scx_dsq_id_flags", "SCX_DSQ_LOCAL_CPU_MASK", 0xffffffffLLU },
>  	{ "scx_dsq_iter_flags", "SCX_DSQ_ITER_REV", 0x10000LLU },
> +	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_HAS_REENQ", 0x20000000LLU },
>  	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_HAS_SLICE", 0x40000000LLU },
>  	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_HAS_VTIME", 0x80000000LLU },
>  	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_USER_FLAGS", 0x10000LLU },
> -	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_ALL_FLAGS", 0xc0010000LLU },
> +	{ "scx_dsq_iter_flags", "__SCX_DSQ_ITER_ALL_FLAGS", 0xe0010000LLU },
>  	{ "scx_dsq_lnode_flags", "SCX_DSQ_LNODE_ITER_CURSOR", 0x1LLU },
>  	{ "scx_dsq_lnode_flags", "__SCX_DSQ_LNODE_PRIV_SHIFT", 0x10LLU },
>  	{ "scx_enable_state", "SCX_ENABLING", 0x0LLU },
> @@ -112,6 +115,7 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
>  	{ "scx_enq_flags", "SCX_ENQ_APPLY_SLICE", 0x2000000000000000LLU },
>  	{ "scx_enq_flags", "SCX_ENQ_SLICE_DFL", 0x4000000000000000LLU },
>  	{ "scx_ent_dsq_flags", "SCX_TASK_DSQ_ON_PRIQ", 0x1LLU },
> +	{ "scx_ent_dsq_flags", "SCX_TASK_DSQ_REENQ", 0x2LLU },
>  	{ "scx_ent_flags", "SCX_TASK_QUEUED", 0x1LLU },
>  	{ "scx_ent_flags", "SCX_TASK_IN_CUSTODY", 0x2LLU },
>  	{ "scx_ent_flags", "SCX_TASK_RESET_RUNNABLE_AT", 0x4LLU },
> @@ -169,10 +173,10 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
>  	{ "scx_kick_flags", "SCX_KICK_ALL_FLAGS", 0xfLLU },
>  	{ "scx_opi", "SCX_OPI_BEGIN", 0x0LLU },
>  	{ "scx_opi", "SCX_OPI_NORMAL_BEGIN", 0x0LLU },
> -	{ "scx_opi", "SCX_OPI_NORMAL_END", 0x21LLU },
> -	{ "scx_opi", "SCX_OPI_CPU_HOTPLUG_BEGIN", 0x21LLU },
> -	{ "scx_opi", "SCX_OPI_CPU_HOTPLUG_END", 0x23LLU },
> -	{ "scx_opi", "SCX_OPI_END", 0x23LLU },
> +	{ "scx_opi", "SCX_OPI_NORMAL_END", 0x23LLU },
> +	{ "scx_opi", "SCX_OPI_CPU_HOTPLUG_BEGIN", 0x23LLU },
> +	{ "scx_opi", "SCX_OPI_CPU_HOTPLUG_END", 0x25LLU },
> +	{ "scx_opi", "SCX_OPI_END", 0x25LLU },
>  	{ "scx_ops_flags", "SCX_OPS_KEEP_BUILTIN_IDLE", 0x1LLU },
>  	{ "scx_ops_flags", "SCX_OPS_ENQ_LAST", 0x2LLU },
>  	{ "scx_ops_flags", "SCX_OPS_ENQ_EXITING", 0x4LLU },
> @@ -200,6 +204,7 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
>  	{ "scx_public_consts", "SCX_SLICE_INF", 0xffffffffffffffffLLU },
>  	{ "scx_reenq_flags", "SCX_REENQ_ANY", 0x1LLU },
>  	{ "scx_reenq_flags", "SCX_REENQ_CAP_REVOKE", 0x2LLU },
> +	{ "scx_reenq_flags", "SCX_REENQ_MARKED", 0x4LLU },
>  	{ "scx_reenq_flags", "__SCX_REENQ_FILTER_MASK", 0xffffLLU },
>  	{ "scx_reenq_flags", "__SCX_REENQ_USER_MASK", 0x1LLU },
>  	{ "scx_reenq_flags", "SCX_REENQ_TSR_RQ_OPEN", 0x100000000LLU },
> @@ -207,15 +212,21 @@ static const struct __scx_enum_abi_val __scx_enum_abi_vals[]
>  	{ "scx_reenq_flags", "__SCX_REENQ_TSR_MASK", 0xf00000000LLU },
>  	{ "scx_rq_flags", "SCX_RQ_ONLINE", 0x1LLU },
>  	{ "scx_rq_flags", "SCX_RQ_CAN_STOP_TICK", 0x2LLU },
> +	{ "scx_rq_flags", "SCX_RQ_OPS_ONLINE", 0x4LLU },
>  	{ "scx_rq_flags", "SCX_RQ_CLK_VALID", 0x20LLU },
>  	{ "scx_rq_flags", "SCX_RQ_BAL_CB_PENDING", 0x40LLU },
>  	{ "scx_rq_flags", "SCX_RQ_SUB_IDLE_RENOTIFY", 0x80LLU },
>  	{ "scx_rq_flags", "SCX_RQ_ROOT_IDLE_RENOTIFY", 0x100LLU },
>  	{ "scx_rq_flags", "SCX_RQ_PROXY_RETRY", 0x200LLU },
>  	{ "scx_rq_flags", "SCX_RQ_PROXY_TICK", 0x400LLU },
> +	{ "scx_rq_flags", "SCX_RQ_PROXY_PENDING", 0x800LLU },
> +	{ "scx_rq_flags", "SCX_RQ_PROXY_BLOCKING", 0x1000LLU },
>  	{ "scx_rq_flags", "SCX_RQ_IN_WAKEUP", 0x10000LLU },
>  	{ "scx_rq_flags", "SCX_RQ_IN_DISPATCH", 0x20000LLU },
>  	{ "scx_sched_pcpu_flags", "SCX_SCHED_PCPU_BYPASSING", 0x1LLU },
> +	{ "scx_sched_pcpu_flags", "SCX_SCHED_PCPU_ECAPS_ENABLED", 0x2LLU },
> +	{ "scx_sched_pcpu_flags", "SCX_SCHED_PCPU_ECAPS_REPORT", 0x4LLU },
> +	{ "scx_sched_pcpu_flags", "SCX_SCHED_PCPU_ECAPS_OFFLINE", 0x8LLU },
>  	{ "scx_slice_oob_consts", "SCX_SLICE_OOB_DUR_BITS", 0x2bLLU },
>  	{ "scx_slice_oob_consts", "SCX_SLICE_OOB_ID_BITS", 0x14LLU },
>  	{ "scx_slice_oob_consts", "SCX_SLICE_OOB_DUR_MASK", 0x7ffffffffffLLU },
> -- 
> 2.56.0
> 

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

* Re: [PATCH 2/2] sched_ext: scx_qmap: Read SCX_RESCUE_DISABLE through the enum lookup tables
  2026-10-23  0:03 ` [PATCH 2/2] sched_ext: scx_qmap: Read SCX_RESCUE_DISABLE through the enum lookup tables Tejun Heo
@ 2026-10-23  5:45   ` Andrea Righi
  0 siblings, 0 replies; 5+ messages in thread
From: Andrea Righi @ 2026-10-23  5:45 UTC (permalink / raw)
  To: Tejun Heo
  Cc: sched-ext, David Vernet, Changwoo Min, Emil Tsalapatis,
	David Dai, linux-kernel

On Thu, Oct 22, 2026 at 02:03:48PM -1000, Tejun Heo wrote:
> 788b494fab1c ("sched_ext: scx_qmap: Drop the compat code") left one compat
> lookup behind: the -B 0 case reads SCX_RESCUE_DISABLE with
> __COMPAT_ENUM_OR_ZERO(). Userspace can read SCX_RESCUE_DISABLE only from BTF
> as it is in the kernel-internal enum scx_consts. The enum lookup tables
> already read their entries from BTF for every scheduler at open time.
> 
> Add SCX_RESCUE_DISABLE to the lookup tables and read it from the skeleton's
> rodata. No behavior change.

And, as a reminder, we should add SCX_RESCUE_DISABLE to the scx repo as
well.

Reviewed-by: Andrea Righi <arighi@nvidia.com>

Thanks,
-Andrea

> 
> Suggested-by: Andrea Righi <arighi@nvidia.com>
> Link: https://lore.kernel.org/all/ataTuzRFTRm_pax6@gpd4/
> 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 +
>  tools/sched_ext/scx_qmap.c                      | 2 +-
>  3 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/sched_ext/include/scx/enums.autogen.bpf.h b/tools/sched_ext/include/scx/enums.autogen.bpf.h
> index 405a3e6b8f33..d0c37018659e 100644
> --- a/tools/sched_ext/include/scx/enums.autogen.bpf.h
> +++ b/tools/sched_ext/include/scx/enums.autogen.bpf.h
> @@ -13,6 +13,9 @@ const volatile u64 __SCX_SLICE_DFL __weak;
>  const volatile u64 __SCX_SLICE_INF __weak;
>  #define SCX_SLICE_INF __SCX_SLICE_INF
>  
> +const volatile u64 __SCX_RESCUE_DISABLE __weak;
> +#define SCX_RESCUE_DISABLE __SCX_RESCUE_DISABLE
> +
>  const volatile u64 __SCX_RQ_ONLINE __weak;
>  #define SCX_RQ_ONLINE __SCX_RQ_ONLINE
>  
> diff --git a/tools/sched_ext/include/scx/enums.autogen.h b/tools/sched_ext/include/scx/enums.autogen.h
> index 7ec2e5e41cb2..c4a7260f0983 100644
> --- a/tools/sched_ext/include/scx/enums.autogen.h
> +++ b/tools/sched_ext/include/scx/enums.autogen.h
> @@ -9,6 +9,7 @@
>  	SCX_ENUM_SET(skel, scx_public_consts, SCX_OPS_NAME_LEN); \
>  	SCX_ENUM_SET(skel, scx_public_consts, SCX_SLICE_DFL); \
>  	SCX_ENUM_SET(skel, scx_public_consts, SCX_SLICE_INF); \
> +	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); \
> diff --git a/tools/sched_ext/scx_qmap.c b/tools/sched_ext/scx_qmap.c
> index 9b1cbe187ebd..fe2f206f5c8a 100644
> --- a/tools/sched_ext/scx_qmap.c
> +++ b/tools/sched_ext/scx_qmap.c
> @@ -427,7 +427,7 @@ int main(int argc, char **argv)
>  			u32 ppt = strtoul(optarg, NULL, 0);
>  
>  			if (!ppt)
> -				ppt = __COMPAT_ENUM_OR_ZERO("scx_consts", "SCX_RESCUE_DISABLE");
> +				ppt = skel->rodata->__SCX_RESCUE_DISABLE;
>  			skel->struct_ops.qmap_ops->rescue_bandwidth_ppt = ppt;
>  			break;
>  		}
> -- 
> 2.56.0
> 
> 

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

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

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-23  0:03 [PATCHSET sched_ext/for-7.5] sched_ext: Regenerate the enum tables and drop scx_qmap's last compat lookup Tejun Heo
2026-10-23  0:03 ` [PATCH 1/2] sched_ext: Regenerate tools autogen enum headers Tejun Heo
2026-10-23  5:44   ` Andrea Righi
2026-10-23  0:03 ` [PATCH 2/2] sched_ext: scx_qmap: Read SCX_RESCUE_DISABLE through the enum lookup tables Tejun Heo
2026-10-23  5:45   ` Andrea Righi

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®