Subject: Re: ep driver lossage
To: Jonathan Stone <jonathan@DSG.Stanford.EDU>
From: Manuel Bouyer <>
List: tech-net
Date: 04/14/1999 16:33:14
[please respond to tech-kern, this involves generic isapnp code] 

Ok, I found an unused 3c509 which I put in a machine an ran some tests
(this was with the first elink3.c jonathan sent):
- when  a board is detected as both isa and isapnp, the machine hangs while
  running the second shutdown hook. 
- When a board is detected as isapnp only (kill ep* at isa in config file),
  I get the 'adapter failure' message after the shutdown hook is run.
  Setting sc->enabled to 0 at the end of the shutdown hook avoid this.

So the main issue is how to avoid the board being detected twice.
This doesn't happen with 1.3.3. As nothing important changed in if_ep_isa.c,
the problem must be somewhere else (hence the redirection from tech-net
to tech-kern), I suspect the isapnp reset code that has been added
(log message from dev/isapnp/isapnp.c):
revision 1.21
date: 1998/07/30 18:02:50;  author: christos;  state: Exp;  lines: +31 -1
Add a hook that resets the bios configuration from the pnp devices
thus making them invisible to isa probes [from OpenBSD]

Removing the call to isapnp_isa_attach_hook() in isa/isa.c allows the
ep isa front-end to properly detect the board in PnP more and not attach it.

The FreeBSD kernel do the same test a ours. Linux doesn't seem to check for the
PnP mode of the board, but they do this in their probe routine:
        /* Reset the ISA PnP mechanism on 3c509b. */  
	outb(0x02, 0x279);           /* Select PnP config control register. */
	outb(0x02, 0xA79);           /* Return to WaitForKey state. */
I don't know what this means.
The OpenBSD probe code is identical to ours, so I don't know how they check
for this. Maybe they call isapnp_isa_attach_hook() after probing the
3c509 ?

If someone has ideas about this ...
I will not be able to do much more tests on this: I'll leave in about 2 ours,
tomorow I'm in a different places, and after, bye bye: I'll be 500Kms away from
my machine room for 2 weeks.

Manuel Bouyer, LIP6, Universite Paris VI.