Merge "KVM: VMX: reflect broken preemption timer in vmcs_config"
authorJiang, Yunhong <yunhong.jiang@intel.com>
Thu, 21 Jul 2016 17:36:43 +0000 (17:36 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Thu, 21 Jul 2016 17:36:43 +0000 (17:36 +0000)
kernel/arch/x86/kvm/vmx.c

index 5da019b..e554177 100644 (file)
@@ -1101,9 +1101,6 @@ static inline bool cpu_has_broken_vmx_preemption_timer(void)
 
 static inline bool cpu_has_vmx_preemption_timer(void)
 {
-       if (cpu_has_broken_vmx_preemption_timer())
-               return false;
-
        return vmcs_config.pin_based_exec_ctrl &
                PIN_BASED_VMX_PREEMPTION_TIMER;
 }
@@ -3280,6 +3277,9 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf)
                                &_pin_based_exec_control) < 0)
                return -EIO;
 
+       if (cpu_has_broken_vmx_preemption_timer())
+               _pin_based_exec_control &= ~PIN_BASED_VMX_PREEMPTION_TIMER;
+
        if (!(_cpu_based_2nd_exec_control &
                SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY) ||
                !(_vmexit_control & VM_EXIT_ACK_INTR_ON_EXIT))