From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C8413C282DE for ; Thu, 6 Mar 2025 16:09:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 87260280002; Thu, 6 Mar 2025 11:09:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 82293280001; Thu, 6 Mar 2025 11:09:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6C745280002; Thu, 6 Mar 2025 11:09:57 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 4E4D9280001 for ; Thu, 6 Mar 2025 11:09:57 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 805BC821F5 for ; Thu, 6 Mar 2025 16:09:58 +0000 (UTC) X-FDA: 83191612476.12.22DAC48 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) by imf06.hostedemail.com (Postfix) with ESMTP id B1F51180011 for ; Thu, 6 Mar 2025 16:09:56 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=m4xuoWh6; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf06.hostedemail.com: domain of 308jJZwsKCNAwy60D70KF922AA270.yA8749GJ-886Hwy6.AD2@flex--ackerleytng.bounces.google.com designates 209.85.216.74 as permitted sender) smtp.mailfrom=308jJZwsKCNAwy60D70KF922AA270.yA8749GJ-886Hwy6.AD2@flex--ackerleytng.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741277396; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:dkim-signature; bh=Hs/rNKptw4ZYO6spUUnJ/Zhn7gqoIyuxcR/DXY52zCs=; b=biUyCjNqe1nH0U5zyZDctLjIgvdukmXymdRLRxYuJmofUe/WxOxubLQV44c+HI2lER7vGd H9ZVn4/VBgsOq+dVIJ6F7QWltoJrHVezHuVBuiikxDLnYr9ePPsZRX/RuicqQ1JGhxH9/a FmcwcBmTDbbndnLaN11NRfbHHyLXx34= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741277396; a=rsa-sha256; cv=none; b=1ZWZKeSyfJWwUUkFinRorti+jszCkn7gdadMgwxMuEKeexyQtD03BWUwDPf/H8Fd3lgRu/ BG95ulNH4eBO2geKvObxw2uvsKhHlJsF28UMHS5HzuNwA2l0zuPGqLKuQl6reNbWouaD7t GsueVogSnkEyILfajR6M87hoHRZg1Oo= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=m4xuoWh6; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf06.hostedemail.com: domain of 308jJZwsKCNAwy60D70KF922AA270.yA8749GJ-886Hwy6.AD2@flex--ackerleytng.bounces.google.com designates 209.85.216.74 as permitted sender) smtp.mailfrom=308jJZwsKCNAwy60D70KF922AA270.yA8749GJ-886Hwy6.AD2@flex--ackerleytng.bounces.google.com Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-2ff78dd28ecso433700a91.1 for ; Thu, 06 Mar 2025 08:09:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1741277395; x=1741882195; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date:from:to :cc:subject:date:message-id:reply-to; bh=Hs/rNKptw4ZYO6spUUnJ/Zhn7gqoIyuxcR/DXY52zCs=; b=m4xuoWh62n6ungrvrDs/l+MA/hiUk5HmGT0a6sKkhAUZJDaByXOu9GJia39J1SbXU8 mmgd4WvIOko+GqDg0PYes5VRs1RNlpnd2hGYzTVLx+7lrHlPyyyF6hxaQFdlntglPleD ONwewd0AYBYwQuK1AUCK/va8fSIvSP2sQp3cEW8egX2YqatoBfxwJWdaKh427IO57mIz 3FNQlFGDLOVDaU62rqlRumVaPgyyCNeYY6FuPlfmNsULbOOcP6w1QmKBg5YLq/oVMyzQ fbz+H0f4CAK1TNZcMTCfvQGSwiqeIIFzR2YxgXEjO/b1xX7U++ELlEOg60Tyvq4tIJwv P/ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741277395; x=1741882195; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Hs/rNKptw4ZYO6spUUnJ/Zhn7gqoIyuxcR/DXY52zCs=; b=Qbl5OsjEW3PmL6Mq8Gys5QQXiPhBViTAXTNHCSlfv3dM4Rd8QH/3Afrek7h3804Wcm OHIT2XN5UbdhXIGMo6uzyAzQbWOw2hiLIcs2rBkJQ9VJzha9LGLkpXQmgetV743jDq5E ghUcnkXZvH50huvJp5znwlgfu2AEuMyEM+mKFbE425pfwbZRXxglh/hMXo3asDWWYZfY U0DyEwJlWxJi6KhxZjoSPWtL4GVLYgk0oxVH8+Siz2nPAxipeWWufGnstTSHimdQY/VY +oJ0M7B9gbiLDU6m/1Yu+zyQGG9hMyqj8v/2NgOuim4zmgdpeEm/O3gp8UF5nSxfLSGR VxDA== X-Forwarded-Encrypted: i=1; AJvYcCXl8/Cn/1q1onGnOD2lOHduPxuOCGebfubPNZHapso4lnYQi2V2lYXGyt18P1k97B8cZFVki5DdAA==@kvack.org X-Gm-Message-State: AOJu0YzIhoxnnuRJPuz8T3bIhDfsOJK+/qcJUKc6LAq3yWQR1rO8UuZQ o9po/0TA/lzbEthxmvqTSvsf2NThMzm2tC6sBbOqoSYltQCwzzSqvpBBNnlZFDotI0rxqWJaLm8 gzv0YK+mw64lP3UEhAiS1Og== X-Google-Smtp-Source: AGHT+IHZELEys14r7zs4SZgmd2W46MIv/QUbWyKYwMP6mPNo6vZ2zpUnDCZiIhuHsH03hVH88HWBYJTxZmQFNJNnRQ== X-Received: from pjbnd9.prod.google.com ([2002:a17:90b:4cc9:b0:2ef:9b30:69d3]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:38c4:b0:2ff:6a5f:9b39 with SMTP id 98e67ed59e1d1-2ff6a5f9ba4mr4264848a91.18.1741277395327; Thu, 06 Mar 2025 08:09:55 -0800 (PST) Date: Thu, 06 Mar 2025 16:09:54 +0000 In-Reply-To: <20250303171013.3548775-5-tabba@google.com> (message from Fuad Tabba on Mon, 3 Mar 2025 17:10:08 +0000) Mime-Version: 1.0 Message-ID: Subject: Re: [PATCH v5 4/9] KVM: guest_memfd: Handle in-place shared memory as guest_memfd backed memory From: Ackerley Tng To: Fuad Tabba Cc: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org, pbonzini@redhat.com, chenhuacai@kernel.org, mpe@ellerman.id.au, anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, seanjc@google.com, viro@zeniv.linux.org.uk, brauner@kernel.org, willy@infradead.org, akpm@linux-foundation.org, xiaoyao.li@intel.com, yilun.xu@intel.com, chao.p.peng@linux.intel.com, jarkko@kernel.org, amoorthy@google.com, dmatlack@google.com, isaku.yamahata@intel.com, mic@digikod.net, vbabka@suse.cz, vannapurve@google.com, mail@maciej.szmigiero.name, david@redhat.com, michael.roth@amd.com, wei.w.wang@intel.com, liam.merwick@oracle.com, isaku.yamahata@gmail.com, kirill.shutemov@linux.intel.com, suzuki.poulose@arm.com, steven.price@arm.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_tsoni@quicinc.com, quic_svaddagi@quicinc.com, quic_cvanscha@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, catalin.marinas@arm.com, james.morse@arm.com, yuzenghui@huawei.com, oliver.upton@linux.dev, maz@kernel.org, will@kernel.org, qperret@google.com, keirf@google.com, roypat@amazon.co.uk, shuah@kernel.org, hch@infradead.org, jgg@nvidia.com, rientjes@google.com, jhubbard@nvidia.com, fvdl@google.com, hughd@google.com, jthoughton@google.com, peterx@redhat.com, tabba@google.com Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: B1F51180011 X-Stat-Signature: rbw4qkwqxh6anm11c49en36gfmibpqxf X-HE-Tag: 1741277396-696538 X-HE-Meta: U2FsdGVkX1/DWnbGzJKxyU2KjysXhOGtdjkmA5Tpsi5DiUMB/BVTQhe6dmM8zXEe+T3TJtn1Wd30gF4zmHAX8WmsSNLUBHmasBacG0ilLR9gHTe+nhBeqgGdD5ldcmdRJFoudecg2e6Vwm/0o1KvI3jbS3GQmWhvQsUxFbY858QOc9vey5IDy4q375hLr9ASbyvx+CslFOBdHnqWQGGcVRZ7Go1NvwJhXTwVzKcyb6fUJTPOTie5gUO2FN614xLt+gcSVMXrEpTsajzK33Zae7kRCyWhc5nZgoIThzLOc1m+Ub0P4FJE/KFDrazPHyFhhxDsVIA0KVRv+6nLaAHiAVbEmgNfst2PXbasggCt+UHJ+TnKiDrbFQLKNXm0gXEblWVk7GVsjM+XFd9pCSurVJz3k+b87sBHrR86l06sRbH5p/hncgbFCi3Ga/8UjjavS2vuk/hcPDB+YW2whkfVnhHeDFyAgJIhvfQNC2b+mXG5xFjP1x7P2rDUbWj94mg9PpeJIy7VtM5i045BOruJcN2lsMRNqHxX0Fa7dhkx9uDPHIPuTOzoEAjgWqk1uULkJ75UtimYmMmNfumkCbbDb+10Hc0ygRtuFyF0a2zL1DBuFqFIWWjh4Z9tP7nVoN0FHhx88eGuiwxQ1KAD+kMVzxqsc5fWxOq7tEQftFwjzcG6UBOMeP/pfg4PzwQ3XyF9ui2ljP1kdh6r2W+HDDZxFmglKl9FuYL9N12I8sp94IniHda/7DsayRUS6Lm/unTOQSmhl7m/plZpYtMDhJ/cLCI0MqQnGhjJWi0dd05yj1zEKrOPL6uNHeP6DTNaV7EgThaQYkWKCJAIgeff8AtiQrak8vMG0Sg7IjZooQDup85rgb6O5Hzctd5Nb+KKYbvFWl6pttMpzK+YmObi7xaZ8Om77gAbv8wSfFhZ2xigeZ6p8yi1+bDQcoAokx8EF8pSFUDvAZL7bNk0ZU+4S/C LEBSIZ/D Xi2uXEfFvFnGtY71TFlH0x4MefUBeoDUWxLiWCfDVMjv2r4tEJQfFnExjwsgJjYxW4xbykJo3YhatkcyS85UWhi7V2TwtiNCLj4igjdbuVebsF70a+sXQahslIcvwhNkqoS3eUbGl3IrDUZatxIv1U7Ti5tmv4eG1z/WJTWcUb9+QU4FVEblf6TDmrNOLbXJLGEORdJ6lPCEiHxjtSI+aYYVUQ732lEiqOpP4nl756WComHM/19Wd7SMSDc+CErZy+nuMh00q2C4rw2T/1/EcckJQub9K21sj+VynvNtaTxvf/jTbYOuQHpClR1mE/O5yU1C3JSNnCcqKSZXdrUkHK6VyVb2njDaSU/Jl481VHESGJNtXAOzj0IWNDwWHX5BiMnlRb6m40sy2z5Ro3V2yHdpOjSxpTjqcqE6NuFE8cHTURDoeChFYOrsBys8fcPukOSSBjzDz6YTjCAMa7xGUmkLeUJKiC6KgRuLuBB7fQ2/YnZXR3YqHB4KkQi1DMu9vjnMNiAd8gb37p3GBVBu0O09GnfWiBzawidJxxhEMJVTWjUwskXXgLngX483P+yynwKVjg0aycXD4r4xnzsp+mNFDfTFVn/iOMjR6ZOZnsis5NUq+V4T7zM+cVcbqpN0k1aSEAx3V1PGg+nhixoP0xGILMQiXpKXxroWKaEbfsvQ3mBEicViwwr1TjA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Fuad Tabba writes: > For VMs that allow sharing guest_memfd backed memory in-place, > handle that memory the same as "private" guest_memfd memory. This > means that faulting that memory in the host or in the guest will > go through the guest_memfd subsystem. > > Note that the word "private" in the name of the function > kvm_mem_is_private() doesn't necessarily indicate that the memory > isn't shared, but is due to the history and evolution of > guest_memfd and the various names it has received. In effect, > this function is used to multiplex between the path of a normal > page fault and the path of a guest_memfd backed page fault. > I think this explanation is a good summary, but this change seems to make KVM take pages via guest_memfd functions for more than just guest-private pages. This change picks the guest_memfd fault path as long as the memslot has an associated guest_memfd (kvm_slot_can_be_private()) and gmem was configured to kvm_arch_gmem_supports_shared_mem(). For shared accesses, shouldn't KVM use the memslot's userspace_addr? It's still possibly the same mmap-ed guest_memfd inode, but via userspace_addr. And for special accesses from within KVM (e.g. clock), maybe some other changes are required inside KVM, or those could also use userspace_addr. You mentioned that pKVM doesn't use KVM_GENERIC_MEMORY_ATTRIBUTES/mem_attr_array, so perhaps the change required here is that kvm_mem_is_private() should be updated to kvm_slot_can_be_private() && whatever pKVM uses to determine if a gfn is private? So perhaps kvm_arch_gmem_supports_shared_mem() should be something like kvm_arch_gmem_use_guest_memfd(), where x86 would override that to use mem_attr_array if CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES is selected? > > Signed-off-by: Fuad Tabba > --- > include/linux/kvm_host.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index 2d025b8ee20e..296f1d284d55 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -2521,7 +2521,8 @@ static inline bool kvm_mem_is_private(struct kvm *kvm, gfn_t gfn) > #else > static inline bool kvm_mem_is_private(struct kvm *kvm, gfn_t gfn) > { > - return false; > + return kvm_arch_gmem_supports_shared_mem(kvm) && > + kvm_slot_can_be_private(gfn_to_memslot(kvm, gfn)); > } > #endif /* CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES */