]> git.proxmox.com Git - mirror_qemu.git/commit - hw/ppc/spapr_pci.c
spapr: fix migration to pseries machine < 2.8
authorLaurent Vivier <lvivier@redhat.com>
Wed, 28 Jun 2017 14:09:19 +0000 (16:09 +0200)
committerDavid Gibson <david@gibson.dropbear.id.au>
Tue, 11 Jul 2017 01:04:01 +0000 (11:04 +1000)
commite806b4db1477a1c6bfda7bba28c7f26c47f18e1e
tree5e9d0ec70cf9a3c7ae941c2eae640d37549b7883
parentf3728f9cbbe3b5114e07ee5fdde810a63fee147e
spapr: fix migration to pseries machine < 2.8

since commit 5c4537bd ("spapr: Fix 2.7<->2.8 migration of PCI host bridge"),
some migration fields are forged from the new ones in spapr_pci_pre_save().

It works well, except when the number of MSI devices is 0,
because in this case the function exits immediately.

This fix moves the migration code before the exit code.

The problem can be reproduced with these commands:

source qemu-2.9:

    qemu-system-ppc64 -monitor stdio -M pseries-2.6 -nodefaults -S

destination qemu-2.6:

    qemu-system-ppc64 -monitor stdio -M pseries-2.6 -nodefaults \
                      -incoming tcp:0:4444

on the source:

    migrate tcp:localhost:4444

Destination fails with the following error:

    qemu-system-ppc64: error while loading state for
                       instance 0x0 of device 'spapr_pci'
    qemu-system-ppc64: load of migration failed: Invalid argument

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/ppc/spapr_pci.c