Question regarding Interrupt "delivery" to user mode process

Eugene Surovegin ebs at ebshome.net
Sat Mar 26 05:31:26 EST 2005


On Fri, Mar 25, 2005 at 11:40:16AM -0600, Tolunay Orkun wrote:

[snip]

> There is a quirk for PPC405 however: Linux (2.4) calls ack_irq() before 
> branching to the IRQ handler. However, if irq is level triggered and 
> external interrupt source has not yet deasserted, the interrupt status 
> bit in interrupt status register will remain set! To avoid spurious 
> interrupt it is necessary to call ack_irq() again before enabling the 
> interrupts again. I had discussed this in the old linuxppc-embedded list 
> while I was doing this driver.

This isn't 405 specific. This problem will exist on any system with 
level-sensitive IRQ source which wasn't ACK'ed. ACK'ed here means 
acknowledgment in device itself, not in PIC.

This is why this user-space IRQ handling is a bad idea, IMHO. You have 
to ACK IRQ (in device itself) in kernel-IRQ handler.

--
Eugene



More information about the Linuxppc-embedded mailing list