[PATCH] ata: Don't use NO_IRQ in pata_of_platform driver
From: Uwe Kleine-König <hidden>
Date: 2011-12-06 21:00:49
Also in:
linux-devicetree, linux-ide, linux-next, lkml
Hello Linus, On Tue, Dec 06, 2011 at 11:20:49AM -0800, Linus Torvalds wrote:
On Tue, Dec 6, 2011 at 2:46 AM, Russell King - ARM Linux [off-list ref] wrote:quoted
But.. let's make one thing clear: Alan Cox and Linus have been going on about how IRQ0 should not be used. ?Let's be crystal clear: even x86 uses IRQ0.Not for any device driver, though. It's used entirely internally, and it doesn't even use "request_irq()". It uses the magic internal "setup_irq()" and never *ever* exposes irq0 as anything that a driver can see. That's what matters. You can use irq0 in ARM land all you like, AS LONG AS IT'S SOME HIDDEN INTERNAL USE. No drivers. No *nothing* that ever uses that absolutely *idiotic* NO_IRQ crap. In fact, you may be *forced* to use what is "physically" irq0 - it's just that you should never expose it as such to drivers. And x86 doesn't. So Russell, if you think this has anything to do with NO_IRQ, and how x86 isn't doing things right, you're wrong. It's just like the internal exception thing, or the magical "cascade interrupt", or the "x87 exception mapped through the PIC". They are magic hidden interrupts that are set up in one place (well, one place *each*), and are never exposed anywhere else.
Well there is try_misrouted_irq in kernel/irq/spurious.c that assumes irq0 to be something that it never is on ARM (and maybe all other platforms apart from x86). So at least it's not internal to a single (x86 specific) place. I tried to patch that two years ago, but that only ended in people saying "don't use irq0". I don't know if try_misrouted_irq sees hardware irqs, but if it does it's a bug even on archs != X86 that use virtual irqs. (Note that this doesn't oppose to your statement that using NO_IRQ is crap.)
The problem with NO_IRQ is that stupid "we expose our mind-numbingly stupid interfaces across the whole kernel". x86 never did that. ARM still does. x86 doesn't have to fix anything. ARM does.
Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-K?nig | Industrial Linux Solutions | http://www.pengutronix.de/ |