Hello there, The source code is static inline unsigned long get_irqmask(int irq_nr) { return 1 << irq_nr; } That's only going to work correctly for irq_nr < 32. If irq_nr gets >= 32, that will wrap around. Perhaps the programmer intended static inline unsigned long get_irqmask(int irq_nr) { return 1UL << irq_nr; } Regards David Binderman