Re: [-rt BUG] scheduling with irqs disabled: swapper

From: john stultz
Date: Mon May 29 2006 - 17:02:21 EST


On Sun, 2006-05-28 at 08:40 +0200, Ingo Molnar wrote:
> * Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> > Thanks, but I was looking more into the code, and I'm wondering...
> > Does this machine have "irqfixup" or "irqpoll" set in the kernel
> > command line?
> >
> > I think that -rt doesn't support it yet. That is, it can call a
> > handler from interrupt context, which should have been a thread.
> >
> > Let me know if that was the case.
>
> the backtrace shows misrouted_irq(), which is only called if "irqfixup"
> is enabled. That indeed isnt supported in -rt yet.

Ugh. You and Steven are right. We've been bitten by this a few times,
but we thought we got rid of that option on all of our boxes. I guess
one slipped by.

Anyway, thanks for pointing that out. Would you consider a patch like
the following so that folks don't continue to slip over this?

thanks
-john

Index: rtdev/kernel/irq/spurious.c
===================================================================
--- rtdev.orig/kernel/irq/spurious.c
+++ rtdev/kernel/irq/spurious.c
@@ -194,6 +194,11 @@ __setup("noirqdebug", noirqdebug_setup);

static int __init irqfixup_setup(char *str)
{
+#ifdef CONFIG_PREEMPT_RT
+ printk(KERN_WARNING "irqfixup boot option not supported "
+ "w/ CONFIG_PREEMT_RT\n");
+ return 1;
+#endif
irqfixup = 1;
printk(KERN_WARNING "Misrouted IRQ fixup support enabled.\n");
printk(KERN_WARNING "This may impact system performance.\n");
@@ -204,6 +209,11 @@ __setup("irqfixup", irqfixup_setup);

static int __init irqpoll_setup(char *str)
{
+#ifdef CONFIG_PREEMPT_RT
+ printk(KERN_WARNING "irqpoll boot option not supported "
+ "w/ CONFIG_PREEMT_RT\n");
+ return 1;
+#endif
irqfixup = 2;
printk(KERN_WARNING "Misrouted IRQ fixup and polling support "
"enabled\n");


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/