[SeaBIOS] S3 resume is broken on QEMU

Kevin O'Connor kevin at koconnor.net
Fri Jan 20 02:40:45 CET 2012


On Thu, Jan 19, 2012 at 12:16:25PM +0200, Gleb Natapov wrote:
> There is absolutely nothing that vgabios may attempt to do that is
> illegal on resume and may cause this kind of hang. The only thing that
> is illegal on resume is to use non reserved RAM, but this will cause
> OS to fail after resume, not vgabios to hang.

On an S3 resume, the bios isn't required to init hardware - in
particular, the current seabios resume code doesn't initialize PCI or
initialize the standard timer.  It's not clear to me that the VGA BIOS
will run properly if these services aren't setup.

Further, no spec I've seen says an option rom must handle being
executed a second time.  The option rom can self modify - re-running a
modified rom may crash it.  Thinking about this further, the vgabios
in the seabios repo wont handle being executed twice properly (which,
of course, should be fixed).

To be clear, I really don't know the exact interactions between an off
the shelf BIOS and a "real world" vga bios on resume.  If someone can
find a spec or document clarifying that - I'd be happy to conform to
it.

> > > I am also not asking to change SeaBIOS default. Just get us back compile
> > > time option to always enable it.
> > 
> > I think using etc/s3-resume-vga-init to control this is just fine ...
> > 
> If and only if QEMU will enable it conditionally it is appropriate to
> introduce it. Otherwise compile time option, that served us well, should be
> reintroduced.

QEMU upstream uses SeaBIOS defaults afaik.  So, I don't really
understand your statement.

-Kevin



More information about the SeaBIOS mailing list