From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f202.google.com (mail-pg1-f202.google.com [209.85.215.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B3DB33148D0 for ; Sat, 13 Jun 2026 00:04:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.202 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781309056; cv=none; b=CeBP3gInc5U1CD4s/DqXFQLW97apAcRfnE81RVHKl8qrZ3SwdXLJTrcUP5qodWcTDA8BibwKDjqO8QFJimGLCJmQTa5BKE3TELGAm8L5JTErrEL+PnCtAQSBSZOyCpkbDlv/TttjpHUybgXhZXEJRKazil5bemvyFk7oJvhLEcc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781309056; c=relaxed/simple; bh=r/CUvPQw1bDBukeJEPNVu4NfPUdMQlwtchM6bXBdFJA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=RzapENoceAfEw97SIIbvJt9A/ZUvAOE6UXZnXuVpN2zPIGybBVaTJ4kJKiyHnXBGqOfJ4TRlnAEAQMWVyyZvJM3PErHU+2YVCkBZVm7h2r8VLOViPMN3k+j499AxG1mL3jRX/vETvILiBwvM2fKfmAuqUL5PdAywSF+GBWSIZzI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=TPrz0G5a; arc=none smtp.client-ip=209.85.215.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="TPrz0G5a" Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-c85a2f1d1e5so778084a12.3 for ; Fri, 12 Jun 2026 17:04:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1781309054; x=1781913854; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=5qk90ZLUAsDV96UxpApZQqGWZybXQHM3SqyJ+FX+ABU=; b=TPrz0G5aIfqpflwONIRSRGKJSbNPsGsxtgG3I+VZnkriWE8czsy8zCJh+cWfzBSWF/ nquDg/qqlXPVJa2zeyBVpYMAJo4/ajLyQo6UHnURjSYxmrWvN/UiWT5+/kgPa0qA/pIN ehudbkvNQKcdKANvo8I+ahd+z8vlCrQ0QZLK6uJfRjRS2pZXMrQy/6l+aFBI0jL01/lM SyZXSIHxum65UGKYhM0s3+/DkAThQQUXbE6Ifw2Ypp63CvJAIU/rn+Bi7BIJqP9KIm2/ yRcS/zqlFKg1My5yOEEtuDaHNTno44mPY9UB16HOIKw8L/CfuoWwW4WrLs/ZM9RVn5pK 22Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781309054; x=1781913854; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=5qk90ZLUAsDV96UxpApZQqGWZybXQHM3SqyJ+FX+ABU=; b=VlmIpXVtTsGWe5LTf65SQUvuetJveQNraPCp57l2prulKel4cXjrhAqhzG90YlSXMu 6CFAhcwcaWr7Z+4/afc6aI/DXatBb++xlxy0zKguxVOy6ScsScmKvAziiBVCTg7myA1x wfMihrnNKSvieLoOyk79Si2ymMpSBkFtlcS8E4tfx3itms2yGa6/gDwPxNDotVZCFJcD k/ZLYfEu720PbL0fndYgOmkC8No0ZFXG8Y8eecdNVK0KPf+fGxAIrLadvp6Q5NQUJzyR zejr3IFOO1ftIg9Hv7yNeBNllboirSoUpRNnKkBHc7paCq0Jw1rPnua+Kq/kaOvg7Dca 4MKg== X-Forwarded-Encrypted: i=1; AFNElJ+/6ESfv6nKLwMxbtwUyf6LVP+xBDHm+wDgmw4QMdOsuq5n3+SyWxwDSA26awkQkH5JIYJ6iSPjA2PDV0A=@vger.kernel.org X-Gm-Message-State: AOJu0YxkFGrZabqOSn8x3dK4a0AJQpvr0bqbYSpixFo12ZHh+iTtsvkq XCZZZdzze+bp7MR0JF8CQpQ/Hi4KYvJWXV44D7D3An+QMyYtbRnQHfA+K4xXwOYqmq2okbvUclv westhVg== X-Received: from pgbcq8.prod.google.com ([2002:a05:6a02:4088:b0:c80:dc0a:9f7f]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6300:618d:b0:398:9b42:69f7 with SMTP id adf61e73a8af0-3b784033bb3mr6261121637.39.1781309053962; Fri, 12 Jun 2026 17:04:13 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 12 Jun 2026 17:03:27 -0700 In-Reply-To: <20260613000329.732085-1-seanjc@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260613000329.732085-1-seanjc@google.com> X-Mailer: git-send-email 2.54.0.1136.gdb2ca164c4-goog Message-ID: <20260613000329.732085-29-seanjc@google.com> Subject: [PATCH v4 28/30] KVM: x86/mmu: Move kvm_arch_async_page_ready() below kvm_tdp_page_fault() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , Vitaly Kuznetsov Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Yosry Ahmed , Kai Huang Content-Type: text/plain; charset="UTF-8" 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 Reviewed-by: Kai Huang Signed-off-by: Sean Christopherson --- arch/x86/kvm/mmu/mmu.c | 62 +++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 313106e84a64..bc844ca9e01f 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -4571,37 +4571,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) { @@ -5058,6 +5027,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) { -- 2.54.0.1136.gdb2ca164c4-goog