• Jeremy Kerr's avatar
    [POWERPC] cell: Fix lost interrupts due to fasteoi handler · 5711fe90
    Jeremy Kerr authored
    We may currently lose interrupts during SPE context switch, as we alter
    the INT_Route register. Because the IIC uses a per-thread priority
    status, changing the interrupt routing to a different thread means that
    the IRQ is no longer masked by the priority status, so we end up with
    two fasteoi IRQ handlers executing for the one irq_desc. The fasteoi
    handler doesn't handle multiple IRQs, so drops the second one.
    
    Fix this by using our own flow handler. This is based on
    handle_edge_irq, but issues an eoi after IRQs are handled, and doesn't
    do any mask/unmasking.
    Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
    5711fe90
interrupt.c 11.6 KB