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 784D5C54ED0 for ; Fri, 23 May 2025 03:26:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 68D136B0083; Thu, 22 May 2025 23:26:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6276C6B008A; Thu, 22 May 2025 23:26:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3B5EE6B0088; Thu, 22 May 2025 23:26:26 -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 1C5666B0085 for ; Thu, 22 May 2025 23:26:26 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 9EEB2C130F for ; Fri, 23 May 2025 03:26:25 +0000 (UTC) X-FDA: 83472734730.24.3727A1B Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf18.hostedemail.com (Postfix) with ESMTP id D20971C0002 for ; Fri, 23 May 2025 03:26:23 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf18.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747970784; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=sARV9WH5AT9sBV129bOKbHKI6o59rkl3V9AXwRcXa7A=; b=m9FN8aA16XbRUWkW5ba1Sol8my9vKB63jcS1eRyuEMGUirg+/7Y42TU0R1UDGSrrvL4LFT qfpZ010vXCLMO161HztUTMmQA3XxlzryuQDZ0dNtYNwm7x8mSMMREL/weNPPJCgLhti7g4 9NMF0sfYvG7U4JbQPIgvN9/II/xvTJw= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf18.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747970784; a=rsa-sha256; cv=none; b=6kfMdTPprZgADtHTsSbYk0gv3C+bACtJ8Y95Bn/TVczcBA4YYygsOFAzAGtqXT+DWNNkin 7gu6EpTSZ6KYM9q6109iBXLp+tsqxaPadsnzUKj6pF40OftMkIMc2v0/1Vcx2fyhxJ2J6/ 6n7UpxHUzb9qao7G69hgWUUQNqIKNjk= X-AuditID: a67dfc5b-681ff7000002311f-6c-682feadb6dc4 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: [PATCH 00/18] Split netmem from struct page Date: Fri, 23 May 2025 12:25:51 +0900 Message-Id: <20250523032609.16334-1-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 X-Brightmail-Tracker: H4sIAAAAAAAAAzXRXUhTcRgGcP87Z2dzOThMqZN9SAOphFyKxVtI2VWniz5Au0kwD+7gDm3T pq5ZRmYj0dRCjVIXrTLzYzBd4qb5OecXFppizrTNFL0QM9QcTotyiXc/eJ7nvXmFmMSEBws5 dTqrUTNKKSHCRT8CXh+bXJApjk98OgUGs4mAunUdvJu28cFQ24Tgl3dSAKuOPgLevPJgYBjS 47Bm3sBgrndGAO6qeRxac60YzDzuJ6BQv4lBjq2aB8NNRXwo3XiLgTV7WgCjLQYCXKa/fJi3 F+IwUF6Dg7soBnqNu8EzuIjAYbbywFPwgoCSESMBs3o3gpHuGRwq7hchMLc7+bC5biBiDtGN NRM8urn8m4A2WjLo99VhdL5zBKMttXkEbVkpFtBTX1oJuv/5Jk4321Z5dOGDJYJenvuK0z/b xwja3DiG0x+NDgG9ajl4hbwmipazSk7LamRnEkUK72QXntoWolse4rLRMpWP/IUUGUXlNYzg Oy4bHeT5TJCHKafTi/kcREZQqzN9Wx2RECOX+NScYfN/KXBrsObRI59xMpRyN+r5PovJE1T3 kpW3fTSEqqvvxHxjinQJqPz+DrQd7KW6qp34E7TLiPxqkYRTa1UMp4wKV2SqOV14UorKgrZ+ WHX3d7wNrQzH2hEpRNIAsU0kU0j4jDYtU2VHlBCTBol75sMVErGcybzNalKuazKUbJod7RPi 0j3iSM8tuYRMZtLZGyybymp2Up7QPzgblVZouwqrvekDCczJ8dieP+wzTjWWmSi/eTV53LUQ FxnXUT57Pil6I++AIEr2WZdSbL/3ofIlV3+R8R7VPLU/tF4InS419S9kFZUVV3kcCY++G4cq 91MNXFbBkbN+yS2TOZ6SzqnTlyjp5XrXHZLytC0q4zckuQVtdSGB5/ySpHiagokIwzRpzD+o Qvl5vwIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAAwGiAl39CAMSjwQaCGludGVybmFsIgYKBApOO4Mt2+ovaDDKpCc4nK+sBjir +Hg4p+C4BTicqrYBOPT52wc488THBjijofYDOJzPhAQ49a/6AzjlxuIHON+m5gQ4vIe3Azji j8gGOI2E+wM4grioAjjDnckFONC2jgU4lPqlAzi3gOAHONO6nAY43qz/BTjmwo0EOMmaqQQ4 345AOMagFjj2y+wBOMSvtwI49oydBjiT0qAGOOOE3wE40sPiBDibgY4BOK++2AU4+/icBkAi SLSp2QJIuZrdB0igsnVIs6gqSIrY0gNIsqqJBkiy8pIHSNzWvAZIyJj7BEi5uPMCSI2D7gZI 8eXaBEjvvtUGSKPo8AJIr7TVBEjMoMQHUBFaCjxkZWxpdmVyLz5gCmj528EEcL0fePHPaYAB 8RiKAQkIGBA0GJnTywKKAQkIBhAnGNjY+QOKAQkIFBAxGPPixwSKAQoIAxDuBRjlnPsCigEJ CBMQNBj19oQBigEJCAQQJRjftIQFigEJCA0QNRjD7rcCigEJCBgQHxirsMADkAEIoAEAqgEU aW52bWFpbDUuc2toeW5peC5jb22yAQYKBKZ9/JG4AfTTR8IBEAgBIgwNKG0vaBIFYXZzeW3C ARgIAyIUDcXmLmgSDWRheXplcm9fcnVsZXPCARsIBCIXDUpXZWASEGdhdGVrZWVwZXJfcnVs ZXPCAQIICRqAAXhzCpXZsJUENZo2iUQIK9C3VerNw271f56ZwvBIm9xQ9/Wzojv55zYahsFI hp8eaPKpqK1POu5au6TwcFJq5MDco5Lh5btTAVLeb1IemYh5+5RL8K+Szqm4vL0Zk+fkEmKK qmdIjnEUtnYhI3fZVCd5ZioI04z96wptHoShF9FVIgRzaGExKgNyc2E0Nn/SogIAAA== X-CFilter-Loop: Reflected X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: D20971C0002 X-Stat-Signature: faq5cfzp7qxqmn9xrqcsu8uefanxfurt X-Rspam-User: X-HE-Tag: 1747970783-205467 X-HE-Meta: U2FsdGVkX18YpqMtaI6nLpE8hnUx9cncMWjfryoXaE5IBIzWDAL/nU9jh8Zddd0gL8RbdZqJ3KbBinUj76AJgZGVbEyjV3b7juObnmmJ6qeusX7b9Es2Ikc1a2vsvyQMBzGVdE6L0PQgl/T6gEAFD5oAT8PPppSVSzcKvBa0FkQcBqyPw/29phz5EkwRTr5mHI02QZwiw91VyCOxiNtH3b+qir826ZoiT0FJ4lDGRqHRl4cOogxvSCCvM3dI1g3b7bDXOEtM6GxchASQVFJWaYNOggjO71NPIxkOmmCUYp5k3EXAUZc4KYmbdKVWgdbs0vMKW5+T6bJp8Goq7mYj1BGnUTCs0bjFR4M1rh+Bbfsx/6z8jnz5w1oO0hcvIr1TbulkvcqUNvxHZfFMFjYKiJre2yW/2n3cJRu9S1AWsjVFLkoOBhOiq5VzL99N54uM5zmnorQl3Paq+lkC0dSfPJcqTAOnfsOXOGEgVRwd05vu6aATR3GcCim9ucDjk0UxAKoTZ0GNPc1poP/5t+7qcM5cnT1rpmWVIhkQP+kCotraTW1Hrugod7/qBEYp9GkTIUYSO+bqJYJq0/1Q7CFgjD2wbpMmd7Cj+pZJURQRqT+T3ZrZmy1JExNYVL5Va7ToNn2lSnLNeUHkplTX/v5onSK1oP/DUIHKMegx2DLx2GCHSRtk7DjCUMJo0sW5qYTUGBmELTuEkox18N8bWQYTiUlRTLUhnp/U0SZ7IXTHqyHInfLf56cTFTam6HLwqeYgF6yAHfJkYlq4UCb6A2ndzO2X+pLHMd7k6lfnjMRW//FeaUd5PYdWauMgso4T1+jPa7HxofJvOQ3h69nc1IgUuGl/gyY12Nr34Kv+oj42GpR/zhyLp4q0rbwKTR19EokMJplZccotSOTyA68ajdUf9EyW836qHEqI2c+EC/a0Ygmn93Ty6FZDIjxvAtpDeeQqLf6CVLdyksns8wW8TfD uK2UE/YT stwnWbv4iT5rkxt3Ecx12j8JTlFSA/wVVL/dhxrka3u/zVckJ3FybM1z4AvLiSfmPAaRMbVj1Djap1M4YZzJ7Q48UBAB9IYH31kjTnWs3e/lpAGF4tGeQc6U/ytI5dp9mxCx/savn/PrYobzvHVNVr+a9cy3+KfmqMlWrrFZ1Gs5RttReBeS1OYIq6w== 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: The MM subsystem is trying to reduce struct page to a single pointer. The first step towards that is splitting struct page by its individual users, as has already been done with folio and slab. This patchset does that for netmem which is used for page pools. Matthew Wilcox tried and stopped the same work, you can see in: https://lore.kernel.org/linux-mm/20230111042214.907030-1-willy@infradead.org/ Mina Almasry already has done a lot fo prerequisite works by luck, he said :). I stacked my patches on the top of his work e.i. netmem. I focused on removing the page pool members in struct page this time, not moving the allocation code of page pool from net to mm. It can be done later if needed. My rfc version of this work is: https://lore.kernel.org/all/20250509115126.63190-1-byungchul@sk.com/ There are still a lot of works to do, to remove the dependency on struct page in the network subsystem. I will continue to work on this after this base patchset is merged. --- Changes from rfc: 1. Rebase on net-next's main branch https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/ 2. Fix a build error reported by kernel test robot https://lore.kernel.org/all/202505100932.uzAMBW1y-lkp@intel.com/ 3. Add given 'Reviewed-by's, thanks to Mina and Ilias 4. Do static_assert() on the size of struct netmem_desc instead of placing place-holder in struct page, feedbacked by Matthew 5. Do struct_group_tagged(netmem_desc) on struct net_iov instead of wholly renaming it to strcut netmem_desc, feedbacked by Mina and Pavel Byungchul Park (18): netmem: introduce struct netmem_desc struct_group_tagged()'ed on struct net_iov netmem: introduce netmem alloc APIs to wrap page alloc APIs page_pool: use netmem alloc/put APIs in __page_pool_alloc_page_order() page_pool: rename __page_pool_alloc_page_order() to __page_pool_alloc_large_netmem() page_pool: use netmem alloc/put APIs in __page_pool_alloc_pages_slow() page_pool: rename page_pool_return_page() to page_pool_return_netmem() page_pool: use netmem put API in page_pool_return_netmem() page_pool: rename __page_pool_release_page_dma() to __page_pool_release_netmem_dma() page_pool: rename __page_pool_put_page() to __page_pool_put_netmem() page_pool: rename __page_pool_alloc_pages_slow() to __page_pool_alloc_netmems_slow() mlx4: use netmem descriptor and APIs for page pool page_pool: use netmem APIs to access page->pp_magic in page_pool_page_is_pp() mlx5: use netmem descriptor and APIs for page pool netmem: use _Generic to cover const casting for page_to_netmem() netmem: remove __netmem_get_pp() page_pool: make page_pool_get_dma_addr() just wrap page_pool_get_dma_addr_netmem() netdevsim: use netmem descriptor and APIs for page pool mm, netmem: remove the page pool members in struct page drivers/net/ethernet/mellanox/mlx4/en_rx.c | 46 ++++---- drivers/net/ethernet/mellanox/mlx4/en_tx.c | 8 +- drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 4 +- drivers/net/ethernet/mellanox/mlx5/core/en.h | 4 +- .../net/ethernet/mellanox/mlx5/core/en/xdp.c | 18 ++-- .../net/ethernet/mellanox/mlx5/core/en/xdp.h | 2 +- .../net/ethernet/mellanox/mlx5/core/en_main.c | 15 ++- .../net/ethernet/mellanox/mlx5/core/en_rx.c | 66 ++++++------ drivers/net/netdevsim/netdev.c | 18 ++-- drivers/net/netdevsim/netdevsim.h | 2 +- include/linux/mm.h | 5 +- include/linux/mm_types.h | 11 -- include/linux/skbuff.h | 14 +++ include/net/netmem.h | 101 ++++++++++-------- include/net/page_pool/helpers.h | 11 +- net/core/page_pool.c | 97 +++++++++-------- 16 files changed, 221 insertions(+), 201 deletions(-) base-commit: f44092606a3f153bb7e6b277006b1f4a5b914cfc -- 2.17.1