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
|
other: 0.986
debug: 0.985
semantic: 0.980
graphic: 0.976
performance: 0.975
device: 0.975
PID: 0.974
boot: 0.965
socket: 0.955
files: 0.955
permissions: 0.954
vnc: 0.950
network: 0.949
KVM: 0.918
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
|