Pending interrupts not always replayed

Guillaume Knispel gknispel at proformatique.com
Sun Apr 18 13:34:39 EST 2010


Hi,

From reading the code (kernel/irq stuffs), it seems that at least some
handle_edge_irq based interrupts are not replayed when enabling if
desc->chip->retrigger == NULL and on a platform where
CONFIG_HARDIRQS_SW_RESEND is not set (which for now is only defined for
(some?) arm and avr32). Depending on the pic this problem might
be masked if multiple interrupts are received between disable_irq and
enable_irq (maybe other conditions exist with controllers i don't know).

I happen to program a PPC SoC (MPC8555E to be precise), using some edge
interrupts on the PortC of the CPM2 pic (arch/powerpc/sysdev/cpm2_pic.c)
in a driver that does some enable_irq/disable_irq while various
patterns of interrupts are received and i think i've hit the problem.

Is the behavior intended (not always replaying edge triggered interrupts)
or is it just a bug to fix?

Anybody knows if it's safe to activate CONFIG_HARDIRQS_SW_RESEND for a
powerpc or are there some known dangerous interactions?
(I'll give it a try on my side in the meantime anyway)

Cheers!
-- 
Guillaume Knispel


More information about the Linuxppc-dev mailing list