![]() | |||||||||||||
Messages in this thread |
On Mon, 2006-11-13 at 10:11 -0700, Eric W. Biederman wrote: > > So when you "mask" an edge-triggered IRQ, you can't really mask it > at all, > > because if you did that, you'd lose it forever if the IRQ comes in > while > > you masked it. Instead, we're supposed to leave it active, and set a > flag, > > and IF the IRQ comes in, we just remember it, and mask it at that > point > > instead, and then on unmasking, we have to replay it by sending a > > self-IPI. > > > > Maybe that part got broken by some of the IRQ changes by Eric. > > Hmm. The other possibility is that this is a genirq migration issue. > > Yep. That looks like it. In the genirq migration the edge and > level triggered cases got merged and previously disable_edge_ioapic > was a noop. Ouch. hm, that should be solved by the generic edge-triggered flow handler as well: we never mask an IRQ first time around, we only mask it if we /already/ have the 'soft' IRQ_PENDING flag set. (in that case the lost edge is not an issue because we have the information already - and the masking will prevent a screaming edge source) but maybe this concept has not been pushed through to the disable/enable irq logic itself? (it's only present in the flow handler) Thomas, do you concur? Ingo - 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: 2006-11-13 21:49 [from the cache] ©2003-2008 | |||||||||||||