mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
KVM: x86/mmu: Move kvm_arch_async_page_ready() below kvm_tdp_page_fault()
Move the implementation of kvm_arch_async_page_ready() "down" in mmu.c so that it lives below kvm_tdp_page_fault(). This will allow moving kvm_mmu_do_page_fault() into mmu.c without needing a forward declaration. No functional change intended. Reviewed-by: Yosry Ahmed <yosry@kernel.org> Reviewed-by: Kai Huang <kai.huang@intel.com> Signed-off-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com> Message-ID: <20260613000329.732085-29-seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5b9585bc5b
commit
31a2cf735c
|
|
@ -4573,37 +4573,6 @@ static bool kvm_arch_setup_async_pf(struct kvm_vcpu *vcpu,
|
|||
kvm_vcpu_gfn_to_hva(vcpu, fault->gfn), &arch);
|
||||
}
|
||||
|
||||
void kvm_arch_async_page_ready(struct kvm_vcpu *vcpu, struct kvm_async_pf *work)
|
||||
{
|
||||
int r;
|
||||
|
||||
if (WARN_ON_ONCE(work->arch.error_code & PFERR_PRIVATE_ACCESS))
|
||||
return;
|
||||
|
||||
if ((vcpu->arch.mmu->root_role.direct != work->arch.direct_map) ||
|
||||
work->wakeup_all)
|
||||
return;
|
||||
|
||||
r = kvm_mmu_reload(vcpu);
|
||||
if (unlikely(r))
|
||||
return;
|
||||
|
||||
if (!vcpu->arch.mmu->root_role.direct &&
|
||||
work->arch.cr3 != kvm_mmu_get_guest_pgd(vcpu, vcpu->arch.mmu))
|
||||
return;
|
||||
|
||||
r = kvm_mmu_do_page_fault(vcpu, work->cr2_or_gpa, work->arch.error_code,
|
||||
true, NULL, NULL);
|
||||
|
||||
/*
|
||||
* Account fixed page faults, otherwise they'll never be counted, but
|
||||
* ignore stats for all other return times. Page-ready "faults" aren't
|
||||
* truly spurious and never trigger emulation
|
||||
*/
|
||||
if (r == RET_PF_FIXED)
|
||||
vcpu->stat.pf_fixed++;
|
||||
}
|
||||
|
||||
static void kvm_mmu_finish_page_fault(struct kvm_vcpu *vcpu,
|
||||
struct kvm_page_fault *fault, int r)
|
||||
{
|
||||
|
|
@ -5060,6 +5029,37 @@ long kvm_arch_vcpu_pre_fault_memory(struct kvm_vcpu *vcpu,
|
|||
return min(range->size, end - range->gpa);
|
||||
}
|
||||
|
||||
void kvm_arch_async_page_ready(struct kvm_vcpu *vcpu, struct kvm_async_pf *work)
|
||||
{
|
||||
int r;
|
||||
|
||||
if (WARN_ON_ONCE(work->arch.error_code & PFERR_PRIVATE_ACCESS))
|
||||
return;
|
||||
|
||||
if ((vcpu->arch.mmu->root_role.direct != work->arch.direct_map) ||
|
||||
work->wakeup_all)
|
||||
return;
|
||||
|
||||
r = kvm_mmu_reload(vcpu);
|
||||
if (unlikely(r))
|
||||
return;
|
||||
|
||||
if (!vcpu->arch.mmu->root_role.direct &&
|
||||
work->arch.cr3 != kvm_mmu_get_guest_pgd(vcpu, vcpu->arch.mmu))
|
||||
return;
|
||||
|
||||
r = kvm_mmu_do_page_fault(vcpu, work->cr2_or_gpa, work->arch.error_code,
|
||||
true, NULL, NULL);
|
||||
|
||||
/*
|
||||
* Account fixed page faults, otherwise they'll never be counted, but
|
||||
* ignore stats for all other return times. Page-ready "faults" aren't
|
||||
* truly spurious and never trigger emulation
|
||||
*/
|
||||
if (r == RET_PF_FIXED)
|
||||
vcpu->stat.pf_fixed++;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KVM_GUEST_MEMFD
|
||||
static void kvm_assert_gmem_invalidate_lock_held(struct kvm_memory_slot *slot)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user