![]() | |||||||||||||
Messages in this thread |
On Friday 27 February 2004 13:19, Michael Frank wrote: > On Fri, 27 Feb 2004 12:55:55 -0600, Matt Mackall <mpm@selenic.com> wrote: > > On Fri, Feb 27, 2004 at 09:44:44AM -0800, Grover, Andrew wrote: > >> > From: Helge Hafting [mailto:helgehaf@aitel.hist.no] > >> >> >> > Grover, Andrew wrote:> >> > > Is the assumption that hardirq handlers are superfast also> >> >> >> > the reason> >> >> >> > > why Linux calls all handlers on a shared interrupt, even if> >> >> >> > the first> >> >> >> > > handler reports it was for its device?> >> >> >> > No, it is the other way around. hardirq handlers have to be superfast > >> > because linux usually _have to_ call all the handlers of a shared irq. > >> >> >> > The fact that one device did indeed have an interrupt for us > >> > doesn't mean> >> > that the others didn't. So all of them have to be checked to be safe.> >>> >> If a device later in the handler chain is also interrupting, then the > >> interrupt will immediately trigger again. The irq line will remain > >> asserted until nobody is asserting it.> >>> >> If the LAST guy in the chain is the one with the interrupt, then you > >> basically get today's ISR "call each handler" behavior, but it should be > >> possible to in some cases to get less time spent in do_IRQ.> >> > Let's imagine you have n sources simultaneously interrupting on a > > given descriptor. Check the first, it's happening, acknowledge it, > > exit, notice interrupt still asserted, check the first, nope, check > > the second, yep, exit, etc. By the time we've made it to the nth ISR, > > we've banged on the first one n times, the second n-1 times, etc. In > > other words, early chain termination has an O(n^2) worst case. > > With level triggered you can just walk the chain, exit at the end of the > first cycle and should the IRQ still be asserted you just incur the > overhead of exit and reentry of the ISR. > > Even with edge, I would not check alwasy from the beginning of the chain... You should... after all that first entry in the chain has the highest priority - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2005-03-22 13:01 [from the cache] ©2003-2008 | |||||||||||||