Andrej Skirn wrote:
I don't see any mention of needing SeaBios to get the VGA working on the Wiki, although Peter Stuge suggested it.
It depends on the VGA BIOS. Some of them rely on more BIOS interrupt services being available, some work with less services. coreboot tries to provide some few interrupt services to please the VGA BIOS but it is in no way a substitute for what SeaBIOS provides.
If you have native code for initializing graphics in coreboot (currently only for the Chrome on K8M890 IIRC) then neither VGA BIOS nor other BIOS interrupt service junk is needed - and native code typically runs much faster because it does much less.
This poses a problem though, since I'd like to have the screen working as early as possible,
How long time do you have before SeaBIOS runs the VGA BIOS? With some optimizations, Kevin got this time down to roughly 500ms. Is that too long? (200 of these were the VGA BIOS itself.)
and I'm not certain it's a good idea to initialize it twice in any case.
Back in the day I used to do a real mode call from DOS programs to c000:0003 which would basically re-run the VGA BIOS unless it had self-modified during the first run. This always worked very reliably and I expect it will still.
I don't normally do that as it confuses my USB serial-adapter and just do a PCI reset instead,
I strongly recommend against this. Instead please make sure to always power cycle, in order to always start with a clean state. It's even good to leave power off for a while, ideally lots of seconds, to make sure there's no charge left in power rail capacitors or RAM.
but then SeaBios hangs in do_boot, after printing B of "Booting from". Without VGA BIOS it gets past this point and starts loading the OS. (Without display I can't tell exactly how successful it is at this, though).
Can you try to use the serial output to get more debug information?
Another data point might be to use Google's SGABIOS, it's a VGA BIOS with a serial port backend.
//Peter