From patchwork Tue May 10 20:32:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 12845496 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 E1992C4332F for ; Tue, 10 May 2022 20:32:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 63BCF6B0074; Tue, 10 May 2022 16:32:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5C2748D0002; Tue, 10 May 2022 16:32:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 463386B0078; Tue, 10 May 2022 16:32:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 391F46B0074 for ; Tue, 10 May 2022 16:32:41 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 1053130C6C for ; Tue, 10 May 2022 20:32:41 +0000 (UTC) X-FDA: 79450981722.06.47828F6 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by imf27.hostedemail.com (Postfix) with ESMTP id 5C9B640095 for ; Tue, 10 May 2022 20:32:38 +0000 (UTC) Received: by mail-pf1-f169.google.com with SMTP id d25so133239pfo.10 for ; Tue, 10 May 2022 13:32:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=V/h1Bxfr/jQDa/bJ5pjWluPLjQmyeyytVr0ONMMooUQ=; b=Qnmtgk/hCNFFRvhcnYNPCvoSnG/uEqkiWxWsnaMLO9uVBgzw0dKJQy4UeeGQ1riYe7 yPMyHNjfVgiSL9P2FckFihY2AuZzL3kqf6HHQE9TAwSlW/LhQYrXDEvp+QQfJun0c735 LCkure5IfIdN5tH4OPuNjmRmdTnhvzZw91UzHnlGKXL0NM7xIRL3LSeIYlTt5vm2z8ZS MDARxEwqJPe1PVltyREXaxFKuu+woKn61n++bjPSuRGBHgeDyuUE4zoHvhsgLEx1Lm2d +7Wos5EuFrRrkM1FG66Y4V50+ccVz3AgxuLttfAQm154vQH1Re71tw6qroG8NHRWYDjc RNjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=V/h1Bxfr/jQDa/bJ5pjWluPLjQmyeyytVr0ONMMooUQ=; b=P9AmRu5JCDWctmtf9LvMZv9lphhhj+S1iq2Da+LC4ePSI9HeFpsWBkhKpL/iFG9hns 8oCtsuUIqpN0vxBzo0HOm3aXf3tsLGoPbvfx0ArvEcWY6wX3nqMLKTrLHVraXsW6OcWx nY24PfDyvKRu7+H8Bg8oNvL1w2n9GdY0iH9TCRnNJzjY1KUnDEVxaeVRr22UyJMu0zZQ 2MAF3XXIzbbx0uMDz/RuCo0td57mgXrP7a9AAWI1ewZcI5EieeBUTQDl4d3PzrP+Y+XD h0sraBwEZ1qsdZMwz+qZf6iC2c+aELoJ/qvYEH7BnNKeVAymbBe+J04qV4RPjRoL5e7G LVVA== X-Gm-Message-State: AOAM5305ArnQqBtIXoPlC19ThIttBmrDABmJzJBdeua7CGn0+ogCezDv evc1wVZrjhnZA/L/x+Qaubg= X-Google-Smtp-Source: ABdhPJwmfDABb4iz4Cc9sy3pydFHFLqsV/JMgsSn7iApJsP4GkgrAs0teyvTfeRic3/HIoQdrtQi7w== X-Received: by 2002:a63:9d8a:0:b0:3ab:6ae4:fc25 with SMTP id i132-20020a639d8a000000b003ab6ae4fc25mr18336737pgd.496.1652214759743; Tue, 10 May 2022 13:32:39 -0700 (PDT) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id v17-20020a1709028d9100b0015e8d4eb1d4sm58898plo.30.2022.05.10.13.32.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 May 2022 13:32:39 -0700 (PDT) From: Yang Shi To: vbabka@suse.cz, kirill.shutemov@linux.intel.com, linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com, willy@infradead.org, ziy@nvidia.com, tytso@mit.edu, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v4 PATCH 1/8] sched: coredump.h: clarify the use of MMF_VM_HUGEPAGE Date: Tue, 10 May 2022 13:32:15 -0700 Message-Id: <20220510203222.24246-2-shy828301@gmail.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20220510203222.24246-1-shy828301@gmail.com> References: <20220510203222.24246-1-shy828301@gmail.com> MIME-Version: 1.0 X-Stat-Signature: kx4f4dkaztp36cc9q84iz8rkkkz66wrk Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="Qnmtgk/h"; spf=pass (imf27.hostedemail.com: domain of shy828301@gmail.com designates 209.85.210.169 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 5C9B640095 X-HE-Tag: 1652214758-665115 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: MMF_VM_HUGEPAGE is set as long as the mm is available for khugepaged by khugepaged_enter(), not only when VM_HUGEPAGE is set on vma. Correct the comment to avoid confusion. Reviewed-by: Miaohe Lin Acked-by: Song Liu Acked-by: Vlastmil Babka Signed-off-by: Yang Shi --- include/linux/sched/coredump.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/linux/sched/coredump.h b/include/linux/sched/coredump.h index 4d9e3a656875..4d0a5be28b70 100644 --- a/include/linux/sched/coredump.h +++ b/include/linux/sched/coredump.h @@ -57,7 +57,8 @@ static inline int get_dumpable(struct mm_struct *mm) #endif /* leave room for more dump flags */ #define MMF_VM_MERGEABLE 16 /* KSM may merge identical pages */ -#define MMF_VM_HUGEPAGE 17 /* set when VM_HUGEPAGE is set on vma */ +#define MMF_VM_HUGEPAGE 17 /* set when mm is available for + khugepaged */ /* * This one-shot flag is dropped due to necessity of changing exe once again * on NFS restore From patchwork Tue May 10 20:32:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 12845497 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 99462C433EF for ; Tue, 10 May 2022 20:32:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2DE3D8D0003; Tue, 10 May 2022 16:32:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 28FC78D0002; Tue, 10 May 2022 16:32:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 108D68D0003; Tue, 10 May 2022 16:32:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id F30718D0002 for ; Tue, 10 May 2022 16:32:42 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay11.hostedemail.com (Postfix) with ESMTP id CB95A818AA for ; Tue, 10 May 2022 20:32:42 +0000 (UTC) X-FDA: 79450981764.24.46ED0FA Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) by imf05.hostedemail.com (Postfix) with ESMTP id C576F1000AC for ; Tue, 10 May 2022 20:32:24 +0000 (UTC) Received: by mail-pg1-f174.google.com with SMTP id r192so11384484pgr.6 for ; Tue, 10 May 2022 13:32:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XG6VTF0MKKyBvJ7LiNjeRAoppMqMyK0KQDU/n3DucWk=; b=PMhjaTnCNiBqvYANKcfUWI+ZsxV1u8tVoKwehsvBgPR2RO8ckI8e3lCcRt+GGQFVxq K+aNHihlxCeMd7YlipMUDpbilZ7k/WknqF1VpYC0ElnBfhKfuSDV0NQhLrepmM6O7fBl 9uqv2lXcB3zE/Op1BjFkvflCXb5sMblUoAoACyX6Tgg9svJKMuCABXHPlntdP9V8MUwc OnNgmbK1aux9SskLR/NTo2Gp9nQNB7mkaBDgIg4cbPfpW3jFKiRUaVSDX0txy306jYi/ Q0F5OJoRAg+orbNa3CPxZlNyYcEmwY5T3aX6ist/XLS7R5yHo78lSMS5A5Udyv8Mtlm0 VA1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XG6VTF0MKKyBvJ7LiNjeRAoppMqMyK0KQDU/n3DucWk=; b=rHQ/NVhW7yu7Y3pCdmJFTovNVJXOwjPpqdZMfecJX5BABCj3QU8HyBSmm4eZLTD3R0 HxgZQ8phm3opI+74JzQOyvmRF3mm9iWgpKaVppAzc5mTfC6SEZ+0GDtOXb9/Bjx1gBgS fK+2WD72NXYQlTX1atIeoBSSEqCsUACLIMqEmvANP6Iqn86pQSxy0j53VtygUVM1WqsH RM3tck3OQuZdK+NOAroqRYY7AvOxD5BjlusUD3qOHgwWDJu9JImIum3UbjA1d0k5v+/N 5wyt/s4vPFkA3J3wMzKKOMgOvfsO4pMtvt5mT3oD58mTo3oJes5BYNXXpHvFtsd6J+PD 5HlQ== X-Gm-Message-State: AOAM5304k2OdETdrOQ3GNZrgQaPeYhsWJHx0RXHw0IqoiktzlpNBaY3E D/h7naWfEphIW/5+hFWD+zk= X-Google-Smtp-Source: ABdhPJxDBFjRdbGsSAuMlA39SdbMIa9m6FJbsVEC4ShwNFejY3QJzjUGmyo3GyjuRcco2U598+vqwg== X-Received: by 2002:a63:2303:0:b0:3da:eae2:583a with SMTP id j3-20020a632303000000b003daeae2583amr4116533pgj.123.1652214761202; Tue, 10 May 2022 13:32:41 -0700 (PDT) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id v17-20020a1709028d9100b0015e8d4eb1d4sm58898plo.30.2022.05.10.13.32.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 May 2022 13:32:40 -0700 (PDT) From: Yang Shi To: vbabka@suse.cz, kirill.shutemov@linux.intel.com, linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com, willy@infradead.org, ziy@nvidia.com, tytso@mit.edu, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v4 PATCH 2/8] mm: khugepaged: remove redundant check for VM_NO_KHUGEPAGED Date: Tue, 10 May 2022 13:32:16 -0700 Message-Id: <20220510203222.24246-3-shy828301@gmail.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20220510203222.24246-1-shy828301@gmail.com> References: <20220510203222.24246-1-shy828301@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: C576F1000AC X-Stat-Signature: ozmc9e5mmh4s7kf7j7mqrc7yiapg8b7f Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=PMhjaTnC; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf05.hostedemail.com: domain of shy828301@gmail.com designates 209.85.215.174 as permitted sender) smtp.mailfrom=shy828301@gmail.com X-Rspam-User: X-HE-Tag: 1652214744-562533 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: The hugepage_vma_check() called by khugepaged_enter_vma_merge() does check VM_NO_KHUGEPAGED. Remove the check from caller and move the check in hugepage_vma_check() up. More checks may be run for VM_NO_KHUGEPAGED vmas, but MADV_HUGEPAGE is definitely not a hot path, so cleaner code does outweigh. Reviewed-by: Miaohe Lin Acked-by: Song Liu Acked-by: Vlastmil Babka Signed-off-by: Yang Shi --- mm/khugepaged.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 76c4ad60b9a9..dc8849d9dde4 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -365,8 +365,7 @@ int hugepage_madvise(struct vm_area_struct *vma, * register it here without waiting a page fault that * may not happen any time soon. */ - if (!(*vm_flags & VM_NO_KHUGEPAGED) && - khugepaged_enter_vma_merge(vma, *vm_flags)) + if (khugepaged_enter_vma_merge(vma, *vm_flags)) return -ENOMEM; break; case MADV_NOHUGEPAGE: @@ -445,6 +444,9 @@ static bool hugepage_vma_check(struct vm_area_struct *vma, if (!transhuge_vma_enabled(vma, vm_flags)) return false; + if (vm_flags & VM_NO_KHUGEPAGED) + return false; + if (vma->vm_file && !IS_ALIGNED((vma->vm_start >> PAGE_SHIFT) - vma->vm_pgoff, HPAGE_PMD_NR)) return false; @@ -470,7 +472,8 @@ static bool hugepage_vma_check(struct vm_area_struct *vma, return false; if (vma_is_temporary_stack(vma)) return false; - return !(vm_flags & VM_NO_KHUGEPAGED); + + return true; } int __khugepaged_enter(struct mm_struct *mm) From patchwork Tue May 10 20:32:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 12845498 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 D11DDC4332F for ; Tue, 10 May 2022 20:32:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 725038D0005; Tue, 10 May 2022 16:32:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6DA6B8D0002; Tue, 10 May 2022 16:32:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 54C748D0005; Tue, 10 May 2022 16:32:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 44CB58D0002 for ; Tue, 10 May 2022 16:32:44 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 25CF921BBB for ; Tue, 10 May 2022 20:32:44 +0000 (UTC) X-FDA: 79450981848.21.9F0D9D8 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by imf22.hostedemail.com (Postfix) with ESMTP id 16F78C00A0 for ; Tue, 10 May 2022 20:32:41 +0000 (UTC) Received: by mail-pl1-f173.google.com with SMTP id d22so17767701plr.9 for ; Tue, 10 May 2022 13:32:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xGfl4tySzp7alFhccaOml+d9CvpyhEwjlT3yjUxnaGM=; b=oyecuH2qIUB2Fn7kgYRrw4VNjuLMH1LgyyzcuskJbpv8K9b50xQtbfsaLyDw3vNr8k hf15D+OK5TZyzPRGlLajNp2rk62uDJVZoJ/UjCpnCJOTFJ5anwCkL62If8oZuGpdxwbU ZXZKM8ZaedmGH2PUnAdMMvryrgVR0WMJlE3Q8flaehfjvIYFjYpHBoERbn+dzRBJhz/M aegxNq59fonJxoX8M1jRfKm4h9CmToH9D+wDA2rZW8mIeE8uWpNyunVz843kyWjA9bzh xLuQ+hcfovSLXMruI2t9LA3BXkGXshZy6KfcstL05HopjRCl9obBYfeFu+fsrSpGKKBj QtIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xGfl4tySzp7alFhccaOml+d9CvpyhEwjlT3yjUxnaGM=; b=cwG4ky5N1f4yPOfbjVj2Kt9Aa/k/XwnC8w8p8MkJAuO/FpkD2QASC5EnTDiPxUwaO7 tAMCch++2N9CtkU2I2kjfuItruibIIu0c1tRwp5BFS3dd3DJvogmd9oCgA9cgHMLNZ8M XYaPeoh7a6q9OxPfV1FCT5Y/jc5ot9bg8kajicQ/SFleGmclDb7PV0iIs6iescukgFzn DlbMozcdpS8mCaWC+bIR8t8TjmRaj/T4fr4m1xVUtgLaJ6GT1G13UC9R8SO6qDxB4TDF j/UVUmiZgviOX6mi+zBI5iqGPGDNYzyAFF4nsBpad0Fhdn8V9mK7k0nSg2pnKgQ6DtHK FZQg== X-Gm-Message-State: AOAM532T5tRqhhA128I4rlNOPI9tM1/g2NGmK8Ff6ueOcDCvE53Imy7r GSFJEBelKtnGLNabIPtGU80= X-Google-Smtp-Source: ABdhPJyViXcJ5aaAcoYE0zU3KvjlbGjVfyBwnobcIlCyWD1xAGHGjKSFQ99xQcrrqlIdbgCnn9NMRg== X-Received: by 2002:a17:90b:35cb:b0:1dc:7905:c4c1 with SMTP id nb11-20020a17090b35cb00b001dc7905c4c1mr1630769pjb.95.1652214762733; Tue, 10 May 2022 13:32:42 -0700 (PDT) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id v17-20020a1709028d9100b0015e8d4eb1d4sm58898plo.30.2022.05.10.13.32.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 May 2022 13:32:42 -0700 (PDT) From: Yang Shi To: vbabka@suse.cz, kirill.shutemov@linux.intel.com, linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com, willy@infradead.org, ziy@nvidia.com, tytso@mit.edu, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v4 PATCH 3/8] mm: khugepaged: skip DAX vma Date: Tue, 10 May 2022 13:32:17 -0700 Message-Id: <20220510203222.24246-4-shy828301@gmail.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20220510203222.24246-1-shy828301@gmail.com> References: <20220510203222.24246-1-shy828301@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 16F78C00A0 X-Stat-Signature: 16tuio3bir3e9u61c9qqducjzdcboadb X-Rspam-User: Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=oyecuH2q; spf=pass (imf22.hostedemail.com: domain of shy828301@gmail.com designates 209.85.214.173 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1652214761-171813 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: The DAX vma may be seen by khugepaged when the mm has other khugepaged suitable vmas. So khugepaged may try to collapse THP for DAX vma, but it will fail due to page sanity check, for example, page is not on LRU. So it is not harmful, but it is definitely pointless to run khugepaged against DAX vma, so skip it in early check. Reviewed-by: Miaohe Lin Acked-by: Song Liu Acked-by: Vlastmil Babka Signed-off-by: Yang Shi --- mm/khugepaged.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index dc8849d9dde4..a2380d88c3ea 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -447,6 +447,10 @@ static bool hugepage_vma_check(struct vm_area_struct *vma, if (vm_flags & VM_NO_KHUGEPAGED) return false; + /* Don't run khugepaged against DAX vma */ + if (vma_is_dax(vma)) + return false; + if (vma->vm_file && !IS_ALIGNED((vma->vm_start >> PAGE_SHIFT) - vma->vm_pgoff, HPAGE_PMD_NR)) return false; From patchwork Tue May 10 20:32:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 12845499 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 5FE0DC433F5 for ; Tue, 10 May 2022 20:32:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E77CF8D0006; Tue, 10 May 2022 16:32:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DD82F8D0002; Tue, 10 May 2022 16:32:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C52FC8D0006; Tue, 10 May 2022 16:32:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id B35748D0002 for ; Tue, 10 May 2022 16:32:45 -0400 (EDT) Received: from smtpin31.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 948F032433 for ; Tue, 10 May 2022 20:32:45 +0000 (UTC) X-FDA: 79450981890.31.5EDA86A Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) by imf16.hostedemail.com (Postfix) with ESMTP id 849861800C2 for ; Tue, 10 May 2022 20:32:36 +0000 (UTC) Received: by mail-pj1-f45.google.com with SMTP id c1-20020a17090a558100b001dca2694f23so139741pji.3 for ; Tue, 10 May 2022 13:32:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=q+fBA/niEzyMz/dVLkAQq7D2wtbVcVqUWXIX9SvJc74=; b=bmMV7n1Zd+0zJjtyvRqCG2AEpBXxPGKK9NySmncUY9Xq3S2vqznztNrSjK7iz5cTdO 7HsPHxuKJrQYaBvDH0MVxJyhEj+HeiC0+CvQYyQh9V1qooj8xAf9QmbVflLnlkb2995g W3tsDXC5LYnGI1/GnGBqiW6+BaCMAk1jc4zXq0t6o8k4YWQrGnU02WJ6rttAJkegH1LF MKa6RFMg2R+Z/LpxRPJH/hWhFv9rx1IQMjTdTOyCPfXOFCf4Q2wOzH65PaJPB9nOoPsJ B+2+1U/DAYiU2q9nt7UKR4sL55Q7eRQ8O0gZWdSBQkr4hMcjwP9MbO5Te/CG03IJFw/Y mEHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q+fBA/niEzyMz/dVLkAQq7D2wtbVcVqUWXIX9SvJc74=; b=B9ziUNE4jckZHGD1dAJ5UHVLlvGKGVoYLzkf8Hvw4aEHTpfemB21Yog+QcZVTcy5QC /uSC2GQ2B6l+0zAYdCk4EDcFkW2jNjwIstqLSunoS0hFySWQ/YCZT9ELD1NTdzJi2U9F 6WWvHfKkA93ONzeN0ByW2DpH7wj2SUtrde68oqxOqPYBeDd1y2eXlXYyeDfSbhoJ4rup EjC2l6nqEd/dVE7xZyz98D1981h2oW4mCtr0BiCGoURupqydwbgFH/pcf2mnwYFwqVhj srVYE3Hp60nYPTYtZha4m2ryZs4XkKcSVoCEtlHST7/8y9O7D4pPFL0V07MqmzCKWQs8 AL1Q== X-Gm-Message-State: AOAM530bv+FJ88BT73d6qYdLdkKB5Q4tAWLJBHfJnaHZWPoFLJgUKNKT kgyDatbqsHdEMEYuzvXfqao= X-Google-Smtp-Source: ABdhPJwI0XJpTDCvRLHH0Oz4A3G+1R0BD+GuNT2gqg7+DLCFYM/pa9ZmQMp7JZgjuxzoaWEXGggZEA== X-Received: by 2002:a17:90b:4b51:b0:1dc:9172:f344 with SMTP id mi17-20020a17090b4b5100b001dc9172f344mr1676754pjb.130.1652214764273; Tue, 10 May 2022 13:32:44 -0700 (PDT) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id v17-20020a1709028d9100b0015e8d4eb1d4sm58898plo.30.2022.05.10.13.32.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 May 2022 13:32:43 -0700 (PDT) From: Yang Shi To: vbabka@suse.cz, kirill.shutemov@linux.intel.com, linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com, willy@infradead.org, ziy@nvidia.com, tytso@mit.edu, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v4 PATCH 4/8] mm: thp: only regular file could be THP eligible Date: Tue, 10 May 2022 13:32:18 -0700 Message-Id: <20220510203222.24246-5-shy828301@gmail.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20220510203222.24246-1-shy828301@gmail.com> References: <20220510203222.24246-1-shy828301@gmail.com> MIME-Version: 1.0 Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=bmMV7n1Z; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.45 as permitted sender) smtp.mailfrom=shy828301@gmail.com X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 849861800C2 X-Rspam-User: X-Stat-Signature: cjqpuyykewfs7mu1p46j39ei6chz55na X-HE-Tag: 1652214756-768960 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: Since commit a4aeaa06d45e ("mm: khugepaged: skip huge page collapse for special files"), khugepaged just collapses THP for regular file which is the intended usecase for readonly fs THP. Only show regular file as THP eligible accordingly. And make file_thp_enabled() available for khugepaged too in order to remove duplicate code. Acked-by: Song Liu Acked-by: Vlastmil Babka Signed-off-by: Yang Shi --- include/linux/huge_mm.h | 14 ++++++++++++++ mm/huge_memory.c | 11 ++--------- mm/khugepaged.c | 9 ++------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index fbf36bb1be22..de29821231c9 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -173,6 +173,20 @@ static inline bool __transparent_hugepage_enabled(struct vm_area_struct *vma) return false; } +static inline bool file_thp_enabled(struct vm_area_struct *vma) +{ + struct inode *inode; + + if (!vma->vm_file) + return false; + + inode = vma->vm_file->f_inode; + + return (IS_ENABLED(CONFIG_READ_ONLY_THP_FOR_FS)) && + (vma->vm_flags & VM_EXEC) && + !inode_is_open_for_write(inode) && S_ISREG(inode->i_mode); +} + bool transparent_hugepage_active(struct vm_area_struct *vma); #define transparent_hugepage_use_zero_page() \ diff --git a/mm/huge_memory.c b/mm/huge_memory.c index d0c26a3b3b17..82434a9d4499 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -69,13 +69,6 @@ static atomic_t huge_zero_refcount; struct page *huge_zero_page __read_mostly; unsigned long huge_zero_pfn __read_mostly = ~0UL; -static inline bool file_thp_enabled(struct vm_area_struct *vma) -{ - return transhuge_vma_enabled(vma, vma->vm_flags) && vma->vm_file && - !inode_is_open_for_write(vma->vm_file->f_inode) && - (vma->vm_flags & VM_EXEC); -} - bool transparent_hugepage_active(struct vm_area_struct *vma) { /* The addr is used to check if the vma size fits */ @@ -87,8 +80,8 @@ bool transparent_hugepage_active(struct vm_area_struct *vma) return __transparent_hugepage_enabled(vma); if (vma_is_shmem(vma)) return shmem_huge_enabled(vma); - if (IS_ENABLED(CONFIG_READ_ONLY_THP_FOR_FS)) - return file_thp_enabled(vma); + if (transhuge_vma_enabled(vma, vma->vm_flags) && file_thp_enabled(vma)) + return true; return false; } diff --git a/mm/khugepaged.c b/mm/khugepaged.c index a2380d88c3ea..c0d3215008ba 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -464,13 +464,8 @@ static bool hugepage_vma_check(struct vm_area_struct *vma, return false; /* Only regular file is valid */ - if (IS_ENABLED(CONFIG_READ_ONLY_THP_FOR_FS) && vma->vm_file && - (vm_flags & VM_EXEC)) { - struct inode *inode = vma->vm_file->f_inode; - - return !inode_is_open_for_write(inode) && - S_ISREG(inode->i_mode); - } + if (file_thp_enabled(vma)) + return true; if (!vma->anon_vma || !vma_is_anonymous(vma)) return false; From patchwork Tue May 10 20:32:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 12845500 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 03E22C433FE for ; Tue, 10 May 2022 20:32:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 96E638D0007; Tue, 10 May 2022 16:32:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 91F2F8D0002; Tue, 10 May 2022 16:32:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7226A8D0007; Tue, 10 May 2022 16:32:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 647F38D0002 for ; Tue, 10 May 2022 16:32:47 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 461C021BB0 for ; Tue, 10 May 2022 20:32:47 +0000 (UTC) X-FDA: 79450981974.19.98F47C7 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) by imf06.hostedemail.com (Postfix) with ESMTP id 70F1B1800AF for ; Tue, 10 May 2022 20:32:44 +0000 (UTC) Received: by mail-pj1-f46.google.com with SMTP id cu23-20020a17090afa9700b001d98d8e53b7so2612960pjb.0 for ; Tue, 10 May 2022 13:32:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9bzLXPvJlgXInWKC0z0h8GbSnE9t748YFrNrW9sv0OI=; b=WjvoN+m7G642VMfbU7y7zcodnFSwJKNI8fyCg6WKeEpTIH/equCwbRBnEtxhSsnJhg fhCoCrPsm4pYIXuNj1z4bsDWzM1z8+S6z0dYtRLwGekuSs8oaOxcdHyymd7RavAg4K9e ks12ff48l1DYz9LgyOrWAHZrwDGsVuuNXj86JpBJqraJrwv/Rc/5b8V3NEBh2qCkT/JZ n3XtXcyIzKwY2C4SrHnXZ5V2TftIlEcpTLUMa+N7Q6q0+ciTlOD0PAXBUxaikpG6NLvW O4QPt4JKd025ddS0y8luVYzS+aX6rU7lvUlo6sGJpPvf4BRNxZPDPbXUCYoSdnRbIGBn C0DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9bzLXPvJlgXInWKC0z0h8GbSnE9t748YFrNrW9sv0OI=; b=Eak6Vwm6v63BSAvO6/YtG+3Irfvm6ZtPQ0795cM+SCodepGJMMhb+8+l2vqc6uahCK Zo6kpkB0sRxVA9NVLblcfAgHG7lGyY8IQ5+r/V0xUkgYYCHbPVUOrs5N7Y4Gi1UFj82U MnnzG06tU6b2ZHJEQmOKiB5KaFjeQc+8eWyqShxm5qa5yP4bZKIyiYGIqN0k9vi9ydAF cfErvoZ9r+N9c5HiQPwz9DNmqYUqo08ALJQe65kCM/ze4CLfBXfDTjLFi9p3DJvEKjxG Bitq652Y9h6BBWnXtBCBUqVNrqCdgoFkDO/tddFsWQGLgr3B5tWjNKsql+QFXWOj62x+ ag+A== X-Gm-Message-State: AOAM531zFFbiz+Ep2eYSsvgVWyywwIJhyOtZPsXsYaMTKNBb2Dwdktfx g8sUZJtD4ACMbLPK9eiyXtw= X-Google-Smtp-Source: ABdhPJzetWxUglmKPTIJxEKFg5ditoKwCl0dD+Zohh3huaS4wvuUbDFl6MB0fZWj/K2+e7s1mXtubw== X-Received: by 2002:a17:90a:bd95:b0:1d9:6735:e9ef with SMTP id z21-20020a17090abd9500b001d96735e9efmr1618657pjr.157.1652214765595; Tue, 10 May 2022 13:32:45 -0700 (PDT) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id v17-20020a1709028d9100b0015e8d4eb1d4sm58898plo.30.2022.05.10.13.32.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 May 2022 13:32:45 -0700 (PDT) From: Yang Shi To: vbabka@suse.cz, kirill.shutemov@linux.intel.com, linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com, willy@infradead.org, ziy@nvidia.com, tytso@mit.edu, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v4 PATCH 5/8] mm: khugepaged: make khugepaged_enter() void function Date: Tue, 10 May 2022 13:32:19 -0700 Message-Id: <20220510203222.24246-6-shy828301@gmail.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20220510203222.24246-1-shy828301@gmail.com> References: <20220510203222.24246-1-shy828301@gmail.com> MIME-Version: 1.0 X-Stat-Signature: c9y8dqoo1jhuzpuy5jospz94p1j1tg4i Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=WjvoN+m7; spf=pass (imf06.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.46 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 70F1B1800AF X-HE-Tag: 1652214764-328618 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: The most callers of khugepaged_enter() don't care about the return value. Only dup_mmap(), anonymous THP page fault and MADV_HUGEPAGE handle the error by returning -ENOMEM. Actually it is not harmful for them to ignore the error case either. It also sounds overkilling to fail fork() and page fault early due to khugepaged_enter() error, and MADV_HUGEPAGE does set VM_HUGEPAGE flag regardless of the error. Acked-by: Song Liu Acked-by: Vlastmil Babka Signed-off-by: Yang Shi --- include/linux/khugepaged.h | 30 ++++++++++++------------------ kernel/fork.c | 4 +--- mm/huge_memory.c | 4 ++-- mm/khugepaged.c | 18 +++++++----------- 4 files changed, 22 insertions(+), 34 deletions(-) diff --git a/include/linux/khugepaged.h b/include/linux/khugepaged.h index 2fcc01891b47..0423d3619f26 100644 --- a/include/linux/khugepaged.h +++ b/include/linux/khugepaged.h @@ -12,10 +12,10 @@ extern struct attribute_group khugepaged_attr_group; extern int khugepaged_init(void); extern void khugepaged_destroy(void); extern int start_stop_khugepaged(void); -extern int __khugepaged_enter(struct mm_struct *mm); +extern void __khugepaged_enter(struct mm_struct *mm); extern void __khugepaged_exit(struct mm_struct *mm); -extern int khugepaged_enter_vma_merge(struct vm_area_struct *vma, - unsigned long vm_flags); +extern void khugepaged_enter_vma_merge(struct vm_area_struct *vma, + unsigned long vm_flags); extern void khugepaged_min_free_kbytes_update(void); #ifdef CONFIG_SHMEM extern void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr); @@ -40,11 +40,10 @@ static inline void collapse_pte_mapped_thp(struct mm_struct *mm, (transparent_hugepage_flags & \ (1<flags)) - return __khugepaged_enter(mm); - return 0; + __khugepaged_enter(mm); } static inline void khugepaged_exit(struct mm_struct *mm) @@ -53,7 +52,7 @@ static inline void khugepaged_exit(struct mm_struct *mm) __khugepaged_exit(mm); } -static inline int khugepaged_enter(struct vm_area_struct *vma, +static inline void khugepaged_enter(struct vm_area_struct *vma, unsigned long vm_flags) { if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags)) @@ -62,27 +61,22 @@ static inline int khugepaged_enter(struct vm_area_struct *vma, (khugepaged_req_madv() && (vm_flags & VM_HUGEPAGE))) && !(vm_flags & VM_NOHUGEPAGE) && !test_bit(MMF_DISABLE_THP, &vma->vm_mm->flags)) - if (__khugepaged_enter(vma->vm_mm)) - return -ENOMEM; - return 0; + __khugepaged_enter(vma->vm_mm); } #else /* CONFIG_TRANSPARENT_HUGEPAGE */ -static inline int khugepaged_fork(struct mm_struct *mm, struct mm_struct *oldmm) +static inline void khugepaged_fork(struct mm_struct *mm, struct mm_struct *oldmm) { - return 0; } static inline void khugepaged_exit(struct mm_struct *mm) { } -static inline int khugepaged_enter(struct vm_area_struct *vma, - unsigned long vm_flags) +static inline void khugepaged_enter(struct vm_area_struct *vma, + unsigned long vm_flags) { - return 0; } -static inline int khugepaged_enter_vma_merge(struct vm_area_struct *vma, - unsigned long vm_flags) +static inline void khugepaged_enter_vma_merge(struct vm_area_struct *vma, + unsigned long vm_flags) { - return 0; } static inline void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr) diff --git a/kernel/fork.c b/kernel/fork.c index 536dc3289734..6692f5d78371 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -608,9 +608,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, retval = ksm_fork(mm, oldmm); if (retval) goto out; - retval = khugepaged_fork(mm, oldmm); - if (retval) - goto out; + khugepaged_fork(mm, oldmm); retval = mas_expected_entries(&mas, oldmm->map_count); if (retval) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 82434a9d4499..80e8b58b4f39 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -726,8 +726,8 @@ vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf) return VM_FAULT_FALLBACK; if (unlikely(anon_vma_prepare(vma))) return VM_FAULT_OOM; - if (unlikely(khugepaged_enter(vma, vma->vm_flags))) - return VM_FAULT_OOM; + khugepaged_enter(vma, vma->vm_flags); + if (!(vmf->flags & FAULT_FLAG_WRITE) && !mm_forbids_zeropage(vma->vm_mm) && transparent_hugepage_use_zero_page()) { diff --git a/mm/khugepaged.c b/mm/khugepaged.c index c0d3215008ba..7815218ab960 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -365,8 +365,7 @@ int hugepage_madvise(struct vm_area_struct *vma, * register it here without waiting a page fault that * may not happen any time soon. */ - if (khugepaged_enter_vma_merge(vma, *vm_flags)) - return -ENOMEM; + khugepaged_enter_vma_merge(vma, *vm_flags); break; case MADV_NOHUGEPAGE: *vm_flags &= ~VM_HUGEPAGE; @@ -475,20 +474,20 @@ static bool hugepage_vma_check(struct vm_area_struct *vma, return true; } -int __khugepaged_enter(struct mm_struct *mm) +void __khugepaged_enter(struct mm_struct *mm) { struct mm_slot *mm_slot; int wakeup; mm_slot = alloc_mm_slot(); if (!mm_slot) - return -ENOMEM; + return; /* __khugepaged_exit() must not run from under us */ VM_BUG_ON_MM(khugepaged_test_exit(mm), mm); if (unlikely(test_and_set_bit(MMF_VM_HUGEPAGE, &mm->flags))) { free_mm_slot(mm_slot); - return 0; + return; } spin_lock(&khugepaged_mm_lock); @@ -504,11 +503,9 @@ int __khugepaged_enter(struct mm_struct *mm) mmgrab(mm); if (wakeup) wake_up_interruptible(&khugepaged_wait); - - return 0; } -int khugepaged_enter_vma_merge(struct vm_area_struct *vma, +void khugepaged_enter_vma_merge(struct vm_area_struct *vma, unsigned long vm_flags) { unsigned long hstart, hend; @@ -519,13 +516,12 @@ int khugepaged_enter_vma_merge(struct vm_area_struct *vma, * file-private shmem THP is not supported. */ if (!hugepage_vma_check(vma, vm_flags)) - return 0; + return; hstart = (vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK; hend = vma->vm_end & HPAGE_PMD_MASK; if (hstart < hend) - return khugepaged_enter(vma, vm_flags); - return 0; + khugepaged_enter(vma, vm_flags); } void __khugepaged_exit(struct mm_struct *mm) From patchwork Tue May 10 20:32:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 12845501 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 61E4EC433F5 for ; Tue, 10 May 2022 20:32:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C08028D0008; Tue, 10 May 2022 16:32:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B8FA78D0002; Tue, 10 May 2022 16:32:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9E1C98D0008; Tue, 10 May 2022 16:32:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 8DEB88D0002 for ; Tue, 10 May 2022 16:32:48 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay13.hostedemail.com (Postfix) with ESMTP id 6B094619E1 for ; Tue, 10 May 2022 20:32:48 +0000 (UTC) X-FDA: 79450982016.08.D02125F Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by imf01.hostedemail.com (Postfix) with ESMTP id 69991400A9 for ; Tue, 10 May 2022 20:32:36 +0000 (UTC) Received: by mail-pl1-f175.google.com with SMTP id x18so17792775plg.6 for ; Tue, 10 May 2022 13:32:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qd2V4gYzSQy9/AY2gyoqLCp31tKNiHFMo2KNXlpicIc=; b=nnkjdEyWUoaYouv5dBAoGcvMsB87vwqUX748f2MsldAO7yY2nJU4YYvQv7c2KBgswg tJs67T7a9GYnD6yfXc0BrOiQvzpX93PsvRUnk8L1FLg5mOY7so3PMu9dNQsBnjcJh8gQ NG9gh/QcWXwoeOubR/w9wI+JMA/K/3/iyv3UvszSqPTEJa9KwXDp8zde+LXoHI7yvoid Xu6TP07Fpxw1KtaX8FkDQqbO68QHiWqxZsAuHuU0Pn2Uxs7VtX7L46oPgndAYLcHGX+R EV2ssx29fWm6xMW65GB6Pm3lXH1BFltML328WqhU0glpcmuAog2eLaj6KdLUSWgT9lGh P90g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qd2V4gYzSQy9/AY2gyoqLCp31tKNiHFMo2KNXlpicIc=; b=FGLICPKujOrub9nDzdkDqXxVB/B4AHzN4Wkw01JzvhzLnXoXzM1xUgXPcbpzXFI3gz TEB00J8KYgTl32AMLa/EBqC+u1DNTzHXNtocOEvWFpqQ6Txr3KydhbCkP2U3ftXtkOrE hlSx0JHgUJt2hPCYuJ0Ys7Q79BYq8U8V1ERhhBsOS06Z9J16/x5dki+YhwjQf7U6HYu7 eA1XBK8ZsyDvD886dIRaUsxRgeERaB74zEgXvO250XINjNgHPrZXuW7VAxcJxZKQ8WY7 x7ogS0/q+/RQU8CcDe8zQ6w+47CAURV3j0Zt75k73ssJZmGBCOlcqJuGYUPuuXT8NsBN S8/w== X-Gm-Message-State: AOAM533wXmvpVyRp1HGHkRB+Zu7wD+/vrZq5tb1GInRqGz/AUoC1v9ac FUw5YV62wDrFN6JBD/zDMzc= X-Google-Smtp-Source: ABdhPJyJfGQKpSGT3s9qaPsV4W+cAXWw7gFsDEedVDpmC7IxU3X+gl0uNVAXM3FDMXRcdZNwCPJvkw== X-Received: by 2002:a17:90b:4a03:b0:1dc:756a:2463 with SMTP id kk3-20020a17090b4a0300b001dc756a2463mr1673723pjb.68.1652214767036; Tue, 10 May 2022 13:32:47 -0700 (PDT) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id v17-20020a1709028d9100b0015e8d4eb1d4sm58898plo.30.2022.05.10.13.32.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 May 2022 13:32:46 -0700 (PDT) From: Yang Shi To: vbabka@suse.cz, kirill.shutemov@linux.intel.com, linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com, willy@infradead.org, ziy@nvidia.com, tytso@mit.edu, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v4 PATCH 6/8] mm: khugepaged: make hugepage_vma_check() non-static Date: Tue, 10 May 2022 13:32:20 -0700 Message-Id: <20220510203222.24246-7-shy828301@gmail.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20220510203222.24246-1-shy828301@gmail.com> References: <20220510203222.24246-1-shy828301@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 69991400A9 X-Stat-Signature: m48swczy5ucwpkkb5uciff3bwnmte8mr Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=nnkjdEyW; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of shy828301@gmail.com designates 209.85.214.175 as permitted sender) smtp.mailfrom=shy828301@gmail.com X-Rspam-User: X-HE-Tag: 1652214756-852906 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: The hugepage_vma_check() could be reused by khugepaged_enter() and khugepaged_enter_vma_merge(), but it is static in khugepaged.c. Make it non-static and declare it in khugepaged.h. Suggested-by: Vlastimil Babka Signed-off-by: Yang Shi --- include/linux/khugepaged.h | 14 ++++++-------- mm/khugepaged.c | 25 +++++++++---------------- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/include/linux/khugepaged.h b/include/linux/khugepaged.h index 0423d3619f26..c340f6bb39d6 100644 --- a/include/linux/khugepaged.h +++ b/include/linux/khugepaged.h @@ -3,8 +3,6 @@ #define _LINUX_KHUGEPAGED_H #include /* MMF_VM_HUGEPAGE */ -#include - #ifdef CONFIG_TRANSPARENT_HUGEPAGE extern struct attribute_group khugepaged_attr_group; @@ -12,6 +10,8 @@ extern struct attribute_group khugepaged_attr_group; extern int khugepaged_init(void); extern void khugepaged_destroy(void); extern int start_stop_khugepaged(void); +extern bool hugepage_vma_check(struct vm_area_struct *vma, + unsigned long vm_flags); extern void __khugepaged_enter(struct mm_struct *mm); extern void __khugepaged_exit(struct mm_struct *mm); extern void khugepaged_enter_vma_merge(struct vm_area_struct *vma, @@ -55,13 +55,11 @@ static inline void khugepaged_exit(struct mm_struct *mm) static inline void khugepaged_enter(struct vm_area_struct *vma, unsigned long vm_flags) { - if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags)) - if ((khugepaged_always() || - (shmem_file(vma->vm_file) && shmem_huge_enabled(vma)) || - (khugepaged_req_madv() && (vm_flags & VM_HUGEPAGE))) && - !(vm_flags & VM_NOHUGEPAGE) && - !test_bit(MMF_DISABLE_THP, &vma->vm_mm->flags)) + if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags) && + khugepaged_enabled()) { + if (hugepage_vma_check(vma, vm_flags)) __khugepaged_enter(vma->vm_mm); + } } #else /* CONFIG_TRANSPARENT_HUGEPAGE */ static inline void khugepaged_fork(struct mm_struct *mm, struct mm_struct *oldmm) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 7815218ab960..dec449339964 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -437,8 +437,8 @@ static inline int khugepaged_test_exit(struct mm_struct *mm) return atomic_read(&mm->mm_users) == 0; } -static bool hugepage_vma_check(struct vm_area_struct *vma, - unsigned long vm_flags) +bool hugepage_vma_check(struct vm_area_struct *vma, + unsigned long vm_flags) { if (!transhuge_vma_enabled(vma, vm_flags)) return false; @@ -508,20 +508,13 @@ void __khugepaged_enter(struct mm_struct *mm) void khugepaged_enter_vma_merge(struct vm_area_struct *vma, unsigned long vm_flags) { - unsigned long hstart, hend; - - /* - * khugepaged only supports read-only files for non-shmem files. - * khugepaged does not yet work on special mappings. And - * file-private shmem THP is not supported. - */ - if (!hugepage_vma_check(vma, vm_flags)) - return; - - hstart = (vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK; - hend = vma->vm_end & HPAGE_PMD_MASK; - if (hstart < hend) - khugepaged_enter(vma, vm_flags); + if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags) && + khugepaged_enabled() && + (((vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK) < + (vma->vm_end & HPAGE_PMD_MASK))) { + if (hugepage_vma_check(vma, vm_flags)) + __khugepaged_enter(vma->vm_mm); + } } void __khugepaged_exit(struct mm_struct *mm) From patchwork Tue May 10 20:32:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 12845502 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 B8840C433EF for ; Tue, 10 May 2022 20:32:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E53B38D0009; Tue, 10 May 2022 16:32:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DFFD48D0002; Tue, 10 May 2022 16:32:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C521A8D0009; Tue, 10 May 2022 16:32:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id AE14E8D0002 for ; Tue, 10 May 2022 16:32:49 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 937AD21D8E for ; Tue, 10 May 2022 20:32:49 +0000 (UTC) X-FDA: 79450982058.27.5A0DCDA Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) by imf16.hostedemail.com (Postfix) with ESMTP id 8000A1800BA for ; Tue, 10 May 2022 20:32:40 +0000 (UTC) Received: by mail-pj1-f45.google.com with SMTP id c1-20020a17090a558100b001dca2694f23so139741pji.3 for ; Tue, 10 May 2022 13:32:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+FkmAy2Ymz4AwqTAeIx4CgD4TCwehEDHJukpdkFOQzQ=; b=S3no0u2ExtqBELoR4IiwVmiS8rE1/wSFCbQoP/VlwVfnVxYi1iSkOT2f+wekgSFcqN jCZtKJ7IhOFxMumWdLnmSIM1SojVhLmzixtKhDpZS5Opn0etBfh1gYixPeKKMCf81AoC 0q+DLEPIP9yV2o9aqhhmUn48fnctKW3eYniWqkasdUZ5DUEjbKHNRD4JoftzRXVsdulD Iyyjp7BRtoN58fsGQVs2utbIlJ2LDrOMA+WzrkaSvw/P9EBcBRtxo1pVRPhs/LFG3Re+ 9MjRFR3lb8F8DjjpupiJU3HNZT7YZKXTqpLBoUGrwFaUptyR8VAalWhxCVl5L0/FFdOt Z22g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+FkmAy2Ymz4AwqTAeIx4CgD4TCwehEDHJukpdkFOQzQ=; b=WVgpWwglOTjzB5htruhubro8lNr2+Gz7IKS2ct+5hHoQdT/qfI/DlriZ3uU19utEvb Gm6vHMC6CdB2g3wiFtr/VtkqxSGIj07XolByBOBE7OVEGN9WjdNDOLGYEUW1KPDo0ha3 WHk0RchGqRMTsuk0ThH6F4h/2JPB3tDCZ8z/zi60zGh29vQj5MgO6tY5JzS8SBwpkPZZ zty1mdnS0bKRtxrW/vjPk8h/oMwz4k14OjokULQWyd80Groun+9Vn37fg6mBbG/iQyvI bJ9A3GmFeX74a31cDzdlo70pVxiVv5E3eQ/EmGLDE4Tu4wBv5+w8h4P972SnykRgRSXU tZDw== X-Gm-Message-State: AOAM5328vIypAi2v+3h1OtDXYovroZ8NR0xxjftyOqjpg1HoE42q1HyO N65x3svRGRnu8WOPC93qlMQ= X-Google-Smtp-Source: ABdhPJwmyjvgMYxxCNpnJ0YhIIczNSpnId2smrKzWQlwP1GG4myYSir5NGIWA9p/smt5p0ZDzIquBg== X-Received: by 2002:a17:902:b698:b0:158:faee:442f with SMTP id c24-20020a170902b69800b00158faee442fmr22821784pls.75.1652214768706; Tue, 10 May 2022 13:32:48 -0700 (PDT) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id v17-20020a1709028d9100b0015e8d4eb1d4sm58898plo.30.2022.05.10.13.32.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 May 2022 13:32:47 -0700 (PDT) From: Yang Shi To: vbabka@suse.cz, kirill.shutemov@linux.intel.com, linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com, willy@infradead.org, ziy@nvidia.com, tytso@mit.edu, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v4 PATCH 7/8] mm: khugepaged: introduce khugepaged_enter_vma() helper Date: Tue, 10 May 2022 13:32:21 -0700 Message-Id: <20220510203222.24246-8-shy828301@gmail.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20220510203222.24246-1-shy828301@gmail.com> References: <20220510203222.24246-1-shy828301@gmail.com> MIME-Version: 1.0 Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=S3no0u2E; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf16.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.45 as permitted sender) smtp.mailfrom=shy828301@gmail.com X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 8000A1800BA X-Rspam-User: X-Stat-Signature: ni711fpnyddhcweeeau9sot11azbdz34 X-HE-Tag: 1652214760-378317 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: The khugepaged_enter_vma_merge() actually does as the same thing as the khugepaged_enter() section called by shmem_mmap(), so consolidate them into one helper and rename it to khugepaged_enter_vma(). Acked-by: Vlastmil Babka Signed-off-by: Yang Shi --- include/linux/khugepaged.h | 8 ++++---- mm/khugepaged.c | 6 +++--- mm/mmap.c | 12 ++++++------ mm/shmem.c | 12 ++---------- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/include/linux/khugepaged.h b/include/linux/khugepaged.h index c340f6bb39d6..392d34c3c59a 100644 --- a/include/linux/khugepaged.h +++ b/include/linux/khugepaged.h @@ -14,8 +14,8 @@ extern bool hugepage_vma_check(struct vm_area_struct *vma, unsigned long vm_flags); extern void __khugepaged_enter(struct mm_struct *mm); extern void __khugepaged_exit(struct mm_struct *mm); -extern void khugepaged_enter_vma_merge(struct vm_area_struct *vma, - unsigned long vm_flags); +extern void khugepaged_enter_vma(struct vm_area_struct *vma, + unsigned long vm_flags); extern void khugepaged_min_free_kbytes_update(void); #ifdef CONFIG_SHMEM extern void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr); @@ -72,8 +72,8 @@ static inline void khugepaged_enter(struct vm_area_struct *vma, unsigned long vm_flags) { } -static inline void khugepaged_enter_vma_merge(struct vm_area_struct *vma, - unsigned long vm_flags) +static inline void khugepaged_enter_vma(struct vm_area_struct *vma, + unsigned long vm_flags) { } static inline void collapse_pte_mapped_thp(struct mm_struct *mm, diff --git a/mm/khugepaged.c b/mm/khugepaged.c index dec449339964..32db587c5224 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -365,7 +365,7 @@ int hugepage_madvise(struct vm_area_struct *vma, * register it here without waiting a page fault that * may not happen any time soon. */ - khugepaged_enter_vma_merge(vma, *vm_flags); + khugepaged_enter_vma(vma, *vm_flags); break; case MADV_NOHUGEPAGE: *vm_flags &= ~VM_HUGEPAGE; @@ -505,8 +505,8 @@ void __khugepaged_enter(struct mm_struct *mm) wake_up_interruptible(&khugepaged_wait); } -void khugepaged_enter_vma_merge(struct vm_area_struct *vma, - unsigned long vm_flags) +void khugepaged_enter_vma(struct vm_area_struct *vma, + unsigned long vm_flags) { if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags) && khugepaged_enabled() && diff --git a/mm/mmap.c b/mm/mmap.c index 3445a8c304af..34ff1600426c 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1122,7 +1122,7 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, end, prev->vm_pgoff, NULL, prev); if (err) return NULL; - khugepaged_enter_vma_merge(prev, vm_flags); + khugepaged_enter_vma(prev, vm_flags); return prev; } @@ -1149,7 +1149,7 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, } if (err) return NULL; - khugepaged_enter_vma_merge(area, vm_flags); + khugepaged_enter_vma(area, vm_flags); return area; } @@ -2046,7 +2046,7 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address) } } anon_vma_unlock_write(vma->anon_vma); - khugepaged_enter_vma_merge(vma, vma->vm_flags); + khugepaged_enter_vma(vma, vma->vm_flags); return error; } #endif /* CONFIG_STACK_GROWSUP || CONFIG_IA64 */ @@ -2127,7 +2127,7 @@ int expand_downwards(struct vm_area_struct *vma, unsigned long address) } } anon_vma_unlock_write(vma->anon_vma); - khugepaged_enter_vma_merge(vma, vma->vm_flags); + khugepaged_enter_vma(vma, vma->vm_flags); return error; } @@ -2635,7 +2635,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr, /* Actually expand, if possible */ if (vma && !vma_expand(&mas, vma, merge_start, merge_end, vm_pgoff, next)) { - khugepaged_enter_vma_merge(vma, vm_flags); + khugepaged_enter_vma(vma, vm_flags); goto expanded; } @@ -3051,7 +3051,7 @@ static int do_brk_flags(struct ma_state *mas, struct vm_area_struct *vma, anon_vma_interval_tree_post_update_vma(vma); anon_vma_unlock_write(vma->anon_vma); } - khugepaged_enter_vma_merge(vma, flags); + khugepaged_enter_vma(vma, flags); goto out; } diff --git a/mm/shmem.c b/mm/shmem.c index 29701be579f8..89f6f4fec3f9 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2232,11 +2232,7 @@ static int shmem_mmap(struct file *file, struct vm_area_struct *vma) file_accessed(file); vma->vm_ops = &shmem_vm_ops; - if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) && - ((vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK) < - (vma->vm_end & HPAGE_PMD_MASK)) { - khugepaged_enter(vma, vma->vm_flags); - } + khugepaged_enter_vma(vma, vma->vm_flags); return 0; } @@ -4137,11 +4133,7 @@ int shmem_zero_setup(struct vm_area_struct *vma) vma->vm_file = file; vma->vm_ops = &shmem_vm_ops; - if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) && - ((vma->vm_start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK) < - (vma->vm_end & HPAGE_PMD_MASK)) { - khugepaged_enter(vma, vma->vm_flags); - } + khugepaged_enter_vma(vma, vma->vm_flags); return 0; } From patchwork Tue May 10 20:32:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yang Shi X-Patchwork-Id: 12845503 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 5E163C433F5 for ; Tue, 10 May 2022 20:32:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 024358D000A; Tue, 10 May 2022 16:32:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EC4798D0002; Tue, 10 May 2022 16:32:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CEE0B8D000A; Tue, 10 May 2022 16:32:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id C08388D0002 for ; Tue, 10 May 2022 16:32:51 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 9122132585 for ; Tue, 10 May 2022 20:32:51 +0000 (UTC) X-FDA: 79450982142.29.53F200C Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by imf05.hostedemail.com (Postfix) with ESMTP id A88161000A2 for ; Tue, 10 May 2022 20:32:33 +0000 (UTC) Received: by mail-pj1-f42.google.com with SMTP id l11-20020a17090a49cb00b001d923a9ca99so159588pjm.1 for ; Tue, 10 May 2022 13:32:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=m2zZRYMCn2b2gDLpYI5z0secDrQJa1a/mRP4v8GDdaI=; b=WFhOORKCopujXevIEId5Pou5+f06pmdKjIe9jKkQl6fsJfPMy2ZxbNmrBw/2Yml9o9 MoS9B2R084AHZT40mOyNfmDmn+do82XYuo+DrjNwUZHbtLDt+HC6/KCbTs9BsGY6xLZI 02uFB4QsRjxxaDGTmrwBMMkq6RjAyY0qzhY4N4Mw5ltluWRLsQzPevqYMNIuYFXmQLsh YWBRKj8FxJM0bvYtfLdWexGP2Bqn9TXxRkyBrizdT9yvs5VQeu45FQcNdzUG/IQ7j7qe vdGuWvwsWudDK5+hkjCfIuu6aksOU7DDtw5iskC+jRcQQO/3xQzqGFyK7G+O0uHJ33/N jaIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=m2zZRYMCn2b2gDLpYI5z0secDrQJa1a/mRP4v8GDdaI=; b=E4fYZTJArrxI8RjM+K/ulWe6by0CM+3Ow/o+o+FaC1ShOCF53JMBuj3nlh0dze0EGT fLrtmbHVZ63P2i+kpn/g9Uy7XrjXAohHc7yOZJEqnGkSLHKn1xUpLoFXchi60jigitEa NiFweDsFrVYt1WgkdxqgW+xx+slQYkOW/A2hpAT2o2kQZup6QqJW/Aqymu4d9fDK3kK5 O1u7khisG4EMVsZhthE7GUvuFT/dylV7w8+H4UTFsKtkeP2bNQtoNSZg5swoV8woWOlU VsHmAK97I/c3cNAaOMwvRxfMmu3N0A1aqfb/5BwxaYWcKcUXyiQlc/0BSONlYH+b2fxn lLoA== X-Gm-Message-State: AOAM533p3q13pJ9E2A0+5lgKvZWDXcA90OTACqnhVrNATRuWm6tZfxgw sRTdDy5ipvnSxFVF2d6vMNI= X-Google-Smtp-Source: ABdhPJyF3jtsrDiJCOCcE0BCnoWu8584chaVsDcym+NHrrec7AOOrK4v54yoEsWhmn+5HTcoIBdieA== X-Received: by 2002:a17:903:2312:b0:15e:a6c8:a313 with SMTP id d18-20020a170903231200b0015ea6c8a313mr22095118plh.122.1652214770262; Tue, 10 May 2022 13:32:50 -0700 (PDT) Received: from localhost.localdomain (c-67-174-241-145.hsd1.ca.comcast.net. [67.174.241.145]) by smtp.gmail.com with ESMTPSA id v17-20020a1709028d9100b0015e8d4eb1d4sm58898plo.30.2022.05.10.13.32.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 May 2022 13:32:49 -0700 (PDT) From: Yang Shi To: vbabka@suse.cz, kirill.shutemov@linux.intel.com, linmiaohe@huawei.com, songliubraving@fb.com, riel@surriel.com, willy@infradead.org, ziy@nvidia.com, tytso@mit.edu, akpm@linux-foundation.org Cc: shy828301@gmail.com, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [v4 PATCH 8/8] mm: mmap: register suitable readonly file vmas for khugepaged Date: Tue, 10 May 2022 13:32:22 -0700 Message-Id: <20220510203222.24246-9-shy828301@gmail.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20220510203222.24246-1-shy828301@gmail.com> References: <20220510203222.24246-1-shy828301@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: A88161000A2 X-Stat-Signature: w19wdhnje6cd7pqxephquujg1hk67191 X-Rspam-User: Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=WFhOORKC; spf=pass (imf05.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.42 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1652214753-685367 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: The readonly FS THP relies on khugepaged to collapse THP for suitable vmas. But the behavior is inconsistent for "always" mode (https://lore.kernel.org/linux-mm/00f195d4-d039-3cf2-d3a1-a2c88de397a0@suse.cz/). The "always" mode means THP allocation should be tried all the time and khugepaged should try to collapse THP all the time. Of course the allocation and collapse may fail due to other factors and conditions. Currently file THP may not be collapsed by khugepaged even though all the conditions are met. That does break the semantics of "always" mode. So make sure readonly FS vmas are registered to khugepaged to fix the break. Registering suitable vmas in common mmap path, that could cover both readonly FS vmas and shmem vmas, so removed the khugepaged calls in shmem.c. Still need to keep the khugepaged call in vma_merge() since vma_merge() is called in a lot of places, for example, madvise, mprotect, etc. Reported-by: Vlastimil Babka Acked-by: Vlastmil Babka Signed-off-by: Yang Shi --- mm/mmap.c | 6 ++++++ mm/shmem.c | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 34ff1600426c..6d7a6c7b50bb 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -2745,6 +2745,12 @@ unsigned long mmap_region(struct file *file, unsigned long addr, i_mmap_unlock_write(vma->vm_file->f_mapping); } + /* + * vma_merge() calls khugepaged_enter_vma() either, the below + * call covers the non-merge case. + */ + khugepaged_enter_vma(vma, vma->vm_flags); + /* Once vma denies write, undo our temporary denial count */ unmap_writable: if (file && vm_flags & VM_SHARED) diff --git a/mm/shmem.c b/mm/shmem.c index 89f6f4fec3f9..67a3f3b05fb2 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -2232,7 +2231,6 @@ static int shmem_mmap(struct file *file, struct vm_area_struct *vma) file_accessed(file); vma->vm_ops = &shmem_vm_ops; - khugepaged_enter_vma(vma, vma->vm_flags); return 0; } @@ -4133,8 +4131,6 @@ int shmem_zero_setup(struct vm_area_struct *vma) vma->vm_file = file; vma->vm_ops = &shmem_vm_ops; - khugepaged_enter_vma(vma, vma->vm_flags); - return 0; }