On Fri, Jan 21, 2011 at 05:20:57PM -0500, Nicolas Pitre wrote:
The only solution in that case is to give top priority to the FIFO IRQ and never disable IRQs when in interrupt context, except for that FIFO servicing handler which should keep IRQs masked out throughout. In any case this would certainly be only a hack for badly misdesigned hardware.
Not possible anymore. The kernel's IRQ handling has changed such that generic code now ensures that IRQs are disabled irrespective of the IRQF_DISABLED flag. All IRQ handlers are called with IRQs disabled, and they remain that way until they call local_irq_enable().