Subject: PCI BIOS initialization, the second round
To: None <tech-kern@netbsd.org>
From: Ken Hornstein <kenh@cmf.nrl.navy.mil>
List: tech-kern
Date: 06/18/1999 14:18:34
(Note: I'm posting this to tech-kern because I believe it's fundamentally
hw-neutral, even though right now we're running into this on PCs ....)

I almost can't believe that I'm dredging this up today, buuutttt ....

The dreaded "Plug and Play OS" discussion came up earlier about PCI
devices, and I said I would get my boss to order the PCI
specifications.  They arrived today on CD-ROM.  This includes "PCI
Local Bus 2.2", "PCI BIOS 2.1", and "PCI-PCI Bridge 1.1" (among
others).  These are AFAIK the latest revisions of these specifications
(BTW, it was only $50 for the set, if you're interested).

The Local Bus specification is mostly silent on the issue of PCI device
initialization.  It does have two paragraphs on "System Reset" in
section 6.6 (page 213), which I quoted before (basically, they say that
the processor has to be able to access devices necessary to boot the
machine; nothing else).

The PCI BIOS specification is mostly about how to call the PCI BIOS.
It does, however, make one extrememly short reference to Plug and
Play operating systems, on page 15 (section 4.2.3: Set PCI
Hardware Interrupt):

	Description:
	This function is intended to be used by a system-wide configuration
	utility or a PNP OS. This function should never be called by device
	drivers or expansion ROM code.

And it goes on to explain how to use this call to set up an IRQ to a
particular PCI device.

This was the only reference I could find to Plug and Play operating systems.

However, the PCI-to-PCI bridge specification (revision 1.1) _does_
say that the BIOS must initialize devices behind an PCI-PCI bridge
(This is all in Chapter 11).  However, it doesn't seem to me that this
applies to devices connected to a PCI bus which is directly connected
to a PCI-Host bridge, which is what we're having problems with.

So, IMHO, the latest revision of the PCI specs do not say that the BIOS
is required to initialize devices connected to a PCI bus which are
directly connected to a PCI-host bridge _and_ which are not necessary
for boot.  This would seem to jive with my experiences regarding the
"Plug and Play OS" setting in the BIOS.

Now, if someone has information that conflicts with what I've presented
here, then I think this would be an excellent time to bring it up so we
could all figure out exactly what (if anything) we should do about this
whole mess.

--Ken