KVM: VMX: reflect broken preemption timer in vmcs_config 75/17075/1
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 8 Jul 2016 09:53:38 +0000 (11:53 +0200)
committerYunhong Jiang <yunhong.jiang@linux.intel.com>
Mon, 18 Jul 2016 15:10:02 +0000 (08:10 -0700)
Simplify cpu_has_vmx_preemption_timer.  This is consistent with the
rest of setup_vmcs_config and preparatory for the next patch.

Tested-by: Wanpeng Li <kernellwp@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Change-Id: I3b33a881c5e47d5d3046e28374d0b0ca363ffad7
upstream-status: backport
Signed-off-by: Yunhong Jiang <yunhong.jiang@linux.intel.com>
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))