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 37238C3ABD8 for ; Fri, 16 May 2025 17:53:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 30BCD6B024E; Fri, 16 May 2025 13:53:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2B9EC6B0250; Fri, 16 May 2025 13:53:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0719C6B0251; Fri, 16 May 2025 13:53:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id C06916B024E for ; Fri, 16 May 2025 13:53:40 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id B7EFA1A0F89 for ; Fri, 16 May 2025 17:53:41 +0000 (UTC) X-FDA: 83449518642.20.0D56B07 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) by imf04.hostedemail.com (Postfix) with ESMTP id 0187140004 for ; Fri, 16 May 2025 17:53:39 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=p4JzNRD+; spf=pass (imf04.hostedemail.com: domain of 3onsnaAsKCH8dfnhuoh1wqjjrrjoh.frpolqx0-ppnydfn.ruj@flex--ackerleytng.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=3onsnaAsKCH8dfnhuoh1wqjjrrjoh.frpolqx0-ppnydfn.ruj@flex--ackerleytng.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747418020; 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:references:dkim-signature; bh=8cF3oG0ZvlxQApliLAWy8AhC33oXxmPcmw1u1Vqb2bU=; b=C396dDsVknKGmJTfBmnXTd2pLOBrpP5UOJv7GJ0NmYw6hbVSF6vq/7HAcGldfyVlACISYV Ig7AP0FVBJ+1tVxhFm/5/Xxck5SG1pz/KB5ggQGao7DYetk6mPtY16Pc81J8a3Y8cM6h/m mqeJgNRNOGbwI8Np6ESfWnydpQ1XQ1M= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=p4JzNRD+; spf=pass (imf04.hostedemail.com: domain of 3onsnaAsKCH8dfnhuoh1wqjjrrjoh.frpolqx0-ppnydfn.ruj@flex--ackerleytng.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=3onsnaAsKCH8dfnhuoh1wqjjrrjoh.frpolqx0-ppnydfn.ruj@flex--ackerleytng.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747418020; a=rsa-sha256; cv=none; b=d3wKHErfv5SS7yrmqIAY790GQNU2AuyfBXQ1vwb53bA6CG9E88yBvtL8bXNamRXkFPQ0nA h5Z7cvtO8ZUPKoZzKNLZn9E3M36OtCgbuxtt9rUFzcnG+x6Xi+SZEoM74YWrkK2Q0CIKOb /0I/AVNVF/XK1eWcpW/tVabCy/Qr8Vo= Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-7429fc0bfc8so1527547b3a.1 for ; Fri, 16 May 2025 10:53:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1747418019; x=1748022819; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=8cF3oG0ZvlxQApliLAWy8AhC33oXxmPcmw1u1Vqb2bU=; b=p4JzNRD+78h/lSM09IpNwyYDFHzwMDeNUuJ/2sm8O7mM+I41upvnK6ZxMx7NeBaomV ay7vqDglntOni8Sq923LJA+ZwyP2sPNI8UBqyYvqsnrTUT3kLKNjpiro5XW3rAXul4E4 UjCZdTCutCY2Ob/P6MQMPoA5DOiKG19wWpHAdUimHIMrSoLDaEjFIqYwvHSKF4N/73Qd Bt5O+YGzrjVXdoKWguxObbMGLBNwWla7ERdFSlhJ9ML9z+WePShDDUx9RLzn9gckAOtp rFrVa64EYI9iCpPi/INsu+WW9FASVi+zOuOuvLSYdg4wD8lw1L/3NqeqPtvt6LPzq0Wx unvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747418019; x=1748022819; h=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; bh=8cF3oG0ZvlxQApliLAWy8AhC33oXxmPcmw1u1Vqb2bU=; b=epLBIH2oj9zmnaiQQhi7W3wC2n69/9ZDsFfXgKEgm0dCIhtGr/r3QkJEeeZ1i+pXFf ld8fJVN2c48JVlmwseq4i6QoyX1dfST2P1SnbPT0+8IEVYvciEocLWvyR5o8EQD5wssu G4Uqddvx1G5NvkjOxygmIbFeXZq73TomkxbprlSITO/hWyTDldpMIRRyS9cXxLP0vVC3 xh7IKvLPvS25UPCHlmB3rTyih2Vh5AUFNv77bpu10VRPbBGAg3exddLNj9qRxSZ5PevI 4p8MRDOEUWu6WVXOyPga5euA7W7aD5FF533PEIHehWMruLPYnGdZ9gEqRp5xSBT3xoL4 BlzA== X-Forwarded-Encrypted: i=1; AJvYcCX0XmLPQSHKcHcZdArgvZe+xGgCPC/hKfHr/q8Ecz/Z+tp7Q/0Bl/Oj0gQWH95tycWM8cY7vyJ/Xg==@kvack.org X-Gm-Message-State: AOJu0YxHYdO2hkpJYjuExAOs8aHne85BnTGkM2OCTbo+Y8l1HexhzHzs yl5Fd3dqBGG2gjqP8lAtItoP9B1lzx/U9+VvasZCvPT53Zd0xGRoHH60MX0LWB0L7U2iSC7ETix 9YOB6FXHotehlY/JFJWdBqa3nWw== X-Google-Smtp-Source: AGHT+IHTUNH+ccDKQDLHandSLB8Cs2YqxqxBQL8lX50pqIiEe34TWuIXzn9EkbeNJjz0gF0OHqoknNNeE+FoIqCs2g== X-Received: from pfbmc24.prod.google.com ([2002:a05:6a00:7698:b0:740:b53a:e67f]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:d494:b0:215:eb10:9f13 with SMTP id adf61e73a8af0-2165f87269fmr5223554637.17.1747418018754; Fri, 16 May 2025 10:53:38 -0700 (PDT) Date: Fri, 16 May 2025 10:53:37 -0700 In-Reply-To: <6825ff323cc63_337c39294e3@iweiny-mobl.notmuch> Mime-Version: 1.0 References: <6825ff323cc63_337c39294e3@iweiny-mobl.notmuch> Message-ID: Subject: Re: [RFC PATCH v2 04/51] KVM: guest_memfd: Introduce KVM_GMEM_CONVERT_SHARED/PRIVATE ioctls From: Ackerley Tng To: Ira Weiny , kvm@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, x86@kernel.org, linux-fsdevel@vger.kernel.org Cc: aik@amd.com, ajones@ventanamicro.com, akpm@linux-foundation.org, amoorthy@google.com, anthony.yznaga@oracle.com, anup@brainfault.org, aou@eecs.berkeley.edu, bfoster@redhat.com, binbin.wu@linux.intel.com, brauner@kernel.org, catalin.marinas@arm.com, chao.p.peng@intel.com, chenhuacai@kernel.org, dave.hansen@intel.com, david@redhat.com, dmatlack@google.com, dwmw@amazon.co.uk, erdemaktas@google.com, fan.du@intel.com, fvdl@google.com, graf@amazon.com, haibo1.xu@intel.com, hch@infradead.org, hughd@google.com, ira.weiny@intel.com, isaku.yamahata@intel.com, jack@suse.cz, james.morse@arm.com, jarkko@kernel.org, jgg@ziepe.ca, jgowans@amazon.com, jhubbard@nvidia.com, jroedel@suse.de, jthoughton@google.com, jun.miao@intel.com, kai.huang@intel.com, keirf@google.com, kent.overstreet@linux.dev, kirill.shutemov@intel.com, liam.merwick@oracle.com, maciej.wieczor-retman@intel.com, mail@maciej.szmigiero.name, maz@kernel.org, mic@digikod.net, michael.roth@amd.com, mpe@ellerman.id.au, muchun.song@linux.dev, nikunj@amd.com, nsaenz@amazon.es, oliver.upton@linux.dev, palmer@dabbelt.com, pankaj.gupta@amd.com, paul.walmsley@sifive.com, pbonzini@redhat.com, pdurrant@amazon.co.uk, peterx@redhat.com, pgonda@google.com, pvorel@suse.cz, qperret@google.com, quic_cvanscha@quicinc.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, quic_svaddagi@quicinc.com, quic_tsoni@quicinc.com, richard.weiyang@gmail.com, rick.p.edgecombe@intel.com, rientjes@google.com, roypat@amazon.co.uk, rppt@kernel.org, seanjc@google.com, shuah@kernel.org, steven.price@arm.com, steven.sistare@oracle.com, suzuki.poulose@arm.com, tabba@google.com, thomas.lendacky@amd.com, usama.arif@bytedance.com, vannapurve@google.com, vbabka@suse.cz, viro@zeniv.linux.org.uk, vkuznets@redhat.com, wei.w.wang@intel.com, will@kernel.org, willy@infradead.org, xiaoyao.li@intel.com, yan.y.zhao@intel.com, yilun.xu@intel.com, yuzenghui@huawei.com, zhiquan1.li@intel.com Content-Type: text/plain; charset="UTF-8" X-Rspam-User: X-Rspamd-Queue-Id: 0187140004 X-Rspamd-Server: rspam09 X-Stat-Signature: k1ywhmzr34eh373f4qid8jncih3yq6ia X-HE-Tag: 1747418019-698943 X-HE-Meta: U2FsdGVkX1+bk2UYcoWONeaPag7h8RY73lWWSCZxluuUBYR/LAve9xpO33dPeR9oObD7ks3qH0NxLUhTBRUR8XtLXCNxXc8bgD+5GkxoCYF0Upjc8E/L43lUkU+0XEFWy9/RBh4kXGd7UVE2kF480ynZ+0pf8SdPgjRaZJT0cnVVF46kw+VmVSmDtcSuhQ6itdVm0n9W0YLfL7GxhmT9N0Fyiwf9JuhQXnfkx0jkM0lXk2dap7M84fe3kBIclkfC2z+QmUl3bDFQ0PE77dEaYt2Rf4cAPjSQY90lEQAAoPh4IZdh1IdpFSj171GlZWuBRcx6UEeXiEvL8zlQKj7R69oi7WuvG0eovcrwMQzJRw3DhH3S/XoUI70lmCnIiSmOtwQDnrYyEzAhJtdcvgh99qY61L+KHh8tsw9UqQfaUy4bNvPDDju/5BquCTb4D6HPBjONnTxQnDp1drRESecVufnXjbVDIcNTz7+q7jUU6ZD9nN08cPCDvkHPuNbr+XNzYbiaot+FbWyLUmpUyxzcVkc5QV3v7ivfCDBY2z72TWpoZ89J4RnMkjLYPakKjM8vtVOcvAJwpnDp5lUNsF/VlAHtxdqh+B0jejb4lYudl6TjBJNe0MjF/m3vFF56KZcvOT6M9aseEFr7cZBGJTrRlUy1lzOCWyCAPwYIErpnI0cYn01TU1MP2wWSip8FL9n0OL3Oi3Z465OUbASfyclm45+45JNtJkY4peAGW9EIuwofbVpPnNy8ZR6HlNM47LoFKM0cVPRB3BUW5u5eH5ywcSNrOJ/F1lO/wiGf5A8jXuXBS0AJKse7lfYV2EveXlfvnSzaDJDhRLQVbIRaLFUghRTCE+lNUSYdXzL+OLLOFwezKDfVI6qfnAhnGVpigb45myBkv9A6uuhTCo1vqzTrIWYS/dVFRRb42I8SJRv//yMn447OoG8bfWvqG+XHlgKW16RZUKxVS0+PwCjceEN /kuxcgTh L4TxIdTWknNoXJRqW9TjHKOotZ0iEICM2ewhxqJ3msj8kQjMjdc04F3bLyLnVJ09WHLHuSVkLc0BvOSq9opCD4wxtx4ZYJ/woJ0CERqavuVz4qGzD1YEiAvszhHm/nXUHPXgFWWGdnm0zAbu0mNZR6NQMiwOZ+ZK17yMePkvLJBInk4wkKU9jBaORdF3KMIvnE3vFg5HHeiC5daQe5hhXASAHEE5vzIA/+ezzRqGpyyOmpFot16mjw8yodXmaWQ+rOpkzmwXKdTt4h6GctagldVVqiO49EzybM/cB4PoBlM6IsiHeGsAU9S2SxbzcC7aUcwTfoEUt8q0mFm8bN4rptDY3oqHm/9mLSuW79M+heiNklDJiYoD0abJXgXBTwWO6jM1cMErgWKZVd+0NMdgR/xy+nnodALeL77+kQbtfHRY8R1p6ihmCRsbcHCm/+jo9EpEVrJvx9H/2hcsxiZwR0XcB92LWpeD9bR1i85DB8VRRbk694MpLSyt8b1jQWntRjqf2DyTMfmYOuG+lVDBsmdkreYzbtGQfQeYHaXJfod35ujzYu5AnKVTRJGt+KCSKlSaXTwqCME86Z38lxzd65lVMw0yRFTa8QqitK6A9qPpjrUOp8PD40Wn+E2hyQXeMYCY+mNkuZOBMDNKSIG6nVITiAq9Z4rPCodLGKII7CUJSdu2J0HvxX2s7gILVbwyZFSA5Vq2VY15v70bLwppj0g/ufeYTo8QKPB6lacgrSTy/jTXWRRINNpTBQRMcJN6DM71a4oZy0n2qvAe3E2IRZZ8pGB6r1fswS7ls 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: Ira Weiny writes: > Ackerley Tng wrote: > > [snip] > >> Signed-off-by: Ackerley Tng >> > > [snip] > >> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c >> index 590932499eba..f802116290ce 100644 >> --- a/virt/kvm/guest_memfd.c >> +++ b/virt/kvm/guest_memfd.c >> @@ -30,6 +30,10 @@ enum shareability { >> }; >> >> static struct folio *kvm_gmem_get_folio(struct inode *inode, pgoff_t index); >> +static void kvm_gmem_invalidate_begin(struct kvm_gmem *gmem, pgoff_t start, >> + pgoff_t end); >> +static void kvm_gmem_invalidate_end(struct kvm_gmem *gmem, pgoff_t start, >> + pgoff_t end); >> >> static struct kvm_gmem_inode_private *kvm_gmem_private(struct inode *inode) >> { >> @@ -85,6 +89,306 @@ static struct folio *kvm_gmem_get_shared_folio(struct inode *inode, pgoff_t inde >> return kvm_gmem_get_folio(inode, index); >> } >> >> +/** >> + * kvm_gmem_shareability_store() - Sets shareability to @value for range. >> + * >> + * @mt: the shareability maple tree. >> + * @index: the range begins at this index in the inode. >> + * @nr_pages: number of PAGE_SIZE pages in this range. >> + * @value: the shareability value to set for this range. >> + * >> + * Unlike mtree_store_range(), this function also merges adjacent ranges that >> + * have the same values as an optimization. > > Is this an optimization or something which will be required to convert > from shared back to private and back to a huge page mapping? > This is an optimization. > If this is purely an optimization it might be best to leave it out for now > to get functionality first. > I see this (small) optimization as part of using maple trees. Fuad's version [1] uses xarrays and has 1 xarray entry per page offset. I wanted to illustrate that by using maple trees, we can share just 1 entry for a whole range, and part of that sharing involves merging adjacent shareability entries that have the same value. IIUC, these other users of maple trees also do some kind of expansion/range merging: + VMAs in vma_expand() [2] + regcache in regcache_maple_write() [3] > I have more to review but wanted to ask this. > > Ira > > [snip] [1] https://lore.kernel.org/all/20250328153133.3504118-4-tabba@google.com/ [2] https://elixir.bootlin.com/linux/v6.14.6/source/mm/vma.c#L1059 [3] https://elixir.bootlin.com/linux/v6.14.6/source/drivers/base/regmap/regcache-maple.c#L38