On Fri, Sep 25, 2009 at 09:30:42AM -0600, Myles Watson wrote:
Could we change the searches for PCI ROMs so that we look through CBFS and then for each ROM we find in CBFS we find the device instead of vice versa?
SeaBIOS needs to run roms located on external PCI cards, so it can't just walk the list of CBFS roms.
It seems like we wouldn't lose a lot of generality, but we'd lose a lot of spew in the logs.
I'd just lower the debug level to reduce the log spew.
If you're concerned about performance, then I suggest running some tests. On my machine the time to walk the CBFS was negligible. In SeaBIOS, there is tools/readserial.py which can show the timing for log messages. I use:
tools/readserial.py /dev/ttyUSB0 115200
This tool will read the serial port, and show each message with a time delta - it will subtract out the cost of the serial port write when showing the timing. (It will also keep a log - for example: seriallog-20090916_220220.log) How about running it and forwarding the results for your machine?
Ultimately, I think it would probably be simpler to cache the list of files in CBFS then it would be to rework the option rom scanning. However, it would be even simpler to just enable caching of the rom. This is something I'd like to see coreboot do anyway - not because of the cost of cbfs walking, but because lzma decompression is really slow due to lack of caching.
-Kevin