We get regular portability bugs when somebody decides to include linux/irq.h into a driver instead of asm/irq.h. It's almost always a wrong thing to do and, in fact, causes immediate breakage on e.g. arm.
Here's what I'm going to do: * check current includes of linux/irq.h; e.g. in arch/x86_64 all but two had been 100% useless, one should've been asm/irq.h and one - asm/irq.h + asm/hw_irq.h. The only legitimate user of linux/irq.h on amd64 was asm/hardirq.h. Situation elsewhere in arch/* is similar - most of includes are not needed at all. * remove bogus includes, arch by arch for architectures that live in main tree. Switch ones that should've been asm/irq.h to that form. * put the current contents of linux/irq.h to asm-generic/hardirq.h (which is what it really is - declarations for hardirq code, relevant on many but not all platforms). * switch remaining users of linux/irq.h to asm-generic/hardirq.h (again, for architectures that live in main tree) * replace contents of linux/irq.h with #warning and #include <asm-generic/hardirq.h>. * after 2.6.14 kill linux/irq.h completely. Objections? That variant leaves out-of-tree folks with window until 2.6.15 to convert and that's really more than enough...