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".
bisecting SeaBIOS blames this change:
commit b837e68d5a6c1a5945513f1995875445a1594c8a (refs/bisect/bad)
Author: Kevin O'Connor <kevin(a)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(a)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.