Subject: -current bha driver attaches PCI device multiple times (as ISA)
To: None <current-users@NetBSD.ORG>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: current-users
Date: 10/07/1996 18:06:42
I'm using several machines with BT-596c PCI SCSI controllers.
These controllers are _all_ configured with ISA-compatible ioports.
(That  was how they were shipped; it was necessary in 1.2, which
configured the PCI bha as an ISA-attach "bt" device).

I'm using a config based on GENERICOTHER.
The -current bha driver matches and attaches  the 956-C as a PCI device 
at bha2. Well and good.

Then the ISA-attach bha probes the ISA-compatible registers, finds the
(same) PCI card at the ISA-compatible location, and configures it as
bha0, and attaches a scsibus there.  Ouch. The kernel has configured
two drivers for a single SCSI adaptor.  The kernel hangs trying to
chroot to /dev/sd0a (hich is presumably on the ``isa''-attached device),
and loses.

It's a real pain that a hardware configuration _required_ for 1.2
doesn't work with post-1.2 -current.

I can think of two workarounds:
	1)  don't configure the ISA-attach bha
	2)  Change the non-volatile setup on the card to disable the
	    ISA-compatible ioport mapping.

I'd really like to build a kernel capable of booting on both ISA and
PCI devices, which rules out #1.  #2 is out because many of the machines are
in wiring closets.

Is it possible to change the PCI (and eisa?)-attach bha code to
stop the ISA-attach code from attaching already-attached PCI (or EISA)
devices -- either by disabling the ISA ioport range on the board,
stealing them, or by making bha_isa skip cards with a 
model-number high-order char  != '4' (VLB) or '5' (isa)?