summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0052-sched-rt-Annotate-the-RT-balancing-logic-irqwork-as-.patch
diff options
context:
space:
mode:
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-.patch45
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
+