aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/vmx.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kvm/vmx.c')
-rw-r--r--arch/x86/kvm/vmx.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 45ffa32352f1..2fd2046dc94c 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -1884,6 +1884,11 @@ static void vmx_set_tsc_khz(struct kvm_vcpu *vcpu, u32 user_tsc_khz, bool scale)
1884 WARN(1, "user requested TSC rate below hardware speed\n"); 1884 WARN(1, "user requested TSC rate below hardware speed\n");
1885} 1885}
1886 1886
1887static u64 vmx_read_tsc_offset(struct kvm_vcpu *vcpu)
1888{
1889 return vmcs_read64(TSC_OFFSET);
1890}
1891
1887/* 1892/*
1888 * writes 'offset' into guest's timestamp counter offset register 1893 * writes 'offset' into guest's timestamp counter offset register
1889 */ 1894 */
@@ -2266,6 +2271,9 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
2266 } 2271 }
2267 ret = kvm_set_msr_common(vcpu, msr_info); 2272 ret = kvm_set_msr_common(vcpu, msr_info);
2268 break; 2273 break;
2274 case MSR_IA32_TSC_ADJUST:
2275 ret = kvm_set_msr_common(vcpu, msr_info);
2276 break;
2269 case MSR_TSC_AUX: 2277 case MSR_TSC_AUX:
2270 if (!vmx->rdtscp_enabled) 2278 if (!vmx->rdtscp_enabled)
2271 return 1; 2279 return 1;
@@ -7345,6 +7353,7 @@ static struct kvm_x86_ops vmx_x86_ops = {
7345 .has_wbinvd_exit = cpu_has_vmx_wbinvd_exit, 7353 .has_wbinvd_exit = cpu_has_vmx_wbinvd_exit,
7346 7354
7347 .set_tsc_khz = vmx_set_tsc_khz, 7355 .set_tsc_khz = vmx_set_tsc_khz,
7356 .read_tsc_offset = vmx_read_tsc_offset,
7348 .write_tsc_offset = vmx_write_tsc_offset, 7357 .write_tsc_offset = vmx_write_tsc_offset,
7349 .adjust_tsc_offset = vmx_adjust_tsc_offset, 7358 .adjust_tsc_offset = vmx_adjust_tsc_offset,
7350 .compute_tsc_offset = vmx_compute_tsc_offset, 7359 .compute_tsc_offset = vmx_compute_tsc_offset,