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