Does Linux kernel disables any Interrupts while going into IRQ handler?

priyaranjan priyaranjan45678 at gmail.com
Wed Feb 24 07:14:17 EST 2016


When an Interrupt occurs most device drivers creates a critical section
using spin_lock_irqsave or spin_lock_irq which disables the interrupt.

In such a case the Interrupts are disabled by the IRQ handler. My question
is whether Linux kernel disables any interrupts just when the IRQ handler
executes or it just wait for the IRQ handler programmer to disable the IRQ
in whatever way?

My understanding is that Russel King has implemented IRQ_DISABLED, If this
flag is set then only the IRQ that has occurred is disabled lately however
enabled automatically by Kernel after IRQ handler finishes. Is that
correct? This also happens in delayed manner.Can anyone explain me how
exactly the IRQ disabling is delayed?

>From free-electrons link
<http://free-electrons.com/kerneldoc/latest/DocBook/genericirq/Highlevel_IRQ_flow_handlers.html>,
what I read is :-

*The interrupt is kept enabled and is masked in the flow handler when an
interrupt event happens*. This prevents losing edge interrupts on hardware
which does not store an edge interrupt event while the interrupt is
disabled at the hardware level.

Can anyone please explain the bold line here?

Regards,

Priyaranjan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20160224/cb7779d5/attachment.html 


More information about the Kernelnewbies mailing list