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 C277BC3ABA3 for ; Thu, 1 May 2025 03:27:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 64E416B0092; Wed, 30 Apr 2025 23:27:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5FAA76B0093; Wed, 30 Apr 2025 23:27:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4C3276B0096; Wed, 30 Apr 2025 23:27:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 2DF076B0092 for ; Wed, 30 Apr 2025 23:27:30 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id B4F20BF6BB for ; Thu, 1 May 2025 03:27:30 +0000 (UTC) X-FDA: 83392903860.22.0FE216E Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) by imf03.hostedemail.com (Postfix) with ESMTP id D7D0620006 for ; Thu, 1 May 2025 03:27:28 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=To9I5y+g; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.210.173 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746070048; a=rsa-sha256; cv=none; b=abONSPUZX8bQgD5qHuCtuDr1KFxWLeRCcGBToEa5CxkCnCiWZg8KJNCd+ctAxKE+C5XIbl NBDSSPdFvfAoXIJBO2pc0q/6HWf1/Hy3snaq24kQXcUTphGQgUVDQ2Qc6N5VRbXEIrsJQ+ mwrRYS6OL93vMmJCzSYqA43nYB6VmxY= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=To9I5y+g; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.210.173 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746070048; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kOc+vclhNlDF14KtEorONrdalEi9xD/0S8qMCazju30=; b=4Bl95PESqcq4v37RAPN8/sfaH1OtP6Yz1pHEXk/zmFe0Di3dK7g8FXho1oPZh2ewX6a/4J lfrVM4dTGXhvwqKGMAd39vnWvwClNAu9maSLAd/qeogJLeIm235uFM9N4cPFv5Mcpmbe+q e8e0T5BGcIk7HO1RYcFMnBzU8e7aprs= Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-74019695377so483678b3a.3 for ; Wed, 30 Apr 2025 20:27:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746070048; x=1746674848; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kOc+vclhNlDF14KtEorONrdalEi9xD/0S8qMCazju30=; b=To9I5y+groCQRnQ0P80BiunkQlEuhmTSwPGJssHZgL9sQHoSuAUV9SXoCGAKnOy24y 2DXStKBaQMZ3eAUu1Hy5z00gCZYXBMng4Kiwfud5HJKa6sM4aLjTi1EXg4rCuLcMmG8H Lo1hlSgsdpxvR2cKG9OXGPi/SSDRhqHgCc0iDavFqxZhT/d0aHsQxnP4OssrDe7tsUfN theFpHziEx7KmvDGI/OXs31vPQKeoBQ3mLi9Vhj/sHx0E9XPoW2pShIyXTIzx0GGlw4P uVnUaus/sMwv8bsNKzbNgBt1cndSfthCUVQGRxL3Tsd3StVIaiMG3NqxpG2MzhHlrApF +EEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746070048; x=1746674848; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kOc+vclhNlDF14KtEorONrdalEi9xD/0S8qMCazju30=; b=VWUugzZTez4c5Vwacs/aGv4v5ORoIMbNp4XqRsMHljmSp3VF10exGd/45fHR7VXd6k cLiDnjbcJ8b3DJgSsjM2uArawubpARMQcttXr5GUa1VnynfEo7fs7jm8RnRC6E6yCdCb 0OfRBaD+xdio67PaVDrENTv1n+itlDNzc1KlnnhsSNzxh+Q293P6GEVfAiQLJuPfiYaL NZq6KG2Hc8plT4nJ2CK5CZsJbAelQzj+ntqtWJbdeTce0XgD/9Ew4+Kd/TXuUR69J+/W 3Vo8tENzTvieC+ksK2+OhrdzMPrhghVwDRIVEduPPRcnylwS9/tvEq5y143GUXbQ5zSH yajg== X-Forwarded-Encrypted: i=1; AJvYcCUl3EyCRsSZksA70Uzio0Fim0OcEI2bI1bwhMhQa1YJCbvR1cPmGmOiT7hDAD++Vkd6PUMbZ2u3bg==@kvack.org X-Gm-Message-State: AOJu0YxDU6V6PmgmrfEGyC1oYLlx2pKgXD0hq3tQpF/+mMjjwhD7xsgD m6XeuQQerFR8l85wM/FpHKw5vP5CqjtXXUwAvfnvgAdp7W5XJicw52XSYg== X-Gm-Gg: ASbGncuc72A/gUCsShyuJ0RSI76q4rZEDxGNeFRwvwZU/isY2m5bac1srazAuN2cQyB VaDO7SHMdpMWWwCsQLMM7iK4Tt3YDnXyvngUe3Vq/VSGoZtSG+ZNKT2uBjW8JmpmCdircCNg02Y 5QhTCzQNnTpWNmi9QOTZQ+UHQXvmeF1dR3PvF/k92FSwE8YrI5dQJDD5u2vPHQTHWqefwQQ4zBH +EylroHS0YBwG1wTnE89BYuS+ms3qMTF85MT87l33TYu+ronCz49lnHeHGSB/Pxbn0A0XYou9x4 lOR5P8BQ0/Nh2BwKt8DnkGe05yaNrOv2yAv0b2ltxXebbY0vLmHVMyC/f7TXEoWmelO4 X-Google-Smtp-Source: AGHT+IHTN3qo3saS1RZLLWY8zAzkDgRqyHWDIOEMK2S5FQrvSwlqp3t6w9Sxc1Ff4Sn1sHInskAjSQ== X-Received: by 2002:a05:6a00:148f:b0:736:55ec:ea8b with SMTP id d2e1a72fcca58-740492706eamr1617433b3a.24.1746070047689; Wed, 30 Apr 2025 20:27:27 -0700 (PDT) Received: from localhost.localdomain ([2620:10d:c090:400::5:13f8]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74039a309edsm2584797b3a.91.2025.04.30.20.27.25 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 30 Apr 2025 20:27:27 -0700 (PDT) From: Alexei Starovoitov To: bpf@vger.kernel.org, linux-mm@kvack.org Cc: vbabka@suse.cz, harry.yoo@oracle.com, shakeel.butt@linux.dev, mhocko@suse.com, bigeasy@linutronix.de, andrii@kernel.org, memxor@gmail.com, akpm@linux-foundation.org, peterz@infradead.org, rostedt@goodmis.org, hannes@cmpxchg.org, willy@infradead.org Subject: [PATCH 1/6] mm: Rename try_alloc_pages() to alloc_pages_nolock() Date: Wed, 30 Apr 2025 20:27:13 -0700 Message-Id: <20250501032718.65476-2-alexei.starovoitov@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250501032718.65476-1-alexei.starovoitov@gmail.com> References: <20250501032718.65476-1-alexei.starovoitov@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: D7D0620006 X-Stat-Signature: hmaqc4s3grbdptsjsiad8e46xj1i6erd X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1746070048-219396 X-HE-Meta: U2FsdGVkX18yIuJ9Cq6daYTPUr057hu/h0PtaUT7Ktetl8ggVWkgqcSyJFDyG9vochj2TO9cX60A+uBXR25WsJqaThV52m3fK92UhdqVdisq9GNxcfcDaXxT5g0PHKMcZ+eWw/tHzijtMhewcliSokQlh0UO5Ny2yCyL4SQrQDFvq4eLIEAChRzF7UAwEtvMIaajDkROuLJKwS1Y+g0wv7FvRUjev2J97LJZefvgQPJTP1ph02WEV2OcABsBK1vHh8NlptaQikbdhd8Scu3v+URNvjtd7FC4DPmQgkE+NZqql7jCTvoy+hgrD5Js76E3eJRXG7XIQGtVaMIpbIs01S1BpZx/Gq9vOP+TB6kr2uznRMJAwtYqgQGgrNTiA0wHXojCQuOC0Se+2fgo6XlchFjlDSrq37++uX6Eq66PfEQlsl6Ld+nTlXHLkAbsN5BGs1FJYo13Ii3SMTb/Zrcv3kVpucse8CrGLdDohoQRkrGO+1X/Z4c/N43pssjOL4OHHiy0aNBakdpOJbrqgCK+Qo2rAFIC2Tw88EcecNauJL14bp7KJ/K8T14qlhk78VMpajvIRWU01YuHIo8hdOKN6ZHIZfvYmKe1TVbfQR3LZav3SyZnEoz6Fa1mcVoo5uV6UMsXNAxGyaQS2oCYV8yPPui2V+vxfdp08t2xJgcDnhO3Ek0KIclevaZrrp/fHjFuXw50UCCk4GNFiniDkOPuvSw+kEZi2ZD9dNhnz8WLxBc2qX1JqtLO330spPykxVuGWJ44Qbq+1zDQ3rmLloqulLuIGaADezkNy+72pjz29QzJpy+cFuTpbNA5fclUFd1xoX3V7BuOxtpzCkKuOrB1uRO6U66BAyOQHa+WYgpUrFmBQSeXOgZx5wz3talRDJM3hm83PhpBxv4i9KbN133DyGxIEiAsbYtO6E1dUeIWidZPZuMeq80Z/yhcSRe4qWUsE4LOspgrXQsBhX1sf78 iigep+gU t029VISApk3Olo4Yo/JR5W70z86ywrV6R0VRGCQ7va3X+Z6pJv7TdY+j8sUVfFsaMm8p7AHBXn3j/KnqpaxsL1//1NaRgPjIFSNJ5cdp5j++2E5S6ij1HidzzNKdg1ljbh9obNfgeR/oYlCgEpSwkDd+Mg0aBfsIESUsZ+gMWrjuRT1nb+OhE7W2HWjlWx58z1baPYonHJh148nY+ghHRcZdMliMr8ZpQ+H6jF8Y/CTq1IU8GQQtjHeagn8eAegKG41S59JJCQe2i2JpcKR/ZGu9VyreajnIM/K9QD13NHrwVGa6keLzwUOeYbYxWbLOupI859a3MapD0HBvCeJaGigidu/FRQuxh+HLLcBl6DprbgGK3BIuNw8KNmVbVOx04by1HSpEqc4aTchkmSgtu+D2IefNPwb6R03VIZj7Kr20eDe2Hivu/0A8tIBDVdQOfWh6PtP0wu7Onv01n7Dm3b/A+zWb/dzU66vbc6OtpEM+vFuXd9TUfbyzG5Q== 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: From: Alexei Starovoitov The "try_" prefix is confusing, since it made people believe that try_alloc_pages() is analogous to spin_trylock() and NULL return means EAGAIN. This is not the case. If it returns NULL there is no reason to call it again. It will most likely return NULL again. Hence rename it to alloc_pages_nolock() to make it symmetrical to free_pages_nolock() and document that NULL means ENOMEM. Signed-off-by: Alexei Starovoitov --- include/linux/gfp.h | 8 ++++---- kernel/bpf/syscall.c | 2 +- mm/page_alloc.c | 15 ++++++++------- mm/page_owner.c | 2 +- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/include/linux/gfp.h b/include/linux/gfp.h index c9fa6309c903..be160e8d8bcb 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -45,13 +45,13 @@ static inline bool gfpflags_allow_spinning(const gfp_t gfp_flags) * !__GFP_DIRECT_RECLAIM -> direct claim is not allowed. * !__GFP_KSWAPD_RECLAIM -> it's not safe to wake up kswapd. * All GFP_* flags including GFP_NOWAIT use one or both flags. - * try_alloc_pages() is the only API that doesn't specify either flag. + * alloc_pages_nolock() is the only API that doesn't specify either flag. * * This is stronger than GFP_NOWAIT or GFP_ATOMIC because * those are guaranteed to never block on a sleeping lock. * Here we are enforcing that the allocation doesn't ever spin * on any locks (i.e. only trylocks). There is no high level - * GFP_$FOO flag for this use in try_alloc_pages() as the + * GFP_$FOO flag for this use in alloc_pages_nolock() as the * regular page allocator doesn't fully support this * allocation mode. */ @@ -354,8 +354,8 @@ static inline struct page *alloc_page_vma_noprof(gfp_t gfp, } #define alloc_page_vma(...) alloc_hooks(alloc_page_vma_noprof(__VA_ARGS__)) -struct page *try_alloc_pages_noprof(int nid, unsigned int order); -#define try_alloc_pages(...) alloc_hooks(try_alloc_pages_noprof(__VA_ARGS__)) +struct page *alloc_pages_nolock_noprof(int nid, unsigned int order); +#define alloc_pages_nolock(...) alloc_hooks(alloc_pages_nolock_noprof(__VA_ARGS__)) extern unsigned long get_free_pages_noprof(gfp_t gfp_mask, unsigned int order); #define __get_free_pages(...) alloc_hooks(get_free_pages_noprof(__VA_ARGS__)) diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 9794446bc8c6..d0ddba2a952b 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -578,7 +578,7 @@ static bool can_alloc_pages(void) static struct page *__bpf_alloc_page(int nid) { if (!can_alloc_pages()) - return try_alloc_pages(nid, 0); + return alloc_pages_nolock(nid, 0); return alloc_pages_node(nid, GFP_KERNEL | __GFP_ZERO | __GFP_ACCOUNT diff --git a/mm/page_alloc.c b/mm/page_alloc.c index e9322052df53..1d77a07b0659 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5080,7 +5080,7 @@ EXPORT_SYMBOL(__free_pages); /* * Can be called while holding raw_spin_lock or from IRQ and NMI for any - * page type (not only those that came from try_alloc_pages) + * page type (not only those that came from alloc_pages_nolock) */ void free_pages_nolock(struct page *page, unsigned int order) { @@ -7378,20 +7378,21 @@ static bool __free_unaccepted(struct page *page) #endif /* CONFIG_UNACCEPTED_MEMORY */ /** - * try_alloc_pages - opportunistic reentrant allocation from any context + * alloc_pages_nolock - opportunistic reentrant allocation from any context * @nid: node to allocate from * @order: allocation order size * * Allocates pages of a given order from the given node. This is safe to * call from any context (from atomic, NMI, and also reentrant - * allocator -> tracepoint -> try_alloc_pages_noprof). + * allocator -> tracepoint -> alloc_pages_nolock_noprof). * Allocation is best effort and to be expected to fail easily so nobody should * rely on the success. Failures are not reported via warn_alloc(). * See always fail conditions below. * - * Return: allocated page or NULL on failure. + * Return: allocated page or NULL on failure. NULL does not mean EBUSY or EAGAIN. + * It means ENOMEM. There is no reason to call it again and expect !NULL. */ -struct page *try_alloc_pages_noprof(int nid, unsigned int order) +struct page *alloc_pages_nolock_noprof(int nid, unsigned int order) { /* * Do not specify __GFP_DIRECT_RECLAIM, since direct claim is not allowed. @@ -7400,7 +7401,7 @@ struct page *try_alloc_pages_noprof(int nid, unsigned int order) * * These two are the conditions for gfpflags_allow_spinning() being true. * - * Specify __GFP_NOWARN since failing try_alloc_pages() is not a reason + * Specify __GFP_NOWARN since failing alloc_pages_nolock() is not a reason * to warn. Also warn would trigger printk() which is unsafe from * various contexts. We cannot use printk_deferred_enter() to mitigate, * since the running context is unknown. @@ -7410,7 +7411,7 @@ struct page *try_alloc_pages_noprof(int nid, unsigned int order) * BPF use cases. * * Though __GFP_NOMEMALLOC is not checked in the code path below, - * specify it here to highlight that try_alloc_pages() + * specify it here to highlight that alloc_pages_nolock() * doesn't want to deplete reserves. */ gfp_t alloc_gfp = __GFP_NOWARN | __GFP_ZERO | __GFP_NOMEMALLOC diff --git a/mm/page_owner.c b/mm/page_owner.c index cc4a6916eec6..9928c9ac8c31 100644 --- a/mm/page_owner.c +++ b/mm/page_owner.c @@ -302,7 +302,7 @@ void __reset_page_owner(struct page *page, unsigned short order) /* * Do not specify GFP_NOWAIT to make gfpflags_allow_spinning() == false * to prevent issues in stack_depot_save(). - * This is similar to try_alloc_pages() gfp flags, but only used + * This is similar to alloc_pages_nolock() gfp flags, but only used * to signal stack_depot to avoid spin_locks. */ handle = save_stack(__GFP_NOWARN); -- 2.47.1