From: David Woodhouse Date: Mon, 2 Oct 2023 10:15:10 +0000 (+0100) Subject: timer hack to show kvmclock drift X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=ccc5926d03f10f017a4bcceec6b4ed4277af3388;p=users%2Fdwmw2%2Flinux.git timer hack to show kvmclock drift --- diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 856b12875bcbe..6631f9a2a366a 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3262,7 +3262,7 @@ uint64_t kvm_get_wall_clock_epoch(struct kvm *kvm) local_tsc_khz = get_cpu_tsc_khz(); if (local_tsc_khz && - !kvm_get_walltime_and_clockread(&ts, &host_tsc)) + !kvm_get_time_and_clockread(&ts.tv_sec, &host_tsc)) local_tsc_khz = 0; /* Fall back to old method */ hv_clock.tsc_timestamp = ka->master_cycle_now; @@ -3280,6 +3280,14 @@ uint64_t kvm_get_wall_clock_epoch(struct kvm *kvm) kvm_get_time_scale(NSEC_PER_SEC, local_tsc_khz * 1000LL, &hv_clock.tsc_shift, &hv_clock.tsc_to_system_mul); + + uint64_t res = __pvclock_read_cycles(&hv_clock, host_tsc); + uint64_t d2 = ts.tv_sec + ka->kvmclock_offset; + printk("Calculated %lld (%lld/%lld delta %lld, ns %lld o %lld)\n", + res, + ts.tv_sec, d2, d2-res, + ka->master_kernel_ns, ka->kvmclock_offset); + if (0) return ts.tv_nsec + NSEC_PER_SEC * ts.tv_sec - __pvclock_read_cycles(&hv_clock, host_tsc); } diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index 6bab715be428d..276a5b602d9bd 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -106,7 +106,7 @@ static int kvm_xen_shared_info_init(struct kvm *kvm, gfn_t gfn) wc->version = wc_version + 1; read_unlock_irq(&gpc->lock); - kvm_make_all_cpus_request(kvm, KVM_REQ_MASTERCLOCK_UPDATE); + //kvm_make_all_cpus_request(kvm, KVM_REQ_MASTERCLOCK_UPDATE); out: srcu_read_unlock(&kvm->srcu, idx);