Network doesn't seem to work for me in 2.6.29, although it was working
in 2.6.28. System behavior seemed really strange, as it sometimes did
work when I was using the same uml machine, when using a different
user. Bisecting the kernel tree, revels a seemingly unrelated commit
that when reverted it fixes the problem:
commit 470c66239ef0336429b35345f3f615d47341e13b
Author: David Brownell <dbrownell@...>
Date: Mon Dec 1 14:31:37 2008 -0800
genirq: warn when IRQF_DISABLED may be ignored
...
iff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index c498a1b..7fd891c 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -635,6 +635,18 @@ int request_irq(unsigned int irq, irq_handler_t handler,
struct irq_desc *desc;
int retval;
+ /*
+ * handle_IRQ_event() always ignores IRQF_DISABLED except for
+ * the _first_ irqaction (sigh). That can cause oopsing, but
+ * the behavior is classified as "will not fix" so we need to
+ * start nudging drivers away from using that idiom.
+ */
+ if ((irqflags & (IRQF_SHARED|IRQF_DISABLED))
+ == (IRQF_SHARED|IRQF_DISABLED))
+ pr_warning("IRQ %d/%s: IRQF_DISABLED is not "
+ "guaranteed on shared IRQs\n",
+ irq, devname);
+
#ifdef CONFIG_LOCKDEP
/*
* Lockdep wants atomic interrupt handlers:
I guess there are some timing issues?
Thanks,
Yehuda
|