Re: 2.6.19-rc5: known regressions :SMP kernel can not generate ISAirq

From: Ingo Molnar
Date: Mon Nov 13 2006 - 15:47:02 EST


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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/