From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.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 9882E3F3286 for ; Thu, 23 Jul 2026 21:08:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.200 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784840905; cv=none; b=Ly03+X3QmuM2agjpifHBRqDps1jqRcJMiif65vI6XCUv/Obr8efna1FGRzdPmcKWyYx3MKTTf6kssww4Ze/0ICBVfYKR5QX4AnyE8Fdfe1tpnVv/7ifOQHaT7cYsnKPoneyJ6fRCIQmT5tlk7MZBzSHLQs6T4UoV+FrIPf53X80= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784840905; c=relaxed/simple; bh=eA93fv/mpTDCRlrJZcN1uZi/U70iOhyh+rAp/vvrO8E=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=sj5sq8a017bmcWeMIGDbnoy4uUiaYqbpgqUdqBsEGULhuz0WAA7aNhxtkzX2RpXVSY/1mHnhs2Yb0PB0VQvz9+/GUUnBJJbzHDHVTBIQ8sNpVN1o8ayuVzw6i+Q2/QYtNZbvPy1kn/iax4E8GX4vKE+U/eLS8I1Wbk9D38n+8Ak= 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=OFn1FEu/; arc=none smtp.client-ip=209.85.210.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--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="OFn1FEu/" Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-8484b9fb055so2474200b3a.0 for ; Thu, 23 Jul 2026 14:08:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1784840898; x=1785445698; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:reply-to:from:to:cc:subject:date:message-id :reply-to:content-type; bh=C50SurZZSt8mA6DGLyY21O4lr+i0ojUTfN7EWK5ap7M=; b=OFn1FEu/sSn2OrngPDiPb2ecCJVSHnArFL8aGe3Hl0jQ6pRLGNWW/TVuP5ECWDY0tD sK5yIChh6fBjy9yHi4VdStitGnlX40HOna7Dx8lCYG3gVYADfqTq4UQFzbtwBdxlorng V1UDS/SjFA8EHsPZZqllKg7v+6v3tIbul6F7gB77iOhixh4jfMQaq8nb6WPZCi+GyTQ/ CBYA9PuOryt8UgZGYsdiXypJbce6e26iMDvdF6YMLjrH5OTzILyLdA8cbaK25lk5MeJE kkkuK8rikZDVu2ysV953t5YsLkgCS55R461XT0TpeGKu2+zaWWll+arXuhKXQQiTF5IY iEVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784840898; x=1785445698; h=content-type: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:content-type; bh=C50SurZZSt8mA6DGLyY21O4lr+i0ojUTfN7EWK5ap7M=; b=iNDkNPJDXxyP5QW6tEY32akqvlkz30Eod7P5oFQhmhfsx8mY6FG1u9MsmvQcMM+B4S 1vC0ue8E6Df5lqUEphcQ0hVagCCrSPTpsANvqE9109j+Y52DxpPrlfSz2vO+ASzcdCv2 cTbwD9NplDe6Rw9qKTlhmjdfu6IfM4+Q/dtpPWY3ZvqsK0xPeRe9iSbcSM27I8nSOZEn TMqwlwC1Su6dEoDsTEXe+99iXekB+I7/IFM/LN1I9MxjwBSMg2RrxHpAQFvNnGmte3Zi ophpHHH2eqQPDjmNmuVB7qHUwXChQTwBXNoGZtAjp+z3XIItL+xRH0k8JQoDdnQk3xoA 8RuQ== X-Forwarded-Encrypted: i=1; AHgh+RoAxwq/uXjHEDD+Lu6Yqx47blAlNiiB0WpE/EDaeQQciStK5S/5K0G9eY3xILuG50BFZt22rAfjNFO+8iw=@vger.kernel.org X-Gm-Message-State: AOJu0YyPx3IGzc49hth+XE1XkpEBT2a7lBKwIUS0K2qi0Fq3nWuySkFp es7GP+4YNgG6X8fDfLWSver5l+qckBWyMm71rkhKqII7HX+y3UyCejEE9JRPkCxbDiRkWc5fgm4 YXdjJUQ== X-Received: from pgii15.prod.google.com ([2002:a63:220f:0:b0:ca1:3a05:d935]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:928f:b0:848:2f77:e2e0 with SMTP id d2e1a72fcca58-84e2c262b43mr5494478b3a.73.1784840897838; Thu, 23 Jul 2026 14:08:17 -0700 (PDT) Reply-To: Sean Christopherson Date: Thu, 23 Jul 2026 14:08:07 -0700 In-Reply-To: <20260723210811.72720-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: <20260723210811.72720-1-seanjc@google.com> X-Mailer: git-send-email 2.55.0.229.g6434b31f56-goog Message-ID: <20260723210811.72720-6-seanjc@google.com> Subject: [PATCH v6 5/9] KVM: guest_memfd: Add helpers to query SHARED vs. PRIVATE for a given page From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Fuad Tabba , Ackerley Tng , Xiaoyao Li , Michael Roth , Fuad Tabba Content-Type: text/plain; charset="UTF-8" Add helpers to check if a given page in a guest_memfd instance is PRIVATE versus SHARED, and use the "is shared" helper instead of an open-coded equivalent in the user pagefault handler. In addition to the immediate usage, providing an "is private" helper will allow cleaning up the so called prepare() code, and eventually will be heavily used once in-place conversion support comes along. No functional change intended. Signed-off-by: Sean Christopherson --- virt/kvm/guest_memfd.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c index 2effff582f50..e9d61410e5fb 100644 --- a/virt/kvm/guest_memfd.c +++ b/virt/kvm/guest_memfd.c @@ -60,6 +60,16 @@ static pgoff_t kvm_gmem_get_index(struct kvm_memory_slot *slot, gfn_t gfn) return gfn - slot->base_gfn + slot->gmem.pgoff; } +static bool kvm_gmem_is_private_mem(struct inode *inode, pgoff_t index) +{ + return !(GMEM_I(inode)->flags & GUEST_MEMFD_FLAG_INIT_SHARED); +} + +static bool kvm_gmem_is_shared_mem(struct inode *inode, pgoff_t index) +{ + return !kvm_gmem_is_private_mem(inode, index); +} + static int __kvm_gmem_prepare_folio(struct kvm *kvm, struct kvm_memory_slot *slot, pgoff_t index, struct folio *folio) { @@ -397,7 +407,7 @@ static vm_fault_t kvm_gmem_fault_user_mapping(struct vm_fault *vmf) if (((loff_t)vmf->pgoff << PAGE_SHIFT) >= i_size_read(inode)) return VM_FAULT_SIGBUS; - if (!(GMEM_I(inode)->flags & GUEST_MEMFD_FLAG_INIT_SHARED)) + if (!kvm_gmem_is_shared_mem(inode, vmf->pgoff)) return VM_FAULT_SIGBUS; folio = kvm_gmem_get_folio(inode, vmf->pgoff); -- 2.55.0.229.g6434b31f56-goog