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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
debug: 0.985
virtual: 0.980
semantic: 0.980
assembly: 0.977
graphic: 0.976
performance: 0.975
device: 0.975
register: 0.974
PID: 0.974
architecture: 0.973
arm: 0.969
kernel: 0.966
boot: 0.965
user-level: 0.961
socket: 0.955
files: 0.955
permissions: 0.954
vnc: 0.950
network: 0.949
peripherals: 0.946
risc-v: 0.937
TCG: 0.930
mistranslation: 0.928
VMM: 0.924
KVM: 0.918
ppc: 0.903
hypervisor: 0.887
x86: 0.842
i386: 0.802
migration state save/load of sdcard device is broken
I'm having different issues trying to have QEMU snapshots working using qemu-system-arm with vexpress-a15 board.
In this opportunity, I'm trying the git master head version:
# git rev-parse HEAD
af352675efb7e92a1f5f6461a042a12015ab3d12
$ /usr/local/bin/qemu-system-arm -kernel kernel/vmlinuz-4.10.0-42-generic -initrd kernel/initrd.img-4.10.0-42-generic -M vexpress-a15 -m 2048 -append 'root=/dev/mmcblk0 rootwait console=tty0' -sd vexpress-4G.qcow2 -dtb device-tree/vexpress-v2p-ca15-tc1.dtb
audio: Could not init `oss' audio driver
Later on, when the machine finishes booting I savevm ss and quit. However, when I try to restore it, I have that Missing section footer error:
$ /usr/local/bin/qemu-system-arm -kernel kernel/vmlinuz-4.10.0-42-generic -initrd kernel/initrd.img-4.10.0-42-generic -M vexpress-a15 -m 2048 -append 'root=/dev/mmcblk0 rootwait console=tty0' -sd vexpress-4G.qcow2 -dtb device-tree/vexpress-v2p-ca15-tc1.dtb -loadvm ss
audio: Could not init `oss' audio driver
qemu-system-arm: Missing section footer for sd-card
qemu-system-arm: Error -22 while loading VM state
OS: Ubuntu 16.04.3 LTS (xenial)
$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
I've also tried a different ./configure line, explicitly enabling some of the features, i.e. smartcard, with the same results:
./configure '--disable-user' '--enable-system' '--enable-linux-user' '--enable-modules' '--enable-linux-aio' '--audio-drv-list=pa' '--enable-attr' '--enable-brlapi' '--enable-virtfs' '--enable-cap-ng' '--enable-curl' '--enable-fdt' '--enable-gnutls' '--disable-gtk' '--disable-vte' '--enable-libiscsi' '--enable-curses' '--enable-smartcard' '--enable-rbd' '--enable-vnc-sasl' '--enable-seccomp' '--enable-spice' '--enable-libusb' '--enable-usb-redir' '--enable-xfsctl' '--enable-vnc' '--enable-vnc-jpeg' '--enable-vnc-png' '--enable-kvm' '--enable-vhost-net'
How have I built it?
# git clone git://git.qemu.org/qemu.git
# cd qemu
# git submodule update --init --checkout
# make clean && ./configure --target-list=arm-softmmu && make -j8
# sudo make install
As a reference, and just in case these may be in some way related, I've just submitted another ticket for a different issue with snapshots using Ubuntu Qemu version (https://bugs.launchpad.net/qemu/+bug/1739371)
Cheers,
Gus
From a quick look my guess would be the wpgrps_size in sd_vmstate is different on the source and destination for some reason - it's the only thing that seems to be variable.
(It could also be whether the subsection is transmitted or not, but that's supposed to sort itself out automatically).
So, it should be only related to SD? Which virtual device/storage backend do you recommend for snapshots?
On 20 December 2017 at 18:44, Dr. David Alan Gilbert
<email address hidden> wrote:
> From a quick look my guess would be the wpgrps_size in sd_vmstate is
> different on the source and destination for some reason
Good guess: I added a pre_save hook to sdcard.c's vmstate,
which reports wpgrps_size as 201, but in the pre_load hook
it is reported as 0.
This seems to be because nothing ever calls the sd_reset()
function. I suspect this is down to the "legacy" handling
of sd card setup in sd_init(), or possibly the generic handling
of reset for devices that connect to SD buses.
(sd_reset() eventually gets called when the guest OS
probes the SD controller and issues a card reset command,
which is why it's correctly set by the time we do a vmsave.)
thanks
-- PMM
I think the sd card migration issue should be fixed by http://patchwork.ozlabs.org/patch/857554/
NB that you'll also need to use "-machine secure=off" on the command line, as there's a second bug where we don't successfully migrate with trustzone emulation enabled (which is the default now).
Finally I could test it. Yeah man, awesome, that did the trick. It is working like a charm.
You can close the ticket.
Thanks
The patch has been merged here:
https://git.qemu.org/?p=qemu.git;a=commitdiff;h=0cb57cc701839e7358918
|