Re: better leve triggered IRQ management needed

From: Linus Torvalds
Date: Mon Apr 24 2006 - 15:08:27 EST




On Mon, 24 Apr 2006, Linus Torvalds wrote:
>
> You can get an edge by having your driver make sure that it clears the
> interrupt source at some point where it requires an edge.

Btw, this is why we do end up saying that having _two_ devices share
an edge-triggered setup really is something we cannot necessarily
fix. That said, it is better to limp along and work as well as you can
than to just throw up your hands.

So even then, we should at least give the user the _chance_ of being able
to log in and give a bug-report, rather than "oops, the harddisk won't
work, because the BIOS sets it up to share an edge-triggered interrupt
with the network".

However, I'm all for printing out a honking huge warning if we have two
devices sharing the same edge-triggered interrupt. But a single device
should work, or the driver should be considered broken.

[ Btw, the "disable_irq()/enable_irq()" subsystem has been written so that
when you disable an edge-triggered interrupt, and the edge happens while
the interrupt is disabled, we will re-play the interrupt at enable time.
Exactly so that drivers can have an easier time and don't have to
normally worry about whether something is edge or level-triggered.

However, if you're within an interrupt, that doesn't mean that you can
just disable the irq and hope that it acts as if it was level-triggered
when you enable it again. ]

Linus
-
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/