summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0346-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0346-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch')
-rw-r--r--debian/patches-rt/0346-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/debian/patches-rt/0346-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch b/debian/patches-rt/0346-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch
new file mode 100644
index 000000000..0c8b0e14e
--- /dev/null
+++ b/debian/patches-rt/0346-genirq-Add-lost-hunk-to-irq_forced_thread_fn.patch
@@ -0,0 +1,41 @@
+From d379a82e852964afe457dcf44bf4a00fc59de389 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Fri, 29 Apr 2022 11:02:18 -0500
+Subject: [PATCH 346/347] genirq: Add lost hunk to irq_forced_thread_fn().
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.246-rt110.tar.xz
+
+The irq_settings_no_softirq_call() related handling got lost in process,
+here are the missing bits.
+
+Reported-by: Martin Kaistra <martin.kaistra@linutronix.de>
+Fixes: b0cf5c230e2a0 ("Merge tag 'v4.19.183' into linux-4.19.y-rt")
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Signed-off-by: Clark Williams <williams@redhat.com>
+---
+ kernel/irq/manage.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
+index 6c88d81399dd..8f710f1755d8 100644
+--- a/kernel/irq/manage.c
++++ b/kernel/irq/manage.c
+@@ -998,7 +998,15 @@ irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action)
+ irq_finalize_oneshot(desc, action);
+ if (!IS_ENABLED(CONFIG_PREEMPT_RT_BASE))
+ local_irq_enable();
+- local_bh_enable();
++ /*
++ * Interrupts which have real time requirements can be set up
++ * to avoid softirq processing in the thread handler. This is
++ * safe as these interrupts do not raise soft interrupts.
++ */
++ if (irq_settings_no_softirq_call(desc))
++ _local_bh_enable();
++ else
++ local_bh_enable();
+ return ret;
+ }
+
+--
+2.36.1
+