• Manuel Lauss's avatar
    MIPS: Alchemy: Fix hang with high-frequency edge interrupts · 44f2c586
    Manuel Lauss authored
    The handle_edge_irq() flowhandler disables edge int sources which occur
    too fast (i.e. another edge comes in before the irq handler function
    had a chance to finish).  Currently, the mask_ack() callback does not
    ack the edges in hardware, leading to an endless loop in the flowhandler
    where it tries to shut up the irq source.
    
    When I rewrote the alchemy IRQ code  I wrongly assumed the mask_ack()
    callback was only used by the level flowhandler, hence it omitted the
    (at the time pointless) edge acks.  Turned out I was wrong; so here
    is a complete mask_ack implementation for Alchemy IC, which fixes
    the above mentioned problem.
    Signed-off-by: default avatarManuel Lauss <manuel.lauss@gmail.com>
    Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    44f2c586
irq.c 20.3 KB