Series fixes migration issues caused by unstable cpu_index which depended on order cpus were created/destroyed. It follows David's idea to make cpu_index assignable by selected boards if board supports cpu-hotplug with device_add and needs stable cpu_index/'migration id' but leaves behaviour of the same as before for users that don't care about cpu-hot(un)plug making changes low-risk.
tested with: SRC -snapshot -enable-kvm -smp 1,maxcpus=3 -m 256M guest.img -monitor stdio \ -device qemu64-x86_64-cpu,id=cpudel,apic-id=1 \ -device qemu64-x86_64-cpu,apic-id=2 (qemu) device_del cpudel (qemu) stop (qemu) migrate "exec:gzip -c > STATEFILE.gz" DST -snapshot -enable-kvm -smp 1,maxcpus=3 -m 256M guest.img -monitor stdio \ -device qemu64-x86_64-cpu,apic-id=2 \ -incoming "exec: gzip -c -d STATEFILE.gz" git tree to test with: https://github.com/imammedo/qemu cpu-index-stable to view https://github.com/imammedo/qemu/commits/cpu-index-stable CC: Paolo Bonzini <pbonz...@redhat.com> CC: Peter Crosthwaite <crosthwaite.pe...@gmail.com> CC: Richard Henderson <r...@twiddle.net> CC: Eduardo Habkost <ehabk...@redhat.com> CC: "Michael S. Tsirkin" <m...@redhat.com> CC: David Gibson <da...@gibson.dropbear.id.au> CC: Alexander Graf <ag...@suse.de> CC: Riku Voipio <riku.voi...@iki.fi> CC: Bharata B Rao <bhar...@linux.vnet.ibm.com> CC: qemu-...@nongnu.org David Gibson (1): Revert "spapr: Ensure CPU cores are added contiguously and removed in LIFO order" Igor Mammedov (7): exec: reduce CONFIG_USER_ONLY ifdeffenery exec: don't use cpu_index to detect if cpu_exec_init()'s been called for cpu exec: set cpu_index only if it's been explictly set qdev: fix object reference leak in case device.realize() fails pc: init CPUState->cpu_index with index in possible_cpus[] spapr: init CPUState->cpu_index with index relative to core-id Revert "pc: Enforce adding CPUs contiguously and removing them in opposite order" bsd-user/qemu.h | 2 -- include/exec/exec-all.h | 12 +++++++++ include/qemu/queue.h | 2 ++ include/qom/cpu.h | 2 ++ linux-user/qemu.h | 2 -- exec.c | 65 +++++++++---------------------------------------- hw/core/qdev.c | 8 +++++- hw/i386/pc.c | 38 +++-------------------------- hw/ppc/spapr_cpu_core.c | 25 ++++--------------- qom/cpu.c | 2 +- 10 files changed, 44 insertions(+), 114 deletions(-) -- 2.7.4