diff options
Diffstat (limited to 'arch/x86/kvm/x86.c')
| -rw-r--r-- | arch/x86/kvm/x86.c | 7 | 
1 files changed, 3 insertions, 4 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 1ddcad452ad..a1e1bc9d412 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -670,7 +670,7 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)  {  	static int version;  	struct pvclock_wall_clock wc; -	struct timespec now, sys, boot; +	struct timespec boot;  	if (!wall_clock)  		return; @@ -685,9 +685,7 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)  	 * wall clock specified here.  guest system time equals host  	 * system time for us, thus we must fill in host boot time here.  	 */ -	now = current_kernel_time(); -	ktime_get_ts(&sys); -	boot = ns_to_timespec(timespec_to_ns(&now) - timespec_to_ns(&sys)); +	getboottime(&boot);  	wc.sec = boot.tv_sec;  	wc.nsec = boot.tv_nsec; @@ -762,6 +760,7 @@ static void kvm_write_guest_time(struct kvm_vcpu *v)  	local_irq_save(flags);  	kvm_get_msr(v, MSR_IA32_TSC, &vcpu->hv_clock.tsc_timestamp);  	ktime_get_ts(&ts); +	monotonic_to_bootbased(&ts);  	local_irq_restore(flags);  	/* With all the info we got, fill in the values */  |