summary refs log tree commit diff stats
path: root/results/classifier/zero-shot/105/graphic/1747056
blob: a0c7a7dcf9e57f3e42ba43a073242f7d5a2e59d0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
graphic: 0.626
device: 0.618
semantic: 0.615
boot: 0.544
instruction: 0.506
vnc: 0.503
KVM: 0.494
network: 0.487
socket: 0.479
other: 0.458
assembly: 0.422
mistranslation: 0.346

FreeDOS / MS-Dos / Windows 3.11 cannot perform reboot with 'isapc' machine

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/FD12CD.iso  -hda demo.img  -monitor stdio

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 6e99f5741ff1b408ea76e6caf2bd4f76df4060e9 (HEAD, tag: pull-seabios-20161027-2, tag: pull-seabios-20161027-1, refs/bisect/bad)
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 b837e68d5a6c1a5945513f1995875445a1594c8a (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>


We need to pull in a SeaBIOS update with this fix applied to resolve this

commit 42812e062a77b27b0544c8e0d46d206afc3b2fae
Author: Kevin O'Connor <email address hidden>
Date:   Thu Feb 22 20:29:27 2018 -0500

    shadow: Don't invoke a shutdown on reboot unless in a reboot loop
    
    Old versions of KVM would map the same writable copy of the BIOS at
    both 0x000f0000 and 0xffff0000.  As a result, a reboot on these
    machines would result in a reboot loop.  So, the code attempts to
    check for that situation and invoke a shutdown instead.
    
    Commit b837e68d changed the check to run prior to the first reboot.
    However, this broke reboots on the QEMU isapc machine type.  Change
    the reboot loop check to only be invoked after at least one reboot has
    been attempted.
    
    Reported-by: Daniel P. Berrangé <email address hidden>
    Signed-off-by: Kevin O'Connor <email address hidden>


The SeaBIOS update mentioned by Daniel has been included here:
https://git.qemu.org/?p=qemu.git;a=commitdiff;h=0b8f74488e50f

So I assume this bug is fixed, thus closing this now. If you still can reproduce it with the latest version of QEMU, then please complain.