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

From: Byungchul Park

Date: Tue Mar 03 2026 - 02:21:32 EST


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;