summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2026-03-06 07:58:04 -1000
committerTejun Heo <tj@kernel.org>2026-03-06 07:58:04 -1000
commit7f5fcd47dd62ba7e150468ca05d30bfd26feb306 (patch)
tree48bbf8e95c7cf942707bbb138206c52cd9509b6e /kernel
parent337ec00b1d9c676f637651c2cefddb8612b867ee (diff)
downloadlinux-7f5fcd47dd62ba7e150468ca05d30bfd26feb306.tar.gz
linux-7f5fcd47dd62ba7e150468ca05d30bfd26feb306.zip
sched_ext: Add scx_sched back pointer to scx_sched_pcpu
Add a back pointer from scx_sched_pcpu to scx_sched. This will be used by the next patch to make scx_bpf_reenqueue_local() sub-sched aware. Signed-off-by: Tejun Heo <tj@kernel.org> Reviewed-by: Andrea Righi <arighi@nvidia.com>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/ext.c3
-rw-r--r--kernel/sched/ext_internal.h3
2 files changed, 6 insertions, 0 deletions
diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c
index 70d0f9e8ef61..e8378d59ddae 100644
--- a/kernel/sched/ext.c
+++ b/kernel/sched/ext.c
@@ -5655,6 +5655,9 @@ static struct scx_sched *scx_alloc_and_add_sched(struct sched_ext_ops *ops,
for_each_possible_cpu(cpu)
init_dsq(bypass_dsq(sch, cpu), SCX_DSQ_BYPASS, sch);
+ for_each_possible_cpu(cpu)
+ per_cpu_ptr(sch->pcpu, cpu)->sch = sch;
+
sch->helper = kthread_run_worker(0, "sched_ext_helper");
if (IS_ERR(sch->helper)) {
ret = PTR_ERR(sch->helper);
diff --git a/kernel/sched/ext_internal.h b/kernel/sched/ext_internal.h
index 9268df30be7f..69d6e9b4d78e 100644
--- a/kernel/sched/ext_internal.h
+++ b/kernel/sched/ext_internal.h
@@ -933,6 +933,8 @@ struct scx_event_stats {
s64 SCX_EV_SUB_BYPASS_DISPATCH;
};
+struct scx_sched;
+
enum scx_sched_pcpu_flags {
SCX_SCHED_PCPU_BYPASSING = 1LLU << 0,
};
@@ -953,6 +955,7 @@ struct scx_dsp_ctx {
};
struct scx_sched_pcpu {
+ struct scx_sched *sch;
u64 flags; /* protected by rq lock */
/*