From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qv1-f52.google.com (mail-qv1-f52.google.com [209.85.219.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2818344839E for ; Mon, 20 Jul 2026 17:42:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784569340; cv=none; b=PSj7AKGInxRS1joM+P/R6WFyKgZM/wl41soYH0evD+QthTAtQk+/XwRfxCiCaU+Y5xXvj2Q0iItFi1TjaLaoyf8Piy9hvyKEP/h0g1URZ0C1BeeXTUIfG3mSQawH4T7Jcfys56YGT6elmgZOUBy6YBfGMVzOa6ZAnqCDFkLLrYU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784569340; c=relaxed/simple; bh=3QhE2AsLZJkKzhZ4fqbxNv5piEktj9SfRnMs3xay2QA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=CpYMKAvB4nKCaBc8Z+vwD5VGU8xPGw6G+al4PdHqAWdpLdhurzrL6dhGs/pCKGxR4FDiSaDWv/MNTEez/pI4621ie2onWdKsyhVAySEuM6gWV9/1BQy7C6TJkw2EAlNeY6f9q4Zl1X5sMxRZ3h6GoeAJ5NUvxJnHeg3TuYqFz3I= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net; spf=pass smtp.mailfrom=gourry.net; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b=fmuiF1cV; arc=none smtp.client-ip=209.85.219.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=gourry.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gourry.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gourry.net header.i=@gourry.net header.b="fmuiF1cV" Received: by mail-qv1-f52.google.com with SMTP id 6a1803df08f44-902fc790cd5so97291216d6.1 for ; Mon, 20 Jul 2026 10:42:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gourry.net; s=google; t=1784569337; x=1785174137; darn=vger.kernel.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=FEiCtTnsRTKK1dIfrBs2bZV/1x4AsbAJwsKiFa/5Flg=; b=fmuiF1cVzBGLHFg/+jTHpmV30nTh9hXUTaw17dmVwtCI5UwKcWG1E5EmNsdqa4QX50 AtdYWVg/bFD0JVgfwtUJCiCsxAMUlgSFpmXvrEqOhv1dOG72T2wM3Jfc53Arj3m5S+7e zIbGrQjGjARchAGelp20ENUOArztnwTPiEwk/vTkGs+arJF/c56w+gaY5j6ojjGOzpyw TYhTmnUs1lmj+SLTaXHaUruHyio3XhJ1ZxPZevaAKXuEm+5m9pmmOyNwv3MwPY0u5lxJ 91IXHkroQUXG4e+XdHFe7u5UHmtUS1nfxjOJ0uJlX9tO0oU2FqCRBRsoNx6dkEU4rWLE MCcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784569337; x=1785174137; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=FEiCtTnsRTKK1dIfrBs2bZV/1x4AsbAJwsKiFa/5Flg=; b=D3XYQwl6oKbDZXtFiaWnKIy6zFi+Sg8+eSyjBh0L3iFsoApCbtI1v7FrCyTgo95pft WkLXwDIJW+c/2s+r8SseBiRyCnmvkKF0jBIdJh3JjvJ+hfUsJeNmQWroTPeV3l0D5pUm 19Gr6jMZC3fkWkMp+v2iGmgyv7RN+Ap/E915HpvdwhpkuczIdw4Sxnq1nOdb8N+MP/yu eUN7PQHdUnVO1IXHYEhDMTJRcFxIocwQYU14mQ1Rm/QX0f2V9E32rswrbucfIzy4RHmQ V7Mx9eHLtIEkbhpNLPFgYuVbEnIZEvB5KQ3OtVJDgn9itnUyVWrgj6F07pjE8orBIhNn /nTg== X-Forwarded-Encrypted: i=1; AHgh+RozFXgfpCrp6W/t8r74aXpAzn0lLriauGtIika96+7odx2kPFzB+7zA5cx0DD2yCB+wP3hsvIY=@vger.kernel.org X-Gm-Message-State: AOJu0YwQMRXLw939iax+XbPLwyX2u2Rj45PT/SAxXeMgbpyI6Zkik9jV 4absEiUa+PrSXMTzCbDvFq17CQoOA0qDC+l4thlMiTrUTApZWIsz41YvNITC410Qa8k= X-Gm-Gg: AR+sD136S8r7Smyif7xLFRKR22P6VCkUqnTtqmQ6+r0EuA4LnvveFpETtehqr3Dizxb Xbc9iVPkiGKwvAdH43RBn6q6IvxqamBHKpo2isP6TWXVFCmaR0inoJaTcIpspKMVx8POVqv/bbI 2xQNiiyCPokZ5x9KFuV0b6zUJ8fL7suAsgXzvOYE5hb7gKAUQd3YqEDLPiNKTr6HQQi7N0G13gY ONKqEzFvk+lAfhLEsWVjG76WlxP78bJRhLbduRTnyf38YHMGpsJ17QaLV6RZhh9abc+BJ0JUPPd jgwxvd83zgP7uIm2UN6uCZzejnKDkuZ3r9q7jIdVNraV0jNvKuy4+zIPzxcsRB7VK2dBNh7w52J 2jLlMu23TDLy9r7+FZmeg2IgH8QpEBgPpYnARgH/Ze/gn6SY8hmBGB/YWkqmhAleTGZ1h8HJTmM YyHN7gpxQC70cVrU5W4HOswp5+vYjT7CKXsSUPYswEoUa2+EaG12Wrhc45Ig== X-Received: by 2002:a05:6214:2349:b0:8ef:6b06:44c8 with SMTP id 6a1803df08f44-907783d1d3fmr150837746d6.48.1784569336788; Mon, 20 Jul 2026 10:42:16 -0700 (PDT) Received: from gourry-fedora-PF4VCD3F (pool-173-79-60-52.washdc.fios.verizon.net. [173.79.60.52]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-90778567f09sm95835516d6.15.2026.07.20.10.42.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2026 10:42:16 -0700 (PDT) Date: Mon, 20 Jul 2026 13:42:11 -0400 From: Gregory Price To: Brendan Jackman Cc: Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Johannes Weiner , Zi Yan , "Matthew Wilcox (Oracle)" , Jan Kara , Joshua Hahn , Byungchul Park , Ying Huang , Alistair Popple , Hugh Dickins , Baolin Wang , Chris Li , Kairui Song , Kemeng Shi , Nhat Pham , Baoquan He , Barry Song , Youngjun Park , "Joerg Roedel (AMD)" , Will Deacon , Robin Murphy , Huacai Chen , WANG Xuerui , Thomas Gleixner , Chuck Lever , Jeff Layton , NeilBrown , Olga Kornievskaia , Dai Ngo , Tom Talpey , Trond Myklebust , Anna Schumaker , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, iommu@lists.linux.dev, loongarch@lists.linux.dev, linux-nfs@vger.kernel.org, netdev@vger.kernel.org Subject: Re: [PATCH 2/3] mm, treewide: replace __folio_alloc_node() with folio_alloc_node() Message-ID: References: <20260716-folio-alloc-cleanups-v1-0-5363b8e92d33@google.com> <20260716-folio-alloc-cleanups-v1-2-5363b8e92d33@google.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260716-folio-alloc-cleanups-v1-2-5363b8e92d33@google.com> On Thu, Jul 16, 2026 at 02:30:11PM +0000, Brendan Jackman wrote: > Commit 5b584d2d22dca ("mm: remove __alloc_pages_node()") removed the __ > variant of alloc_pages_node(), after users had been migrated off it, > since it just complicates the API (requiring users to handle > NUMA_NO_NODE, or risking hotplug bugs) for no real benefit. > > This patch brings __folio_alloc_node() into line too for exactly the > same reasons (including the ulterior motive of freeing up the __ variant > for use as an internal API). > > This time, it's done as a single patch because A) the users are fewer > and B) folio_alloc_node() does not already exist like > alloc_pages_node() did. > > No functional change intended. > > Suggested-by: "Vlastimil Babka (SUSE)" > Link: https://lore.kernel.org/all/ed4572f4-0074-45c5-993d-7b6533eddc31@kernel.org/ > Signed-off-by: Brendan Jackman Reviewed-by: Gregory Price > --- > drivers/iommu/iommu-pages.c | 9 +-------- > drivers/irqchip/irq-loongarch-ir.c | 4 ++-- > include/linux/gfp.h | 12 +++--------- > mm/filemap.c | 2 +- > mm/migrate.c | 2 +- > mm/page_alloc.c | 17 +++++++++++++++-- > net/sunrpc/svc.c | 2 +- > 7 files changed, 24 insertions(+), 24 deletions(-) > > diff --git a/drivers/iommu/iommu-pages.c b/drivers/iommu/iommu-pages.c > index 3bab175d85571..47e0759f0e0ae 100644 > --- a/drivers/iommu/iommu-pages.c > +++ b/drivers/iommu/iommu-pages.c > @@ -56,14 +56,7 @@ void *iommu_alloc_pages_node_sz(int nid, gfp_t gfp, size_t size) > */ > order = get_order(size); > > - /* > - * __folio_alloc_node() does not handle NUMA_NO_NODE like > - * alloc_pages_node() did. > - */ > - if (nid == NUMA_NO_NODE) > - nid = numa_mem_id(); > - > - folio = __folio_alloc_node(gfp | __GFP_ZERO, order, nid); > + folio = folio_alloc_node(gfp | __GFP_ZERO, order, nid); > if (unlikely(!folio)) > return NULL; > > diff --git a/drivers/irqchip/irq-loongarch-ir.c b/drivers/irqchip/irq-loongarch-ir.c > index 21c649a89a706..427f7fd3cad42 100644 > --- a/drivers/irqchip/irq-loongarch-ir.c > +++ b/drivers/irqchip/irq-loongarch-ir.c > @@ -384,7 +384,7 @@ static int redirect_table_init(struct redirect_desc *irde) > unsigned long *bitmap; > struct folio *folio; > > - folio = __folio_alloc_node(GFP_KERNEL | __GFP_ZERO, IRD_TABLE_PAGE_ORDER, irde->node); > + folio = folio_alloc_node(GFP_KERNEL | __GFP_ZERO, IRD_TABLE_PAGE_ORDER, irde->node); > if (!folio) { > pr_err("Node [%d] redirect table alloc pages failed!\n", irde->node); > return -ENOMEM; > @@ -410,7 +410,7 @@ static int redirect_queue_init(struct redirect_desc *irde) > struct redirect_queue *inv_queue = &irde->inv_queue; > struct folio *folio; > > - folio = __folio_alloc_node(GFP_KERNEL | __GFP_ZERO, INV_QUEUE_PAGE_ORDER, irde->node); > + folio = folio_alloc_node(GFP_KERNEL | __GFP_ZERO, INV_QUEUE_PAGE_ORDER, irde->node); > if (!folio) { > pr_err("Node [%d] invalid queue alloc pages failed!\n", irde->node); > return -ENOMEM; > diff --git a/include/linux/gfp.h b/include/linux/gfp.h > index e4e974a6e5f90..572605d84e30e 100644 > --- a/include/linux/gfp.h > +++ b/include/linux/gfp.h > @@ -251,15 +251,9 @@ static inline void warn_if_node_offline(int this_node, gfp_t gfp_mask) > dump_stack(); > } > > -static inline > -struct folio *__folio_alloc_node_noprof(gfp_t gfp, unsigned int order, int nid) > -{ > - warn_if_node_offline(nid, gfp); > +struct folio *folio_alloc_node_noprof(gfp_t gfp, unsigned int order, int nid); > > - return __folio_alloc_noprof(gfp, order, nid, NULL); > -} > - > -#define __folio_alloc_node(...) alloc_hooks(__folio_alloc_node_noprof(__VA_ARGS__)) > +#define folio_alloc_node(...) alloc_hooks(folio_alloc_node_noprof(__VA_ARGS__)) > > /* > * Allocate pages, preferring the node given as nid. When nid == NUMA_NO_NODE, > @@ -282,7 +276,7 @@ static inline struct page *alloc_pages_noprof(gfp_t gfp_mask, unsigned int order > } > static inline struct folio *folio_alloc_noprof(gfp_t gfp, unsigned int order) > { > - return __folio_alloc_node_noprof(gfp, order, numa_node_id()); > + return folio_alloc_node_noprof(gfp, order, numa_node_id()); > } > static inline struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, > struct vm_area_struct *vma, unsigned long addr) > diff --git a/mm/filemap.c b/mm/filemap.c > index 0dd8e2a15d746..1cf91970a6850 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -1007,7 +1007,7 @@ struct folio *filemap_alloc_folio_noprof(gfp_t gfp, unsigned int order, > do { > cpuset_mems_cookie = read_mems_allowed_begin(); > n = cpuset_mem_spread_node(); > - folio = __folio_alloc_node_noprof(gfp, order, n); > + folio = folio_alloc_node_noprof(gfp, order, n); > } while (!folio && read_mems_allowed_retry(cpuset_mems_cookie)); > > return folio; > diff --git a/mm/migrate.c b/mm/migrate.c > index 222c8c15f782f..b7836b02f32db 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -2682,7 +2682,7 @@ static struct folio *alloc_misplaced_dst_folio(struct folio *src, > __GFP_NOWARN; > gfp &= ~__GFP_RECLAIM; > } > - return __folio_alloc_node(gfp, order, nid); > + return folio_alloc_node(gfp, order, nid); > } > > /* > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 37a3c1c00e169..86922270df157 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -5435,12 +5435,25 @@ EXPORT_SYMBOL(alloc_pages_node_noprof); > struct folio *__folio_alloc_noprof(gfp_t gfp, unsigned int order, int preferred_nid, > nodemask_t *nodemask) > { > - struct page *page = __alloc_pages_noprof(gfp | __GFP_COMP, order, > - preferred_nid, nodemask, ALLOC_DEFAULT); > + struct page *page; > + > + if (preferred_nid == NUMA_NO_NODE) > + preferred_nid = numa_mem_id(); > + > + warn_if_node_offline(preferred_nid, gfp); > + > + page = __alloc_pages_noprof(gfp | __GFP_COMP, order, > + preferred_nid, nodemask, ALLOC_DEFAULT); > return page_rmappable_folio(page); > } > EXPORT_SYMBOL(__folio_alloc_noprof); > > +struct folio *folio_alloc_node_noprof(gfp_t gfp, unsigned int order, int nid) > +{ > + return __folio_alloc_noprof(gfp, order, nid, NULL); > +} > +EXPORT_SYMBOL(folio_alloc_node_noprof); > + > /* > * Common helper functions. Never use with __GFP_HIGHMEM because the returned > * address cannot represent highmem pages. Use alloc_pages and then kmap if > diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c > index ae9ec4bf34f72..74350a2e07036 100644 > --- a/net/sunrpc/svc.c > +++ b/net/sunrpc/svc.c > @@ -711,7 +711,7 @@ svc_prepare_thread(struct svc_serv *serv, struct svc_pool *pool, int node) > rqstp->rq_server = serv; > rqstp->rq_pool = pool; > > - rqstp->rq_scratch_folio = __folio_alloc_node(GFP_KERNEL, 0, node); > + rqstp->rq_scratch_folio = folio_alloc_node(GFP_KERNEL, 0, node); > if (!rqstp->rq_scratch_folio) > goto out_enomem; > > > -- > 2.54.0 > >