Re: [PATCH] genirq: Fix missing initializer for unmask in no_irq_chip
From: Russell King
Date: Thu Jun 08 2006 - 11:28:29 EST
On Thu, Jun 08, 2006 at 02:04:15PM +0200, Thomas Gleixner wrote:
> On Thu, 2006-06-08 at 12:35 +0100, Russell King wrote:
> > Okay, works on Versatile (which is a trivial platform) it doesn't work
> > on Neponset (a rather more complex setup). Neponset has a case where
> > there's an interrupt "concentrator" which consists of logically ORing
> > three interrupt sources, and providing a status register so you know
> > which occurred.
> >
> > Hence, there is no "chip" for this, and while it works with the ARM
> > IRQ subsystem, it doesn't even boot with the genirq stuff.
> >
> > This doesn't happen with the ARM IRQ subsystem because the "no chip"
> > handlers are all pointing at a dummy function instead of being NULL.
> > Could we do the same with genirq ?
>
> We missed to initialize unmask, which causes problems on neponset.
Okay, with -rc6 + genirq + the following patch, it appears to work
provided you don't stress it. As soon as I load the system up with
CF activity, a full-sized flood ping and hit "enter" a few times on
the console, it locks up solid - no oops, no nothing, the machine
just completely freezes.
This does not happen with the existing ARM IRQ code.
I'll try to debug this odd behaviour later today, but first I need to
resurect my NMI oopser code for this platform.
--- linux-2.6.17-rc6/kernel/irq/handle.c 2006-06-07 20:54:01.000000000 +0200
+++ b/kernel/irq/handle.c
@@ -91,7 +91,8 @@
.shutdown = noop,
.enable = noop,
.disable = noop,
- .ack = ack_bad,
+ .ack = noop, // needed to quiten down boot time complaints
+ .unmask = noop, // needed to prevent oops on sa1111 init
.end = noop,
};
--- linux-2.6.17-rc6/kernel/irq/manage.c 2006-06-07 20:53:54.000000000 +0200
+++ b/kernel/irq/manage.c
@@ -199,8 +199,8 @@
if (irq >= NR_IRQS)
return -EINVAL;
- if (desc->chip == &no_irq_chip)
- return -ENOSYS;
+// if (desc->chip == &no_irq_chip) // prevents smc91x initialising
+// return -ENOSYS;
/*
* Some drivers like serial.c use request_irq() heavily,
* so we have to be careful not to interfere with a
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
-
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/