MIPS: Alchemy: Fix hang with high-frequency edge interrupts
authorManuel Lauss <manuel.lauss@googlemail.com>
Wed, 14 Oct 2009 10:22:20 +0000 (12:22 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 2 Nov 2009 11:00:08 +0000 (12:00 +0100)
commit44f2c586a3553154bc6549eb696c7716c85f910b
tree1050bd39b5fd1d67c63dddd939223b60ad7f9a44
parentfcc152f3bf55cec61167b173774cbf717b0ff5e4
MIPS: Alchemy: Fix hang with high-frequency edge interrupts

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: Manuel Lauss <manuel.lauss@gmail.com>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/alchemy/common/irq.c