Question regarding Interrupt "delivery" to user mode process
Tolunay Orkun
listmember at orkun.us
Sat Mar 26 07:05:20 EST 2005
Eugene,
>> 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 would not be a problem for level triggered interrupts if
enable_irq() cleared the pending IRQ bit before re-enabling the
interrupt system if that particular interrupt was level triggered.
If there is a valid request still pending (i.e. external IRQ line is
still asserted at the appropriate level) this would not cause loss of
interrupt but in case there is no requester (i.e. all interrupts are
properly acknowledged), the spurious interrupt due to delayed processing
would be avoided.
Tolunay
More information about the Linuxppc-embedded
mailing list