qemu-irix/include/hw
Paolo Bonzini 07fb61760c pc: hack for migration compatibility from QEMU 2.0
Changing the ACPI table size causes migration to break, and the memory
hotplug work opened our eyes on how horribly we were breaking things in
2.0 already.

The ACPI table size is rounded to the next 4k, which one would think
gives some headroom.  In practice this is not the case, because the user
can control the ACPI table size (each CPU adds 97 bytes to the SSDT and
8 to the MADT) and so some "-smp" values will break the 4k boundary and
fail to migrate.  Similarly, PCI bridges add ~1870 bytes to the SSDT.

This patch concerns itself with fixing migration from QEMU 2.0.  It
computes the payload size of QEMU 2.0 and always uses that one.
The previous patch shrunk the ACPI tables enough that the QEMU 2.0 size
should always be enough; non-AML tables can change depending on the
configuration (especially MADT, SRAT, HPET) but they remain the same
between QEMU 2.0 and 2.1, so we only compute our padding based on the
sizes of the SSDT and DSDT.

Migration from QEMU 1.7 should work for guests that have a number of CPUs
other than 12, 13, 14, 54, 55, 56, 97, 98, 139, 140.  It was already
broken from QEMU 1.7 to QEMU 2.0 in the same way, though.

Even with this patch, QEMU 1.7 and 2.0 have two different ideas of
"-M pc-i440fx-2.0" when there are PCI bridges.  Igor sent a patch to
adopt the QEMU 1.7 definition.  I think distributions should apply
it if they move directly from QEMU 1.7 to 2.1+ without ever packaging
version 2.0.

Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2014-07-28 23:02:39 +02:00
..
acpi acpi: rephrase comment 2014-06-19 18:44:22 +03:00
arm
audio
block
char
cpu
cris
i2c smbus: return -1 if nothing found at the given address 2014-05-07 19:14:46 +03:00
i386 pc: hack for migration compatibility from QEMU 2.0 2014-07-28 23:02:39 +02:00
input input: switch hid mouse and tablet to the new input layer api. 2014-05-26 08:42:43 +02:00
intc
ipack
isa
kvm
lm32
m68k
mem qmp: add query-memory-devices command 2014-06-19 18:44:22 +03:00
mips hw/mips: Add API to convert KVM guest KSEG0 <-> GPA 2014-06-18 16:58:10 +02:00
misc vfio: Add vfio_container_ioctl() 2014-06-27 13:48:23 +02:00
net allwinner-emac: set autonegotiation complete bit on link up 2014-04-17 21:34:06 +01:00
nvram
pci hw/pcie: implement power controller functionality 2014-06-23 17:48:42 +03:00
pci-host spapr_pci: Use XICS interrupt allocator and do not cache interrupts in PHB 2014-06-27 13:48:27 +02:00
ppc spapr_pci: Use XICS interrupt allocator and do not cache interrupts in PHB 2014-06-27 13:48:27 +02:00
s390x s390x/virtio-ccw: wire up irq routing and irqfds 2014-05-20 13:05:58 +02:00
scsi
sh4
sparc
timer allwinner-a10-pit: implement prescaler and source selection 2014-04-17 21:34:06 +01:00
unicore32
usb usb: move ehci register defines to header file 2014-06-02 16:28:59 +02:00
virtio Misc 2.1 fixes regarding character/serial devices and SCSI. 2014-07-14 17:01:45 +01:00
xen xen_backend: introduce xenstore_read_uint64 and xenstore_read_fe_uint64 2014-07-07 10:37:40 +00:00
boards.h numa: introduce memory_region_allocate_system_memory 2014-06-19 18:44:19 +03:00
bt.h
devices.h
elf_ops.h
empty_slot.h
fw-path-provider.h
hotplug.h
hw.h
ide.h
irq.h irq: Slim conversion of qemu_irq to QOM 2014-07-01 04:12:48 +02:00
loader.h
pcmcia.h
ptimer.h
qdev-core.h qdev: correctly send DEVICE_DELETED for recursively-deleted devices 2014-07-01 10:20:42 +02:00
qdev-dma.h
qdev-properties.h qdev: drop iothread property type 2014-07-01 09:15:02 +02:00
qdev.h
sd.h
ssi.h ssi: Name the CS GPIO 2014-05-28 17:36:21 +02:00
stream.h
sysbus.h
usb.h usb: add usb_pick_speed 2014-06-02 16:29:00 +02:00