On 12/17/2017 02:54 PM, Daniel K wrote:
I assumed this meant I didn't need a vgabios.rom, am I right?
For the main AST 2050 video, or a PCI-e card that has an onboard Option ROM (all of them)
Or should I be actually including a vgabios.rom for the on-board VGA even though I never plan on using it?
No you don't need it as coreboot supports text mode native init for AST 2050.
An even stranger question: should I be including a vgabios.rom for the PCIe VGA? This seems unlikely because factory BIOSes usually work with new video cards without needing to update the BIOS.
You simply need to select "Execute Option ROM's on PCI-e devices" and "Execute VGA Option ROM's" in menuconfig with the appropriate security settings - this will load it from the card and it is what the factory vendor BIOS does.
I am not sure how SeaBIOS interacts with those, but I know it should work with grub.
Or is the issue that SeaBIOS doesn't work in text-mode-only? Maybe I'll give GRUB2 a try, that should work in text-mode-only right?
Both work text mode, the "graphics" you see in SeaBIOS is still text it is similar to an ncurses program.
I suggest trying GRUB with both those above options and the multiple video adapters option enabled, it is what I use. (FYI You can embed a grub.cfg that searches for and loads other grub.cfg's from your disks)
Also "CONFIG_ONBOARD_VGA_IS_PRIMARY" should be N if you wish to use your PCI-e video device to see the payload screens.
Thanks awokd and Taiidan!
You were both right that it had to do with my SeaBIOS configuration. I can now see the "Press ESC for boot menu." screen!
I'll just wrap up this thread with the configurations I used to fix my issue in case someone searches this in the future.
awokd:
PCIe VGA cards have an option ROM (aka blob) in the card's firmware. Most onboard video devices don't have separate firmware, that's why their blob is included in the system's firmware. Ordinarily, Seabios will execute these blobs which then initializes the video cards. However, with this in your Seabios config, I'm not sure how it handles those:
# VGA ROM # CONFIG_NO_VGABIOS=y
Taiidan:
You simply need to select "Execute Option ROM's on PCI-e devices" and "Execute VGA Option ROM's" in menuconfig with the appropriate security settings - this will load it from the card and it is what the factory vendor BIOS does.
I wasn't able to find the options worded in exactly that way on my version of coreboot and SeaBIOS, however setting the following did the equivalent. These settings are not on by default and I had to change them in the menuconfig.
SeaBIOS menuconfig -> VGA ROM -> VGA Hardware Type -> Set to 'coreboot linear framebuffer'
This resulted in the following changes in the SeaBIOS config, where 'CONFIG_NO_VGABIOS=y' was turned off as awokd suspected:
# CONFIG_NO_VGABIOS is not set CONFIG_VGA_COREBOOT=y CONFIG_BUILD_VGABIOS=y CONFIG_VGA_EMULATE_TEXT=y CONFIG_VGA_FIXUP_ASM=y CONFIG_VGA_ALLOCATE_EXTRA_STACK=y CONFIG_VGA_VBE=y
Also, I tried with and without src/device/Kconfig MULTIPLE_VGA_ADAPTERS change and it made no difference. So that can remain turned off.
Here are the versions of coreboot and SeaBIOS I used. Using relatively new commits on master at the time of writing this. coreboot commit: https://review.coreboot.org/cgit/coreboot.git/commit/?id=3cf94032bced9345f4b... SeaBIOS commit: https://review.coreboot.org/cgit/seabios.git/commit/?id=844b86464a5cbfffb62b...
Attached the final configs I used for my system. Make sure to specify the SeaBIOS payload config path in the coreboot menuconfig (to something other than payloads/external/SeaBIOS/seabios/.config) or else make will clobber your SeaBIOS settings.
Thanks!