All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH sched_ext/for-6.15] sched_ext: idle: Introduce scx_bpf_nr_node_ids()
@ 2025-02-24 16:49 Andrea Righi
  2025-02-24 17:39 ` Tejun Heo
  0 siblings, 1 reply; 3+ messages in thread
From: Andrea Righi @ 2025-02-24 16:49 UTC (permalink / raw)
  To: Tejun Heo, David Vernet, Changwoo Min; +Cc: linux-kernel

Similarly to scx_bpf_cpu_ids(), introduce a new kfunc scx_bpf_nr_node_ids()
to expose the maximum number of NUMA nodes in the system.

BFP schedulers can use this information together with the new node-aware
kfuncs, for example to create per-node DSQs, validate node IDs, etc.

Signed-off-by: Andrea Righi <arighi@nvidia.com>
---
 kernel/sched/ext.c                       | 11 +++++++++++
 tools/sched_ext/include/scx/common.bpf.h |  1 +
 tools/sched_ext/include/scx/compat.bpf.h |  4 ++++
 3 files changed, 16 insertions(+)

diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c
index 95603db36f043..74b247c36b3df 100644
--- a/kernel/sched/ext.c
+++ b/kernel/sched/ext.c
@@ -7113,6 +7113,16 @@ __bpf_kfunc void scx_bpf_cpuperf_set(s32 cpu, u32 perf)
 	}
 }
 
+/**
+ * scx_bpf_nr_node_ids - Return the number of possible node IDs
+ *
+ * All valid node IDs in the system are smaller than the returned value.
+ */
+__bpf_kfunc u32 scx_bpf_nr_node_ids(void)
+{
+	return nr_node_ids;
+}
+
 /**
  * scx_bpf_nr_cpu_ids - Return the number of possible CPU IDs
  *
@@ -7325,6 +7335,7 @@ BTF_ID_FLAGS(func, scx_bpf_dump_bstr, KF_TRUSTED_ARGS)
 BTF_ID_FLAGS(func, scx_bpf_cpuperf_cap)
 BTF_ID_FLAGS(func, scx_bpf_cpuperf_cur)
 BTF_ID_FLAGS(func, scx_bpf_cpuperf_set)
+BTF_ID_FLAGS(func, scx_bpf_nr_node_ids)
 BTF_ID_FLAGS(func, scx_bpf_nr_cpu_ids)
 BTF_ID_FLAGS(func, scx_bpf_get_possible_cpumask, KF_ACQUIRE)
 BTF_ID_FLAGS(func, scx_bpf_get_online_cpumask, KF_ACQUIRE)
diff --git a/tools/sched_ext/include/scx/common.bpf.h b/tools/sched_ext/include/scx/common.bpf.h
index ca7cc4108b45f..0e55877590901 100644
--- a/tools/sched_ext/include/scx/common.bpf.h
+++ b/tools/sched_ext/include/scx/common.bpf.h
@@ -70,6 +70,7 @@ void scx_bpf_dump_bstr(char *fmt, unsigned long long *data, u32 data_len) __ksym
 u32 scx_bpf_cpuperf_cap(s32 cpu) __ksym __weak;
 u32 scx_bpf_cpuperf_cur(s32 cpu) __ksym __weak;
 void scx_bpf_cpuperf_set(s32 cpu, u32 perf) __ksym __weak;
+u32 scx_bpf_nr_node_ids(void) __ksym __weak;
 u32 scx_bpf_nr_cpu_ids(void) __ksym __weak;
 int scx_bpf_cpu_node(s32 cpu) __ksym __weak;
 const struct cpumask *scx_bpf_get_possible_cpumask(void) __ksym __weak;
diff --git a/tools/sched_ext/include/scx/compat.bpf.h b/tools/sched_ext/include/scx/compat.bpf.h
index 5a9bcdb52e797..266f94fe479b7 100644
--- a/tools/sched_ext/include/scx/compat.bpf.h
+++ b/tools/sched_ext/include/scx/compat.bpf.h
@@ -189,6 +189,10 @@ static inline bool __COMPAT_is_enq_cpu_selected(u64 enq_flags)
  *
  * Preserve the following __COMPAT_scx_*_node macros until v6.17.
  */
+#define __COMPAT_scx_bpf_nr_node_ids()						\
+	(bpf_ksym_exists(scx_bpf_nr_node_ids) ?					\
+	 scx_bpf_nr_node_ids() : 1U)
+
 #define __COMPAT_scx_bpf_cpu_node(cpu)						\
 	(bpf_ksym_exists(scx_bpf_cpu_node) ?					\
 	 scx_bpf_cpu_node(cpu) : 0)
-- 
2.48.1


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

* Re: [PATCH sched_ext/for-6.15] sched_ext: idle: Introduce scx_bpf_nr_node_ids()
  2025-02-24 16:49 [PATCH sched_ext/for-6.15] sched_ext: idle: Introduce scx_bpf_nr_node_ids() Andrea Righi
@ 2025-02-24 17:39 ` Tejun Heo
  2025-02-24 17:45   ` Andrea Righi
  0 siblings, 1 reply; 3+ messages in thread
From: Tejun Heo @ 2025-02-24 17:39 UTC (permalink / raw)
  To: Andrea Righi; +Cc: David Vernet, Changwoo Min, linux-kernel

On Mon, Feb 24, 2025 at 05:49:21PM +0100, Andrea Righi wrote:
> Similarly to scx_bpf_cpu_ids(), introduce a new kfunc scx_bpf_nr_node_ids()
> to expose the maximum number of NUMA nodes in the system.
> 
> BFP schedulers can use this information together with the new node-aware
> kfuncs, for example to create per-node DSQs, validate node IDs, etc.
> 
> Signed-off-by: Andrea Righi <arighi@nvidia.com>

Applied to sched_ext/for-6.15 w/ s/scx_bpf_cpu_ids()/scx_bpf_nr_cpu_ids()/
and s/BFP/BPF/.

Thanks.

-- 
tejun

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

* Re: [PATCH sched_ext/for-6.15] sched_ext: idle: Introduce scx_bpf_nr_node_ids()
  2025-02-24 17:39 ` Tejun Heo
