Dear SeaBIOS folks,
in the thread *Help for Coreboot project* [1] on the coreboot mailing list, Denis Carikli wrote that to get graphics under Linux (not GRUB or SeaBIOS) with AMD/ATI graphics devices it is enough to place/load(?) the Video BIOS/VGA Option ROM at the right place and not run it.
The same is needed for some Intel devices (Google Chromebooks) so the VBT, needed for setting up the panel, is found.
Enabling that option in coreboot (currently only possible by changing `def_bool` to `y`) and disabling Option ROM handling in SeaBIOS did not work. I think SeaBIOS overwrote the region (`/proc/iomem`).
Looking for configuration options in SeaBIOS, there is the Kconfig option `OPTIONROMS_DEPLOYED`, which only available for QEMU though. Also it uses placed/loaded Option ROMs and still runs them.
I guess more Kconfig options have to be added to support my use case. Is that wanted or should I do as Denis wrote and patch the SeaBIOS locally?
Thanks,
Paul
[1] http://www.coreboot.org/pipermail/coreboot/2014-July/078293.html [2] http://review.coreboot.org/5594
Hi,
Looking for configuration options in SeaBIOS, there is the Kconfig option `OPTIONROMS_DEPLOYED`, which only available for QEMU though. Also it uses placed/loaded Option ROMs and still runs them.
Yes, that it something different, seabios expects qemu to copy the roms to 0xc0000+. Which qemu stopped doing in version 0.12 (pci rom bar is used for option roms these days), so this is pretty much dead code by now ...
I guess more Kconfig options have to be added to support my use case.
Yes. Where does the option rom is located? Firmware flash I assume (therefore cbfs in the coreboot+seabios case)? If it would be in the pci rom bar the linux driver could simply load it from there directly ...
cheers, Gerd
On Sat, Jul 12, 2014 at 01:00:01PM +0200, Paul Menzel wrote:
Dear SeaBIOS folks,
in the thread *Help for Coreboot project* [1] on the coreboot mailing list, Denis Carikli wrote that to get graphics under Linux (not GRUB or SeaBIOS) with AMD/ATI graphics devices it is enough to place/load(?) the Video BIOS/VGA Option ROM at the right place and not run it.
The same is needed for some Intel devices (Google Chromebooks) so the VBT, needed for setting up the panel, is found.
Enabling that option in coreboot (currently only possible by changing `def_bool` to `y`) and disabling Option ROM handling in SeaBIOS did not work. I think SeaBIOS overwrote the region (`/proc/iomem`).
Right - SeaBIOS considers itself the sole owner of memory between 0xc0000-0xfffff. It initializes and manages that memory.
Looking for configuration options in SeaBIOS, there is the Kconfig option `OPTIONROMS_DEPLOYED`, which only available for QEMU though. Also it uses placed/loaded Option ROMs and still runs them.
As Gerd mentioned, that option is not what you want.
I guess more Kconfig options have to be added to support my use case. Is that wanted or should I do as Denis wrote and patch the SeaBIOS locally?
If you don't want the optionrom to be executed I think it would be better to just modify the optionrom so that it didn't do anything when run. For example, by modifying the 4th byte of the image to be the lretw instruction (0xcb), and then updating the checksum. That way the rom gets loaded into memory but effectively does not execute any code when loaded. No need for a custom SeaBIOS image.
Another approach which may be possible would be to figure out what tables Linux wants to read from the optionrom, place those tables in a coreboot table or cbfs file, and then teach the cbvga SeaVGABIOS code to load those tables. If that is feasible one could then use the SeaVGABIOS as a vga optionrom.
-Kevin