Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1533197

Re: question about irq_enter()/irq_exit() calling policy

From Russell King - ARM Linux <linux@armlinux.org.uk>
Newsgroups linux.kernel
Subject Re: question about irq_enter()/irq_exit() calling policy
Date 2016-11-30 11:30 +0100
Message-ID <sJajf-4SL-25@gated-at.bofh.it> (permalink)
References <sJ0jT-6Gr-17@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Tue, Nov 29, 2016 at 05:47:12PM -0600, Grygorii Strashko wrote:
> 2) Should these function be called for each processed irq?
> 
> 
> HW IRQ:
>  switch (IRQ mode)
>   ...
>   while (irq = get_pending_irq()) {
>   	...
>   	irq_enter()
> 		handle(irq) - execute hw_irq_hadler
>   	irq_exit()
>  }
>  ...
>  switch

We tend to do (2) as a general rule, which isn't much different from what
other architectures do - even if they have a method to directly enter
through vectors (eg, x86) the effect of two pending interrupts is that one
will run after each other, and there will be an intervening exit -> entry.

In the case of ARM CPUs, if the interrupt signal is active, you vector
back to the interrupt handler as soon as you exit back to the parent
context without executing any parent context instructions.

So, we have the choice of going through all the IRQ entry code, processing
one interrupt, and returning only to then re-vector back through the IRQ
entry code, or we can process all the pending IRQs that we can see at that
time.

The former method wastes all the CPU cycles getting from the parent context
to the IRQ context for each and every interrupt.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

question about irq_enter()/irq_exit() calling policy Grygorii Strashko <grygorii.strashko@ti.com> - 2016-11-30 00:50 +0100
  Re: question about irq_enter()/irq_exit() calling policy Russell King - ARM Linux <linux@armlinux.org.uk> - 2016-11-30 11:30 +0100
    Re: question about irq_enter()/irq_exit() calling policy Grygorii Strashko <grygorii.strashko@ti.com> - 2016-11-30 18:10 +0100

csiph-web