diff options
Diffstat (limited to 'debian/patches-rt/0052-sched-rt-Annotate-the-RT-balancing-logic-irqwork-as-.patch')
-rw-r--r-- | debian/patches-rt/0052-sched-rt-Annotate-the-RT-balancing-logic-irqwork-as-.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/debian/patches-rt/0052-sched-rt-Annotate-the-RT-balancing-logic-irqwork-as-.patch b/debian/patches-rt/0052-sched-rt-Annotate-the-RT-balancing-logic-irqwork-as-.patch new file mode 100644 index 000000000..87f331dc8 --- /dev/null +++ b/debian/patches-rt/0052-sched-rt-Annotate-the-RT-balancing-logic-irqwork-as-.patch @@ -0,0 +1,45 @@ +From f475cffecaafbec5065e8484734df5d1a3264940 Mon Sep 17 00:00:00 2001 +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Wed, 6 Oct 2021 13:18:49 +0200 +Subject: [PATCH 052/158] sched/rt: Annotate the RT balancing logic irqwork as + IRQ_WORK_HARD_IRQ +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.15/older/patches-5.15.10-rt24.tar.xz + +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. + +Cc: Ingo Molnar <mingo@redhat.com> +Cc: Peter Zijlstra <peterz@infradead.org> +Cc: Juri Lelli <juri.lelli@redhat.com> +Cc: Vincent Guittot <vincent.guittot@linaro.org> +Cc: Dietmar Eggemann <dietmar.eggemann@arm.com> +Cc: Steven Rostedt <rostedt@goodmis.org> +Cc: Ben Segall <bsegall@google.com> +Cc: Mel Gorman <mgorman@suse.de> +Cc: Daniel Bristot de Oliveira <bristot@redhat.com> +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Link: https://lore.kernel.org/r/20211006111852.1514359-2-bigeasy@linutronix.de +--- + kernel/sched/topology.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c +index 4e8698e62f07..3d0157bd4e14 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; +-- +2.33.1 + |