Re: [RFC mm v5 1/2] page_pool: check nmdesc->pp to see its usage as page pool for net_iov not page-backed

From: Jakub Kicinski

Date: Fri Nov 07 2025 - 20:41:32 EST


On Fri, 7 Nov 2025 13:47:08 +0900 Byungchul Park wrote:
> The offset of page_type in struct page cannot be used in struct net_iov
> for the same purpose, since the offset in struct net_iov is for storing
> (struct net_iov_area *)owner.

owner does not have to be at a fixed offset. Can we not move owner
to _pp_mapping_pad ? Or reorder it with type, enum net_iov_type
only has 2 values we can smoosh it with page_type easily.

> Yeah, you can tell 'why don't we add the field, page_type, to struct
> net_iov (or struct netmem_desc)' so as to be like:
>
> struct net_iov {
> union {
> struct netmem_desc desc;
> struct
> {
> unsigned long _flags;
> unsigned long pp_magic;
> struct page_pool *pp;
> unsigned long _pp_mapping_pad;
> unsigned long dma_addr;
> atomic_long_t pp_ref_count;
> + unsigned int page_type; // add this field newly
> };
> };
> struct net_iov_area *owner; // the same offet of page_type
> enum net_iov_type type;
> };
>
> I think we can make it anyway but it makes less sense to add page_type
> to struct net_iov, only for PGTY_netpp.
>
> It'd be better to use netmem_desc->pp for that purpose, IMO.