qemu-e2k/hw/i386
Igor Mammedov 98e753a6e5 pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot
Since 2.7 commit (b2a575a Add optionrom compatible with fw_cfg DMA version)
regressed migration during firmware exection time by
abusing fwcfg.dma_enabled property to decide loading
dma version of option rom AND by mistake disabling DMA
for 2.6 and earlier globally instead of only for option rom.

so 2.6 machine type guest is broken when it already runs
firmware in DMA mode but migrated to qemu-2.7(pc-2.6)
at that time;

a) qemu-2.6:pc2.6 (fwcfg.dma=on,firmware=dma,oprom=ioport)
b) qemu-2.7:pc2.6 (fwcfg.dma=off,firmware=ioport,oprom=ioport)

  to:   a     b
from
a       OK   FAIL
b       OK   OK

So we currently have broken forward migration from
qemu-2.6 to qemu-2.[789] that however could be fixed
for 2.10 by re-enabling DMA for 2.[56] machine types
and allowing dma capable option rom only since 2.7.
As result qemu should end up with:

c) qemu-2.10:pc2.6 (fwcfg.dma=on,firmware=dma,oprom=ioport)

   to:  a     b    c
from
a      OK   FAIL  OK
b      OK   OK    OK
c      OK   FAIL  OK

where forward migration from qemu-2.6 to qemu-2.10 should
work again leaving only qemu-2.[789]:pc-2.6 broken.

Reported-by: Eduardo Habkost <ehabkost@redhat.com>
Analyzed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2017-05-10 22:04:23 +03:00
..
kvm kvmclock: Don't crash QEMU if KVM is disabled 2017-03-14 13:26:36 +01:00
xen move xen-mapcache.c to hw/i386/xen/ 2017-04-25 11:04:34 -07:00
Makefile.objs hw/i386: Introduce AMD IOMMU 2016-09-24 01:02:00 +03:00
acpi-build.c hw/acpi-defs: replace leading X with x_ in FADT field names 2017-05-10 22:04:23 +03:00
acpi-build.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
amd_iommu.c trace: Avoid abuse of amdvi_mmio_read 2017-03-24 09:21:42 +00:00
amd_iommu.h i386: amd_iommu: fix MMIO register count and access 2016-12-16 01:14:38 +02:00
intel_iommu.c intel_iommu: enable remote IOTLB 2017-04-20 15:22:41 -03:00
intel_iommu_internal.h intel_iommu: enable remote IOTLB 2017-04-20 15:22:41 -03:00
kvmvapic.c tcg: drop global lock during TCG code execution 2017-02-24 10:32:45 +00:00
multiboot.c multiboot: copy the cmdline verbatim, unescape module strings 2016-12-22 16:00:26 +01:00
multiboot.h refer to FWCfgState explicitly 2013-06-02 18:14:02 +03:00
pc.c pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot 2017-05-10 22:04:23 +03:00
pc_piix.c pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot 2017-05-10 22:04:23 +03:00
pc_q35.c pc/fwcfg: unbreak migration from qemu-2.5 and qemu-2.6 during firmware boot 2017-05-10 22:04:23 +03:00
pc_sysfw.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
pci-assign-load-rom.c pci-assign: avoid pointless stat 2017-01-24 23:26:53 +03:00
trace-events intel_iommu: enable remote IOTLB 2017-04-20 15:22:41 -03:00
x86-iommu.c intel_iommu: support device iotlb descriptor 2017-01-10 05:56:58 +02:00