On Fri, Jun 13, 2025 at 07:19:07PM -0700, Mina Almasry wrote:
On Thu, Jun 12, 2025 at 6:13 PM Byungchul Park <byungchul@xxxxxx> wrote:
On Wed, Jun 11, 2025 at 06:55:42PM -0700, Jakub Kicinski wrote:
On Tue, 10 Jun 2025 10:30:01 +0900 Byungchul Park wrote:
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:
I see, I may have mixed up the complaints there. I thought the effort
was also about removing the need for the ref count. And Rx is
relatively light on use of ref counting.
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?
Sorry, I don't mean that the approach you took is the easiest way out.
I meant that between Rx and Tx handling Rx is the easier part because
we already have the suitable abstraction. It's true that we use more
fields in page struct on Rx, but I thought Tx is also more urgent
as there are open reports for networking taking references on slab
pages.
In any case, please make sure you maintain clear separation between
readable and unreadable memory in the code you produce.
Do you mean the current patches do not? If yes, please point out one
as example, which would be helpful to extract action items.
I think one thing we could do to improve separation between readable
(pages/netmem_desc) and unreadable (net_iov) is to remove the struct
netmem_desc field inside the net_iov, and instead just duplicate the
pp/pp_ref_count/etc fields. The current code gives off the impression
that net_iov may be a container of netmem_desc which is not really
accurate.
But I don't think that's a major blocker. I think maybe the real issue
is that there are no reviews from any mm maintainers?
Let's try changing the subject to draw some attention from MM people :)
So I'm not 100%
sure this is in line with their memdesc plans. I think probably
patches 2->8 are generic netmem-ifications that are good to merge
anyway, but I would say patch 1 and 9 need a reviewed by from someone
on the mm side. Just my 2 cents.
As someone who worked on the zpdesc series, I think it is pretty much
in line with the memdesc plans.
I mean, it does differ a bit from the initial idea of generalizing it as
"bump" allocator, but overall, it's still aligned with the memdesc
plans, and looks like a starting point, IMHO.