[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Multiplatform & UDI
Yes, your scheme of using a special register to select which one of many
images actually appears through BAR 0x30 does not violate the PCI spec.
You're essentially building a custom structure on top of the standard
expansion ROM access method.
However, it adds no additional functionality over what section 6.3 already
It requires additional hardware to support the extra special register and
it's use when accessing BAR 0x30.
And, (worst of all) is completely and totally useless in a generic system
because it will never be used.
Why will it not be used? Because in order to access your special selection
register, you will need special software running on the host (because your
special selection register is not defined in the spec so no general PCI
software will attempt to use it.) Where does this special software come
If this is running pre-OS, then the only way to get that special software is
from an expansion ROM. But we're trying to read the expansion ROM so we
can't use the code in the expansion ROM to access the expansion ROM itself.
If this is running within an OS, then this special software is essentially
driver code that was loaded from the OS location by the OS. But if you're
already running an OS driver why would you be accessing the expansion ROM to
get an OS driver?
Also, the expansion ROM should NEVER contain OS drivers. OS drivers should
be stored with the OS and loaded by the OS. Why? Because the OS defines a
standard method for loading drivers. And no general OS looks for PCI
expansion ROMs to load drivers from.
So, in summary, your suggestion has no merits and has additional costs. Why
would anyone implement that?
Senior Hardware Engineer
Brocade Communications Systems
Note: I speak for myself, not for Brocade Communications.
From: Weng Tianxiang [mailto:WTX@umem.com]
Sent: Wednesday, March 13, 2002 5:08 PM
Subject: RE: Multiplatform & UDI
My answer to the question 2. has no errors at all and totally comply to
1. All image is to be set up just like PCI 2.0 Section 6.3.
2. The largest ROM size to return when reading 0x30 (Configuration
space)(by writing all '1' first) is the ROM largest unit size, not total
3. The memory address to return when reading 0x30 (Configuration
space)(not follow writing all '1' first) is the ROM unit start address.
4. Jumps can be used to specify which OS is to be used;
If so arranged, the ROM read from system is always the ROM unit that
fits for the OS.
If doing so, not only it saves logic in hardware, but also saves
software additional work.