Re: [PATCH net-next 1/9] netmem: introduce struct netmem_desc mirroring struct page

From: Byungchul Park
Date: Mon Jun 09 2025 - 21:30:31 EST


On Mon, Jun 09, 2025 at 12:32:55PM -0700, Jakub Kicinski wrote:
> On Mon, 9 Jun 2025 13:32:17 +0900 Byungchul Park wrote:
> > To simplify struct page, the page pool members of struct page should be
> > moved to other, allowing these members to be removed from struct page.
> >
> > Introduce a network memory descriptor to store the members, struct
> > netmem_desc, and make it union'ed with the existing fields in struct
> > net_iov, allowing to organize the fields of struct net_iov.
>
> What's the intended relation between the types?

One thing I'm trying to achieve is to remove pp fields from struct page,
and make network code use struct netmem_desc { pp fields; } instead of
sturc page for that purpose.

The reason why I union'ed it with the existing pp fields in struct
net_iov *temporarily* for now is, to fade out the existing pp fields
from struct net_iov so as to make the final form like:

strcut net_iov {
struct netmem_desc desc;

net_iov_specific_variable_1;
net_iov_specific_variable_2;
...
};

> netmem_ref exists to clearly indicate that memory may not be readable.
> Majority of memory we expect to allocate from page pool must be
> kernel-readable. What's the plan for reading the "single pointer"
> memory within the kernel?
>
> I think you're approaching this problem from the easiest and least

No, I've never looked for the easiest way. My bad if there are a better
way to achieve it. What would you recommend?

> relevant direction. Are you coordinating with David Howells?

It's mm's project driven by Matthew Wilcox but as for page pool part,
I'm working alone.

https://kernelnewbies.org/MatthewWilcox/Memdescs/Path

Byungchul