• Russell King's avatar
    [ARM] Better handling of bad IRQ implementations. · ea28cbc6
    Russell King authored
    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.
    ea28cbc6
irq.c 18.4 KB