xemu/hw
Michael S. Tsirkin 04920fc0fa loader: store FW CFG ROM files in RAM
ROM files that are put in FW CFG are copied to guest ram, by BIOS, but
they are not backed by RAM so they don't get migrated.

Each time we change two bytes in such a ROM this breaks cross-version
migration: since we can migrate after BIOS has read the first byte but
before it has read the second one, getting an inconsistent state.

Future-proof this by creating, for each such ROM,
an MR serving as the backing store.
This MR is never mapped into guest memory, but it's registered
as RAM so it's migrated with the guest.

Naturally, this only helps for -M 1.7 and up, older machine types
will still have the cross-version migration bug.
Luckily the race window for the problem to trigger is very small,
which is also likely why we didn't notice the cross-version
migration bug in testing yet.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
2013-08-21 00:18:39 +03:00
..
9pfs virtio-9p-device: Avoid freeing uninitialized memory 2013-08-01 11:18:24 -05:00
acpi acpi/piix4: QOM parent field cleanup 2013-07-23 00:37:33 +02:00
alpha target-alpha: Implement the typhoon iommu 2013-08-16 11:17:23 -07:00
arm hw/arm/pic_cpu: Remove the now-unneeded arm_pic_init_cpu() 2013-08-20 14:54:31 +01:00
audio pl041: QOM cast cleanup 2013-07-29 21:05:58 +02:00
block aio: drop io_flush argument 2013-08-19 15:52:19 +02:00
bt sysemu: avoid proliferation of include/ subdirectories 2013-04-15 18:19:25 +02:00
char virtio-console: Use exitfn for virtserialport, too 2013-08-01 11:18:32 -05:00
core loader: store FW CFG ROM files in RAM 2013-08-21 00:18:39 +03:00
cpu default-configs: Fix A9MP and A15MP config names 2013-08-20 14:54:32 +01:00
cris memory: add owner argument to initialization functions 2013-07-04 17:42:44 +02:00
display tcx: QOM cast cleanup 2013-07-29 21:06:05 +02:00
dma sun4m_iommu: QOM cast cleanup 2013-07-29 21:06:46 +02:00
gpio gpio/zaurus: QOM cast cleanup 2013-07-29 21:06:57 +02:00
i2c exynos4210_i2c: QOM cast cleanup 2013-07-29 21:07:02 +02:00
i386 loader: store FW CFG ROM files in RAM 2013-08-21 00:18:39 +03:00
ide ide: Introduce abstract QOM type for PCIIDEState 2013-07-29 20:41:49 +02:00
input pl050: QOM'ify pl050_keyboard and pl050_mouse 2013-07-29 21:06:57 +02:00
intc ioapic: QOM cast cleanup 2013-07-29 21:07:02 +02:00
isa i82378: Cleanup implementation 2013-07-31 23:25:41 +02:00
lm32 lm32_juart: QOM cast cleanup 2013-07-29 21:06:28 +02:00
m68k memory: add owner argument to initialization functions 2013-07-04 17:42:44 +02:00
microblaze microblaze: Fix latent bug with default DTB lookup 2013-07-09 13:38:58 -05:00
mips mips_malta: do not raise exceptions when accessing invalid memory 2013-08-14 16:47:30 +02:00
misc hw/misc: make pvpanic known to user 2013-08-12 11:20:57 -05:00
moxie memory: add owner argument to initialization functions 2013-07-04 17:42:44 +02:00
net pcnet: Flush queued packets on end of STOP state 2013-08-05 14:11:17 +02:00
nvram fw_cfg: the I/O port variant expects little-endian 2013-08-07 12:48:15 -05:00
openrisc hw/openrisc: Use stderr output instead of qemu_log 2013-07-23 18:31:24 +08:00
pci pcie_port: Turn PCIEPort and PCIESlot into abstract QOM types 2013-07-29 20:45:24 +02:00
pci-bridge i82801b11: Fix i82801b11 PCI host bridge config space 2013-08-12 12:07:12 +03:00
pci-host pci-host/prep: Set isa_mem_base in the PCI host bridge 2013-07-31 23:25:27 +02:00
ppc spapr: Rename 'dprintf' to 'DPRINTF' 2013-07-29 19:56:46 -05:00
s390x s390x: Rename 'dprintf' to 'DPRINTF' 2013-07-29 19:33:54 -05:00
scsi spapr: Rename 'dprintf' to 'DPRINTF' 2013-07-29 19:56:46 -05:00
sd pl181: QOM cast cleanup 2013-07-29 21:07:00 +02:00
sh4 sh4: unbreak r2d 2013-07-25 08:12:27 -05:00
sparc sun4m: QOM cast cleanup for RamDevice 2013-07-29 21:07:00 +02:00
sparc64 sun4u: QOM cast cleanup for RamDevice 2013-07-29 21:07:00 +02:00
ssi xilinx_spi: QOM cast cleanup 2013-07-29 21:07:01 +02:00
timer hw/timer/imx_epit: Simplify and fix imx_epit implementation 2013-08-20 14:54:32 +01:00
tpm hw/t*: pass owner to memory_region_init* functions 2013-07-04 17:42:48 +02:00
unicore32 memory: add owner argument to initialization functions 2013-07-04 17:42:44 +02:00
usb xhci: implement warm port reset 2013-08-08 13:29:25 +02:00
virtio pci,virtio fixes for 1.6 2013-08-12 08:32:55 -05:00
watchdog devices: Associate devices to their logical category 2013-07-29 10:37:09 -05:00
xen devices: Associate devices to their logical category 2013-07-29 10:37:09 -05:00
xtensa cpu: Turn cpu_get_phys_page_debug() into a CPUClass hook 2013-07-23 02:41:33 +02:00
Makefile.objs virtio: simplify Makefile conditionals 2013-04-19 16:18:11 +02:00