[ARM] Better handling of bad IRQ implementations.
There are edge triggered interrupt controllers around where the "enable" control is before the edge detection. This means that we must keep the interrupts enabled, even when disable_irq() is in effect, and mark such interrupts for later processing. To make matters worse, some of these interrupt controllers do not provide any method to re-trigger the interrupt. We are unable to call the handler direct from enable_irq() since we may be in an IRQ-protected context. Therefore, we add such interrupts to a list of pending interrupts, which we process at the next hardware interrupt.
Showing
Please register or sign in to comment