mirror of
https://github.com/qemu/qemu.git
synced 2026-07-08 17:46:10 +00:00
target/i386: add compat for migrating error code
If cpu->env.has_error_code is true, backwards migration of a VM from a QEMU binary with commit27535e9ccato a QEMU binary without commit27535e9ccawill fail: > kvm: error while loading state for instance 0x0 of device 'cpu' In practice, wrongly setting the error code to 0 on the target is often unproblematic, so additionally checking error_code != 0 in cpu_errcode_needed() is not enough to mitigate the issue. Instead, add proper machine version compat handling. Cc: qemu-stable@nongnu.org Fixes:27535e9cca("target/i386: Add support for save/load of exception error code") Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Link: https://lore.kernel.org/r/20260310154348.495332-1-f.ebner@proxmox.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
committed by
Paolo Bonzini
parent
f4107cbe80
commit
1b80f1009d
@@ -78,6 +78,7 @@ const size_t pc_compat_10_2_len = G_N_ELEMENTS(pc_compat_10_2);
|
||||
|
||||
GlobalProperty pc_compat_10_1[] = {
|
||||
{ "mch", "extended-tseg-mbytes", "16" },
|
||||
{ TYPE_X86_CPU, "x-migrate-error-code", "false" },
|
||||
};
|
||||
const size_t pc_compat_10_1_len = G_N_ELEMENTS(pc_compat_10_1);
|
||||
|
||||
|
||||
@@ -10651,6 +10651,7 @@ static const Property x86_cpu_properties[] = {
|
||||
DEFINE_PROP_BOOL("tcg-cpuid", X86CPU, expose_tcg, true),
|
||||
DEFINE_PROP_BOOL("x-migrate-smi-count", X86CPU, migrate_smi_count,
|
||||
true),
|
||||
DEFINE_PROP_BOOL("x-migrate-error-code", X86CPU, migrate_error_code, true),
|
||||
/*
|
||||
* lecacy_cache defaults to true unless the CPU model provides its
|
||||
* own cache information (see x86_cpu_load_def()).
|
||||
|
||||
@@ -2361,6 +2361,7 @@ struct ArchCPU {
|
||||
bool expose_tcg;
|
||||
bool migratable;
|
||||
bool migrate_smi_count;
|
||||
bool migrate_error_code;
|
||||
uint32_t apic_id;
|
||||
|
||||
/* Enables publishing of TSC increment and Local APIC bus frequencies to
|
||||
|
||||
@@ -466,7 +466,7 @@ static bool cpu_errcode_needed(void *opaque)
|
||||
{
|
||||
X86CPU *cpu = opaque;
|
||||
|
||||
return cpu->env.has_error_code != 0;
|
||||
return cpu->env.has_error_code != 0 && cpu->migrate_error_code;
|
||||
}
|
||||
|
||||
static const VMStateDescription vmstate_error_code = {
|
||||
|
||||
Reference in New Issue
Block a user