Skip to content

Commit b70e138

Browse files
Ingo MolnarKAGA-KOKO
authored andcommitted
genirq: Disable irqfixup/poll on PREEMPT_RT.
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 <[email protected]> Signed-off-by: Sebastian Andrzej Siewior <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent e739f98 commit b70e138

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

kernel/irq/spurious.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,10 @@ MODULE_PARM_DESC(noirqdebug, "Disable irq lockup detection when true");
447447

448448
static int __init irqfixup_setup(char *str)
449449
{
450+
if (IS_ENABLED(CONFIG_PREEMPT_RT)) {
451+
pr_warn("irqfixup boot option not supported with PREEMPT_RT\n");
452+
return 1;
453+
}
450454
irqfixup = 1;
451455
printk(KERN_WARNING "Misrouted IRQ fixup support enabled.\n");
452456
printk(KERN_WARNING "This may impact system performance.\n");
@@ -459,6 +463,10 @@ module_param(irqfixup, int, 0644);
459463

460464
static int __init irqpoll_setup(char *str)
461465
{
466+
if (IS_ENABLED(CONFIG_PREEMPT_RT)) {
467+
pr_warn("irqpoll boot option not supported with PREEMPT_RT\n");
468+
return 1;
469+
}
462470
irqfixup = 2;
463471
printk(KERN_WARNING "Misrouted IRQ fixup and polling support "
464472
"enabled\n");

0 commit comments

Comments
 (0)