All of lore.kernel.org
 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
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ 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] 6+ 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
  2026-10-23 20:26 ` [PATCHSET sched_ext/for-7.5] sched_ext: Regenerate the enum tables and drop scx_qmap's last compat lookup Tejun Heo
  2 siblings, 1 reply; 6+ 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 related	[flat|nested] 6+ 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
  2026-10-23 20:26 ` [PATCHSET sched_ext/for-7.5] sched_ext: Regenerate the enum tables and drop scx_qmap's last compat lookup Tejun Heo
  2 siblings, 1 reply; 6+ 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 related	[flat|nested] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ messages in thread

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

>  0001 sched_ext: Regenerate tools autogen enum headers
>  0002 sched_ext: scx_qmap: Read SCX_RESCUE_DISABLE through the enum lookup tables

Applied 1-2 to sched_ext/for-7.5 with the following tags added:

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

Thanks.

--
tejun

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

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

Thread overview: 6+ 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
2026-10-23 20:26 ` [PATCHSET sched_ext/for-7.5] sched_ext: Regenerate the enum tables and drop scx_qmap's last compat lookup Tejun Heo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.