lkml.org 
[lkml]   [2021]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 07/31] KVM: MMU: change handle_abnormal_pfn() arguments to kvm_page_fault
    Date
    Pass struct kvm_page_fault to handle_abnormal_pfn() instead of
    extracting the arguments from the struct.

    Suggested-by: Isaku Yamahata <isaku.yamahata@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    ---
    arch/x86/kvm/mmu/mmu.c | 18 +++++++++---------
    arch/x86/kvm/mmu/paging_tmpl.h | 2 +-
    2 files changed, 10 insertions(+), 10 deletions(-)

    diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
    index c2d2d019634b..6821d05c0557 100644
    --- a/arch/x86/kvm/mmu/mmu.c
    +++ b/arch/x86/kvm/mmu/mmu.c
    @@ -3060,18 +3060,19 @@ static int kvm_handle_bad_page(struct kvm_vcpu *vcpu, gfn_t gfn, kvm_pfn_t pfn)
    return -EFAULT;
    }

    -static bool handle_abnormal_pfn(struct kvm_vcpu *vcpu, gva_t gva, gfn_t gfn,
    - kvm_pfn_t pfn, unsigned int access,
    - int *ret_val)
    +static bool handle_abnormal_pfn(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault,
    + unsigned int access, int *ret_val)
    {
    /* The pfn is invalid, report the error! */
    - if (unlikely(is_error_pfn(pfn))) {
    - *ret_val = kvm_handle_bad_page(vcpu, gfn, pfn);
    + if (unlikely(is_error_pfn(fault->pfn))) {
    + *ret_val = kvm_handle_bad_page(vcpu, fault->gfn, fault->pfn);
    return true;
    }

    - if (unlikely(is_noslot_pfn(pfn))) {
    - vcpu_cache_mmio_info(vcpu, gva, gfn,
    + if (unlikely(is_noslot_pfn(fault->pfn))) {
    + gva_t gva = fault->is_tdp ? 0 : fault->addr;
    +
    + vcpu_cache_mmio_info(vcpu, gva, fault->gfn,
    access & shadow_mmio_access_mask);
    /*
    * If MMIO caching is disabled, emulate immediately without
    @@ -3975,8 +3976,7 @@ static int direct_page_fault(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault
    if (kvm_faultin_pfn(vcpu, fault, &r))
    return r;

    - if (handle_abnormal_pfn(vcpu, fault->is_tdp ? 0 : gpa,
    - fault->gfn, fault->pfn, ACC_ALL, &r))
    + if (handle_abnormal_pfn(vcpu, fault, ACC_ALL, &r))
    return r;

    r = RET_PF_RETRY;
    diff --git a/arch/x86/kvm/mmu/paging_tmpl.h b/arch/x86/kvm/mmu/paging_tmpl.h
    index 72f0b415be63..0fa7a678b907 100644
    --- a/arch/x86/kvm/mmu/paging_tmpl.h
    +++ b/arch/x86/kvm/mmu/paging_tmpl.h
    @@ -893,7 +893,7 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault
    if (kvm_faultin_pfn(vcpu, fault, &r))
    return r;

    - if (handle_abnormal_pfn(vcpu, addr, fault->gfn, fault->pfn, walker.pte_access, &r))
    + if (handle_abnormal_pfn(vcpu, fault, walker.pte_access, &r))
    return r;

    /*
    --
    2.27.0

    \
     
     \ /
      Last update: 2021-09-24 18:32    [W:4.232 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site