• Paolo Bonzini's avatar
    kvm: x86: protect masterclock with a seqcount · 869b4421
    Paolo Bonzini authored
    Protect the reference point for kvmclock with a seqcount, so that
    kvmclock updates for all vCPUs can proceed in parallel.  Xen runstate
    updates will also run in parallel and not bounce the kvmclock cacheline.
    
    Of the variables that were protected by pvclock_gtod_sync_lock,
    nr_vcpus_matched_tsc is different because it is updated outside
    pvclock_update_vm_gtod_copy and read inside it.  Therefore, we
    need to keep it protected by a spinlock.  In fact it must now
    be a raw spinlock, because pvclock_update_vm_gtod_copy, being the
    write-side of a seqcount, is non-preemptible.  Since we already
    have tsc_write_lock which is a raw spinlock, we can just use
    tsc_write_lock as the lock that protects the write-side of the
    seqcount.
    Co-developed-by: default avatarOliver Upton <oupton@google.com>
    Message-Id: <20210916181538.968978-6-oupton@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    869b4421
x86.c 325 KB