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 A9BD0C7EE39 for ; Sun, 29 Jun 2025 08:51:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 51C826B008A; Sun, 29 Jun 2025 04:51:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4F4776B0093; Sun, 29 Jun 2025 04:51:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 40A536B0095; Sun, 29 Jun 2025 04:51:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 2F0086B008A for ; Sun, 29 Jun 2025 04:51:45 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id ABDD6123726 for ; Sun, 29 Jun 2025 08:51:44 +0000 (UTC) X-FDA: 83607820128.19.76753B5 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf13.hostedemail.com (Postfix) with ESMTP id 2452D2000B for ; Sun, 29 Jun 2025 08:51:43 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="riy/zLCX"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf13.hostedemail.com: domain of rppt@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751187103; a=rsa-sha256; cv=none; b=B5dcW1FVnWBES60jBX5MrrUQ9ko0YH4X7HbmMARKCBteTsBO3aZDY+3xQpvzQiVIlT3pcd hNmaqRai6vGL5V+MxOJwZYK60mOMVnGi3CJdKj5dThaJSSlY4Ajzp4theMR1l7LHafEAjn M8PtqCodNQ87JJgvS3lO8xOlw64wWfk= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="riy/zLCX"; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf13.hostedemail.com: domain of rppt@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751187103; 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=20S0POGXS0ryldl13lDBDHu2xIDdE/+yarqH1wZbBHo=; b=TmEMQF0tfgsMV/IoirS6oqHqpmz8XEOSEhxvwxGhKspIK0Zl8C7uZUljMiJdzJy0oZThSr V1pKX8UH7A0VJlRkzEd7HU5DUvN3fpwG9uvZ91Ov8/AX/U7GapPjGlxKDbsNda3cGKvSsR kx06Q89NbqUC9SUeTUlGoImeeRvxc7U= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 5E54B60EDF; Sun, 29 Jun 2025 08:51:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21915C4CEEB; Sun, 29 Jun 2025 08:51:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751187102; bh=5uWMeX0USYqxCqcAMVfn2KWp24EahrMEUN4i/w96vwg=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=riy/zLCXVDoNPul7BeSSE8xeH2ruTCgVUdvM2T4R9mP2CnW6txrvqju2EdljGucdZ z1LO+ZdcyLMHqroOlvNvV30gvWNq5Q5pir+9LT/INdMf17OWA21ioxZRJ8UbCdNcMM eYQBFtCHGcNPleJYGRA6+diAVol+0uMOTWIu6okEnrIaLjLNtGyzrWSzSHXkVc7YYb oRsdToclzbIO74l6K11k3nOHeofMDaGmrxC+R2D9AH2pNCXUh/q5MBZw+mfR/WCNTu uFHTcQlbMTrn9kl9z3Z67bDFZ+VlTV6Z2zSJTsu+xJ73xc3jfFbUla+5Q65Ie2fSd7 4PmHcBaeRXA/A== Date: Sun, 29 Jun 2025 11:51:33 +0300 From: Mike Rapoport To: Peter Xu Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Vlastimil Babka , Suren Baghdasaryan , Muchun Song , Lorenzo Stoakes , Hugh Dickins , Andrew Morton , James Houghton , "Liam R . Howlett" , Nikita Kalyazin , Michal Hocko , David Hildenbrand , Andrea Arcangeli , Oscar Salvador , Axel Rasmussen , Ujwal Kundur Subject: Re: [PATCH v2 2/4] mm/shmem: Support vm_uffd_ops API Message-ID: References: <20250627154655.2085903-1-peterx@redhat.com> <20250627154655.2085903-3-peterx@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250627154655.2085903-3-peterx@redhat.com> X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 2452D2000B X-Stat-Signature: xffz31cfxgcf1wxkmsfw73x54uhzdwwd X-Rspam-User: X-HE-Tag: 1751187103-168833 X-HE-Meta: U2FsdGVkX1/01DadAAOyI2wqhtKWvogHjcbHt6O8xSSJn8rmGbSJ5X5r+4k2d3uq4m2EyjXg+cV3cILhgqv9Fahkl+guC9TKqntGzGtuWgw39jNT1eRQ5zIRt1myV15cLwNxuJZw20X4DztK+3XwldkN/qNw0ACXS+7AWslaJV8AULp7NlkixODdKXpYp6GsyZEQKZ74i87H/c2mcKukhBRRaRzasy+/oDihYcXCfJrRlN2zfL77mxaHHwqPBsvMkWPeiSo8iUIvHJTA139rOX4QGCbaG3Tt7Xp6ZBW3tgzYHjp+MdsEy7XNCgY2jKGBPFzAf3d91hrU2X8kCYlu6luwsQjdHQCIh7AIxH4sL1DOLesihxit40yKkOPvohIq74Yc3sHWJEoyV1+q/NFAN+7UMaA6XakFlk1n/E9mqquheve4WxfxQrO3xW7e9grAOr1hipuMX1WDS++29Gaft3ITcBdKT2fnqPXvM6oPMJSBoM37xq7jSA6kX02dps06QhsMOBcjGPhrZcw9c3kqm8Q8H83s/f63T56kulecd5O9JFQsTV45vYKzCzXxxnqsxvg3qiiQ89dSRcB05jE8uc+7DwADA2m0BWz9B3+tpok9BMgIdWo92XzKH4gy7fyYuNJ5C1GYK+7TkoDE40734uHUaCibiePIRA5FlPXybhpUgqGIehYww8ZDYDYM1Hhgk1yc2sRSIT31pYso7skGY+y8o1G2BADbcg4Qp/DWq1X0qwow5uW5m0jKXdFHhFMA2BJE3mLU2xyIcIZ2iYFmos22Kum3KG6rjCFblhtuxvCRuul3/ofpvP0mPV/WhXcjaDK2gDqkMDm5w7toiVpV6Nxoxl6HapI89vkZ0F9OhNqcZlKTW0Ghy+5DEyea0PanGD5hqEa8KarBqKgKxg98wgjP7Ouk/OlroHbbDrYLseoKqVyUQd86EJ+nACoPv5zVxa4zVUirl4uUlUzO2U0 FL91Pq1J rQ/KWChqy91veBr57m1vBb2iI58DLBKPxuHG6Q8YufSkFNHIMgoqNLUGutj3ZJY24a3W1Vn2LERlaMuGJ75HlgLTMBT4QweO7iKLvCwjs3U+1uZud6/3eikOICK/uFZOjtx2XZzqdtipUwif4bfmjWh51n/Qxq09Beun+lFm7HWdDB+3ya/dZaQIvMso7uadiGaoKimJiJuCQDKVEcL0V4B167uIhGj8kUqsMi16bumebb34A41rlXwv6XVYur8wuWjudJVLxzR1CDbsoqIowB7+NQdJgvTggLH1GO6G2Yu1DzQlyoLvsgLVS/g1jAlNEnuBpXN7sVUiVDNEW+7viE1TQHhzTMIM9G+b5hvfjLzvHXB/GZn1mgAgtbUbDcoutgtrhFb4U5VcFlu3Ck0YLwQUffZtyKb+hqB3rTkbYfwhW+7yT4oevfPcZs2ARMLFkZ5UC 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: On Fri, Jun 27, 2025 at 11:46:53AM -0400, Peter Xu wrote: > Add support for the new vm_uffd_ops API for shmem. Note that this only > introduces the support, the API is not yet used by core mm. > > Due to the tailored uffd_copy() API, shmem is extremely easy to support it > by reusing the existing mfill function. > > It only needs a separate uffd_get_folio() definition but that's oneliner. > > Cc: Hugh Dickins > Signed-off-by: Peter Xu Acked-by: Mike Rapoport (Microsoft) > --- > mm/shmem.c | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/mm/shmem.c b/mm/shmem.c > index 2b19965d27df..9a8b8dd4709b 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -3151,6 +3151,13 @@ static inline struct inode *shmem_get_inode(struct mnt_idmap *idmap, > #endif /* CONFIG_TMPFS_QUOTA */ > > #ifdef CONFIG_USERFAULTFD > + > +static int shmem_uffd_get_folio(struct inode *inode, pgoff_t pgoff, > + struct folio **folio) > +{ > + return shmem_get_folio(inode, pgoff, 0, folio, SGP_NOALLOC); > +} > + > int shmem_mfill_atomic_pte(pmd_t *dst_pmd, > struct vm_area_struct *dst_vma, > unsigned long dst_addr, > @@ -5194,6 +5201,19 @@ static int shmem_error_remove_folio(struct address_space *mapping, > return 0; > } > > +#ifdef CONFIG_USERFAULTFD > +static const vm_uffd_ops shmem_uffd_ops = { > + .uffd_features = __VM_UFFD_FLAGS, > + .uffd_ioctls = BIT(_UFFDIO_COPY) | > + BIT(_UFFDIO_ZEROPAGE) | > + BIT(_UFFDIO_WRITEPROTECT) | > + BIT(_UFFDIO_CONTINUE) | > + BIT(_UFFDIO_POISON), > + .uffd_get_folio = shmem_uffd_get_folio, > + .uffd_copy = shmem_mfill_atomic_pte, > +}; > +#endif > + > static const struct address_space_operations shmem_aops = { > .dirty_folio = noop_dirty_folio, > #ifdef CONFIG_TMPFS > @@ -5296,6 +5316,9 @@ static const struct vm_operations_struct shmem_vm_ops = { > .set_policy = shmem_set_policy, > .get_policy = shmem_get_policy, > #endif > +#ifdef CONFIG_USERFAULTFD > + .userfaultfd_ops = &shmem_uffd_ops, > +#endif > }; > > static const struct vm_operations_struct shmem_anon_vm_ops = { > @@ -5305,6 +5328,9 @@ static const struct vm_operations_struct shmem_anon_vm_ops = { > .set_policy = shmem_set_policy, > .get_policy = shmem_get_policy, > #endif > +#ifdef CONFIG_USERFAULTFD > + .userfaultfd_ops = &shmem_uffd_ops, > +#endif > }; > > int shmem_init_fs_context(struct fs_context *fc) > -- > 2.49.0 > > -- Sincerely yours, Mike.