Skip to content

Commit

Permalink
genirq: Disable irqfixup/poll on PREEMPT_RT.
Browse files Browse the repository at this point in the history
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
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
  • Loading branch information
Ingo Molnar authored and Sebastian Andrzej Siewior committed Sep 22, 2021
1 parent 7cc4560 commit 6b61ded
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions kernel/irq/spurious.c
Original file line number Diff line number Diff line change
Expand Up @@ -447,10 +447,10 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true");

static int __init irqfixup_setup(char *str)
{
#ifdef CONFIG_PREEMPT_RT
pr_warn("irqfixup boot option not supported w/ CONFIG_PREEMPT_RT\n");
return 1;
#endif
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");
Expand All @@ -463,10 +463,10 @@ module_param(irqfixup, int, 0644);

static int __init irqpoll_setup(char *str)
{
#ifdef CONFIG_PREEMPT_RT
pr_warn("irqpoll boot option not supported w/ CONFIG_PREEMPT_RT\n");
return 1;
#endif
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");
Expand Down

0 comments on commit 6b61ded

Please sign in to comment.