On Wed, Feb 13, 2019 at 09:48:57AM +0800, Changpeng Liu wrote: > Commit caa1ee43 "vhost-user-blk: add discard/write zeroes features > support" added fields to struct virtio_blk_config. This changes > the size of the config space and breaks migration from QEMU 3.1 > and older: > > qemu-system-ppc64: get_pci_config_device: Bad config data: i=0x10 read: 41 device: 1 cmask: ff wmask: 80 w1cmask:0 > qemu-system-ppc64: Failed to load PCIDevice:config > qemu-system-ppc64: Failed to load virtio-blk:virtio > qemu-system-ppc64: error while loading state for instance 0x0 of device 'pci@800000020000000:01.0/virtio-blk' > qemu-system-ppc64: load of migration failed: Invalid argument > > Since virtio-blk doesn't support the "discard" and "write zeroes" > features, it shouldn't even expose the associated fields in the > config space actually. Just include all fields up to num_queues to > match QEMU 3.1 and older. > > Signed-off-by: Changpeng Liu > --- > hw/block/virtio-blk.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) Stefano: Please rebase your DISCARD/WRITE_ZEROES series onto this and check that the config space is correctly sized. Machine types before 4.0 shouldn't have these fields so that the config space size remains unchanged. Thanks, applied to my block tree: https://github.com/stefanha/qemu/commits/block Stefan