FreeDOS / MS-Dos / Windows 3.11 cannot perform reboot with 'isapc' machine
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| QEMU |
Fix Released
|
Undecided
|
Unassigned | ||
Bug Description
I was installing MS-Dos 6.22 + Windows 3.11 in preparation for running Microsoft Bob, and noticed that when they try to perform a reboot, they just get stuck. The console cursor stays flashing on/off, but the DOS prompt no longer responds to input.
It is fairly easy to reproduce, even FreeDOS is impacted - download the FreeDOS bootable CDROM image, then
$ qemu-img create demo.img 100MB
$ qemu-system-x86_64 -machine isapc -cdrom ~/Downloads/
Wait for the installer to startup, and then in the monitor console run
sendkey ctrl-alt-delete
It will fail to reboot
Testing shows this is a regression from QEMU 2.8.0 onwards, and git bisect further narrowed it down to a SEABIOS update
commit 6e99f5741ff1b40
Author: Gerd Hoffmann <email address hidden>
Date: Thu Oct 27 16:42:28 2016 +0200
seabios: update to 1.10.0 release.
Note that this seems particular to the "isapc" machine type - with the "pc" machine type, reboot still works

I bisected seabios and found this seabios change to be the cause of the problem
commit b837e68d5a6c1a5 945513f19958754 45a1594c8a (refs/bisect/bad)
Author: Kevin O'Connor <email address hidden>
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 <email address hidden>