[POWERPC] cell: Fix lost interrupts due to fasteoi handler
authorJeremy Kerr <jk@ozlabs.org>
Fri, 4 Apr 2008 06:55:28 +0000 (17:55 +1100)
committerJeremy Kerr <jk@ozlabs.org>
Mon, 5 May 2008 03:33:42 +0000 (13:33 +1000)
commit5711fe900dfef8d9afdbbb6d0f9c9720919d1d66
tree6d9281bf3313488b20c30ad69bd794322b8f91e5
parent3b5750644b2ffa2a76fdfe7b4e00e4af2ecf3539
[POWERPC] cell: Fix lost interrupts due to fasteoi handler

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: Jeremy Kerr <jk@ozlabs.org>
arch/powerpc/platforms/cell/interrupt.c