From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B47B6C54FB3 for ; Tue, 27 May 2025 02:51:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F19A6B0089; Mon, 26 May 2025 22:51:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0A2F56B008A; Mon, 26 May 2025 22:51:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ED53C6B008C; Mon, 26 May 2025 22:50:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id CC7F46B0089 for ; Mon, 26 May 2025 22:50:59 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 31652816F9 for ; Tue, 27 May 2025 02:50:59 +0000 (UTC) X-FDA: 83487160638.21.9C67D51 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf24.hostedemail.com (Postfix) with ESMTP id 6409B180002 for ; Tue, 27 May 2025 02:50:56 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=none; spf=pass (imf24.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748314257; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vIWwWmWwcqVzapk6A0iFxWSpIRouA0yA+IDBxxkUYAs=; b=2+ZS9sY3hVibDrPghAmmJJfmZHj0HZdoKBXp3C4+dhwYfwgfFxHx/fS7fimjW7biAz4uvH 86VaSqi8M3cRdF6X03zfp5UZnSLSZQOiHpGjV1klQgMitI9lLZoZQ8DQXXQa/6BohM0+Mf y+IgwNaeNFdKvr9+Qdt4tgIrWf0xudw= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=none; spf=pass (imf24.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748314257; a=rsa-sha256; cv=none; b=n1b9T4m5HK1oxrav0fz543HhNe++uySGxKUJqinVdSplPQd5+AKA9Bt/1za/XMEVu4PMJq jZHBQK1lbnehtaALldFU6xo6sXf0fH4el0G4FYUbwolTxLEzlgmLII6RLka+7Vj6j2Oilk gCILWtdYAs+yU09s1/31tKIFF2IhnMA= X-AuditID: a67dfc5b-681ff7000002311f-78-6835288c9dc9 Date: Tue, 27 May 2025 11:50:47 +0900 From: Byungchul Park To: willy@infradead.org, netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel_team@skhynix.com, kuba@kernel.org, almasrymina@google.com, ilias.apalodimas@linaro.org, harry.yoo@oracle.com, hawk@kernel.org, akpm@linux-foundation.org, davem@davemloft.net, john.fastabend@gmail.com, andrew+netdev@lunn.ch, asml.silence@gmail.com, toke@redhat.com, tariqt@nvidia.com, edumazet@google.com, pabeni@redhat.com, saeedm@nvidia.com, leon@kernel.org, ast@kernel.org, daniel@iogearbox.net, david@redhat.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, mhocko@suse.com, horms@kernel.org, linux-rdma@vger.kernel.org, bpf@vger.kernel.org, vishal.moola@gmail.com Subject: Re: [PATCH 01/18] netmem: introduce struct netmem_desc struct_group_tagged()'ed on struct net_iov Message-ID: <20250527025047.GA71538@system.software.com> References: <20250523032609.16334-1-byungchul@sk.com> <20250523032609.16334-2-byungchul@sk.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250523032609.16334-2-byungchul@sk.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-Brightmail-Tracker: H4sIAAAAAAAAA02Sf0zMcRjH97nP97737dZtHyd81ObHmfXDJMSeP8z852sYhugojvvqjuuy KymbLWTp1LEydefMYXT92G4uq1CNtOpGuoV2fqQ6lDZER8oVurPGf6+9n/f7/Tx/PByWG8Xh nFafIRj0Kp2ClTLST6FXFxdErdDE/SiKBKujioXK0Swo660Tg7WiBsG3sVcS8DW3snD96ggG a0cuA98dPzG8b/FKoOdmPwP1ebUYvOfaWCjM9WM4WWcXgbvGJIYLP29gqM3plcDTu1YW3lT9 FkN/UyEDLks5Az2mNdBimwkjjz4iaHbUimCk4DILxZ02Ft7m9iDofOhl4NIJEwJHo0cM/lEr u2Y+f7v8hYi/Y+mW8DbnEb7aHsMbPZ2Yd1bks7xzuEjCv+6qZ/m2Uj/D36nzifjCU59Z/uv7 lww/1Pic5R23nzP8Y1uzhPc552wmSukqtaDTZgqGJav3SjXVDWfw4fGIrCc+F5ODOsKMKISj JJ72vMkXT/HY6yEmwAxZSO2njEFmSST1eMawEXFcGFlCu4oSjUjKYdImpv4rH4LZ6URHrxWP B/0yAnSifkAUYDlR0Wp7J/tXn0Zd5ndBDyYx1PNrUBToxCSClv3iAnIIWUkvnh0KRmeQBfR+ TasosIuSGxytHvZK/t45mz6we5jziFj+q7X8V2v5V2tDuALJtfrMVJVWFx+rydZrs2L3p6U6 0eSH3Dw+vqsODbu3NiHCIUWozC3Ea+RiVWZ6dmoTohxWhMlqzk9KMrUq+5hgSNtjOKIT0ptQ BMcoZsmWjRxVy0mKKkM4JAiHBcPUVMSFhOegna0piu1JLQc3xLcnKfdGyrt2mAz3tMro2ANX rqu7yzO2uesTfH0N6tI25eKJEnVJQ+XGuXkDTrv72brEDuXo2tNe/eeSBBfzxZyx7ndUxIR5 a1SOv31e4vq+xrgz0QbX4HjxIg9+2p+8JXn9QnPCw9Kx3dblt4b3bTLnm/y4Xadg0jWqpTHY kK76A1aqNMYdAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA02Sa0hTcRjG+Z9zdnacDY5z5SElYiqKkGZkvFSEX8o/Rlmf0uji1JMbzkub d0g0hWqpmYXYmrSSdJowUPOWmszRFCtFuyyzlJVmoFl5SZ1azoj89vC8v9/z6WVIyTS1nVEm pfLqJLlKRoso0fED+bsK/UMUu/WWraA31dHwaDETqsdaBKCvbUIwt/ReCLMWKw2V9xdI0PcX UDBvWiZh/JldCKNVExS0X2kmwX6jh4aiAgcJl1uMBHRX9ApgoKlYALeXH5LQnDsmhKE2PQ0f 634LYMJcREGvroaC0eJQeGbYBgt9UwgspmYCFgoraLg1aKDhU8EogsFuOwV384oRmDptAnAs 6ulQGW6seUfgVt0HITbUp+EGYwDW2gZJXF97jcb1P0uFeORNO417yh0Ubm2ZJXBR/jca/xgf pvBM52saV05+J7Cp8TWFnxsswhNup0UH43iVMp1XBx2KFikaOq6SKSuemS9ne6lc1C/VIheG Y/dySyMzlDNTrC9nzNduZJr142y2JVKLGEbKBnFvSqO0SMSQbI+Ac9ybFDgZd1bFPbi1ssGL WeBW278Qzixh5VyDcZD+27txvXc+bzAkG8DZ1r4Szk2S9eSq1xhn7cLu48quz2yoW1lvrqvJ SpQgsW6Trdtk6/7bBkTWIqkyKT1RrlSFBGoSFFlJyszA2OTEerT+BFWXVm62oLmhMDNiGSTb Ih7g9yokAnm6JivRjDiGlEnFTSXrlThOnpXNq5PPq9NUvMaMPBlK5iEOP8VHS9h4eSqfwPMp vPrflWBctueix2bUdbiyr857R6v7i4y+7tTgBYl1+Ej5Pq9c04HRvhx7QuLqnjPWuldlOcrK GMpHkRHRPBn8baer1PXj0ak8vvFXFH4b6nXSYY9VHPPdv4eJvxjRNu9z4eWTMOTfH9MRmc1b I8Nlr/YnW0p03tNzHhOFXuIcv3NuvCJFc/b4UxmlUciDA0i1Rv4HlY6vsgADAAA= X-CFilter-Loop: Reflected X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 6409B180002 X-Stat-Signature: 8fg511e9ndj4whrue6oxqtag99dx7ezu X-Rspam-User: X-HE-Tag: 1748314256-158927 X-HE-Meta: U2FsdGVkX19zqeN5TJH1ZnXWe38j+ELwfSaOssJY6wHjGnkzps5D1q/cbGJ8mplpw/Zt4wDN7gwKo+arEz8CUh6RxbB+V5UhhQMDCB4taz9hAIuJQLBOre90EKsyy5pa3f8nnH9edX92xnGDvFhw4TFZ276xHVc/p9KYozOABi9xKp7WYrmQSJ1j+XCbJ9QfDHkTeHsnJZ+bXsNicmXjfMMt7mua7dHqVY9aNpfP1+XZY45SsF1LE+KBjcuvOss2vuIYLnkHNYqb8d9PuZp9rJzeK4bK3o11utnhAW/9+lM5jskluHpnwGuuMDoCiXYCy3om87+Rwl2C0wjq7DWWYyd6sNmsRCAIs2petfk4+C/FceKmgpHZgXpL7jmxWodSvhyr/NzQ4D+1SDS9YBm0DHs1JTpNFr8Ac2vosGO8zYsoxq+AGT8w4HwWKzDTwiIchmm+sKCzIQ/uIoN/kGp2PLDRNAek5pwCuI1N5469bhg96A5vRWN4r3wV+GXH5hqSt41xXacROCCEsoK4ZkBKzcs+fGMk/xUROB5jUgcefEJcV6eBfLZmPQ9TikdOwY/kVImQps8S0PQsZxTl37Hy/4nzcfL+yxWWjJvNmZR6pGUCz5YiEmnS/C3Ot3QMCgxdd8msoB718/rEvFzslxP1dyQ4oIWhWoUOp4uXKMKVD6wYqdDv463dEKxj04d0FT8M2fZ5XVEtfC/6X6aKJYsL0XJYXEIkAQ3fTNGWc7otBfmrkPJSvX2zMWc7qrACl1dsdTpE4jyYLd5OsfnuEyjU6tHaOjBEO3h4NiYs0jpK+hg51EsQWD6MCCk0BJeSl+uvaIjzDy/9PCsO9KA2MRORy5SEpLYkZTQjREm0A9k8wUKW9X4GXfBI1h4v2kWy2gQ9+XOSEhZqzrOLGeNU37KNk8chg8AYjk4ciAlc68+uc+Q5q1ghty0LXBX9AKbxPcQK4FTdQSuoSUJb4W1wMsA IMg3HnYl OL6frcLGsD/dOlpfMD+PUgu2R5hvWAlIpK6ClAWOCry4YYgx6j+6xTce6iKtedgXbXtop4YZ/lB4bp0fXelk2V8pwsvDxlKaS0tX1gElFPs8YZdlhEGLFZeU/8HRx87ZQ00s6 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, May 23, 2025 at 12:25:52PM +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, reusing struct net_iov that already mirrored struct page. > > While at it, relocate _pp_mapping_pad to group struct net_iov's fields. > > Signed-off-by: Byungchul Park > --- > include/linux/mm_types.h | 2 +- > include/net/netmem.h | 43 +++++++++++++++++++++++++++++++++------- > 2 files changed, 37 insertions(+), 8 deletions(-) > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 56d07edd01f9..873e820e1521 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -120,13 +120,13 @@ struct page { > unsigned long private; > }; > struct { /* page_pool used by netstack */ > + unsigned long _pp_mapping_pad; > /** > * @pp_magic: magic value to avoid recycling non > * page_pool allocated pages. > */ > unsigned long pp_magic; > struct page_pool *pp; > - unsigned long _pp_mapping_pad; > unsigned long dma_addr; > atomic_long_t pp_ref_count; > }; > diff --git a/include/net/netmem.h b/include/net/netmem.h > index 386164fb9c18..08e9d76cdf14 100644 > --- a/include/net/netmem.h > +++ b/include/net/netmem.h > @@ -31,12 +31,41 @@ enum net_iov_type { > }; > > struct net_iov { > - enum net_iov_type type; > - unsigned long pp_magic; > - struct page_pool *pp; > - struct net_iov_area *owner; > - unsigned long dma_addr; > - atomic_long_t pp_ref_count; > + /* > + * XXX: Now that struct netmem_desc overlays on struct page, > + * struct_group_tagged() should cover all of them. However, > + * a separate struct netmem_desc should be declared and embedded, > + * once struct netmem_desc is no longer overlayed but it has its > + * own instance from slab. The final form should be: > + * > + * struct netmem_desc { > + * unsigned long pp_magic; > + * struct page_pool *pp; > + * unsigned long dma_addr; > + * atomic_long_t pp_ref_count; > + * }; > + * > + * struct net_iov { > + * enum net_iov_type type; > + * struct net_iov_area *owner; > + * struct netmem_desc; > + * }; > + */ > + struct_group_tagged(netmem_desc, desc, So.. For now, this is the best option we can pick. We can do all that you told me once struct netmem_desc has it own instance from slab. Again, it's because the page pool fields (or netmem things) from struct page will be gone by this series. Mina, thoughts? Byungchul > + /* > + * only for struct net_iov > + */ > + enum net_iov_type type; > + struct net_iov_area *owner; > + > + /* > + * actually for struct netmem_desc > + */ > + unsigned long pp_magic; > + struct page_pool *pp; > + unsigned long dma_addr; > + atomic_long_t pp_ref_count; > + ); > }; > > struct net_iov_area { > @@ -51,9 +80,9 @@ struct net_iov_area { > /* These fields in struct page are used by the page_pool and net stack: > * > * struct { > + * unsigned long _pp_mapping_pad; > * unsigned long pp_magic; > * struct page_pool *pp; > - * unsigned long _pp_mapping_pad; > * unsigned long dma_addr; > * atomic_long_t pp_ref_count; > * }; > -- > 2.17.1