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 8C360C30658 for ; Fri, 5 Jul 2024 06:02:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1D6486B0096; Fri, 5 Jul 2024 02:02:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 185316B0098; Fri, 5 Jul 2024 02:02:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 04CA96B0099; Fri, 5 Jul 2024 02:02:44 -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 DAF296B0096 for ; Fri, 5 Jul 2024 02:02:44 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 85B261208A8 for ; Fri, 5 Jul 2024 06:02:44 +0000 (UTC) X-FDA: 82304655048.05.77628DC Received: from out30-131.freemail.mail.aliyun.com (out30-131.freemail.mail.aliyun.com [115.124.30.131]) by imf14.hostedemail.com (Postfix) with ESMTP id 8A97B100024 for ; Fri, 5 Jul 2024 06:02:40 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b="WMo/p1ON"; spf=pass (imf14.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.131 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720159336; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=l0XBmP+QWTCsjcPW7DyKmrEN7J5UoybSmB6fGTi8/zc=; b=X3dz92OjTYeCrUXnT8ZxhLNxY4TXGaFqIWdK8A5zOKLz0cUjcohwyweoZBtW53/0fRO8s2 uxTJiz/r0SylqoQ9jKdTFc9U55vKQCnUG1uFROIROdEuZcS2RpuARsCqqMrwiGDRWt+YwF GknrKd/jfRIFRcOrpeKhcKOE4A5gyxA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720159336; a=rsa-sha256; cv=none; b=qSZZZ5vGjfliHh/E71h06Tcq5N3wgH/dYCtj0YLK5uLXA4oOjHiJiD+cihA7R5ZkQuCSfS FoBk5r63GE4pmE32IE7sZ+7EPWocbgVMu0w8oxORc3/4lq5WP+KsQX5SUGBNcgNXGoe+Rf GodJ5MO07h56P2iLCuWhFvY/mEcOWFw= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b="WMo/p1ON"; spf=pass (imf14.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.131 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1720159357; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=l0XBmP+QWTCsjcPW7DyKmrEN7J5UoybSmB6fGTi8/zc=; b=WMo/p1ONVddUZlUGc+vKAw459aVz0LAwflpRYYs59TxqzTy+s0fqQoIBsWNYfTK+BF9XWq0Py268xuRnJu6rUQvICn+GJOW/2zdFrUztl0rjVBjc+JoDXTsnFngbJmWN+xjoQag/z0Vry9rUOruE5RyCePDSpoPM9B4bgg4AWd8= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R181e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037067113;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=10;SR=0;TI=SMTPD_---0W9tspwK_1720159355; Received: from 30.97.56.65(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0W9tspwK_1720159355) by smtp.aliyun-inc.com; Fri, 05 Jul 2024 14:02:36 +0800 Message-ID: <1d795623-8da9-420a-af50-f6308ed5a283@linux.alibaba.com> Date: Fri, 5 Jul 2024 14:02:35 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3] mm: thp: support "THPeligible" semantics for mTHP with anonymous shmem To: Bang Li , hughd@google.com, akpm@linux-foundation.org Cc: david@redhat.com, ryan.roberts@arm.com, wangkefeng.wang@huawei.com, ioworker0@gmail.com, ziy@nvidia.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20240705032309.24933-1-libang.li@antgroup.com> From: Baolin Wang In-Reply-To: <20240705032309.24933-1-libang.li@antgroup.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Stat-Signature: o5ejtrsxxep4ojwnpnuiwfcjx4agfz8s X-Rspamd-Queue-Id: 8A97B100024 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1720159360-571062 X-HE-Meta: U2FsdGVkX19E61uB3BIb4neUNkXYKroXS+RogiE7x3X83dD8ddBObcK3BCOY3AavcyXVqTWxwzItKEUvfINuCdTB3anmS/9xLI63uFdNXnAxs73Pjq8BnlKIJVSJA+dNegB3xwqMhA0f25xNuc4g70DxPhaqnc6wHjd73L/m5Fup6104+B1yBl6VYqYS969WDDOaMs0orhZiwQ2f+L3OnhFJ9X65nVU44zabDeQWjzx8EznP5yKe8JuFeAjpyCQ4+NKhjh5kNYgyMlXKJ8TX6lRERPg/KHWAZXdDdoHB1fd0fYT2r8IxpG5R5J4G7Z6om3Ei0EZpErq7YNtU8rHB3OGqbJMxptDDslhNPQdCW2sfVepIZca7En5a0SbUBDjROueWXah/FHJvnfwQzViUYcA2FHtjTpe/puda5Dp2FiSSVuAaFCECOweLG4sOmkiPSQGdFtOQOjT9RXgF8pT0n53IXPC5JzRZBkv+ys8gM+FiGm4HhxpVvmeQ8V8GsxJKHz1NRx9NNCOVxYwkwrJ/PTwaV9OdPIHo9sBHGQRAKb2tDTJ2VydU+Xtkr4qxJX8gxZzV94Eg5RjEhKL+IWqUBu3a5kD27DDUTQN24WI/GNd9ZCmu8aOZDuzMBgivPlvWvuyMIt528D8R7LCB1VuNde1O0ZnKFAMKb1gqXiG0HcL/tHrQ87CORNOSjV3ZILdDB3tPu9CkfSHmnrTa1tJLOkiYJc4Gr2wFuszEd7DRBQJE8amPOvy7kBxsNDXyfLyajocVGPtMuUP90BW6akyJud1BcwXTfL8PYfkB4R+wsCTOkPTq0ER81S971N8EC4rMmn5sV1meUuusduSJyf8Lo/Ha5lBeqN4XIfFUTzi8OuI4wCdsfCdFHEvoJr6Io9lwjfQaU560KPyoGyMib0/qFLJRpWvVRlJJT/MVC6m8v/RNxMkd2jNLpbLa8HKn6kjmaLqLPTf6Sm/ldSe+bxL iTYnqlJ7 Q55hDvtr+Lq5q50a/fcdfMPqOGwk/KqPGiXwxFgwPW5oPqup20oAhxFM8+nP0ynzC74lAptCtHxXKXoqdWuV7LB0RbnjrqkWvi5OLZPk1sJh3vfYDZj6Z+Puf7L92qKIUYZLsjCsfLpsO98TO9Pcw0vAhSO3YHD0PhNHVlGdEdNELhyEwjM+WHU0odgKfuhCqp22w6lioaYDDSo6+w89Wijg/Al6/E6z134BPoyyZ5nafT8Cb65E7MoGUc6+2bhZTj9XqXhCyWDV/Z2J//EAHA6nA9YQYfn2sj0GHAelbjM5g30LjRfGuAEpS4w2TrUbnasy4Ofrd0gxGQZ9g+wXKDfK50XKmrr3+Ps/QpivfiJCqXdZv/+E4vk/yiw0eHS3YyIs+5QEKN9ELF7WCIk3E3UNIzFAznwzpPvBGnLtaZpnXDnLP9op6R/0Ut+rVN3ygZtjo 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 2024/7/5 11:23, Bang Li wrote: > After the commit 7fb1b252afb5 ("mm: shmem: add mTHP support for > anonymous shmem"), we can configure different policies through > the multi-size THP sysfs interface for anonymous shmem. But > currently "THPeligible" indicates only whether the mapping is > eligible for allocating THP-pages as well as the THP is PMD > mappable or not for anonymous shmem, we need to support semantics > for mTHP with anonymous shmem similar to those for mTHP with > anonymous memory. > > Signed-off-by: Bang Li So far, it looks good to me. Reviewed-by: Baolin Wang > --- > Changes since v2 [2]: > - Move shmem_allowable_huge_orders() to shmem_fs.h (per Baolin) > - clean up these coding style issues (per Ryan) > > Changes since v1 [1]: > - Put anonymous shmem mthp related logic into > thp_vma_allowable_orders() (per David) > > [1] https://lore.kernel.org/linux-mm/20240628104926.34209-1-libang.li@antgroup.com/ > [2] https://lore.kernel.org/linux-mm/20240702023401.41553-1-libang.li@antgroup.com/ > > include/linux/shmem_fs.h | 9 +++++++++ > mm/huge_memory.c | 13 +++++++++---- > mm/shmem.c | 9 +-------- > 3 files changed, 19 insertions(+), 12 deletions(-) > > diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h > index 3fb18f7eb73e..1d06b1e5408a 100644 > --- a/include/linux/shmem_fs.h > +++ b/include/linux/shmem_fs.h > @@ -113,12 +113,21 @@ int shmem_unuse(unsigned int type); > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > extern bool shmem_is_huge(struct inode *inode, pgoff_t index, bool shmem_huge_force, > struct mm_struct *mm, unsigned long vm_flags); > +unsigned long shmem_allowable_huge_orders(struct inode *inode, > + struct vm_area_struct *vma, pgoff_t index, > + bool global_huge); > #else > static __always_inline bool shmem_is_huge(struct inode *inode, pgoff_t index, bool shmem_huge_force, > struct mm_struct *mm, unsigned long vm_flags) > { > return false; > } > +static inline unsigned long shmem_allowable_huge_orders(struct inode *inode, > + struct vm_area_struct *vma, pgoff_t index, > + bool global_huge) > +{ > + return 0; > +} > #endif > > #ifdef CONFIG_SHMEM > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 5cbd838e96e6..0985bd75a624 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -151,10 +151,15 @@ unsigned long __thp_vma_allowable_orders(struct vm_area_struct *vma, > * Must be done before hugepage flags check since shmem has its > * own flags. > */ > - if (!in_pf && shmem_file(vma->vm_file)) > - return shmem_is_huge(file_inode(vma->vm_file), vma->vm_pgoff, > - !enforce_sysfs, vma->vm_mm, vm_flags) > - ? orders : 0; > + if (!in_pf && shmem_file(vma->vm_file)) { > + bool global_huge = shmem_is_huge(file_inode(vma->vm_file), vma->vm_pgoff, > + !enforce_sysfs, vma->vm_mm, vm_flags); > + > + if (!vma_is_anon_shmem(vma)) > + return global_huge ? orders : 0; > + return shmem_allowable_huge_orders(file_inode(vma->vm_file), > + vma, vma->vm_pgoff, global_huge); > + } > > if (!vma_is_anonymous(vma)) { > /* > diff --git a/mm/shmem.c b/mm/shmem.c > index f24177e9d5cc..921d59c3d669 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1622,7 +1622,7 @@ static gfp_t limit_gfp_mask(gfp_t huge_gfp, gfp_t limit_gfp) > } > > #ifdef CONFIG_TRANSPARENT_HUGEPAGE > -static unsigned long shmem_allowable_huge_orders(struct inode *inode, > +unsigned long shmem_allowable_huge_orders(struct inode *inode, > struct vm_area_struct *vma, pgoff_t index, > bool global_huge) > { > @@ -1707,13 +1707,6 @@ static unsigned long shmem_suitable_orders(struct inode *inode, struct vm_fault > return orders; > } > #else > -static unsigned long shmem_allowable_huge_orders(struct inode *inode, > - struct vm_area_struct *vma, pgoff_t index, > - bool global_huge) > -{ > - return 0; > -} > - > static unsigned long shmem_suitable_orders(struct inode *inode, struct vm_fault *vmf, > struct address_space *mapping, pgoff_t index, > unsigned long orders)