i386: do not migrate MSR_SMI_COUNT on machine types <2.12

MSR_SMI_COUNT started being migrated in QEMU 2.12.  Do not migrate it
on older machine types, or the subsection causes a load failure for
guests that use SMM.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2018-07-24 13:59:21 +02:00
parent 6d9dd5fb9d
commit 990e0be260
4 changed files with 8 additions and 1 deletions

View File

@ -317,6 +317,10 @@ bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
#define PC_COMPAT_2_11 \ #define PC_COMPAT_2_11 \
HW_COMPAT_2_11 \ HW_COMPAT_2_11 \
{\ {\
.driver = TYPE_X86_CPU,\
.property = "x-migrate-smi-count",\
.value = "off",\
},{\
.driver = "Skylake-Server" "-" TYPE_X86_CPU,\ .driver = "Skylake-Server" "-" TYPE_X86_CPU,\
.property = "clflushopt",\ .property = "clflushopt",\
.value = "off",\ .value = "off",\

View File

@ -5435,6 +5435,8 @@ static Property x86_cpu_properties[] = {
false), false),
DEFINE_PROP_BOOL("vmware-cpuid-freq", X86CPU, vmware_cpuid_freq, true), DEFINE_PROP_BOOL("vmware-cpuid-freq", X86CPU, vmware_cpuid_freq, true),
DEFINE_PROP_BOOL("tcg-cpuid", X86CPU, expose_tcg, true), DEFINE_PROP_BOOL("tcg-cpuid", X86CPU, expose_tcg, true),
DEFINE_PROP_BOOL("x-migrate-smi-count", X86CPU, migrate_smi_count,
true),
/* /*
* lecacy_cache defaults to true unless the CPU model provides its * lecacy_cache defaults to true unless the CPU model provides its
* own cache information (see x86_cpu_load_def()). * own cache information (see x86_cpu_load_def()).

View File

@ -1379,6 +1379,7 @@ struct X86CPU {
bool expose_kvm; bool expose_kvm;
bool expose_tcg; bool expose_tcg;
bool migratable; bool migratable;
bool migrate_smi_count;
bool max_features; /* Enable all supported features automatically */ bool max_features; /* Enable all supported features automatically */
uint32_t apic_id; uint32_t apic_id;

View File

@ -400,7 +400,7 @@ static bool msr_smi_count_needed(void *opaque)
X86CPU *cpu = opaque; X86CPU *cpu = opaque;
CPUX86State *env = &cpu->env; CPUX86State *env = &cpu->env;
return env->msr_smi_count != 0; return cpu->migrate_smi_count && env->msr_smi_count != 0;
} }
static const VMStateDescription vmstate_msr_smi_count = { static const VMStateDescription vmstate_msr_smi_count = {