* [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.