From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) (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 C32EF3502A9 for ; Wed, 26 Aug 2026 09:02:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.200 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787734932; cv=none; b=X7svzviE9sLjaAr7ljhbTzl6+zmdidB+FMvVdC1Hj6g5C/oFQChtUTJcMuxNSLAv0D8rhgk/S+SWbjGGYgDs2VSQY+x9TuN/GeyIJem8GGV9IgggadymH8Pdge/Uq3Z3+X/EQQSV2zCmvhuwANmWCk8UMjO8lyLixARziyfBVLk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787734932; c=relaxed/simple; bh=enAIdIfpjwlSqC1gWlXPx7NV0FU3Pk1m0whhjn5JXcU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=dE27fuUaeTm8OZAXphO1NiH6x23fp6JIJMeo5qplTiDpHMoYOQbgwKlcHZLKyR2HuGciu73KEPwGii7MZ7gkIAxnoNN/jJP1fskfuYK567YYlT52UI6YIpUpDxFclUsBocxtsihzcBaV2FUE84KjW/qsxQbpxmyj/ZXuaXKYw5c= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--ackerleytng.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=omNQ2Zev; arc=none smtp.client-ip=209.85.214.200 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--ackerleytng.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="omNQ2Zev" Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2cfe48ca1efso12738415ad.0 for ; Wed, 26 Aug 2026 02:02:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1787734928; x=1788339728; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to :content-type; bh=2t7yDZCgF5yF794oBaYJTVqMg1ClYWvzuDLcLD0bTKE=; b=omNQ2ZevgMHZhcbaewF0F5rgl/ZZ7aY3XQat85xaz5TYEKnmXmPykJxij/MIDFU/1R RPDWh4S+mRR6YqlaoLID+1BLRUhlzhPIkjknOR0wL69qJMxCe6Cm/hBdSOYDO3EKqAPP tnl2KpPs8NmZDns5D3Gxgltd/37uTtBUweA8dAJCAPOUUkFiofLO0MHHYxDh+MhqB8AD 9aonhCL2IEEC6hA6dL8K2K3kKWPcFE/Mk1WTxEdOHXrl0LZ2A2fBgXPNYTUkP1H/at/Z Q5hGgqak3B1vGqOO+m8kTZla/NJEWG8jX/5sgdBREvXNiu8mnr86+uYLYb/PeFdO5e3K XpKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787734928; x=1788339728; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=2t7yDZCgF5yF794oBaYJTVqMg1ClYWvzuDLcLD0bTKE=; b=B58UxbF23uJslQiQcAkFJn1ipbr6sQUGtx339m2akiQLn7DWNWIrROYpuE0lyxVNvC /dYCmNwVNuCX0/qJHv8X+++Q0KaaoRLl6vS0CfOi4cvrJ6BgesYFc8B2ixl282md3KMa g+pECLbwGxe7HFVAX2AylL4/qP4ZrwgY0z7RDxptE7UCgWK3QP+sr5fLc2EEb5aaRsAM wg5jJZcQWe3y8oRppZI805O1C50eBfjyALlf/tLaQglbHYzydOjRXcSc6JtzmNQ2et7D z6O1RGairEuAdJDNCFrXbtptsczkp6TJwpE9BtN15mnDIvT5diRqk7h266q5JDLix0yc okdw== X-Forwarded-Encrypted: i=1; AHgh+RqcEwCZtQqiIfPxsVbr9BCa6GNr8kiVD6GF10mIt1H43KEIy169dXorYctAVlQHFM5b428e/SdGAnI5q1s=@vger.kernel.org X-Gm-Message-State: AFuF++nWbJu6XGNqJBoyikD2iFJepEeaRamjIRQ978Kd927Jr+ZwtxIm TnAvZ3RvnPSDjK4/enExbE778+bI3WYJCSeQkzan0p/XtcVB0HJQzUDgq7wfEvy+Z/GmeK22h5o WHvnGnEkTwvgVDQeegCEd41zgFw== X-Received: from plae17.prod.google.com ([2002:a17:902:e0d1:b0:2ca:cba4:f740]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:3910:b0:2ce:faa6:7cbb with SMTP id d9443c01a7336-2d707a3ed87mr93106385ad.4.1787734927046; Wed, 26 Aug 2026 02:02:07 -0700 (PDT) Date: Wed, 26 Aug 2026 09:01:48 +0000 In-Reply-To: <20260826-gmem-no-return-page-v4-0-3bb9c1ddb4e3@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260826-gmem-no-return-page-v4-0-3bb9c1ddb4e3@google.com> X-Developer-Key: i=ackerleytng@google.com; a=ed25519; pk=sAZDYXdm6Iz8FHitpHeFlCMXwabodTm7p8/3/8xUxuU= X-Developer-Signature: v=1; a=ed25519-sha256; t=1787734920; l=1785; i=ackerleytng@google.com; s=20260225; h=from:subject:message-id; bh=enAIdIfpjwlSqC1gWlXPx7NV0FU3Pk1m0whhjn5JXcU=; b=X/J0naFXaXcacGRfyWJDRGmjT1pR6S35RpMfjdWjFbARTVW571RbgREp+itIh0+NkYxsS2pCt 0GRcegdOuePAemCvojQPvh6N2NgBYZnP3n8QANxjyBigz32FysjP3WD X-Mailer: b4 0.16.0 Message-ID: <20260826-gmem-no-return-page-v4-3-3bb9c1ddb4e3@google.com> Subject: [PATCH v4 3/5] KVM: SEV: Check for invalidation before warning on unassigned RMP entry From: Ackerley Tng To: Sean Christopherson , Paolo Bonzini , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Ashish Kalra , Michael Roth , Brijesh Singh , Marc Zyngier , Oliver Upton , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Catalin Marinas , Will Deacon , David Hildenbrand , Yan Zhao , "Edgecombe, Rick P" , Vishal Annapurve , Fuad Tabba Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, Ackerley Tng Content-Type: text/plain; charset="utf-8" When handling an RMP fault, KVM looks up the RMP entry for the backing PFN to determine if a 2MB page needs to be split via PSMASH. If the RMP entry is not assigned (or lookup fails), KVM logs a rate-limited warning under the assumption that private memory should always have an assigned RMP entry. However, a concurrent invalidation (such as guest_memfd hole punching) can race with RMP fault handling and transition the page to shared, unassigning the RMP entry after KVM fetched the PFN. In such cases, not finding an assigned RMP entry is benign. Check mmu_invalidate_retry_gfn() under mmu_lock before warning about a missing or unassigned RMP entry, and suppress the spurious warning if an invalidation occurred for the faulting GFN. Fixes: c63cf135cc99 ("KVM: SEV: Add support to handle RMP nested page faults") Signed-off-by: Ackerley Tng --- arch/x86/kvm/svm/sev.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 0d027cff734cf..f9dce8acac8eb 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -5060,8 +5060,12 @@ void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) ret = snp_lookup_rmpentry(pfn, &assigned, &rmp_level); if (ret || !assigned) { - pr_warn_ratelimited("SEV: Unexpected RMP fault, no assigned RMP entry found for GPA 0x%llx PFN 0x%llx error %d\n", - gpa, pfn, ret); + guard(read_lock)(&kvm->mmu_lock); + + if (!mmu_invalidate_retry_gfn(kvm, mmu_seq, gfn)) + pr_warn_ratelimited("SEV: Unexpected RMP fault, no assigned RMP entry found for GPA 0x%llx PFN 0x%llx error %d\n", + gpa, pfn, ret); + return; } -- 2.55.0.887.g758fc8c411-goog