From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.201]) (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 CA77047ECD1 for ; Fri, 29 May 2026 22:23:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780093412; cv=none; b=a7vq2xmEbVBSvmQDuszO76zvd/3F7nanv48aDjyecPTu6CTBhe4ELtT+xb6TGRPfbJiHkDu8Ac0jlRSw/+FyR5N4nZ+s5qlWL1fCtOS3kEIaMa9qjhNGsRBGqp8Vd+aW3dd8GLxRr0wiY5ZmrdAJ2WxGHPfl59yVc8/liB49k7s= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780093412; c=relaxed/simple; bh=6wkYDhTrv2mLr2QDxNjAG/d6sB8lrG23VG9S3UDHwwU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=I2q/eiMXK7lqQnDH5Y5hHtNheLv2M2NwKdav4gPVwO9dkeoCeQ1DpbSKVjzk6Ctnc7nASNpiK1OHdL7+scLMIYqW/1zaBVJnGV9Ng35AkNhgEntTk8u2VP5FkyY5yRYwkpVcCApuw/8fxm7N9aiHnuXN8ndkSknmb8TFIPzKfTM= 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=ReEWxTh/; arc=none smtp.client-ip=209.85.215.201 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="ReEWxTh/" Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-c82ba4715b6so15295746a12.2 for ; Fri, 29 May 2026 15:23:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780093409; x=1780698209; 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=C5xIBF4dxThLK3TpNNRniIv9BT/2RVg6EsLkvI68oaI=; b=ReEWxTh/V2OZt66YIMn9VfbsVJOjO5Z6ON4u/k2KVfd81QdJ0Zx2QfyacdQGr6TfDY Z9yZPBFWOeMBBAXJ/hyFNC4rmQ1CSEt5kOoTnXgCDiehO47k1mKWEAHmHLDydnqt7gdU F/aEjeRyYfujegKoUppMpHIK1KkYbBxLHRUlwZ2AhJ1MAL6M/xOvHdPmw7ILZxy4HL+5 CQ9fKY7pX9GIOVqezIUIlYFrwZoedNakGwLXoUowXYw96A7zQV5a6kqYYRxL3KLJR9K5 EquF+hZnl+qm1h05YsfOwrGzzYD1qVROJmEdLsZ4gCidMK041A2K56e8g4nAS6+cV5Hw KbsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780093409; x=1780698209; 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=C5xIBF4dxThLK3TpNNRniIv9BT/2RVg6EsLkvI68oaI=; b=gXZbFfRffVtj9XLNXbUCMCnctIKYot8RClIQhpnN0aqbcXM7qh+NboRls8OeX8PS6k NNznT27h7xQ3boEcudSgCozoGMTzEfqq/Z4q7/UnYYx8q4eSg4WmVxOaJ9pDr2Th/adU YJpi4EeifpIyHzytTz0+VhAlHJ1swq77o0KGJxlNX1CVA/WLXiZVSOxFaDS42I5gTnrB XkVwQLKrJieYWXrZxj/Yyzuf32rMFE1zduyF+w/xuwfN3e+Rg6JwNCzOdOq3tnbm1CS0 ZWXYU8UwruL3oR+74GuhOgUewCiwsGk45Fx7RVeU21GxhdnD/N7R0kgKbfc43c8AL8OY lN3w== X-Forwarded-Encrypted: i=1; AFNElJ8GC1FbuQFcTvkddtzILjfbxxrzaMQtyI3479/WPZGi5QUNE5zaUq3v05AExnkwTP42Vjzut04OOKEbiEU=@vger.kernel.org X-Gm-Message-State: AOJu0YwsBFVvKOSQth3yRIg5Ute2ys63dcdN0nDwjgzTgyraqwSZ5hIx n6N0+jUyJhLAKzrdeNj178j+/nBJwJBuDGwvLHB5onCs3UlpG14c7/3+pK+4OIAE4CqWsJV3bI5 q4uCTxQ== X-Received: from pgum19.prod.google.com ([2002:a65:6a13:0:b0:c79:61dd:3232]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:7105:b0:3a8:9dd:75d5 with SMTP id adf61e73a8af0-3b4281d6c58mr1272726637.24.1780093408888; Fri, 29 May 2026 15:23:28 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 29 May 2026 15:22:21 -0700 In-Reply-To: <20260529222223.870923-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: <20260529222223.870923-1-seanjc@google.com> X-Mailer: git-send-email 2.54.0.823.g6e5bcc1fc9-goog Message-ID: <20260529222223.870923-39-seanjc@google.com> Subject: [PATCH v3 38/40] KVM: x86/mmu: Move kvm_arch_async_page_ready() below kvm_tdp_page_fault() From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , Vitaly Kuznetsov , David Woodhouse , Paul Durrant Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Yosry Ahmed , Binbin Wu , David Woodhouse , 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. 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 e4d971d42f0e..f217e71c3af0 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.823.g6e5bcc1fc9-goog