Subject: Re: linux-next: manual merge of the net-next tree with the mm-unstable tree

From: Byungchul Park <[email-masked]>
Date: Tue, 3 Mar 2026 16:20:36 +0900

On Fri, Feb 27, 2026 at 01:54:20PM +0000, Mark Brown wrote:
> Hi all,
> 
> Today's linux-next merge of the net-next tree got a conflict in:
> 
>   include/net/netmem.h
> 
> between commit:
> 
>   0a8a9198a887f ("mm: introduce a new page type for page pool in page type")
> 
> from the mm-unstable tree and commit:
> 
>   fd6dad4e1ae29 ("netmem: remove the pp fields from net_iov")
> 
> from the net-next tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This

Indeed.  Thanks for the fixing and informing that.  I should've paid
more attention.

To Andrew and Jakub,

Sorry about the confict.  Fortunately, this is a trivial conflict.
However, if I should drop one, commit fd6dad4e1ae29 ("netmem: remove the
pp fields from net_iov") should be dropped this time.  And then I will
re-work once net-next tree can see the mm's changes.

Or it'd be appreciated to tell me what I should do else for the issue.

	Byungchul

> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
> 
> diff --cc include/net/netmem.h
> index 85e3b26ec547f,a6d65ced52315..0000000000000
> --- a/include/net/netmem.h
> +++ b/include/net/netmem.h
> @@@ -93,38 -93,11 +93,21 @@@ enum net_iov_type 
>    *		supported.
>    */
>   struct net_iov {
> - 	union {
> - 		struct netmem_desc desc;
> - 
> - 		/* XXX: The following part should be removed once all
> - 		 * the references to them are converted so as to be
> - 		 * accessed via netmem_desc e.g. niov->desc.pp instead
> - 		 * of niov->pp.
> - 		 */
> - 		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;
> - 		};
> - 	};
> - 
> + 	struct netmem_desc desc;
>  -	struct net_iov_area *owner;
>  +	unsigned int page_type;
>   	enum net_iov_type type;
>  +	struct net_iov_area *owner;
>   };
>   
>  +/* Make sure 'the offset of page_type in struct page == the offset of
>  + * type in struct net_iov'.
>  + */
>  +#define NET_IOV_ASSERT_OFFSET(pg, iov)			\
>  +	static_assert(offsetof(struct page, pg) ==	\
>  +		      offsetof(struct net_iov, iov))
>  +NET_IOV_ASSERT_OFFSET(page_type, page_type);
>  +#undef NET_IOV_ASSERT_OFFSET
>  +
>   struct net_iov_area {
>   	/* Array of net_iovs for this area. */
>   	struct net_iov *niovs;