Subject: Re: IRQ sharing
To: None <root@ihack.net>
From: Andreas Gustafsson <gson@araneus.fi>
List: port-i386
Date: 01/13/1999 14:39:10
Charles M Hannum <root@ihack.net> wrote:
> In the Dark Ages of the PC, ~all devices on the bus used open drain
> outputs to drive the IRQ lines.  

Wrong.  ISA IRQ drivers have always been totem-pole, not open drain.

> Open drain outputs draw current. If
> you had more than one of these on a given IRQ line, it could cause
> excessive current drain on the PIC and (perhaps) damage it.

There is a potential for excessive current, but that is precisely
because the outputs are *not* open drain.  Also, the excessive current
will flow between the totem-pole drivers of the two ISA cards - the
PIC is not involved.

> Nowadays this isn't an issue, for a few reasons: different drivers on
> the IRQ outputs, lower power consumption in general, and more tolerant
> parts.

I agree that attempting to share an IRQ among two ISA cards is
unlikely to damage them, but unfortunately it is even less likely to
actually *work*.  Due to the way TTL logic levels are defined , the
shared IRQ line will in practice act as a "wired-AND", not a
"wired-OR": the PIC will see an active IRQ only when all the cards
involved attempt to interrupt simultaneously.

> In fact, some devices (such as BusLogic MultiMaster SCSI cards
> and many serial devices) are now specifically built to support IRQ
> sharing, and sometimes even suggest it in their manuals.

Some ISA serial cards support sharing of interrupts among multiple
ports on the same card, and for this reason NetBSD indeed should
support interrupt sharing among ISA devices.  Unfortunately, there is
no way for the kernel to know whether two serial ports are on the same
physical card or on different cards, and the latter case will simply
not work.

Are you sure the BusLogic card you refer to is not an EISA or PCI model?
-- 
Andreas Gustafsson, gson@araneus.fi