From: Sebastian Andrzej Siewior Date: Wed, 6 Oct 2021 11:18:49 +0000 (+0200) Subject: sched/rt: Annotate the RT balancing logic irqwork as IRQ_WORK_HARD_IRQ X-Git-Tag: v6.1-rc5~2806^2~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=da6ff09943491819e077b94c284bf0a6b751c9b8;p=platform%2Fkernel%2Flinux-starfive.git sched/rt: Annotate the RT balancing logic irqwork as IRQ_WORK_HARD_IRQ The push-IPI logic for RT tasks expects to be invoked from hardirq context. One reason is that a RT task on the remote CPU would block the softirq processing on PREEMPT_RT and so avoid pulling / balancing the RT tasks as intended. Annotate root_domain::rto_push_work as IRQ_WORK_HARD_IRQ. Signed-off-by: Sebastian Andrzej Siewior Signed-off-by: Peter Zijlstra (Intel) Link: https://lkml.kernel.org/r/20211006111852.1514359-2-bigeasy@linutronix.de --- diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index c1729f9a715f..e81246787560 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -526,7 +526,7 @@ static int init_rootdomain(struct root_domain *rd) #ifdef HAVE_RT_PUSH_IPI rd->rto_cpu = -1; raw_spin_lock_init(&rd->rto_lock); - init_irq_work(&rd->rto_push_work, rto_push_irq_work_func); + rd->rto_push_work = IRQ_WORK_INIT_HARD(rto_push_irq_work_func); #endif rd->visit_gen = 0;