summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0020-genirq-Disable-irqfixup-poll-on-PREEMPT_RT.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0020-genirq-Disable-irqfixup-poll-on-PREEMPT_RT.patch')
-rw-r--r--debian/patches-rt/0020-genirq-Disable-irqfixup-poll-on-PREEMPT_RT.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/debian/patches-rt/0020-genirq-Disable-irqfixup-poll-on-PREEMPT_RT.patch b/debian/patches-rt/0020-genirq-Disable-irqfixup-poll-on-PREEMPT_RT.patch
new file mode 100644
index 000000000..01560136e
--- /dev/null
+++ b/debian/patches-rt/0020-genirq-Disable-irqfixup-poll-on-PREEMPT_RT.patch
@@ -0,0 +1,55 @@
+From f60bdcc6a930c598d2eb93528aa0dc4af348b5ad Mon Sep 17 00:00:00 2001
+From: Ingo Molnar <mingo@kernel.org>
+Date: Fri, 3 Jul 2009 08:29:57 -0500
+Subject: [PATCH 020/158] genirq: Disable irqfixup/poll on PREEMPT_RT.
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.15/older/patches-5.15.10-rt24.tar.xz
+
+The support for misrouted IRQs is used on old / legacy systems and is
+not feasible on PREEMPT_RT.
+
+Polling for interrupts reduces the overall system performance.
+Additionally the interrupt latency depends on the polling frequency and
+delays are not desired for real time workloads.
+
+Disable IRQ polling on PREEMPT_RT and let the user know that it is not
+enabled. The compiler will optimize the real fixup/poll code out.
+
+[ bigeasy: Update changelog and switch to IS_ENABLED() ]
+
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Link: https://lore.kernel.org/r/20210917223841.c6j6jcaffojrnot3@linutronix.de
+---
+ kernel/irq/spurious.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c
+index c481d8458325..02b2daf07441 100644
+--- a/kernel/irq/spurious.c
++++ b/kernel/irq/spurious.c
+@@ -447,6 +447,10 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true");
+
+ static int __init irqfixup_setup(char *str)
+ {
++ if (IS_ENABLED(CONFIG_PREEMPT_RT)) {
++ pr_warn("irqfixup boot option not supported with PREEMPT_RT\n");
++ return 1;
++ }
+ irqfixup = 1;
+ printk(KERN_WARNING "Misrouted IRQ fixup support enabled.\n");
+ printk(KERN_WARNING "This may impact system performance.\n");
+@@ -459,6 +463,10 @@ module_param(irqfixup, int, 0644);
+
+ static int __init irqpoll_setup(char *str)
+ {
++ if (IS_ENABLED(CONFIG_PREEMPT_RT)) {
++ pr_warn("irqpoll boot option not supported with PREEMPT_RT\n");
++ return 1;
++ }
+ irqfixup = 2;
+ printk(KERN_WARNING "Misrouted IRQ fixup and polling support "
+ "enabled\n");
+--
+2.33.1
+