qemu-irix/include/hw
Maxime Coquelin 66d1c4c19f virtio-pci: Fix cross-version migration with older machines
This patch fixes a cross-version migration regression introduced
by commit d1b4259f ("virtio-bus: Plug devices after features are
negotiated").

The problem is encountered when host's vhost backend does not support
VIRTIO_F_VERSION_1, and migration is initiated from a v2.7 or prior
machine with virtio-pci modern capabilities enabled to a v2.8 machine.

In this case, modern capabilities get exposed to the guest by the source,
whereas the target will detect version 1 is not supported so will only
expose legacy capabilities.

The problem is fixed by introducing a new "x-ignore-backend-features"
property, which is set in v2.7 and prior compatibility modes. Doing this,
v2.7 machine keeps its broken behaviour (enabling modern while version
is not supported), and newer machines will behave correctly.

Reported-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Message-id: 20161214163035.3297-1-maxime.coquelin@redhat.com
Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Tested-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2016-12-15 07:35:19 +00:00
..
acpi acpi: fix DMAR device scope for IOAPIC 2016-11-15 17:20:36 +02:00
adc
arm hw/arm/virt: no ITS on older machine types 2016-10-17 19:22:17 +01:00
audio
block
char char: use qemu_chr_fe* functions with CharBackend argument 2016-10-24 15:27:21 +02:00
core
cpu
cris
display
dma
gpio
i2c
i386 migration/pcspk: Turn migration of pcspk off for 2.7 and older 2016-11-28 16:45:12 +01:00
ide
input
intc
ipack
ipmi
isa
kvm
lm32
m68k
mem nvdimm acpi: rename nvdimm_acpi_hotplug 2016-11-15 17:20:37 +02:00
mips
misc
net
nvram nvram: Rename openbios_firmware_abi.h into sun_nvram.h 2016-10-28 09:36:58 +11:00
pci
pci-host spapr: Fix 2.7<->2.8 migration of PCI host bridge 2016-11-23 12:00:48 +11:00
ppc spapr: migration support for CAS-negotiated option vectors 2016-11-23 12:00:48 +11:00
s390x
scsi
sd
sh4
smbios
sparc
ssi aspeed: move the flash module mapping address under the controller definition 2016-10-17 19:22:16 +01:00
timer arm_mptimer: Convert to use ptimer 2016-10-24 16:26:53 +01:00
tricore
unicore32
usb
vfio vfio: Pass an error object to vfio_get_device 2016-10-17 10:58:00 -06:00
virtio virtio: set ISR on dataplane notifications 2016-11-18 17:29:25 +02:00
watchdog
xen xen: create qdev for each backend device 2016-11-22 10:29:39 -08:00
boards.h cpu: Support a target CPU having a variable page size 2016-10-24 16:26:49 +01:00
bt.h
compat.h virtio-pci: Fix cross-version migration with older machines 2016-12-15 07:35:19 +00:00
devices.h
elf_ops.h
empty_slot.h
fw-path-provider.h
hotplug.h qdev: hotplug: drop HotplugHandler.post_plug callback 2016-11-15 17:20:37 +02:00
hw.h
ide.h
irq.h
loader.h loader: fix handling of custom address spaces when adding ROM blobs 2016-11-30 04:20:57 +02:00
nmi.h
or-irq.h
pcmcia.h
platform-bus.h
ptimer.h hw/ptimer: Add "no counter round down" policy 2016-10-24 16:26:52 +01:00
qdev-core.h
qdev-dma.h
qdev-properties.h char: replace PROP_CHR with CharBackend 2016-10-24 15:27:20 +02:00
qdev.h
register.h
stream.h
sysbus.h
usb.h