[comp.unix.i386] Configuration questions about ISC 2.0.2

clewis@eci386.uucp (Chris Lewis) (05/26/90)

In article <1990May21.032648.9703@ddsw1.MCS.COM> karl@mcs.MCS.COM (Karl Denninger) writes:

> IF each device that has an interrupt and wants to share it does both of the
> following, it will work:
 
> 1) The board must have open collector drivers on the IRQ line (few do)

A clarification (if anyone cares):

Last I checked (designing a smart async card), you don't want open
collector (or at least what most electrical designers would call one).
The interrupt lines appear to be active HIGH (not low), and IBM motherboard
specifications do not include pull-down (they would be pull-up with
normal active low O-C gates) resistors either.  Eg: standard
TTL O-C gates are backwards sense, and if you have the interrupt enabled,
but the interrupt line floating, you will probably have interrupt flicker
due to backplane crosstalk.  Kaboom!  Spent a couple of days finding this
problem, and many years since then cursing IBM.

The "generic" approach is somewhat grotty.  Each controller's interrupt
driver should be a tristate gate, with the input tied to the "active" state.
(low for an inverting driver)

You turn the interrupt *on* by enabling the tristate's output drivers,
and off by disabling the drivers (output is high-impedance).  (rather 
than toggling the input).  What makes things worse is that most tristate
driver's output float high (*active* damn it!) when disabled, so you *must*
have a pull-down resistor of sufficiently low resistance to pull the
driver outputs down regardless of back-plane crosstalk and the inherent
float-high of the driver.  But not so low as to fry the driver when
you turn on the driver because everybody else driving that interrupt line
have a pull-down too.  If IBM's backplane spec had specified pull-downs
on the motherboard this wouldn't be a problem.  Or if there were such
things as open-collector active-high gates available (I've never seen
any in the data books).

A few of the IBM schematics I've seen show use of a single section of
a 74LS125 quad tristate driver in just this fashion.

Most controller vendors don't bother and drive the interrupt with a 
non-gangable driver.  Like a LSTTL gate.  So if you try to share an
interrupt, at least one controller's interrupt driver will be shorted.
Probably with severe software confusion ("my no is more powerful than
your yes" or v-v), possibly with driver fry.  Even with tristate drivers
with only one active position when enabled can cause problems depending
on the gates (connecting two enabled tristate drivers's output together
even when at the same logic value can fry them depending on implementation
technology and the specific part).

On the other hand, most async board manufacturers have figured this
out (because you want 3 boards for 24 ports right?) so they usually
get it right.  Eventually....

*Many* many other hardware/software platforms (eg: NCR Towers) can share
interrupts quite fine.  Because they have sane electronics designers
who know what open-collector gates are and where to use them, often
the number of interrupts available is fewer than the number of different
controllers that could be installed, and the interrupt routines know
enough to confirm with their device that the interrupt was for them
before doing something.  IBM lacked foresight in this area....  And
frankly, I suspect many OS vendors for AT-style backplane systems don't
bother to support interrupt-sharing in the kernel because in general it
won't work.

> The problem in the PC world is (1) -- MSDOS devices for the most part don't
> use interrupts, and thus hardware people have always been sloppy.  'Tis
> life.

Too true.  The specs are to blame.

> >Third, How does one configure in a Wangtek compatible tape drive?
> >The manual seems a bit thin on this; apparantly there is
> >an option under KCONFIG to turn on a Wangtek tape driver,
> >but [here comes the interrupt question again], what interrupt
> >level does one choose, and how does one tell that to KCONFIG?
> >I am interested in using an Everex EV-833 tape drive subsystem.
> >Everex says their drives work fine under ISC, but Everex doesn't
> >*support* them that way, and claims not to know how to configure them.

> As it comes out of the box, that drive wants to be on IRQ 5.  Changing that
> requires poking around in the master file entries.

We let the Wangtek have interrupt 5, and disable LPT2's driver.  T'is
the simplest solution in 386/ix - our oldish version of 386/ix doesn't
allow you to change the Wangtek's interrupt number in the driver and
it cares.
-- 
Chris Lewis, Elegant Communications Inc, {uunet!attcan,utzoo}!lsuc!eci386!clewis
Ferret mailing list: eci386!ferret-list, psroff mailing list: eci386!psroff-list