• Paolo Bonzini's avatar
    KVM: Move running VCPU from ARM to common code · 7495e22b
    Paolo Bonzini authored
    For ring-based dirty log tracking, it will be more efficient to account
    writes during schedule-out or schedule-in to the currently running VCPU.
    We would like to do it even if the write doesn't use the current VCPU's
    address space, as is the case for cached writes (see commit 4e335d9e,
    "Revert "KVM: Support vCPU-based gfn->hva cache"", 2017-05-02).
    
    Therefore, add a mechanism to track the currently-loaded kvm_vcpu struct.
    There is already something similar in KVM/ARM; one important difference
    is that kvm_arch_vcpu_{load,put} have two callers in virt/kvm/kvm_main.c:
    we have to update both the architecture-independent vcpu_{load,put} and
    the preempt notifiers.
    
    Another change made in the process is to allow using kvm_get_running_vcpu()
    in preemptible code.  This is allowed because preempt notifiers ensure
    that the value does not change even after the VCPU thread is migrated.
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    7495e22b
kvm_main.c 106 KB