]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - arch/x86/kvm/x86.c
KVM: x86: update master clock before computing kvmclock_offset
[mirror_ubuntu-artful-kernel.git] / arch / x86 / kvm / x86.c
index 6c7266f7766dcb6ec02b13b9b1439c9f9d547071..ca128a9c9cc4e60f4c4ffe0c736f8c06d9b3f69e 100644 (file)
@@ -4188,9 +4188,15 @@ long kvm_arch_vm_ioctl(struct file *filp,
                        goto out;
 
                r = 0;
+               /*
+                * TODO: userspace has to take care of races with VCPU_RUN, so
+                * kvm_gen_update_masterclock() can be cut down to locked
+                * pvclock_update_vm_gtod_copy().
+                */
+               kvm_gen_update_masterclock(kvm);
                now_ns = get_kvmclock_ns(kvm);
                kvm->arch.kvmclock_offset += user_ns.clock - now_ns;
-               kvm_gen_update_masterclock(kvm);
+               kvm_make_all_cpus_request(kvm, KVM_REQ_CLOCK_UPDATE);
                break;
        }
        case KVM_GET_CLOCK: {