On Wed, 25 Jun 2025 13:33:44 +0900 Byungchul Park wrote: > +/* A memory descriptor representing abstract networking I/O vectors, > + * generally for non-pages memory that doesn't have its corresponding > + * struct page and needs to be explicitly allocated through slab. I still don't get what your final object set is going to be. We have - CPU-readable buffers (struct page) - un-readable buffers (struct net_iov) - abstract reference which can be a pointer to either of the above two (bitwise netmem_ref) You say you want to evacuate page pool state from struct page so I'd expect you to add a type which can always be fed into some form of $type_to_virt(). A type which can always be cast to net_iov, but not vice versa. So why are you putting things inside net_iov, not outside. > + * net_iovs are allocated and used by networking code, and the size of > + * the chunk is PAGE_SIZE. FWIW not for long. Patches to make the size of net_iov configurable are in progress.