Hi On Mon, Jun 24, 2019 at 5:53 PM Laurent Vivier <[email protected]> wrote: > > On 29/05/2019 06:40, Gerd Hoffmann wrote: > > From: Marc-André Lureau <[email protected]> > > > > Add base classes that are common to vhost-user-gpu-pci and > > vhost-user-vga. > > > > Signed-off-by: Marc-André Lureau <[email protected]> > > Message-id: [email protected] > > Signed-off-by: Gerd Hoffmann <[email protected]> > > --- > > hw/display/virtio-vga.h | 32 +++++++++ > > hw/display/virtio-gpu-pci.c | 52 +++++++++----- > > hw/display/virtio-vga.c | 135 ++++++++++++++++++------------------ > > MAINTAINERS | 2 +- > > 4 files changed, 137 insertions(+), 84 deletions(-) > > create mode 100644 hw/display/virtio-vga.h > > > > This patch breaks something in the migration (no need of an OS, tested during > SLOF sequence). > > Tested between v4.0.0 and master. > > v4.0.0: ppc64-softmmu/qemu-system-ppc64 -machine pseries-4.0 \ > -device virtio-gpu-pci \ > -serial mon:stdio -incoming tcp:0:4444 > > master: ppc64-softmmu/qemu-system-ppc64 -machine pseries-4.0 \ > -device virtio-gpu-pci \ > -serial mon:stdio > > > master: (qemu) migrate tcp:localhost:4444 > > v4.0.0: > > qemu-system-ppc64: get_pci_config_device: Bad config data: i=0x34 read: 98 > device: 84 cmask: ff wmask: 0 w1cmask:0 > qemu-system-ppc64: Failed to load PCIDevice:config > qemu-system-ppc64: Failed to load virtio-gpu:virtio > qemu-system-ppc64: error while loading state for instance 0x0 of device > 'pci@800000020000000:02.0/virtio-gpu' > qemu-system-ppc64: load of migration failed: Invalid argument > > Is this something known?
Thanks for the report, I wasn't aware of it. The problem actually started from: commit a4ee4c8baa37154f42b4dc6a13fee79268d15238 Author: Eduardo Habkost <[email protected]> Date: Wed Dec 5 17:57:03 2018 -0200 virtio: Helper for registering virtio device types Since that commit virtio_gpu_pci_properties got lost (overwritten in virtio_pci_generic_class_init), and thus the PCI device changed (bar1 missing etc). My patches actually restored it as a side effect of defining a new base class. There are other devices affected with missing vectors and ioeventfd (and sometime a few others props): virtio-crypto-pci, virtio-9p-pci, vhost-user-blk-pci and more. They probably suffer similar migration issues. Given that this is a 4.0 regression, I think we should fix the remaining devices, and backport fixes to 4.0-stable. I am looking at it -- Marc-André Lureau
