[SeaBIOS] reboot fails with QEMU "isapc" machine type

Daniel P. Berrangé berrange at redhat.com
Mon Feb 5 13:46:41 CET 2018

I was experimenting with old MS-DOS 6.22 under QEMU with the 'isapc' machine
type, and found it is not able to reboot the guest. Bisecting QEMU blamed
the QEMU change that rebased from "rel-1.9.3", to "rel-1.10.0". Further
bisecting SeaBIOS blames this change:

  commit b837e68d5a6c1a5945513f1995875445a1594c8a (refs/bisect/bad)
  Author: Kevin O'Connor <kevin at koconnor.net>
  Date:   Mon Nov 9 15:00:19 2015 -0500

    resume: Make KVM soft reboot loop detection more flexible
    Move the check for soft reboot loops from resume.c to shadow.c and
    directly check for the case where the copy of the BIOS in flash
    appears to be a memory alias instead.  This prevents a hang if an
    external reboot request occurs during the BIOS memcpy.
    Signed-off-by: Kevin O'Connor <kevin at koconnor.net>

I was testing as follows:

  $ qemu-system-x86_64 -machine isapc -monitor stdio demo.img

where 'demo.img' is a disk image with MS-DOS installed (FreeDOS shows the
same problem too. Not checked any other OS).

Once C:\ command prompt is showing I enter

 (qemu)  sendkey ctrl-alt-delete

in the QEMU monitor console. Nothing visible will happen - the cursor will
stay flashing, but it no longer responds to input. Prior to this SeaBIOS
commit it will correctly reboot.

Interesting side note is that this only happens with QEMUs 'isapc' machine
type. The 'pc' machine type is still rebooting fine.

If I enable the isa-debugcon device in QEMU I see this when the 'isapc'
machine tries to reboot:

  In resume (status=0)
  In 32bit resume
  Attempting a hard reboot
  Unable to hard-reboot machine - attempting shutdown.

|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

More information about the SeaBIOS mailing list