From: Avi Kivity Signed-off-by: Avi Kivity Signed-off-by: Andrew Morton --- drivers/kvm/kvm_main.c | 27 --------------------------- drivers/kvm/vmx.c | 27 +++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 29 deletions(-) diff -puN drivers/kvm/kvm_main.c~kvm-move-the-vmx-tsc-accessors-to-vmxc drivers/kvm/kvm_main.c --- a/drivers/kvm/kvm_main.c~kvm-move-the-vmx-tsc-accessors-to-vmxc +++ a/drivers/kvm/kvm_main.c @@ -490,33 +490,6 @@ static void inject_gp(struct kvm_vcpu *v kvm_arch_ops->inject_gp(vcpu, 0); } -/* - * reads and returns guest's timestamp counter "register" - * guest_tsc = host_tsc + tsc_offset -- 21.3 - */ -u64 guest_read_tsc(void) -{ - u64 host_tsc, tsc_offset; - - rdtscll(host_tsc); - tsc_offset = vmcs_read64(TSC_OFFSET); - return host_tsc + tsc_offset; -} -EXPORT_SYMBOL_GPL(guest_read_tsc); - -/* - * writes 'guest_tsc' into guest's timestamp counter "register" - * guest_tsc = host_tsc + tsc_offset ==> tsc_offset = guest_tsc - host_tsc - */ -void guest_write_tsc(u64 guest_tsc) -{ - u64 host_tsc; - - rdtscll(host_tsc); - vmcs_write64(TSC_OFFSET, guest_tsc - host_tsc); -} -EXPORT_SYMBOL_GPL(guest_write_tsc); - static int pdptrs_have_reserved_bits_set(struct kvm_vcpu *vcpu, unsigned long cr3) { diff -puN drivers/kvm/vmx.c~kvm-move-the-vmx-tsc-accessors-to-vmxc drivers/kvm/vmx.c --- a/drivers/kvm/vmx.c~kvm-move-the-vmx-tsc-accessors-to-vmxc +++ a/drivers/kvm/vmx.c @@ -57,8 +57,6 @@ static const u32 vmx_msr_index[] = { }; #define NR_VMX_MSR (sizeof(vmx_msr_index) / sizeof(*vmx_msr_index)) -u64 guest_read_tsc(void); -void guest_write_tsc(u64 guest_tsc); struct vmx_msr_entry *find_msr_entry(struct kvm_vcpu *vcpu, u32 msr); static void skip_emulated_instruction(struct kvm_vcpu *vcpu) @@ -92,6 +90,31 @@ static void vmx_inject_gp(struct kvm_vcp INTR_INFO_VALID_MASK); } +/* + * reads and returns guest's timestamp counter "register" + * guest_tsc = host_tsc + tsc_offset -- 21.3 + */ +static u64 guest_read_tsc(void) +{ + u64 host_tsc, tsc_offset; + + rdtscll(host_tsc); + tsc_offset = vmcs_read64(TSC_OFFSET); + return host_tsc + tsc_offset; +} + +/* + * writes 'guest_tsc' into guest's timestamp counter "register" + * guest_tsc = host_tsc + tsc_offset ==> tsc_offset = guest_tsc - host_tsc + */ +static void guest_write_tsc(u64 guest_tsc) +{ + u64 host_tsc; + + rdtscll(host_tsc); + vmcs_write64(TSC_OFFSET, guest_tsc - host_tsc); +} + static void reload_tss(void) { #ifndef __x86_64__ _