qemu-irix/include/hw
David Gibson 5c4537bded spapr: Fix 2.7<->2.8 migration of PCI host bridge
daa2369 "spapr_pci: Add a 64-bit MMIO window" subtly broke migration
from qemu-2.7 to the current version.  It split the device's MMIO
window into two pieces for 32-bit and 64-bit MMIO.

The patch included backwards compatibility code to convert the old
property into the new format.  However, the property value was also
transferred in the migration stream and compared with a (probably
unwise) VMSTATE_EQUAL.  So, the "raw" value from 2.7 is compared to
the new style converted value from (pre-)2.8 giving a mismatch and
migration failure.

Along with the actual field that caused the breakage, there are
several other ill-advised VMSTATE_EQUAL()s.  To fix forwards
migration, we read the values in the stream into scratch variables and
ignore them, instead of comparing for equality.  To fix backwards
migration, we populate those scratch variables in pre_save() with
adjusted values to match the old behaviour.

To permit the eventual possibility of removing this cruft from the
stream, we only include these compatibility fields if a new
'pre-2.8-migration' property is set.  We clear it on the pseries-2.8
machine type, which obviously can't be migrated backwards, but set it
on earlier machine type versions.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
2016-11-23 12:00:48 +11:00
..
acpi acpi: fix DMAR device scope for IOAPIC 2016-11-15 17:20:36 +02:00
adc STM32F2xx: Add the ADC device 2016-10-04 13:28:07 +01:00
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 generic-loader: Add a generic loader 2016-10-04 13:28:09 +01:00
cpu
cris
display
dma dma: xlnx-zynq-devcfg: Fix up XLNX_ZYNQ_DEVCFG_R_MAX 2016-09-22 18:13:08 +01:00
gpio
i2c
i386 pc: fix FW_CFG_NB_CPUS to account for -device added CPUs 2016-11-16 12:10:00 -02:00
ide ide: Fix memory leak in ide_register_restart_cb() 2016-09-29 15:50:29 -04:00
input adb-keys.h: initial commit 2016-09-23 10:29:40 +10:00
intc * Thread Sanitizer fixes (Alex) 2016-10-10 10:39:29 +01:00
ipack
ipmi
isa
kvm
lm32 intc: make HMP 'info irq' and 'info pic' commands use InterruptStatsProvider interface 2016-10-04 10:00:25 +02:00
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 hw/pci: Prepare for AMD IOMMU 2016-09-23 19:03:56 +03:00
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 intc: make HMP 'info irq' and 'info pic' commands use InterruptStatsProvider interface 2016-10-04 10:00:25 +02:00
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 bt-hci-csr: drop unused argument 2016-10-08 09:02:19 +03:00
compat.h intel_iommu: reject broken EIM 2016-10-17 15:44:49 -02:00
devices.h
elf_ops.h loader: Add AddressSpace loading support to ELFs 2016-09-22 18:13:08 +01:00
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: Add AddressSpace loading support to targphys 2016-09-22 18:13:08 +01:00
nmi.h
or-irq.h irq: Add a new irq device that allows the ORing of lines 2016-10-04 13:28:07 +01:00
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 sysbus: Remove ignored return value of FindSysbusDeviceFunc 2016-09-27 17:03:34 -03:00
usb.h