KVM: VMX: simplify rdtscp handling in vmx_cpuid_update()
authorXiao Guangrong <guangrong.xiao@linux.intel.com>
Wed, 9 Sep 2015 06:05:53 +0000 (14:05 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 1 Oct 2015 13:06:37 +0000 (15:06 +0200)
if vmx_rdtscp_supported() is true SECONDARY_EXEC_RDTSCP must
have already been set in current vmcs by
vmx_secondary_exec_control()

Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx.c

index 8f4c138082324e1a434f10d5001c2f16dc66fbf3..d53f57aad5eb712861fe932f82ad8d14fda358df 100644 (file)
@@ -8677,16 +8677,15 @@ static void vmx_cpuid_update(struct kvm_vcpu *vcpu)
        vmx->rdtscp_enabled = false;
        if (vmx_rdtscp_supported()) {
                exec_control = vmcs_read32(SECONDARY_VM_EXEC_CONTROL);
-               if (exec_control & SECONDARY_EXEC_RDTSCP) {
-                       best = kvm_find_cpuid_entry(vcpu, 0x80000001, 0);
-                       if (best && (best->edx & bit(X86_FEATURE_RDTSCP)))
-                               vmx->rdtscp_enabled = true;
-                       else {
-                               exec_control &= ~SECONDARY_EXEC_RDTSCP;
-                               vmcs_write32(SECONDARY_VM_EXEC_CONTROL,
-                                               exec_control);
-                       }
+               best = kvm_find_cpuid_entry(vcpu, 0x80000001, 0);
+               if (best && (best->edx & bit(X86_FEATURE_RDTSCP)))
+                       vmx->rdtscp_enabled = true;
+               else {
+                       exec_control &= ~SECONDARY_EXEC_RDTSCP;
+                       vmcs_write32(SECONDARY_VM_EXEC_CONTROL,
+                                       exec_control);
                }
+
                if (nested && !vmx->rdtscp_enabled)
                        vmx->nested.nested_vmx_secondary_ctls_high &=
                                ~SECONDARY_EXEC_RDTSCP;