Re: Interrupt sharing.

Steven N. Hirsch (shirsch@ibm.net)
Wed, 12 Feb 1997 18:06:02 -0500 (EST)


On Wed, 12 Feb 1997, David Woodhouse wrote:

> I have two network cards in my Linux box - a Realtek 8029 and a 3Com 3c509.
> The former has support in the kernel, and the latter is available as a module.
> If I tell them both to use the same interrupt, the first card will work fine
> until I ifconfig the second, at which point it takes over the IRQ and never
> gives it back. Is this the correct behaviour? Should they be able to share the
> interrupts? If not, should not the 3c509 driver at least restore the IRQ
> handler to it's original state when it finishes, so the other card can
> continue working?
>
> Also, the 3c509 driver attempts to release the IRQ twice - once when
> ifconfig'ed down and again when the module is removed. Is this a hangover from
> the time when it used to hog the IRQ all the time it was installed?
>
> With regard to sharing of interrupts, will the kernel handle more than one
> serial port on the same IRQ simultaneously (i.e. COM1/3, COM2/4) ?

If memory serves, the kernel could care less how many devices share an
interrupt (assuming that the driver is properly written). The real issue
is your hardware - bus type particularly. The ISA bus is fundamentally
incapable of supporting more than one bus driver per IRQ line. So, if you
have a card that multiplexes n interrupt sources onto a single driver - no
problem. A lot of boards use this scheme (Arnet Multiport, for example).

But, if multiple cards all try to activate one interrupt with multiple
drivers - look out! Without getting into the issues of tri-stated busses,
edge-triggered vs. level-triggered, etc, it simply won't work.

PCI, EISA and MicroChannel will cheerfully support interrupt sharing.

Can you describe your setup in greater detail?

Steve