migration state save/load of sdcard device is broken

Bug #1739378 reported by Gustavo Moreira
14
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

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

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

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'

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

Revision history for this message
Gustavo Moreira (gmoreira) wrote :
tags: added: arm vexpress-a15
Revision history for this message
Dr. David Alan Gilbert (dgilbert-h) 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 - 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).

description: updated
Revision history for this message
Gustavo Moreira (gmoreira) wrote :

So, it should be only related to SD? Which virtual device/storage backend do you recommend for snapshots?

Revision history for this message
Peter Maydell (pmaydell) wrote : Re: [Qemu-devel] [Bug 1739378] Re: qemu git master snapshot doesn't work

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

Peter Maydell (pmaydell)
summary: - qemu git master snapshot doesn't work
+ migration state save/load of sdcard device is broken
Revision history for this message
Peter Maydell (pmaydell) wrote :

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).

Revision history for this message
Gustavo Moreira (gmoreira) wrote :

Finally I could test it. Yeah man, awesome, that did the trick. It is working like a charm.
You can close the ticket.
Thanks

Revision history for this message
Thomas Huth (th-huth) wrote :
Changed in qemu:
status: New → Fix Committed
Thomas Huth (th-huth)
Changed in qemu:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.