]> git.proxmox.com Git - mirror_qemu.git/commit - include/hw/i386/pc.h
apic: Use apic_id as apic's migration instance_id
authorIgor Mammedov <imammedo@redhat.com>
Fri, 1 Jul 2016 15:53:56 +0000 (17:53 +0200)
committerEduardo Habkost <ehabkost@redhat.com>
Wed, 20 Jul 2016 15:02:19 +0000 (12:02 -0300)
commitf6e984443f1634eee8d6876a7cce039b976c95e0
treed989b870f5642a31f20b623808998b4ab089f36b
parent9c156f9de52b75510d3951dfede2cf96773b6626
apic: Use apic_id as apic's migration instance_id

instance_id is generated by last_used_id + 1 for a given device type
so for QEMU with 3 CPUs instance_id for APICs is a seti of [0, 1, 2]
When CPU in the middle is hot-removed and migration started
APICs with instance_ids 0 and 2 are transferred in migration stream.
However target starts with 2 CPUs and APICs' instance_ids are
generated from scratch [0, 1] hence migration fails with error
  Unknown savevm section or instance 'apic' 2

Fix issue by manually registering APIC's vmsd with apic_id as
instance_id, in this case instance_id on target will always
match instance_id on source as apic_id is the same for a given
cpu instance.

Reported-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
hw/intc/apic_common.c
include/hw/i386/apic_internal.h
include/hw/i386/pc.h