aboutsummaryrefslogtreecommitdiff
path: root/include/hw/i386/apic_internal.h
diff options
context:
space:
mode:
authorIgor Mammedov <imammedo@redhat.com>2016-07-01 17:53:56 +0200
committerEduardo Habkost <ehabkost@redhat.com>2016-07-20 12:02:19 -0300
commitf6e984443f1634eee8d6876a7cce039b976c95e0 (patch)
treed989b870f5642a31f20b623808998b4ab089f36b /include/hw/i386/apic_internal.h
parent9c156f9de52b75510d3951dfede2cf96773b6626 (diff)
downloadqemu-f6e984443f1634eee8d6876a7cce039b976c95e0.zip
qemu-f6e984443f1634eee8d6876a7cce039b976c95e0.tar.gz
qemu-f6e984443f1634eee8d6876a7cce039b976c95e0.tar.bz2
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>
Diffstat (limited to 'include/hw/i386/apic_internal.h')
-rw-r--r--include/hw/i386/apic_internal.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
index e549a62..06c4e9f 100644
--- a/include/hw/i386/apic_internal.h
+++ b/include/hw/i386/apic_internal.h
@@ -183,6 +183,7 @@ struct APICCommonState {
uint32_t vapic_control;
DeviceState *vapic;
hwaddr vapic_paddr; /* note: persistence via kvmvapic */
+ bool legacy_instance_id;
};
typedef struct VAPICState {