From: Byungchul Park <byungchul@sk.com>
To: Mina Almasry <almasrymina@google.com>
Cc: willy@infradead.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
kernel_team@skhynix.com, kuba@kernel.org,
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, hannes@cmpxchg.org, ziy@nvidia.com,
jackmanb@google.com
Subject: Re: [PATCH net-next v9 0/8] Split netmem from struct page
Date: Fri, 11 Jul 2025 09:42:08 +0900 [thread overview]
Message-ID: <20250711004208.GA40145@system.software.com> (raw)
In-Reply-To: <CAHS8izMie=XQcVUhW9CmydTqYEscp5soeOT4nwvFj2T+8X1ypA@mail.gmail.com>
On Thu, Jul 10, 2025 at 11:35:33AM -0700, Mina Almasry wrote:
> On Thu, Jul 10, 2025 at 1:28 AM Byungchul Park <byungchul@sk.com> wrote:
> >
> > Hi all,
> >
> > The MM subsystem is trying to reduce struct page to a single pointer.
> > See the following link for your information:
> >
> > https://kernelnewbies.org/MatthewWilcox/Memdescs/Path
> >
> > The first step towards that is splitting struct page by its individual
> > users, as has already been done with folio and slab. This patchset does
> > that for page pool.
> >
> > Matthew Wilcox tried and stopped the same work, you can see in:
> >
> > https://lore.kernel.org/linux-mm/20230111042214.907030-1-willy@infradead.org/
> >
> > I focused on removing the page pool members in struct page this time,
> > not moving the allocation code of page pool from net to mm. It can be
> > done later if needed.
> >
> > The final patch removing the page pool fields will be posted once all
> > the converting of page to netmem are done:
> >
> > 1. converting use of the pp fields in struct page in prueth_swdata.
> > 2. converting use of the pp fields in struct page in freescale driver.
> >
> > For our discussion, I'm sharing what the final patch looks like, in this
> > cover letter.
> >
> > Byungchul
> > --8<--
> > commit 1847d9890f798456b21ccb27aac7545303048492
> > Author: Byungchul Park <byungchul@sk.com>
> > Date: Wed May 28 20:44:55 2025 +0900
> >
> > mm, netmem: remove the page pool members in struct page
> >
> > Now that all the users of the page pool members in struct page have been
> > gone, the members can be removed from struct page.
> >
> > However, since struct netmem_desc still uses the space in struct page,
> > the important offsets should be checked properly, until struct
> > netmem_desc has its own instance from slab.
> >
> > Remove the page pool members in struct page and modify static checkers
> > for the offsets.
> >
> > Signed-off-by: Byungchul Park <byungchul@sk.com>
> >
> > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
> > index 32ba5126e221..db2fe0d0ebbf 100644
> > --- a/include/linux/mm_types.h
> > +++ b/include/linux/mm_types.h
> > @@ -120,17 +120,6 @@ struct page {
> > */
> > unsigned long private;
> > };
> > - struct { /* page_pool used by netstack */
> > - /**
> > - * @pp_magic: magic value to avoid recycling non
> > - * page_pool allocated pages.
> > - */
> > - unsigned long pp_magic;
> > - struct page_pool *pp;
> > - unsigned long _pp_mapping_pad;
> > - unsigned long dma_addr;
> > - atomic_long_t pp_ref_count;
> > - };
> > struct { /* Tail pages of compound page */
> > unsigned long compound_head; /* Bit zero is set */
> > };
> > diff --git a/include/net/netmem.h b/include/net/netmem.h
> > index 8f354ae7d5c3..3414f184d018 100644
> > --- a/include/net/netmem.h
> > +++ b/include/net/netmem.h
> > @@ -42,11 +42,8 @@ struct netmem_desc {
> > static_assert(offsetof(struct page, pg) == \
> > offsetof(struct netmem_desc, desc))
> > NETMEM_DESC_ASSERT_OFFSET(flags, _flags);
> > -NETMEM_DESC_ASSERT_OFFSET(pp_magic, pp_magic);
> > -NETMEM_DESC_ASSERT_OFFSET(pp, pp);
> > -NETMEM_DESC_ASSERT_OFFSET(_pp_mapping_pad, _pp_mapping_pad);
> > -NETMEM_DESC_ASSERT_OFFSET(dma_addr, dma_addr);
> > -NETMEM_DESC_ASSERT_OFFSET(pp_ref_count, pp_ref_count);
> > +NETMEM_DESC_ASSERT_OFFSET(lru, pp_magic);
> > +NETMEM_DESC_ASSERT_OFFSET(mapping, _pp_mapping_pad);
> > #undef NETMEM_DESC_ASSERT_OFFSET
> >
> > /*
>
>
> Can you remove the above patch/diff from the cover letter?
I added the diff for those who might get lost due to the lack of the
final patch. However, sure, I will remove it.
Byungchul
> --
> Thanks,
> Mina
prev parent reply other threads:[~2025-07-11 0:42 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-10 8:27 [PATCH net-next v9 0/8] Split netmem from struct page Byungchul Park
2025-07-10 8:28 ` [PATCH net-next v9 1/8] netmem: introduce struct netmem_desc mirroring " Byungchul Park
2025-07-12 14:39 ` Pavel Begunkov
2025-07-14 4:23 ` Byungchul Park
2025-07-14 11:30 ` Pavel Begunkov
2025-07-14 11:58 ` Byungchul Park
2025-07-14 19:17 ` Mina Almasry
2025-07-15 10:01 ` Pavel Begunkov
2025-07-10 8:28 ` [PATCH net-next v9 2/8] netmem: introduce utility APIs to use struct netmem_desc Byungchul Park
2025-07-10 18:11 ` Mina Almasry
2025-07-11 1:02 ` Byungchul Park
2025-07-12 12:16 ` Pavel Begunkov
2025-07-12 12:05 ` Pavel Begunkov
2025-07-12 11:59 ` Pavel Begunkov
2025-07-13 23:07 ` Byungchul Park
2025-07-13 23:39 ` Byungchul Park
2025-07-14 9:43 ` Pavel Begunkov
2025-07-14 10:05 ` Byungchul Park
2025-07-14 11:45 ` Pavel Begunkov
2025-07-14 12:06 ` Byungchul Park
2025-07-10 8:28 ` [PATCH net-next v9 3/8] page_pool: access ->pp_magic through struct netmem_desc in page_pool_page_is_pp() Byungchul Park
2025-07-10 18:19 ` Mina Almasry
2025-07-11 1:14 ` Byungchul Park
2025-07-12 13:58 ` Pavel Begunkov
2025-07-12 14:52 ` David Hildenbrand
2025-07-12 15:09 ` Pavel Begunkov
2025-07-13 23:22 ` Byungchul Park
2025-07-17 3:08 ` Byungchul Park
2025-07-22 1:23 ` Byungchul Park
2025-07-28 18:19 ` Pavel Begunkov
2025-07-14 19:09 ` Mina Almasry
2025-07-15 9:53 ` Pavel Begunkov
2025-07-10 8:28 ` [PATCH net-next v9 4/8] netmem: use netmem_desc instead of page to access ->pp in __netmem_get_pp() Byungchul Park
2025-07-10 18:25 ` Mina Almasry
2025-07-11 1:17 ` Byungchul Park
2025-07-10 8:28 ` [PATCH net-next v9 5/8] netmem: introduce a netmem API, virt_to_head_netmem() Byungchul Park
2025-07-10 18:26 ` Mina Almasry
2025-07-10 8:28 ` [PATCH net-next v9 6/8] mlx4: use netmem descriptor and APIs for page pool Byungchul Park
2025-07-10 18:29 ` Mina Almasry
2025-07-11 1:32 ` Byungchul Park
2025-07-14 19:02 ` Mina Almasry
2025-07-10 8:28 ` [PATCH net-next v9 7/8] netdevsim: " Byungchul Park
2025-07-10 18:26 ` Mina Almasry
2025-07-10 8:28 ` [PATCH net-next v9 8/8] mt76: " Byungchul Park
2025-07-12 14:22 ` Pavel Begunkov
2025-07-14 2:13 ` Byungchul Park
2025-07-10 8:47 ` [PATCH net-next v9 0/8] Split netmem from struct page Byungchul Park
2025-07-10 18:35 ` Mina Almasry
2025-07-11 0:42 ` Byungchul Park [this message]
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=20250711004208.GA40145@system.software.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=hannes@cmpxchg.org \
--cc=harry.yoo@oracle.com \
--cc=hawk@kernel.org \
--cc=horms@kernel.org \
--cc=ilias.apalodimas@linaro.org \
--cc=jackmanb@google.com \
--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 \
--cc=ziy@nvidia.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.