lkml.org 
[lkml]   [2020]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/4] KVM: x86/mmu: Drop kvm_arch_write_log_dirty() wrapper
    Date
    Drop kvm_arch_write_log_dirty() in favor of invoking .write_log_dirty()
    directly from FNAME(update_accessed_dirty_bits). "kvm_arch" is usually
    used for x86 functions that are invoked from generic KVM, and implies
    that there are external callers, neither of which is true.

    Remove the check for a non-NULL kvm_x86_ops hook as the call is wrapped
    in PTTYPE_EPT and is unconditionally set by VMX.

    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    ---
    arch/x86/kvm/mmu.h | 1 -
    arch/x86/kvm/mmu/mmu.c | 15 ---------------
    arch/x86/kvm/mmu/paging_tmpl.h | 2 +-
    3 files changed, 1 insertion(+), 17 deletions(-)

    diff --git a/arch/x86/kvm/mmu.h b/arch/x86/kvm/mmu.h
    index 444bb9c54548..81cafc937cfb 100644
    --- a/arch/x86/kvm/mmu.h
    +++ b/arch/x86/kvm/mmu.h
    @@ -222,7 +222,6 @@ void kvm_mmu_gfn_disallow_lpage(struct kvm_memory_slot *slot, gfn_t gfn);
    void kvm_mmu_gfn_allow_lpage(struct kvm_memory_slot *slot, gfn_t gfn);
    bool kvm_mmu_slot_gfn_write_protect(struct kvm *kvm,
    struct kvm_memory_slot *slot, u64 gfn);
    -int kvm_arch_write_log_dirty(struct kvm_vcpu *vcpu, gpa_t l2_gpa);

    int kvm_mmu_post_init_vm(struct kvm *kvm);
    void kvm_mmu_pre_destroy_vm(struct kvm *kvm);
    diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
    index 76817d13c86e..a25427db1bb7 100644
    --- a/arch/x86/kvm/mmu/mmu.c
    +++ b/arch/x86/kvm/mmu/mmu.c
    @@ -1738,21 +1738,6 @@ void kvm_arch_mmu_enable_log_dirty_pt_masked(struct kvm *kvm,
    kvm_mmu_write_protect_pt_masked(kvm, slot, gfn_offset, mask);
    }

    -/**
    - * kvm_arch_write_log_dirty - emulate dirty page logging
    - * @vcpu: Guest mode vcpu
    - *
    - * Emulate arch specific page modification logging for the
    - * nested hypervisor
    - */
    -int kvm_arch_write_log_dirty(struct kvm_vcpu *vcpu, gpa_t l2_gpa)
    -{
    - if (kvm_x86_ops.write_log_dirty)
    - return kvm_x86_ops.write_log_dirty(vcpu, l2_gpa);
    -
    - return 0;
    -}
    -
    bool kvm_mmu_slot_gfn_write_protect(struct kvm *kvm,
    struct kvm_memory_slot *slot, u64 gfn)
    {
    diff --git a/arch/x86/kvm/mmu/paging_tmpl.h b/arch/x86/kvm/mmu/paging_tmpl.h
    index cddd40029553..60e7b2308876 100644
    --- a/arch/x86/kvm/mmu/paging_tmpl.h
    +++ b/arch/x86/kvm/mmu/paging_tmpl.h
    @@ -260,7 +260,7 @@ static int FNAME(update_accessed_dirty_bits)(struct kvm_vcpu *vcpu,
    !(pte & PT_GUEST_DIRTY_MASK)) {
    trace_kvm_mmu_set_dirty_bit(table_gfn, index, sizeof(pte));
    #if PTTYPE == PTTYPE_EPT
    - if (kvm_arch_write_log_dirty(vcpu, addr))
    + if (kvm_x86_ops.write_log_dirty(vcpu, addr))
    return -EINVAL;
    #endif
    pte |= PT_GUEST_DIRTY_MASK;
    --
    2.26.0
    \
     
     \ /
      Last update: 2020-06-22 23:59    [W:4.313 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site