Commit 93bf4172 authored by Andrey Smetanin's avatar Andrey Smetanin Committed by Paolo Bonzini

kvm/x86: Hyper-V internal helper to read MSR HV_X64_MSR_TIME_REF_COUNT

This helper will be used also in Hyper-V SynIC timers implementation.
Signed-off-by: default avatarAndrey Smetanin <asmetanin@virtuozzo.com>
Reviewed-by: default avatarRoman Kagan <rkagan@virtuozzo.com>
CC: Gleb Natapov <gleb@kernel.org>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: "K. Y. Srinivasan" <kys@microsoft.com>
CC: Haiyang Zhang <haiyangz@microsoft.com>
CC: Vitaly Kuznetsov <vkuznets@redhat.com>
CC: Roman Kagan <rkagan@virtuozzo.com>
CC: Denis V. Lunev <den@openvz.org>
CC: qemu-devel@nongnu.org
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 0ae80384
...@@ -335,6 +335,11 @@ static void synic_init(struct kvm_vcpu_hv_synic *synic) ...@@ -335,6 +335,11 @@ static void synic_init(struct kvm_vcpu_hv_synic *synic)
} }
} }
static u64 get_time_ref_counter(struct kvm *kvm)
{
return div_u64(get_kernel_ns() + kvm->arch.kvmclock_offset, 100);
}
void kvm_hv_vcpu_init(struct kvm_vcpu *vcpu) void kvm_hv_vcpu_init(struct kvm_vcpu *vcpu)
{ {
synic_init(vcpu_to_synic(vcpu)); synic_init(vcpu_to_synic(vcpu));
...@@ -576,11 +581,9 @@ static int kvm_hv_get_msr_pw(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata) ...@@ -576,11 +581,9 @@ static int kvm_hv_get_msr_pw(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
case HV_X64_MSR_HYPERCALL: case HV_X64_MSR_HYPERCALL:
data = hv->hv_hypercall; data = hv->hv_hypercall;
break; break;
case HV_X64_MSR_TIME_REF_COUNT: { case HV_X64_MSR_TIME_REF_COUNT:
data = data = get_time_ref_counter(kvm);
div_u64(get_kernel_ns() + kvm->arch.kvmclock_offset, 100);
break; break;
}
case HV_X64_MSR_REFERENCE_TSC: case HV_X64_MSR_REFERENCE_TSC:
data = hv->hv_tsc_page; data = hv->hv_tsc_page;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment