[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Subsystem Vendor and Device IDs



Um, re: your suggestion (2).  No, I don't think so.  I know of numerous
cases 
where OS's and/or drivers bypass the PCI bios and read the configuration
space directly, trying both method 1 and method 2... This is done
for various reasons, most notably, numerous early PCI system bios's had
broken 32bit PCI entry points, indeed, some very early PCI systems didn't
even handle the real mode software int interface correctly.

-jrp

----------
From: 	havard scott
Sent: 	Monday, July 22, 1996 7:33 PM
To: 	Mailing List Recipients
Cc: 	dbaker@brooktree.com; larky@brooktree.com; jv@brooktree.com;
pwood@brooktree.com
Subject: 	Subsystem Vendor and Device IDs

I am making this post to solicit feedback on correct methods to 
implement the PCI subsystem IDs. 

First, let me say that I've read the PCI 2.1 specification, and I
believe that I understand the specification of the PCI Subsystem ID
configuration registers. 

The issue is that we have found it difficult to comply with both 
the PCI specification and Microsoft's Windows 95 certification 
requirements, and we are considering "bending the rules" of the 
PCI specification. I have two basic questions:

	1. Is it okay to allow our own BIOS to modify the values in the 
	   Subsystem ID registers during bootup (through a custom mechanism, 
	   not through a Configuration Write)?

	2. Assuming the device was on a motherboard, would it be possible
	   for the system BIOS to be responsible for returning a unique 
	   Subsystem ID value rather than querying the device directly 
	   through a Configuration Read mechanism?

BACKGROUND

Here is some background on these two questions. If the questions
don't make sense, you might want to read this.	

Windows 95 certification only requires
that we return a unique value when Windows queries the hardware,
but the PCI specification requires that either we return 
all zeroes, or  we return values "programmed during the
manufacturing process or loaded from external logic (strapping
options, serial ROMs, etc), prior to the system BIOS or any system
software accessing the PCI Configuration Space." The problem is
that returning all zeroes will not satisfy Microsoft, but 
the other options are either too expensive or impractical.

We do have a parallel interface to a ROM, but we can't guarantee that 
we will have a ROM present. In other words, if our device is on the 
motherboard, then our BIOS code will go into the system BIOS ROM.

So we have a couple of ideas as how to get around this limitation and
still be compatible with the Windows 95.


Idea #1

Implement the Subsytem Device and Vendor ID PCI Config register through a 
writable register. This register would reset to a standard non-zero value
(probably equal to the regular Device and Vendor ID values), and our 
custom BIOS init code would write a value custom to the board 
implementation. Note that this register is only writable through a 
device-specific mechanism, not through the PCI config space.

The idea behind this approach is that only Windows 95 needs to see a 
board-implementation-specific value. Since our custom BIOS would run
before Windows 95 booted, this requirement would be met. The concern
is that some unforseen problem could happen because the system BIOS read
subsytem ID values that were different from the values Window 95 eventually
read.


Idea #2

The second idea is to use our BIOS ROM to store the subsystem ID values.
Config register reads of this register would be mapped into reads of
a corresponding ROM address. If the ROM was not present, we would rely
on the system BIOS to return the value rather than issuing a config
cycle.

This approach has a couple of issues with it. First, can we rely upon
Windows 95 to always issue a PCI function call to system BIOS when
reading the Subsystem IDs? Or will it attempt to program
the core logic directly to issue a config read cycle to our device?
Secondly, given that system BIOS has to be customized for each 
motherboard design anyway, is it reasonable to expect a level of
customization whereby the system BIOS knows to emulate Configuration
Reads to the Subsystem ID space of devices resident on the motherboard?


That's all for now. I'd appreciate any suggestions.


		Havard Scott
		havard@brooktree.com
		512-349-3578



sŒy