On Wed, Nov 26, 2008 at 07:49:23AM -0800, ron minnich wrote:
On Tue, Nov 25, 2008 at 9:40 PM, Kevin O'Connor kevin@koconnor.net wrote:
PCI cards aren't required to support option rom BAR accesses at the same time as regular BAR accesses. So, one can't leave the option rom mapped while accessing the other mapped areas.
Not sure what this means, but the explanation is simpler.
I didn't do a good job of explaining the restriction. If one googles for "PCI Local Bus Specification v3.0 (2004-02-03).pdf" you'll find in section 6.2.5.2:
In order to minimize the number of address decoders needed, a device may share a decoder between the Expansion ROM Base Address register and other Base Address registers. When expansion ROM decode is enabled, the decoder is used for accesses to the expansion ROM and device independent software must not access the device through any other Base Address registers.
The coreboot code maps in the option rom by enabling the register, runs the ROM, and disables it.
Why disable it? Because we map all option ROMs at the same address -- see the code. What if there is more than one?
That is indeed an even simpler reason.
Thanks, -Kevin