From: Byungchul Park <byungchul@sk.com>
To: willy@infradead.org, netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
kernel_team@skhynix.com, kuba@kernel.org, almasrymina@google.com,
ilias.apalodimas@linaro.org, harry.yoo@oracle.com,
hawk@kernel.org, akpm@linux-foundation.org, davem@davemloft.net,
john.fastabend@gmail.com, andrew+netdev@lunn.ch,
asml.silence@gmail.com, toke@redhat.com, tariqt@nvidia.com,
edumazet@google.com, pabeni@redhat.com, saeedm@nvidia.com,
leon@kernel.org, ast@kernel.org, daniel@iogearbox.net,
david@redhat.com, lorenzo.stoakes@oracle.com,
Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org,
surenb@google.com, mhocko@suse.com, horms@kernel.org,
linux-rdma@vger.kernel.org, bpf@vger.kernel.org,
vishal.moola@gmail.com
Subject: [RFC v3 02/18] netmem: introduce netmem alloc APIs to wrap page alloc APIs
Date: Thu, 29 May 2025 12:10:31 +0900 [thread overview]
Message-ID: <20250529031047.7587-3-byungchul@sk.com> (raw)
In-Reply-To: <20250529031047.7587-1-byungchul@sk.com>
To eliminate the use of struct page in page pool, the page pool code
should use netmem descriptor and APIs instead.
As part of the work, introduce netmem alloc APIs allowing the code to
use them rather than the existing APIs for struct page.
Signed-off-by: Byungchul Park <byungchul@sk.com>
---
net/core/netmem_priv.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/net/core/netmem_priv.h b/net/core/netmem_priv.h
index cd95394399b4..32e390908bb2 100644
--- a/net/core/netmem_priv.h
+++ b/net/core/netmem_priv.h
@@ -59,4 +59,18 @@ static inline void netmem_set_dma_index(netmem_ref netmem,
magic = netmem_get_pp_magic(netmem) | (id << PP_DMA_INDEX_SHIFT);
__netmem_clear_lsb(netmem)->pp_magic = magic;
}
+
+static inline netmem_ref alloc_netmems_node(int nid, gfp_t gfp_mask,
+ unsigned int order)
+{
+ return page_to_netmem(alloc_pages_node(nid, gfp_mask, order));
+}
+
+static inline unsigned long alloc_netmems_bulk_node(gfp_t gfp, int nid,
+ unsigned long nr_netmems,
+ netmem_ref *netmem_array)
+{
+ return alloc_pages_bulk_node(gfp, nid, nr_netmems,
+ (struct page **)netmem_array);
+}
#endif
--
2.17.1
next prev parent reply other threads:[~2025-05-29 3:11 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-29 3:10 [RFC v3 00/18] Split netmem from struct page Byungchul Park
2025-05-29 3:10 ` [RFC v3 01/18] netmem: introduce struct netmem_desc mirroring " Byungchul Park
2025-05-29 16:31 ` Mina Almasry
2025-05-30 1:10 ` Byungchul Park
2025-05-30 17:50 ` Mina Almasry
2025-06-03 9:22 ` Stefan Metzmacher
2025-05-29 3:10 ` Byungchul Park [this message]
2025-05-29 3:10 ` [RFC v3 03/18] page_pool: use netmem alloc/put APIs in __page_pool_alloc_page_order() Byungchul Park
2025-05-29 3:10 ` [RFC v3 04/18] page_pool: rename __page_pool_alloc_page_order() to __page_pool_alloc_netmem_order() Byungchul Park
2025-05-29 3:10 ` [RFC v3 05/18] page_pool: use netmem alloc/put APIs in __page_pool_alloc_pages_slow() Byungchul Park
2025-05-29 3:10 ` [RFC v3 06/18] page_pool: rename page_pool_return_page() to page_pool_return_netmem() Byungchul Park
2025-05-29 3:10 ` [RFC v3 07/18] page_pool: use netmem put API in page_pool_return_netmem() Byungchul Park
2025-05-29 3:10 ` [RFC v3 08/18] page_pool: rename __page_pool_release_page_dma() to __page_pool_release_netmem_dma() Byungchul Park
2025-05-29 3:10 ` [RFC v3 09/18] page_pool: rename __page_pool_put_page() to __page_pool_put_netmem() Byungchul Park
2025-05-29 3:10 ` [RFC v3 10/18] page_pool: rename __page_pool_alloc_pages_slow() to __page_pool_alloc_netmems_slow() Byungchul Park
2025-05-29 3:10 ` [RFC v3 11/18] mlx4: use netmem descriptor and APIs for page pool Byungchul Park
2025-05-29 3:10 ` [RFC v3 12/18] netmem: use _Generic to cover const casting for page_to_netmem() Byungchul Park
2025-05-29 3:10 ` [RFC v3 13/18] netmem: remove __netmem_get_pp() Byungchul Park
2025-05-29 3:10 ` [RFC v3 14/18] page_pool: make page_pool_get_dma_addr() just wrap page_pool_get_dma_addr_netmem() Byungchul Park
2025-05-29 3:10 ` [RFC v3 15/18] netdevsim: use netmem descriptor and APIs for page pool Byungchul Park
2025-05-29 3:10 ` [RFC v3 16/18] netmem: introduce a netmem API, virt_to_head_netmem() Byungchul Park
2025-05-29 3:10 ` [RFC v3 17/18] mt76: use netmem descriptor and APIs for page pool Byungchul Park
2025-05-29 3:10 ` [RFC v3 18/18] page_pool: access ->pp_magic through struct netmem_desc in page_pool_page_is_pp() Byungchul Park
2025-05-29 19:54 ` Mina Almasry
2025-05-29 20:49 ` Pavel Begunkov
2025-05-30 1:16 ` Byungchul Park
2025-05-29 3:29 ` [RFC v3 00/18] Split netmem from struct page Byungchul Park
2025-05-30 15:04 ` Alexander Lobakin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250529031047.7587-3-byungchul@sk.com \
--to=byungchul@sk.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=almasrymina@google.com \
--cc=andrew+netdev@lunn.ch \
--cc=asml.silence@gmail.com \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=david@redhat.com \
--cc=edumazet@google.com \
--cc=harry.yoo@oracle.com \
--cc=hawk@kernel.org \
--cc=horms@kernel.org \
--cc=ilias.apalodimas@linaro.org \
--cc=john.fastabend@gmail.com \
--cc=kernel_team@skhynix.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-rdma@vger.kernel.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@suse.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=rppt@kernel.org \
--cc=saeedm@nvidia.com \
--cc=surenb@google.com \
--cc=tariqt@nvidia.com \
--cc=toke@redhat.com \
--cc=vbabka@suse.cz \
--cc=vishal.moola@gmail.com \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox