> > 1) You did not include messages that mask and unmask interrupts at the
> > driver
> > side.
>
> Interrupt masking and unmasking are handled entirely on the local processor.
>
> When an interrupt occurs, the remote system masks the interrupt and then
> sends a notification
> to Linux. After Linux processes the notification, it sends a SET_IRQ_TYPE
> message back to the
> remote system, which then unmasks the interrupt.
Masking and unmasking an interrupt are orthogonal to the interrupt
type.
When the interrupt fires, the interrupt core calls the irq_mask()
operation on the interrupt. That should mask the interrupt. Once the
handler has finished, the interrupt core, will call irq_unmask() to
unmask the interrupt.
Edge, level, high, low, raising, falling has nothing to do with
masking. Please don't mix concepts which Linux keeps separate.
Andrew