KVM: x86: Drop vm_init_tsc
authorZachary Amsden <zamsden@redhat.com>
Fri, 20 Aug 2010 08:07:15 +0000 (22:07 -1000)
committerAvi Kivity <avi@redhat.com>
Sun, 24 Oct 2010 08:51:21 +0000 (10:51 +0200)
This is used only by the VMX code, and is not done properly;
if the TSC is indeed backwards, it is out of sync, and will
need proper handling in the logic at each and every CPU change.
For now, drop this test during init as misguided.

Signed-off-by: Zachary Amsden <zamsden@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c

index e01b7282556480bf3cdc2f09a0b72f2d4acf6929..6056a23dc4cf1f16639d5162c07e7038844db887 100644 (file)
@@ -394,7 +394,6 @@ struct kvm_arch {
        gpa_t ept_identity_map_addr;
 
        unsigned long irq_sources_bitmap;
-       u64 vm_init_tsc;
        s64 kvmclock_offset;
 
        struct kvm_xen_hvm_config xen_hvm_config;
index 751a2d29f4ce190653e4e8935157b046ba83bfe0..4fbab2469bf9075dd3606d37adf6719236afbc15 100644 (file)
@@ -2512,7 +2512,7 @@ static int vmx_vcpu_setup(struct vcpu_vmx *vmx)
 {
        u32 host_sysenter_cs, msr_low, msr_high;
        u32 junk;
-       u64 host_pat, tsc_this, tsc_base;
+       u64 host_pat, tsc_this;
        unsigned long a;
        struct desc_ptr dt;
        int i;
@@ -2653,12 +2653,8 @@ static int vmx_vcpu_setup(struct vcpu_vmx *vmx)
                vmx->vcpu.arch.cr4_guest_owned_bits |= X86_CR4_PGE;
        vmcs_writel(CR4_GUEST_HOST_MASK, ~vmx->vcpu.arch.cr4_guest_owned_bits);
 
-       tsc_base = vmx->vcpu.kvm->arch.vm_init_tsc;
-       rdtscll(tsc_this);
-       if (tsc_this < vmx->vcpu.kvm->arch.vm_init_tsc)
-               tsc_base = tsc_this;
-
-       guest_write_tsc(0, tsc_base);
+       tsc_this = native_read_tsc();
+       guest_write_tsc(0, tsc_this);
 
        return 0;
 }
index 4b4d2836240f0e88632ef5dfbdc34f0bc0182903..8b0c51a1adaa690912935956c84a8db076a83b0f 100644 (file)
@@ -5495,8 +5495,6 @@ struct  kvm *kvm_arch_create_vm(void)
        /* Reserve bit 0 of irq_sources_bitmap for userspace irq source */
        set_bit(KVM_USERSPACE_IRQ_SOURCE_ID, &kvm->arch.irq_sources_bitmap);
 
-       rdtscll(kvm->arch.vm_init_tsc);
-
        return kvm;
 }