@ 2025-02-24 17:45   ` Andrea Righi
  0 siblings, 0 replies; 3+ messages in thread
From: Andrea Righi @ 2025-02-24 17:45 UTC (permalink / raw)
  To: Tejun Heo; +Cc: David Vernet, Changwoo Min, linux-kernel

On Mon, Feb 24, 2025 at 07:39:04AM -1000, Tejun Heo wrote:
> On Mon, Feb 24, 2025 at 05:49:21PM +0100, Andrea Righi wrote:
> > Similarly to scx_bpf_cpu_ids(), introduce a new kfunc scx_bpf_nr_node_ids()
> > to expose the maximum number of NUMA nodes in the system.
> > 
> > BFP schedulers can use this information together with the new node-aware
> > kfuncs, for example to create per-node DSQs, validate node IDs, etc.
> > 
> > Signed-off-by: Andrea Righi <arighi@nvidia.com>
> 
> Applied to sched_ext/for-6.15 w/ s/scx_bpf_cpu_ids()/scx_bpf_nr_cpu_ids()/
> and s/BFP/BPF/.

I even re-read that multiple times and still managed to mess it up...
Thanks for catching it! :)

-Andrea

> 
> Thanks.
> 
> -- 
> tejun

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

end of thread, other threads:[~2025-02-24 17:45 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-24 16:49 [PATCH sched_ext/for-6.15] sched_ext: idle: Introduce scx_bpf_nr_node_ids() Andrea Righi
2025-02-24 17:39 ` Tejun Heo
2025-02-24 17:45   ` Andrea Righi

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.