From ac83cb52be3fbe226645e780500adb767f9bcfd2 Mon Sep 17 00:00:00 2001 From: Mark Kanda Date: Tue, 16 Jul 2019 14:46:11 -0500 Subject: [PATCH QEMU] Only enable the halt poll control MSR if it is supported by the host The halt poll control MSR should only be enabled on hosts which support it. Fixes: ("kvm: i386: halt poll control MSR support") Signed-off-by: Mark Kanda --- target/i386/cpu.c | 8 +++++++- target/i386/kvm.c | 2 -- target/i386/machine.c | 1 - 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index a8bafdb8b9..dacbf7a9fe 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2838,7 +2838,6 @@ static PropValue kvm_default_props[] = { { "kvm-asyncpf", "on" }, { "kvm-steal-time", "on" }, { "kvm-pv-eoi", "on" }, - { "kvm-poll-control", "on" }, { "kvmclock-stable-bit", "on" }, { "x2apic", "on" }, { "acpi", "off" }, @@ -5109,6 +5108,13 @@ static void x86_cpu_expand_features(X86CPU *cpu, Error **errp) env->cpuid_xlevel2 = env->cpuid_min_xlevel2; } + /* Enable the halt poll control MSR if it is supported by the host */ + if (x86_cpu_get_supported_feature_word(FEAT_KVM, cpu->migratable) & + (1 << KVM_FEATURE_POLL_CONTROL)) { + env->features[FEAT_KVM] |= 1 << KVM_FEATURE_POLL_CONTROL; + env->poll_control_msr = 1; + } + out: if (local_err != NULL) { error_propagate(errp, local_err); diff --git a/target/i386/kvm.c b/target/i386/kvm.c index cb22684139..81dd5d2c1b 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -1796,8 +1796,6 @@ void kvm_arch_reset_vcpu(X86CPU *cpu) hyperv_x86_synic_reset(cpu); } - /* enabled by default */ - env->poll_control_msr = 1; } void kvm_arch_do_init_vcpu(X86CPU *cpu) diff --git a/target/i386/machine.c b/target/i386/machine.c index 20077a8a5a..9d6095b264 100644 --- a/target/i386/machine.c +++ b/target/i386/machine.c @@ -394,7 +394,6 @@ static bool steal_time_msr_needed(void *opaque) return cpu->env.steal_time_msr != 0; } -/* Poll control MSR enabled by default */ static bool poll_control_msr_needed(void *opaque) { X86CPU *cpu = opaque; -- 2.21.0