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 913B6C5B543 for ; Thu, 5 Jun 2025 08:01:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7233B6B0576; Thu, 5 Jun 2025 04:01:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 65F8A8D0053; Thu, 5 Jun 2025 04:01:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 574056B0578; Thu, 5 Jun 2025 04:01:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 368B56B0576 for ; Thu, 5 Jun 2025 04:01:22 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id DD6F781D70 for ; Thu, 5 Jun 2025 08:01:21 +0000 (UTC) X-FDA: 83520601962.23.6AD98B4 Received: from out30-124.freemail.mail.aliyun.com (out30-124.freemail.mail.aliyun.com [115.124.30.124]) by imf02.hostedemail.com (Postfix) with ESMTP id C2A4280003 for ; Thu, 5 Jun 2025 08:01:19 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b="goA/OwPn"; spf=pass (imf02.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.124 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=1749110480; 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=ClldW9K+An+N0FGacslbT4R62a2U/aH83hunRBaO6nc=; b=oq1BFT9tWGxE5Kdp+8bn9lK/Dw8l5sBiKZ2wHZEAeB8KtI46OSKp9ADgKqpF4sdNfiNJig TYPu1DuIyIHsb52kr+wKbAX5yhFfen2SnFGgOKTiQ2Am0H0X3lVIPaY4wDpxyeKbT4/U9Y seS7KBfWc2Y6yhwa0v0AdxXRZwduwtI= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b="goA/OwPn"; spf=pass (imf02.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.124 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749110480; a=rsa-sha256; cv=none; b=ZfeNigQWtWyGuOthpDI3zJ6n/U3BkWW+XDSKm4JziAzCITLzbAYzlOH2l8DwNnLm1KOBIK 0N2//vKF668pE+diNg+Wky8D1TdITZNCwJWT95+yhFrBtDdUP2MoD+6yORoHymmAgT/geW +3BjgRXB3yZ5xUrT5iv6LJXb+ULTdIk= DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1749110477; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; bh=ClldW9K+An+N0FGacslbT4R62a2U/aH83hunRBaO6nc=; b=goA/OwPnrFNsVe2LXt3baGqmyy5LigqVaWw+m1/aHYPSAR4sug8REHOU114Lp6nqSHB7LTFUvBMV5oNeJPHOQBQOoRO3M4sJ9gxP3NGUujUAWLeuJDE/UZMNPTCdcDs2RvedruQf2l4u1HrrzD4xMmQCJMmVw9GA7cGKv9SkJRY= Received: from localhost(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0Wd7PMBy_1749110474 cluster:ay36) by smtp.aliyun-inc.com; Thu, 05 Jun 2025 16:01:15 +0800 From: Baolin Wang To: akpm@linux-foundation.org, hughd@google.com, david@redhat.com Cc: lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/2] mm: shmem: disallow hugepages if the system-wide shmem THP sysfs settings are disabled Date: Thu, 5 Jun 2025 16:00:59 +0800 Message-ID: <39d7617a6142c6091f233357171c5793e0992d36.1749109709.git.baolin.wang@linux.alibaba.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Stat-Signature: a6cohfi37tcuodjir8mhozqwjeyso5bt X-Rspamd-Queue-Id: C2A4280003 X-Rspam-User: X-Rspamd-Server: rspam02 X-HE-Tag: 1749110479-259504 X-HE-Meta: U2FsdGVkX19dEhi0Mtc3BJWwVvxgRrKoYyXagMsX7+oDzJg61AUDOrdIvjdg1P/o1OqMNDFHi3YAjVean0bABx/fzR1GzEXjFJSglgYbpH+MZg2vcx3r4k4csSZyyNu4VSCZ7Ve1PEDfMkDqf4PObNnypOPOrE1T5XL14VKiQ3NBPPJjMni3rhx4Pn+WXwkrfLJHZqYQNbvHR1WWCqxGtH9LkHD0TxMOq0NMtW5IC4lhczsdVQQSiVbKYOlSrfB40xvQh+5WzD6Bkgv8NIcJjbt7TANk0vpwZAqfFq+8S8bSMN6SPK8cMjfyScXrWpcicLpqNQOVCUjDYvc/HIK6jNyhnBtMspNK+RLH5cR4JfE/80fOAcF2X3z3vbl++0nyoWSTfvaBpmtlG1kbLD+0RcvU4Y6OAjTgCMAZJZl/xOANcezDEWpnHkTGw8KlpRoCCc3ONUCOuRPUeWY4QLiI4sYsXcurR+Tyy8af2pXMLfWwtAcuQZNJmjW2tIEf4pUd82dtCnRg1cDfdByc9xRsNXu4GzunB6uMIk+JOSITWc0qs0kQxaH7jxTjL5h6o42FFFIVg14MpKm0DJo4N9WV730hgnsjsExvtH+OC3W2yqQxG67D00Nb/STzfSBp2RgaaZ30cefzx16gH0p1+Jk+O+P0rYo3jfROH4u8WBS6mkvlaq6W7KghVKcky0z9GAOId5ZkUE5zzhHS133LK1KeIGhFf5GSecWWmCp3ZOhR3V+Oej6FwrOOobNWe8aNgrjOhreMgDS+pyMdiw0H9KTj6vj+ReLxLrwPxXuXUz2fx8Lu2n+Wf6dee4ym784/YsWTrBVjDhdTbkuw+yAm4qb8c6lvJLWULIEuYAPoGxRMe2cVp5hhStZXWg== 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: The MADV_COLLAPSE will ignore the system-wide shmem THP sysfs settings, which means that even though we have disabled the shmem THP configuration, MADV_COLLAPSE will still attempt to collapse into a shmem THP. This violates the rule we have agreed upon: never means never. Another rule for madvise, referring to David's suggestion: “allowing for collapsing in a VM without VM_HUGEPAGE in the "madvise" mode would be fine". Then the current strategy is: For shmem, if none of always, madvise, within_size, and inherit have enabled PMD-sized THP, then MADV_COLLAPSE will be prohibited from collapsing PMD-sized THP. For tmpfs, if the mount option is set with the 'huge=never' parameter, then MADV_COLLAPSE will be prohibited from collapsing PMD-sized THP. Acked-by: Zi Yan Signed-off-by: Baolin Wang --- mm/huge_memory.c | 2 +- mm/shmem.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index d3e66136e41a..a8cfa37cae72 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -166,7 +166,7 @@ unsigned long __thp_vma_allowable_orders(struct vm_area_struct *vma, * own flags. */ if (!in_pf && shmem_file(vma->vm_file)) - return shmem_allowable_huge_orders(file_inode(vma->vm_file), + return orders & shmem_allowable_huge_orders(file_inode(vma->vm_file), vma, vma->vm_pgoff, 0, !enforce_sysfs); diff --git a/mm/shmem.c b/mm/shmem.c index 4b42419ce6b2..9af45d4e27e6 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -625,7 +625,7 @@ static unsigned int shmem_huge_global_enabled(struct inode *inode, pgoff_t index return 0; if (shmem_huge == SHMEM_HUGE_DENY) return 0; - if (shmem_huge_force || shmem_huge == SHMEM_HUGE_FORCE) + if (shmem_huge == SHMEM_HUGE_FORCE) return maybe_pmd_order; /* @@ -660,7 +660,7 @@ static unsigned int shmem_huge_global_enabled(struct inode *inode, pgoff_t index fallthrough; case SHMEM_HUGE_ADVISE: - if (vm_flags & VM_HUGEPAGE) + if (shmem_huge_force || (vm_flags & VM_HUGEPAGE)) return maybe_pmd_order; fallthrough; default: @@ -1790,7 +1790,7 @@ unsigned long shmem_allowable_huge_orders(struct inode *inode, /* Allow mTHP that will be fully within i_size. */ mask |= shmem_get_orders_within_size(inode, within_size_orders, index, 0); - if (vm_flags & VM_HUGEPAGE) + if (shmem_huge_force || (vm_flags & VM_HUGEPAGE)) mask |= READ_ONCE(huge_shmem_orders_madvise); if (global_orders > 0) -- 2.43.5