summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZqiang <qiang.zhang@linux.dev>2026-05-08 14:50:45 +0300
committerTejun Heo <tj@kernel.org>2026-05-08 18:11:53 +0300
commitab28a0673daabe7f0fcbd7a5e36334f2f003f02f (patch)
tree1912293367e0a1cc60a8284c48321e536b228510
parent1f91d0d5827512816789f74f4d72d16269bde1ec (diff)
downloadlinux-ab28a0673daabe7f0fcbd7a5e36334f2f003f02f.tar.xz
sched_ext: Use IRQ_WORK_INIT_HARD() to initialize sch->disable_irq_work
For built with PREEMPT_RT kernels, the scx_disable_irq_workfn() is called from per-cpu irq_work kthreads context, this means that when call the scx_dump_state() in the scx_disable_irq_workfn() to output current->comm/pid, it always output current irq_work kthread's comm/pid. this commit therefore use the IRQ_WORK_INIT_HARD() to initialize sch->disable_irq_work to make scx_disable_irq_workfn() is called from hardirq context. Fixes: f4a6c506d118 ("sched_ext: Always bounce scx_disable() through irq_work") Signed-off-by: Zqiang <qiang.zhang@linux.dev> Signed-off-by: Tejun Heo <tj@kernel.org>
-rw-r--r--kernel/sched/ext.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c
index f4e2db8e56be..df305712a2d4 100644
--- a/kernel/sched/ext.c
+++ b/kernel/sched/ext.c
@@ -6589,7 +6589,7 @@ static struct scx_sched *scx_alloc_and_add_sched(struct sched_ext_ops *ops,
sch->slice_dfl = SCX_SLICE_DFL;
atomic_set(&sch->exit_kind, SCX_EXIT_NONE);
- init_irq_work(&sch->disable_irq_work, scx_disable_irq_workfn);
+ sch->disable_irq_work = IRQ_WORK_INIT_HARD(scx_disable_irq_workfn);
kthread_init_work(&sch->disable_work, scx_disable_workfn);
timer_setup(&sch->bypass_lb_timer, scx_bypass_lb_timerfn, 0);