From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A533B2DCC00; Fri, 23 May 2025 03:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; cv=none; b=Z49mEnLjkltMOMdCVQYjenLEWkarsncmaGRlQ4iuQUnkNl4KQajjdTdkbS31NtLO5AIRnAFFutkyyd5aaXFiS5PngZ1Gzolh/q0Xr5U9gAxwaTjfZEgtRWQDDO0NN5PLgV5evXvdjLl8wWJw0EDX4PpV+kiksDOvzXj3V3Zu+gg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; c=relaxed/simple; bh=uStT/gutBpHMd4R5hxyLlH4K3wJO3kyyyE21WC/nwKA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=iMAD7TDilVYqMm3JHOvAt1C1LmAzXla8ScQcxa1h1zIJeSZgUq7fRgiO74EM1biaFXxahOZQbp++FrNm/iwrYfIdEVutDx/yexalXIFt6YEyi1lQUBqZfn94sky2YegYz8Ccip+ANs6xknzD1ORhi54NviQjzUqjSkKobCUV3jk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-75-682feadb19ae 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 01/18] netmem: introduce struct netmem_desc struct_group_tagged()'ed on struct net_iov Date: Fri, 23 May 2025 12:25:52 +0900 Message-Id: <20250523032609.16334-2-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzXRa0hTYRwGcN+ds3OOw9VxiR7NihZRKWqKyktE2Jd4hYLIQDKsZp7acF6Y zhsJy8TS8oJGhE6dabaptFjmZoqkzUsXUJbGNHU2m2V5QZfLW5iX/PaD//M8X/4UJjDiXpQk IYWVJYikQoKH82Zcqv1GfgaIj/+xYVCpbSRgw1I6fDZu4EJlfTOAv5e/kNBu7CFgTbVjI9GX g8NF7QoGbd1WElrqJnHYdlePQWtRLwELclYxmG1Qc2B/cyEXPlx5ikG9YpyEn14rCTjWuM6F k50FOHxXpsGhpTAMdqvcoePDNIBGrZ4DHQ8qCFhqUhFwIscCoOmtFYfltwsB1LabuXB1SUmE HURNmiEOaikbJZFKJ0cv1T4o32zCkK4+j0C6hRISjXxuI1Dv41UctRjsHFRwZ5ZA87ZhHM21 DxJI2zSIo48qI4nsuv3n6SjeyVhWKkllZQGnrvHEi3l2MmnII71r7gmhAKOu+cCZYuhgRlNS yNlxTtF97qYJ+ghjNi9jm3ajAxm7tQfPBzwKo2e5jE25ulXYQ99gOhyWrQJOH2ZyLVP4pvl0 CPP+e9n/0QNMw4s3W0POdChTPLZIbFqwkWkdGCa3M/MkM1OUsW1PpkNtxosBXwWc6oFAkpAa L5JIg/3FGQmSdP/rifE6sPHbuqy1ywaw0B/RCWgKCF34Bl6AWMAVpSZnxHcChsKEbvyuSX+x gB8ryshkZYlXZXIpm9wJ9lK40IMf5EiLFdA3RSlsHMsmsbKdK4dy9lIAQezR8WKJ0nX34KyT 0Ds3qib614kwm7PyldfZytORlRVFa1lT2d5/Q02q5lrsx5l7veF9vhXyC4Gea8FYJtrlq5lY ULTEXSotd3cLnIhp25c0YB5t6S4tN31NCRHpq6pqI6MPhTeo5RfTznHXWylrzDdlTNCViOlT twKe++mPPRLiyWJRoA8mSxb9A8uQcBvXAgAA X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTYRzGfc959545Ghyn1aE+BDMvSGpCxj+KiD7Ui4QUFZIJOfPUhle2 XC4orKRS85KGhk5YSt5h5XVeEO93sDRjljpZzS6GVl4wF1Qz+vaD3/M8Xx4pq6jCu6SaxGui NlEVryQyLAs/fDfw3Zdg9f6urEAwmusI1G6kQuW8RQLGmmYEqz/fcbDSN0ig/Ok6C8bxdAxr 5k0WHAN2DmwVCxg67rewYM8dIpCd7mThjqWKgd7SYQm8bM6RwOPNZyy0pM1zMNlmJDBX91sC Cz3ZGIaLqzHYco7BgGkHrI9+RdBnbmFg/WEpgYIJE4H36TYEE712DCW3cxCYO60ScG4YyTEl bayeZmhr8SxHTfUptKEqgGZaJ1haX5NBaP2PfI7OvOkgdOiJE9NWywpDs+8uEfrd8RbT5c4p Qss/fWOouXEK0zFTH3faI1J2JFaM1+hFbfDRaJl6LWOFS57emdq/XEbS0KxHJnKXCvwBIT03 S+JiwvsJVutP1sVefIiwYh/EmUgmZfklieAwOhmX8OSvCN3rtq0C5n2Ee7bP2MVyPlQY+VjM /BvdI9Q+79oacucPCnlza8TFir+Z9tdvuTwkMyG3GuSlSdQnqDTxoUG6OLUhUZMadDkpoR79 /a/i5q9HFrQ6ebIH8VKk3Cb3TwhWKyQqvc6Q0IMEKav0kvcvBKkV8liV4YaoTbqkTYkXdT1o txQrd8rDIsRoBX9VdU2ME8VkUfvfMlL3XWlIPtBgX8z96NGGfHw6bBdLbx4qwHM0ib4qt0VE cXaNcDwGZ0Uaok6NI1v3iQsB+ZF6b/81IazIWui98eLW8sjekH1N3u0RRx4UnW+aqWwvY37N FzvOkEN6A+l2jp7TRnr6vnBcP+tb4m6ZdQvTTT3czs72fUj7FBPutzhWOKbEOrUqJIDV6lR/ AFlN4ZS7AgAA X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 { }; =20 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, + /* + * 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; + ); }; =20 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; * }; --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A53E4220F20; Fri, 23 May 2025 03:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; cv=none; b=FB+9vP68Z18W7WUhJBq+EfNXP0deGJ5GS32awZSYGBhb7fCbaJDlhODHwo5WZqpHShFnzsSHIAWI4eeGl86Eqci4U3ZfA4f/CL82TwgUVyP9CAotb0GDV/ukcSVqAPJA/UEcnTh7XuicBstw0kyNJinu+HBRXeZ80LTexDqaQNM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; c=relaxed/simple; bh=OVeFBdEE2mdYFHAdWNbinXlUmid1uv560ErFLaRx+/s=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=Vq8ZuJXzdw3kSpKa2roGZOX5OXqXVHTemRDeaClIJcXhOcCO/giNXC2CNI6DfkFNTFv1Cxxq82XDkHIGdftYe/jUFFdRQ4Mt3X1ebTlgOnhpzbDAJBmgIiu4coG9ptuelfjUjrDFyUexUZLrBzC5zU1NdRZTggSSijVrl5UzYxU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-80-682feadbfceb 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 02/18] netmem: introduce netmem alloc APIs to wrap page alloc APIs Date: Fri, 23 May 2025 12:25:53 +0900 Message-Id: <20250523032609.16334-3-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTYRjHe3fenXO2XB2W1cmoaGCB5Lxg8QYhYiTvl0gUpPKDLT254ZV5 yRWBqRGJUzMz0ZnLyDvN5tJ5QWqtaXRR5oXl7ZimoZjhNW9RzvDb73n+z/P78qcJqRW60ar4 ZE4dr4iVkWIo/ulS4Tk846X0fmkQIp2hnkR1q2moasy8NdU2AbS0NkShRWsniZ4/WyGQrjsL omXDOoEmbeMU4iunIGq/30yg8bwuEmmzNgiUYa4WoJ6mXCEqXH9BoOb0MQr1tupINFr/V4im LFqIPpTUQMTnBiCb/gBa+TgLkNXQLEArOWUkemTXk2giiwfI/m4cotK7uQAZOhxCtLGqIwOO Y1PNVwFuKRmhsN6YghurPXC2w05gY+0DEhsXCig8PNBO4q7iDYhbzIsCrM2cI/H85CDEvzr6 SWww9UP8SW+l8KLxaDBzVXwuiotVpXJqL/9rYqWplKcSX4vS9CUDRDqYpLKBiGYZPzZziAc7 PL05RTiZZE6yDsfaNrsyPuzieCfMBmKaYOaE7KRuQ+AM9jEhbNuIXehkyLizRU/zt/Y0LWFO s7r5uP/OY2xdw5ttj4g5w+aPLpNOlm6dtPUNUk4ny8xTbNVIo+D/wyH2bbUD5gOJHuyqBVJV fGqcQhXrJ1dq4lVp8siEOCPY6rbyzma4GSz0hFoAQwOZi8Qs9lJKhYrUJE2cBbA0IXOVvJ+S K6WSKIXmFqdOiFCnxHJJFnCYhrKDEt+Vm1FSJlqRzMVwXCKn3kkFtMgtHZTJbbbP7uGdI9+O 3L6+3ybCoRd9Hxf3zPj0fjkPc58UeUdMNPOXF2anNfqgeV7826S1Rl8oD867VBp2T+xZFQI9 lwvmcgKbmgIsCa/qv0fv+dEtB90J5Q0nKvwb9i4t776hPlXZFaiJcQTNtoYNmkUPC6f5P9qz rul2/kpkX4YMJikVPh6EOknxDznkrCHXAgAA X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRyG+5+7q8HpZHYwIhiEFeRSUn6klgXlnz6UVBQFUUNPbeqmbSpa BprS0NTsSuiUlaTmpNUyLylSal4q0+aF5W2izLLELtbwRqVG3x7e9+X58nKkUEp5cxpdvKTX qWIUjIySHQxK3zbwWane/rooAEzWCgYsM0lQOlJDg6m8CsHP2QEWpptbGSi+5ybB1JlBwS/r HAmullEWnCXjFNQbq0kYvdbGQE7GPAmXa8oIaCpsp6GrKpeGW3MPSKhOHWGh+7mJgeGKPzSM N+ZQ0J7/kAJnbii0mL3A/WYSQbO1mgB3diEDN+1mBsYynAjsTaMUFKTlIrA2OGiYnzExoQpc +fADgWvzh1hstiXgp2VbcZbDTmJbeSaDbT9usHiwr57BbXfnKVxbM03gnPQpBn939VP4a0Mv g4s/fSOwtbKXwm/NzWz46pOy4EgpRpMo6ZW7zsjUlQVONu6ZR5I5v49MRS42C3lwIr9DnFgY J5eY4X1Eh2N2mT15P3F6tJXKQjKO5Kdo0WWaJ5aKNfxhsW7ITi8xxW8S7xTlLeYcJ+cDRNN3 7T/nRtHy+MWyx4MPFPOGfzFLLCxO6nr62TwkM6MV5chTo0vUqjQxAb6GaHWyTpPkGxGrtaHF +0ouLVyvQT+7wxoRzyHFKvlmrVIt0KpEQ7K2EYkcqfCUvxr3VQvySFXyBUkfe1qfECMZGtF6 jlKskx84Lp0R+HOqeClakuIk/f+W4Dy8U5EhSijbEtZyrOOlpafFOXjFf9+RzCcV93UdFvps 2n5svHjKJ7NY0IdUtQcbLcVgo+xDcVffPRIm3hcRxgVjaspa14mITnfE+Q6/lN1jYx3ulWPZ vl6TaSGPujLrfgimcP8q5YZDhYFzihV7Pu4Nyo5SOoxRYfjozt+14cSX6tsKyqBW+W0l9QbV X/liCwm6AgAA X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" To eliminate the use of struct page in page pool, the page pool code should use netmem descriptor and APIs instead. As part of the work, introduce netmem alloc APIs allowing the code to use them rather than the existing APIs for struct page. Signed-off-by: Byungchul Park --- include/net/netmem.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/net/netmem.h b/include/net/netmem.h index 08e9d76cdf14..29c005d70c4f 100644 --- a/include/net/netmem.h +++ b/include/net/netmem.h @@ -177,6 +177,19 @@ static inline netmem_ref page_to_netmem(struct page *p= age) return (__force netmem_ref)page; } =20 +static inline netmem_ref alloc_netmems_node(int nid, gfp_t gfp_mask, + unsigned int order) +{ + return page_to_netmem(alloc_pages_node(nid, gfp_mask, order)); +} + +static inline unsigned long alloc_netmems_bulk_node(gfp_t gfp, int nid, + unsigned long nr_netmems, netmem_ref *netmem_array) +{ + return alloc_pages_bulk_node(gfp, nid, nr_netmems, + (struct page **)netmem_array); +} + /** * virt_to_netmem - convert virtual memory pointer to a netmem reference * @data: host memory pointer to convert --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A55C9221712; Fri, 23 May 2025 03:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; cv=none; b=YpZY6l3ZsMoNK3NEBCjqac/QDxNgSYEKejn33mogQjD9bTEu1yg6PcPvrbdo3SjAPpI9XQK+DJYQtfb3TEjWYfW/PewTzwC0Xx/OqerLcXwXY/zl06np5kVvMCooMynnmFMgb54ZYP+Vt1niNEvSMrTPUhemn4yE8SB8PIyZOcU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; c=relaxed/simple; bh=LYjtRJWbnb2SMqSZQglLReuXm4WbuSlnvqUof5UfcMw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=Zvvxqz5Ep/VoyAzDvm2R7i/18vOqqvW14hctRfL9boyDiw8UBr8ucUeJLVT8huLI+W93HGRfCpr38Rp9roSH4Kq7zFUhWD2Q9MHpgkM39J68LhnY3WNbpJMISG/Jv+a+yU9VwZI8aNFUuXotlwXJOgSk83HlheL+v/W7q25FEIo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-89-682feadb9103 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 03/18] page_pool: use netmem alloc/put APIs in __page_pool_alloc_page_order() Date: Fri, 23 May 2025 12:25:54 +0900 Message-Id: <20250523032609.16334-4-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRjG/e+cnTOXk8MadTIom0UhOfNSvEEX0S8H+pCV9KGoHHlow23a vOSKaObMsmZifTCbONHM+2ounTXMzFsUJN6Yl5zNNC0z8jLUSeUsv/14nvf5fXl5mLAN9+PJ VcmsWiVViAk+zv/hUxw0/C1Yti9b7w0GUzUBVYtp8HTUygVDZT2C+aUhEuZaOwgoKXZhYPio w2HBtIzBeLuTBEfZBA62rAYMnPc7CdDr3BjctJZzoKs+hwsPl59g0KAdJaHnpYGAkeo/XJho 0ePwrqACB0dOBLQbN4Hr/TSCVlMDB1z3Cgl40G0kYEznQND91onD4/QcBKYmOxfciwYiYgdj qRjgMI0Fn0jGaE5h6soDmWx7N8aYK+8QjHk2j2SG+20E05nvxplG6xyH0WfMEMyv8UGc+dnU RzAmSx/OfDC2ksyceVs0dYZ/KI5VyFNZdfCRWL6sNDOfSJyi0tJtXwktyvDNRt48mgqnl343 EOvcN+TGPUxQu2m7fQnzsIgKoeecHas5n4dRM1x63ODmeIqN1Dl6yp6zNsapXfSKu4TrYQG1 n86cnP0v3U5XPWteE3lTB+jckYW1XLh686p3kPRIaWqBpHWlteS/wRb6Tbkdz0UCI/KqREK5 KlUplSvCJTKNSp4muZigNKPV55ZdXzlrRbNdp1oQxUNiH4GVHywTcqWpSRplC6J5mFgkaJuQ yISCOKnmKqtOuKBOUbBJLWgrDxdvFoS6rsQJqUvSZDaeZRNZ9XrL4Xn7adFd/7DJ5+2LL04H HLTZipS938OE7Yox36iY5h7Ol9bB2qKdtZEhzTpZvb/m2A2X6HKFeWovXx86IOmqu32cnp/e Ex8zLrJEkUf7YKAmupK/HJB3K+ukV0SN9nystODRZ9bPEakIyt0gc554HYviTZbCw9ccVf1K 7pB7obQ3a1qMJ8mkIYGYOkn6FymUZqPYAgAA X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRyGOztn/83R6rhED3aDRWRKmqX1i0JECg9JFn3IECyHntrQTd1U NBG8IkpbalpikxYz77AwL1OHxTSvgeWN6Upt5tIom1fUSeWMvj0878v75eXighrCnSuRJTJy mShWiHgEL/Ri9inzdx/x6ac2ALWuAUH9RgpUz+jZoK5rwWB108yBle5eBNoX6zioh3IIWNNt 4TDXY+HAdJWVAENeKw6WR30IlDl2HLL0NSzoquhnw4cWFRtKtl7i0Joxw4GRdjWCqYY/bLAa lQT0l9cSMK0KhB6NK6wP/sCgW9fKgvWHFQgeD2sQzOZMYzDcZSHgWaYKA12niQ32DTUKFNJN tRMsuq38M4fWNCbRr2s86QLTME431uUjunG5mEN/Gjcguq/MTtBt+hUWrcxeRPTS3CRB/+oc Q7R23saidU1jBP1e08254RzOuxTNxEqSGblPQCRPXJlbhuIXyJRMwzeUgWXvK8CcuBTpR42Z 7YSDEXmCMpk2cQe7kL7UiqV3x/O4OLnIpubUdpYjOEBGUAsmFXIwQR6ntu1atoP5pD+VO7+M /o0epepfvd0dciLPUYVTa7tesNPpGJ3kFGI8DbanDnORyJKlIkmsv7ciRpwqk6R4R8VJG7Gd /6rSt4v02OpIsBEjuZhwL99D6iMWsEXJilSpEaO4uNCF/87qLRbwo0WpDxh53F15UiyjMGIH uYTQjX81jIkUkPdFiUwMw8Qz8v8pi+vknoG5BTeX+vUn8yNMJ6/DrdRj4YcCfl5urs1nJMUh h0fFZ0tjAtoH9ntltTdM6JE5ISro+ezqWM+9pTsD7l9CItKrbYMlCXlnnMNcf398MuX3xnpb GqrtUBZupl3rrC0931W8cCHfkHZlXONVOZIbVNT29cjNCNtQg7nS2UPVITDmaISEQizy9cTl CtFfNYnaOLsCAAA= X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Use netmem alloc/put APIs instead of page alloc/put APIs and make it return netmem_ref instead of struct page * in __page_pool_alloc_page_order(). Signed-off-by: Byungchul Park --- net/core/page_pool.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 974f3eef2efa..2680d38d3daf 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -518,29 +518,29 @@ static bool page_pool_dma_map(struct page_pool *pool,= netmem_ref netmem, gfp_t g return false; } =20 -static struct page *__page_pool_alloc_page_order(struct page_pool *pool, +static netmem_ref __page_pool_alloc_page_order(struct page_pool *pool, gfp_t gfp) { - struct page *page; + netmem_ref netmem; =20 gfp |=3D __GFP_COMP; - page =3D alloc_pages_node(pool->p.nid, gfp, pool->p.order); - if (unlikely(!page)) - return NULL; + netmem =3D alloc_netmems_node(pool->p.nid, gfp, pool->p.order); + if (unlikely(!netmem)) + return 0; =20 - if (pool->dma_map && unlikely(!page_pool_dma_map(pool, page_to_netmem(pag= e), gfp))) { - put_page(page); - return NULL; + if (pool->dma_map && unlikely(!page_pool_dma_map(pool, netmem, gfp))) { + put_netmem(netmem); + return 0; } =20 alloc_stat_inc(pool, slow_high_order); - page_pool_set_pp_info(pool, page_to_netmem(page)); + page_pool_set_pp_info(pool, netmem); =20 /* Track how many pages are held 'in-flight' */ pool->pages_state_hold_cnt++; - trace_page_pool_state_hold(pool, page_to_netmem(page), + trace_page_pool_state_hold(pool, netmem, pool->pages_state_hold_cnt); - return page; + return netmem; } =20 /* slow path */ @@ -555,7 +555,7 @@ static noinline netmem_ref __page_pool_alloc_pages_slow= (struct page_pool *pool, =20 /* Don't support bulk alloc for high-order pages */ if (unlikely(pp_order)) - return page_to_netmem(__page_pool_alloc_page_order(pool, gfp)); + return __page_pool_alloc_page_order(pool, gfp); =20 /* Unnecessary as alloc cache is empty, but guarantees zero count */ if (unlikely(pool->alloc.count > 0)) --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A54B422154F; Fri, 23 May 2025 03:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970786; cv=none; b=heiywxgJpvEBzHVhmtGoFmDxg8eK78WiY4Jxop5sQ4P8H+lZGUqFPFpMIImTcpnEsglZBzkIR49enq5pI1p53HFr8u99J0rUqlfrnDoaBe9QMXbU3/xMme7JRVT4lO6lmEH44WjFnODzo9GsOmHTpyzUBmCm1cUkhioCbrwe5tk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970786; c=relaxed/simple; bh=Nlu+Ye/l2MvdjyqvtqV9kAfumkCJ+PGw/5U4NmeTbnI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=JxITAFQYUcB3pms/aobcDOncSKi3Orn3PPG2220jQuVv/m/5tdta225KzvZfiQ2iJzFhpjzjGO1cYmRkqW/s8q6z/18uLOOmUXS5M5DHAO1NnFIaUdKLlWhSEDT/602j4m12jA+Pn2oVNWTpJKCc/BQUXrXdGfNivJ5kYXuvweY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-93-682feadc559e 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 04/18] page_pool: rename __page_pool_alloc_page_order() to __page_pool_alloc_large_netmem() Date: Fri, 23 May 2025 12:25:55 +0900 Message-Id: <20250523032609.16334-5-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRjG++9cN1wcpubRqHQQhpE3NN5IQoLgCBFRfVLBRh7dck7ZdM0i cCWUokvKMGzSJO9KR5bpNDFbXivIvMQ0rxP9YKnkmnkLc1bffjzvj4cHXhqTdeMBtEqTxWs1 CrWclOCSJa+KExOLYcpws5EBs9BIQsO6AWpmbASY61sQ/Nz4SoGru4+E5xVrGJg/5eHgFjYx mO91UjBdvYBDx71WDJwP+kkoytvC4I6tVgSDLSYCSjarMGjNnaFguN1MwlTjDgEL9iIcBsrq cJg2xUKv5QCsffiOoFtoFcFaYTkJj4YsJMzlTSMYeufE4anRhEDodBCwtW4mY4O45roxEddW NklxFms297I2hCtwDGGctT6f5KyrDylu4ksHyfU/2cK5NptLxBXdXSa5H/PjOLfSOUpyQvMo zn20dFOcy3r4IhMviUnm1So9rw07c1Wi7Bx/Rma+EhtWBAHLRatUARLTLBPFln7eJv6za6NK 5GGSCWYdjg3Mwz5MBOty9uEFSEJjzDLBzpu3diWa9mbS2PrK4x4HZ46yPaaxPV/KRLNC4RT5 t/MI29DUtZeLmZNs8ZR7L5ftOq9HxilPJ8u4Kba068W/Qf7s21oHXoykFrSvHslUGn26QqWO ClXmaFSG0GsZ6Va0+9vq29sJNrQ6eNmOGBrJvaQ2SZhSRij0upx0O2JpTO4j7VkIVcqkyYqc m7w2I0mbreZ1dnSQxuV+0si1G8kyJlWRxafxfCav/X8V0eKAXFSumlopOyX+3Ra0Ebjfe8d2 ATk7kyszBphFd5whvillRnXOWDLpXfKtpFmTEnx6ueHXfaMk+lhmzxUUsmR357YyhedTNX3q REVkSKR/WbTemDp7KDwBgn3fP666lTh7fdyvP+aNSZgLbF/otyb5xAXF6ehhp29N/mjppZGz hBzXKRURIZhWp/gD/TS9x9cCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRyG+++cnZ0NB6cldtDoMqhMUTNTfqKUfaj+BGUQFQiiI09tqVM3 tZmEmnYTNW+h2KSZ9ykd867ZEO+WYGiWmqkslLDS8pa6rNTo28vzPrxfXpqQlZK2tEodyWnU ihA5JSEl57wSncZmXJSHvz1DoOcrKahY0UHpZKMQ9MZ6BIurH0Sw0NFNQWHBMgH6/iQSlvg1 Aqa6zCKYKJkmoeVeAwHmhz0UpCZZCLjdWCaA9vxeIbypTxNC9loxAQ3xkyIYbNZTMF75RwjT bakk9OaVkzCR5gNdBhtYfv0VQQffIIDllHwKsgYMFHxKmkAw0G4m4XFCGgLeNCwEy4qe8pHj 2vIRAW7K+yjChuooXFPmgJOHBwhcbXxA4er5TBEee9dC4Z5cC4mbGhcEODVxlsI/pkZJPGca onDh5+8CzNcOkbjP0CE6v91P4h3EhaiiOY3LsUCJ0jT6hAqvE+vmeJ6IR/OiZCSmWeYou7Ba LNjMFHOQHR5eJTazNePKLpi7yWQkoQlmVshO6S0bEk3vYIJZY5HjpkMy+9nOtJEtX8q4s3zK OPVvcw9bUdW6xcWMB5s+vrTFZRvOi7ejonQkMaBtRmStUkeHKlQh7s7aYGWMWqVzvhIWWo02 7iu59SujES0Onm5DDI3kVlL7UBelTKiI1saEtiGWJuTW0s5pZ6VMGqSIuclpwgI0USGctg3Z 0aR8p/TMZS5QxlxTRHLBHBfOaf63AlpsG48cDQ1xLd6De8ubs+5eai+wmuHKogyPiu08j/ih Kt99z0+0Zth0vUzw6L7jdP/3RXXsyVdefWfdHL/g6c6U9at1Hq0a46Fd2X76WNON3f3+ONne VJNz4fhg3E/fsH4sXgrgn/p71p6yqKYUmW4RprCciHFH9ZjOfP2Abf779Vz/IjmpVSpcHQiN VvEXrVITMboCAAA= X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that __page_pool_alloc_page_order() uses netmem alloc/put APIs, not page alloc/put APIs, rename it to __page_pool_alloc_large_netmem() to reflect what it does. Signed-off-by: Byungchul Park --- net/core/page_pool.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 2680d38d3daf..147cefe7a031 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -518,7 +518,7 @@ static bool page_pool_dma_map(struct page_pool *pool, n= etmem_ref netmem, gfp_t g return false; } =20 -static netmem_ref __page_pool_alloc_page_order(struct page_pool *pool, +static netmem_ref __page_pool_alloc_large_netmem(struct page_pool *pool, gfp_t gfp) { netmem_ref netmem; @@ -555,7 +555,7 @@ static noinline netmem_ref __page_pool_alloc_pages_slow= (struct page_pool *pool, =20 /* Don't support bulk alloc for high-order pages */ if (unlikely(pp_order)) - return __page_pool_alloc_page_order(pool, gfp); + return __page_pool_alloc_large_netmem(pool, gfp); =20 /* Unnecessary as alloc cache is empty, but guarantees zero count */ if (unlikely(pool->alloc.count > 0)) --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A5568221571; Fri, 23 May 2025 03:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; cv=none; b=LhBDxnnGnCOZfXNM+kmbkRlX459nlC+caGRiKy06jhuD3l9jdcO1yQdvoo5dDGhYt4fvhCzJ29E/IlXHR5eUAjCZ7qr3R3aI105gk1GIBE6K9yp0h17hTOYtEHkHr1k6PEQMa+4zQd50i/AEz6K1+2RH/pMtKIAokuRybr3ZVtQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; c=relaxed/simple; bh=iFnfTWEc7pxfQokROsd8KJwiJS8bB+kZS180YvaOd6c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=Evc4yHjpGj5jTk/+hL3dKu9HWFVfNaa1Mu9dqQppC6ctu33ZF5uG9lPh62JTpr8oGwIngpMGxt89I9ll5rS5ALIwdTECON65XDhus9/03oFOd5v2ymjTM2Zfl3IX20Q6SwpJ27r3E44uz1ZgEjZsD/WmXqT3d56NvLho/CGsxnI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-9d-682feadca2ba 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 05/18] page_pool: use netmem alloc/put APIs in __page_pool_alloc_pages_slow() Date: Fri, 23 May 2025 12:25:56 +0900 Message-Id: <20250523032609.16334-6-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzXReUiTcRgHcN+917YcvkypV4OO0SmkGRbPHyJCgT8qI7H+6bKVL240jzZd GgSaRngmTUV00SQ0L5gsc7NEdM6LwpalTTOPeSSmRi6XTsuc5X8fnuPLAw8fF3cQfnx5fBKn jJcqJJSQEM57lh8Zng2UHXXZxKDV11FQu5wCz8dMJGhrGjH4ufKZBoeli4Jn5U4ctO8yCVjS u3CY6rTTMFo5TUDzQyMO9kfdFORlruJw31TFA2tjPgmFrgocjGljNHx4paVgpG6dhGlzHgE9 pdUEjOaHQaduOzjfzGFg0Rt54Mx9QoGmT0fBROYoBn3tdgLK0vMx0LfYSFhd1lJhe1FD9SAP NZV+oZHOkIxeVPmjbFsfjgw1WRQyLD6m0fBAM4W6S1YJ1GRy8FBexgKFfkwNEeh7Sz+F9A39 BHqrs9DIYdh1nrkkDInhFHI1pwwMvS6UTY7n4ontPinFJRoyDbMy2ZiAzzLB7ODLr7wt52ic hNsUc5C12VZwt32YINZh79qoC/k4s0CyU9rVzQVv5irb21JOuk0w+1nNQC/ttog5zq51NJL/ QneztfWtm0EC5gRbMLJEuS3emHn9cYh2h7LMEs326H/9v8KXbauyEQWYSId51GBiebw6TipX BAfIUuPlKQE3E+IM2MZzK++tXTZhi9YoM8bwMYmnyCQMlIlJqVqVGmfGWD4u8RF1TAfIxKIY aepdTpkQrUxWcCoztpNPSHaIjjnvxIiZWGkSd4vjEjnlVpfHF/ilYb6nVkxP1YetKVnR/dfU 9kIRUzSdNtn5zXDD1Nv2qWi2k4zMKptPn2EKvcLX1vflj6nWw8/pvcpvP/CpO7NnpvXKYvSB YovAQxlU1mylfxtiu4Nc2i7e6YzqUO3JudDUiQsV27wPhZgvRqGQmYz695LcP5HLEeM2gcYY kZM5eFZCqGTSIH9cqZL+BUzjIB7YAgAA X-Brightmail-Tracker: H4sIAAAAAAAAAzXRa0hTcRgG8P47l83R4LSsTgpFg9BJbmmaL2QlSHkoij4EhuBl6aEt56XN ayRoDiyvs0WITZxIOqewmPcStTlvaGaaYmreFYkwr8sblCv69uN9Hp4vLw8TGnEXniI2gVXF ypQiko/zb1/K9Jz8LpWfH/+Mg95cQ0L1dgpUzjQRoDc1INjcmeDChq2bhPIyOwb6Txoctsy7 GCx2zXFhumIJh5asRgzmCnpIyNPsYfC0yciBjpJeAgYb8gl4ufsGg8b0GS4Mv9OTMFXzm4Al ax4OvcVVOEznB0CX4TjY+34gsJkbOWDPLSFBN2QgYV4zjWCoYw6H1xn5CMytYwTsbevJABFT V/WVwzQXf+MyBksiU2v0YLLHhjDGYnpOMpb1F1xmcrSFZHqK9nCmuWmDw+RlrpDM2uI4zvxs HSGZ8uVVDmOuG8GZfoONe+dICN8/ilUqkliV9EoEX74wm4vFdzinvCrSEelokMpGTjya8qFz dHbcYZJyo8fGdjCHnSkvemOu++DO52HUCkEv6vc4juAoFUoPtJYRDuPUWVo3OsB1WED50vud DcS/0dN09dv2v0NO1EVaO7VFOiw86Lz/Ms7VIr4BHTIhZ0VsUoxMofSVqKPlqbGKFElkXIwF HfyvIm2/sAltDgdZEcVDosMC9xipXEjIktSpMVZE8zCRs6BzSSIXCqJkqY9ZVVy4KlHJqq3I lYeLTghuBLMRQuqBLIGNZtl4VvU/5fCcXNKR37p3V+DlIrF9Xd2eNVw7v3LqZPDN4g/iqYX7 feGeIXZX6a17q5XJNTMXUszoWFvykx5/iWb/Y477w5XmRwHaNBt71XTGDynzw8TSfg9tqHSt 9PpsWGnWL2NorUX8rL4vw++cj0ZSP7tc6qOvrQ8rKJzwDnLxawt0K7i77Rl5TYSr5TIvD0yl lv0BG79mfbsCAAA= X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Use netmem alloc/put APIs instead of page alloc/put APIs in __page_pool_alloc_pages_slow(). While at it, improved some comments. Signed-off-by: Byungchul Park --- net/core/page_pool.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 147cefe7a031..cec126e85eff 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -551,7 +551,7 @@ static noinline netmem_ref __page_pool_alloc_pages_slow= (struct page_pool *pool, unsigned int pp_order =3D pool->p.order; bool dma_map =3D pool->dma_map; netmem_ref netmem; - int i, nr_pages; + int i, nr_netmems; =20 /* Don't support bulk alloc for high-order pages */ if (unlikely(pp_order)) @@ -561,21 +561,21 @@ static noinline netmem_ref __page_pool_alloc_pages_sl= ow(struct page_pool *pool, if (unlikely(pool->alloc.count > 0)) return pool->alloc.cache[--pool->alloc.count]; =20 - /* Mark empty alloc.cache slots "empty" for alloc_pages_bulk */ + /* Mark empty alloc.cache slots "empty" for alloc_netmems_bulk_node() */ memset(&pool->alloc.cache, 0, sizeof(void *) * bulk); =20 - nr_pages =3D alloc_pages_bulk_node(gfp, pool->p.nid, bulk, - (struct page **)pool->alloc.cache); - if (unlikely(!nr_pages)) + nr_netmems =3D alloc_netmems_bulk_node(gfp, pool->p.nid, bulk, + pool->alloc.cache); + if (unlikely(!nr_netmems)) return 0; =20 - /* Pages have been filled into alloc.cache array, but count is zero and - * page element have not been (possibly) DMA mapped. + /* Netmems have been filled into alloc.cache array, but count is + * zero and elements have not been (possibly) DMA mapped. */ - for (i =3D 0; i < nr_pages; i++) { + for (i =3D 0; i < nr_netmems; i++) { netmem =3D pool->alloc.cache[i]; if (dma_map && unlikely(!page_pool_dma_map(pool, netmem, gfp))) { - put_page(netmem_to_page(netmem)); + put_netmem(netmem); continue; } =20 @@ -587,7 +587,7 @@ static noinline netmem_ref __page_pool_alloc_pages_slow= (struct page_pool *pool, pool->pages_state_hold_cnt); } =20 - /* Return last page */ + /* Return the last netmem */ if (likely(pool->alloc.count > 0)) { netmem =3D pool->alloc.cache[--pool->alloc.count]; alloc_stat_inc(pool, slow); @@ -595,7 +595,8 @@ static noinline netmem_ref __page_pool_alloc_pages_slow= (struct page_pool *pool, netmem =3D 0; } =20 - /* When page just alloc'ed is should/must have refcnt 1. */ + /* When a netmem has been just allocated, it should/must have + * refcnt 1. */ return netmem; } =20 --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A538217A31E; Fri, 23 May 2025 03:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; cv=none; b=fWtnu2R5Q82WD5LInI+KaK01BjKx6sXuUu1ANlycPzV+/gJ2X/2PtfNxSJxxdamXqVJQP53oO9Jqy0hSmT5dZ7xzNepFhZBkWlmmCA5re7/RTn5rEr7q47QvW2qNQUxUHSNkr64Q3bVlzMcUPolGoosHLS/Lb8HmcAO619ri+ls= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; c=relaxed/simple; bh=Gi6KTuSH5vQAjkQ6UtpKBJxOWz2N8Ui11sOKVlAzsUM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=frYr2dD/+uPH+k0RT6IZ/oNWhQioLu/rFCeP0LTCoH/LPEFOzTZryWkzmg37wYS7TCSndceZPBzpv0eiINWe9x5iBCapU0SyUPGTyOsJF7QGh1qzworf06tr7mhzC2eNk7c5+LYIHoQV/W4bH9lYEmEM3yJDlwSLG2jFTTIoPXI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-a7-682feadc47f5 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 06/18] page_pool: rename page_pool_return_page() to page_pool_return_netmem() Date: Fri, 23 May 2025 12:25:57 +0900 Message-Id: <20250523032609.16334-7-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTYRzGOzvv3jOHi8PycjTKWkSwSjNU/laWQdEJ/BD5LTNdevAM55RN zUuRlWCZ2rKgsFmz0HRasyk6L0gur6QlmrnM1BaKhBo5FW9hXvDbw3P5fXlEpLQVeYqU6kRO o1aoZFiMxFPOLw8P/fbhj0x0uoLeVIGhfCEFXo9ahKA31hAwu/idAkdLO4ZXRfMk6D9nIpgz LZEw1manYKRkHEFjVi0J9gcdGHIzl0m4bSkVQE9NnhAeLxWTUJsxSkFfvR7DcMWqEMatuQg6 C8oQjOQFQ5vBDeY/ThLQYqoVwHxOIYZHvQYMvzJHCOj9YEfw7FYeAaYmmxCWF/Q4eC9bXfZN wNYV/KBYgzmJrSqVs9m2XpI1G+9h1jyTT7FDXxsx2/F0GbF1FoeAzb0zjdm/Y4OI/dPUj1lT dT9iuwwtFOsw775AXxKfiOZUymRO43MyUszrpitRwhuvlNnVbGEGcd8zm3ASMbQf019UgLb0 3W4HXteYPsDYbIvkunahfRmHvX2tIxaR9LSQGdMvC9aDHXQ4k7dUvTFG9H5mKmdpw5fQ/kzX 5Du8CfViyivfb4Cc6ABGNzy34UvXOg1fBql1KEMvUky9uYHaHHgwzaU2pCMkBmKbkZAq1clx CqXKz5tPVStTvKPi48zE2rklN1bCLMRMT6iVoEWEzFliEfvwUqEiWZsaZyUYESlzkbSOe/NS SbQiNY3TxEdoklSc1krsFCGZu+To/LVoKR2jSORiOS6B02ylApGTZwahjUq/UtGCQ3y9VvJP VRW/pZ+7+06QEllhLJMREPQPx/A3IxGsXnYz8BFB3d2R9sx921W6bBLVy9VndOYXbRfHDlme IHXgngEd53G+pqwmS15XF9IcjnbR8qhzlddDz6a5Xi2xLvgHpofl8kzswdM98X0uicafxwY+ Paw/LkNaXuErJzVaxX+2gf9z2AIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTYRzGe3fO3h1Ho+OyPCokraRS0gy1P5kiRfQSJfYhohs59OCWOmVT 0SjQFDSda5kfSmcsRPPKbIqXFLNpXkipvDHN1DStTK284Q1Mjb79+D0Pz5eHoaRFtCOjVMXw apU8QobFtDjQN/no0JSH4liGmQGDqQxD6XI8vBitFYKhpBrBwsonEcy3tGHIf75EgeF9Cg2L plUKJlrHRDBSOElDQ2oNBWMP2zFkpqxRcL+2SADNeR1C+FCtE0L2agEFNYmjIuh5ZcAwXLYh hElLJg0dOcU0jOgCoNW4F5beTSNoMdUIYEmbh+FxtxHDeMoIgu7mMRpyk3QITI1WIawtG3CA jFQVDwhIXc5nETGaY0llkStJt3ZTxFzyABPzXJaIDPU3YNL+ZI0mdbXzApKZPIvJn4lBmvxq 7MMk//tvATFV9dGk09giCrK9Jj4Vykco43i1h3+wWKGfraCjy53jFzbShYkowzEd2TAc68Wl dc3jLcbsIc5qXaG22I715ObH2uh0JGYodlbITRjWBFvBbvYmp1utoreYZl24Ge3qtpew3lzn 9Ev8b9SZK61o2h6yYX04/fDitpdudup7B0V6JDaiHSXITqmKi5QrI7zdNeGKBJUy3j0kKtKM Nv8rvLf+qBYt9JyzIJZBsp2Sw5EeCqlQHqdJiLQgjqFkdpK3k+4KqSRUnnCHV0fdUsdG8BoL cmJomb3k/BU+WMqGyWP4cJ6P5tX/UwFj45iIum5/7a/061OJZrRah/xxPVadmZveVX9jqaah 7sLJidP25cXfYq0Sn6R9nsct/UG+HQEHFCfKrxdoRtUuLZemDpQe/NjppcwObHNrknz5Md61 xzP17DqO2/8mRe/n8FOykp92xK1fmnu3Ku1p2NVeMml/+bWTf1an7cVnjuKBkDCLjNYo5J6u lFoj/wvFk5rouwIAAA== X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that page_pool_return_page() is for returning netmem, not struct page, rename it to page_pool_return_netmem() to reflect what it does. Signed-off-by: Byungchul Park Reviewed-by: Mina Almasry --- net/core/page_pool.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index cec126e85eff..1106d4759fc6 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -371,7 +371,7 @@ struct page_pool *page_pool_create(const struct page_po= ol_params *params) } EXPORT_SYMBOL(page_pool_create); =20 -static void page_pool_return_page(struct page_pool *pool, netmem_ref netme= m); +static void page_pool_return_netmem(struct page_pool *pool, netmem_ref net= mem); =20 static noinline netmem_ref page_pool_refill_alloc_cache(struct page_pool *= pool) { @@ -409,7 +409,7 @@ static noinline netmem_ref page_pool_refill_alloc_cache= (struct page_pool *pool) * (2) break out to fallthrough to alloc_pages_node. * This limit stress on page buddy alloactor. */ - page_pool_return_page(pool, netmem); + page_pool_return_netmem(pool, netmem); alloc_stat_inc(pool, waive); netmem =3D 0; break; @@ -713,7 +713,7 @@ static __always_inline void __page_pool_release_page_dm= a(struct page_pool *pool, * a regular page (that will eventually be returned to the normal * page-allocator via put_page). */ -void page_pool_return_page(struct page_pool *pool, netmem_ref netmem) +static void page_pool_return_netmem(struct page_pool *pool, netmem_ref net= mem) { int count; bool put; @@ -830,7 +830,7 @@ __page_pool_put_page(struct page_pool *pool, netmem_ref= netmem, * will be invoking put_page. */ recycle_stat_inc(pool, released_refcnt); - page_pool_return_page(pool, netmem); + page_pool_return_netmem(pool, netmem); =20 return 0; } @@ -873,7 +873,7 @@ void page_pool_put_unrefed_netmem(struct page_pool *poo= l, netmem_ref netmem, if (netmem && !page_pool_recycle_in_ring(pool, netmem)) { /* Cache full, fallback to free pages */ recycle_stat_inc(pool, ring_full); - page_pool_return_page(pool, netmem); + page_pool_return_netmem(pool, netmem); } } EXPORT_SYMBOL(page_pool_put_unrefed_netmem); @@ -916,7 +916,7 @@ static void page_pool_recycle_ring_bulk(struct page_poo= l *pool, * since put_page() with refcnt =3D=3D 1 can be an expensive operation. */ for (; i < bulk_len; i++) - page_pool_return_page(pool, bulk[i]); + page_pool_return_netmem(pool, bulk[i]); } =20 /** @@ -999,7 +999,7 @@ static netmem_ref page_pool_drain_frag(struct page_pool= *pool, return netmem; } =20 - page_pool_return_page(pool, netmem); + page_pool_return_netmem(pool, netmem); return 0; } =20 @@ -1013,7 +1013,7 @@ static void page_pool_free_frag(struct page_pool *poo= l) if (!netmem || page_pool_unref_netmem(netmem, drain_count)) return; =20 - page_pool_return_page(pool, netmem); + page_pool_return_netmem(pool, netmem); } =20 netmem_ref page_pool_alloc_frag_netmem(struct page_pool *pool, @@ -1080,7 +1080,7 @@ static void page_pool_empty_ring(struct page_pool *po= ol) pr_crit("%s() page_pool refcnt %d violation\n", __func__, netmem_ref_count(netmem)); =20 - page_pool_return_page(pool, netmem); + page_pool_return_netmem(pool, netmem); } } =20 @@ -1113,7 +1113,7 @@ static void page_pool_empty_alloc_cache_once(struct p= age_pool *pool) */ while (pool->alloc.count) { netmem =3D pool->alloc.cache[--pool->alloc.count]; - page_pool_return_page(pool, netmem); + page_pool_return_netmem(pool, netmem); } } =20 @@ -1253,7 +1253,7 @@ void page_pool_update_nid(struct page_pool *pool, int= new_nid) /* Flush pool alloc cache, as refill will check NUMA node */ while (pool->alloc.count) { netmem =3D pool->alloc.cache[--pool->alloc.count]; - page_pool_return_page(pool, netmem); + page_pool_return_netmem(pool, netmem); } } EXPORT_SYMBOL(page_pool_update_nid); --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A543C22129A; Fri, 23 May 2025 03:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; cv=none; b=EKL9iWjsFb9Wa7FlrCDWkyQhx61I6TQzizn0UWHbPyzKN0aR3Y2y8It4bH5Y1MnahRjK+kKRWHGIGVttZEGEbFU6sTb74TU8JI5+sjXK2jl+qXk015m3EA03kaVNaUFpEe3d8ROzwzB6gBM0l2zkPmEgj2lXQ6BQsnusfCXM3Ps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; c=relaxed/simple; bh=2rd10fUytpnKnU502rTnHmJRW6qjn3HdLUwj8HXCC+E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=D3X0NSf3OlnYbrQos4dokoYUR1mn+enFW2LvdZ657n7bL9C1pDy6jSW/hrNPPWpVax0f4/oiBcKC+qiBpJELtnt0YphgrZyx10jX3StXMwL5+kWXQrps7eh0R5whfTh2AxbBV/SRiH/H2G6rdgcsDrml7iZZjX479/vnzA4LqE0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-b1-682feadc71ab 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 07/18] page_pool: use netmem put API in page_pool_return_netmem() Date: Fri, 23 May 2025 12:25:58 +0900 Message-Id: <20250523032609.16334-8-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRjG/Z/zPxeXi9MSOxplLSKQ1AyzF7Trp0OfulAfiqiRh7bSZXOu TSq8QSRpUhZlUxelzUut1mXTSmotLbrMTGNpTltMyMzKtamtm0v69oPneX7vh5clZU4cx6rU WlGjVmTJaQmWfI66mPhuOFm5zGWOBaOlmYamCT1cGbRTYGy8g+D7ZB8DfmcHDZcuBkkwukow BCw/SPC1exkYqB/CcO+YjQTvySc0lJWESCiymwnovFNOQeWPOhJsBYMMvG410uBp/kPBkKMM w9OqBgwD5Wuh3RQDwWcjCJwWGwHBE9U0nO4y0fChZABB1yMvhguF5QgsbW4KQhNGeu1C4VbD W0JoqepnBJM1T7hpThBK3V2kYG08TgvWsVOM8O7NPVp4ci6EhRa7nxDKikdp4ZuvFwtf2npo wXKrBwvPTU5G8Fvnb+S2SzIyxSyVTtQkr94tUdr6O3HOYJS+qHcAF6AXklIUyfJcKn/+dzH9 n5+fHKPCTHNLeLd7kgxzNJfC+70duBRJWJIbpXifMUSEg9ncJt5V08yEGXOL+adtvqkSy0q5 FfzZa0ennfF80/UH/zyRXBpf4Qn8uyWbqtzt7mXCTp4LMPyNCy3E9CCWf2h24wokNaGIRiRT qXXZClVWapLSoFbpk/YcyLaiqd/WH/m5w47GOrc4EMcieZTULklWyiiFLteQ7UA8S8qjpY+H kpQyaabCkC9qDuzS5GWJuQ40l8XyOdLlwUOZMm6vQivuF8UcUfM/JdjIuAKkq6rVnl3ZT1Uk VEbMsnbP01rT1uxZ5bod3Lx+qfr+59aY8YBn5/q+ba/mk58Ga+OGdWf0vo/VFeNXDKcC29QG w2FjRl5hq3fRzJENOdSv+Pyvur1L31fVbpXXDK/ruJoRvKy9xM5bXHTQ89C6T9aa3rci54Zr QeL3SmKGp24k/epLOc5VKlISSE2u4i8Skc6O1wIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTYRyHe3fenR2Xo+MSO5gQnApLaiZo/KkI7UMeCko/hFIf8pBHt3TT NmcaJKaSKV7LLuiUmeY9J1O8NJGY5i1F0xTzOgwlIjSveaVc0bcHnh/Plx9FyMuxK6XSxAha DR/JklIsvXY++fTkd0/lmdL+/WAw1ZBQvREH5bZmMRiqGhGsbk5IYKWji4SS4nUCDAMpGNZM WwTMdc5KYKZsHkNrahMBs9ndJGSmbBOQ1FwhgvbCHjEMNmaJIW/rDQFNiTYJDL8zkDBd81sM 89ZMDD35lRhmsnyh0+gC6x9/IOgwNYlgPaOQhGdDRhK+pswgGGqfxVDwKAuBqW1MDNsbBtKX 5Roqv4i4lvwpCWc067n6Cg8ufWyI4MxVaSRnXn4q4SZHW0mu+9U25lqaV0RcZvICyS3NjWNu sW2E5Eq+/RRxpoYRzPUZOyQBTjelF0KFSFWsoPW8GCJVNk0N4mibY1zS+AxORP3SdORAMbQ3 05e9LLYzSbszY2ObhJ2daS9mZbYLpyMpRdALYmbOsC2yi4N0IDNQVCOxM6aPMz1tc3sjipLR PsyL2oR/zSNMdd37vx0H+iyTM71G2lm+N7F8HpfkIKkR7atCzipNrJpXRfoodBHKeI0qTnEn Sm1Ge/eVPdzJbUarw/5WRFOIdZSdUHsq5WI+VhevtiKGIlhn2Yd5hVIuC+XjHwjaqNtafaSg s6LDFGYPya4ECSFyOpyPESIEIVrQ/rciysE1EfnpE3Y/Xcq4NVrs3e2u7ypQWwKu5z3xt9W1 11oZ9kB+b+kvG9+16G5i0+4LHm9DRixLqRWvw3YsCu3uiMsNHLacS1ZbJsKDnII967P49MB4 tmjJ/JJ3PHpP6tb7uHHH7WSBLNjv1OWKc2X6RsfiurtMrKJw9Jjm6mANmvB+zmKdkvfyILQ6 /g85hwLaugIAAA== X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Use netmem put API, put_netmem(), instead of put_page() in page_pool_return_netmem(). While at it, delete #include since the last put_page() in page_pool.c has been just removed with this patch. Signed-off-by: Byungchul Park --- net/core/page_pool.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 1106d4759fc6..00bd5898a25c 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -20,7 +20,6 @@ #include #include #include -#include /* for put_page() */ #include #include #include @@ -711,7 +710,7 @@ static __always_inline void __page_pool_release_page_dm= a(struct page_pool *pool, /* Disconnects a page (from a page_pool). API users can have a need * to disconnect a page (from a page_pool), to allow it to be used as * a regular page (that will eventually be returned to the normal - * page-allocator via put_page). + * page-allocator via put_netmem() and then put_page()). */ static void page_pool_return_netmem(struct page_pool *pool, netmem_ref net= mem) { @@ -732,7 +731,7 @@ static void page_pool_return_netmem(struct page_pool *p= ool, netmem_ref netmem) =20 if (put) { page_pool_clear_pp_info(netmem); - put_page(netmem_to_page(netmem)); + put_netmem(netmem); } /* An optimization would be to call __free_pages(page, pool->p.order) * knowing page is not part of page-cache (thus avoiding a --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A5511221570; Fri, 23 May 2025 03:26:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; cv=none; b=HFn71WZeosef8JUoAtm65wrY4V1YTbIhAZhMeuLEn7z08IeXpzEbWcn+EUPt+qJTUuvGUtP1dERhdqtsNO7xTmS6P3EHsV3mg4R5gCs/5gAEs13pRcAu+HoyCMo7oc+EdYuIBDljx/+eVu8xdM2u1iNbE6t8sT5LvHUmvQVsbNo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970787; c=relaxed/simple; bh=iLBsNwQGs9JG8J4PoJjo2V7qLU09wpvyguveTj5CO20=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=fkcBJUoi9MOVzM8ViSXOeffU6hMnD3ByVkxkxDGCyWtgCOzcBX40EQ6Jt7L681QaGytyy8wlx6YuAYK5tbjOB8HULR3IKsBUFIt01iuTa0wvRhr6aa/sC3/ErHZs9aFe4KrFknNDpDoLFjTMWk7V6XvN+TNur9D5/gwkLatSnok= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-bb-682feadc7dbc 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 08/18] page_pool: rename __page_pool_release_page_dma() to __page_pool_release_netmem_dma() Date: Fri, 23 May 2025 12:25:59 +0900 Message-Id: <20250523032609.16334-9-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRW0hTcRzH/e+cnXMcDg7L6mRSOZFKyMuw+gkV9lCdl8JuCPagh3Zwyzll XtJAsTLUlRcssmzVJDJvsVims7zkvMYUZaVNM69NUMpyy+WlKKf09uH7/fJ5+VKYxIz7UEp1 Cq9RcyopIcJF37zK943OBStCHKW+oDPUElCzlA7PJkxC0FXXI/i5/IkEZ0c3AU/KXRjo+nNw WDSsYGDvmiJhvGIGh6bcBgyminoIKMhZxeCaqVIAA/WFQriz8hSDhuwJEt6/1hEwVvtXCDPm AhzelVXhMF4YAV36LeCyfEXQYWgQgOvWQwJuW/UETOeMI7C2T+Hw4GohAkOLTQirSzoiwo+t qxoWsI1ln0lWb0xlX1YGslqbFWON1fkEa3SUkOzoUBPB9txbxdlGk1PAFlyfJ9gF+wjOfm8Z JFhD3SDO9uo7SNZp3BFJR4sOyXmVMo3XBB+JFSnyZlqFSTavdOvELzIbDYm0yJNi6DCmutxJ ahG1zjdqz7hjgt7N2GzLmJu96VDGOdWNa5GIwuh5IWPXrQrcxSY6nlmw2kk343QAM97YQLg9 Yno/87guYEO/k6l58Xbd40kfYIrHFgk3S9Ymbz6MkBubZZJxzUZs8DamrdKGFyOxHnlUI4lS nZbAKVVhQYoMtTI96GJighGtPVuR+fuCCTkGzpoRTSGpl9gkClZIhFxackaCGTEUJvUWd84E KSRiOZdxhdckxmhSVXyyGW2ncOlWscx1WS6h47gUPp7nk3jN/1ZAefpko+hHXwaGbx6f7Ltv 6dsz9zuztSTEl7KH5jWf9NC+4mSk8fzz0lPhbe10XUBvqE/ctP8lWbHFpU6yOI5F8a2Hcxc8 i4ZOBHfLZrNPh9VG4UuTMefKNeFekf2xuf5ayVJNa3e+XPUj62Mm94euyIqBZr/iXZs7K+7u rUpxtUwePSjFkxVcaCCmSeb+AWqiMS/VAgAA X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRyG+++cnXNcTo9L8mBSNJJikG6o8YtuEoInA4u+BIHlyoNbuimb LhdElhPN0kwry2atJPMGsylOU8zmnYRiXlhmTq2ti2F5TV1RLejbw/u+PF9eChNV4cGUUp3B adTyVDEhwAXxe3J2jn8JV0gt+f5gNNcTULeSBU8mW/hgrG1GsLj6loSF7j4CKh8uY2B8ZcBh ybyGgat3mgRnlRuH9jwrBtPX+wkoNHgwuNxSzYOuigE+vG4u4sPNtccYWLMnSRh6ZiRgov43 H9y2QhwGymtwcBZFQ69pIyy//Iqg22zlwfK1CgJK7SYC3hucCOxd0zjcu1SEwNzh4INnxUhE i9mmmjc8trX8HcmaLJlsY7WELXDYMdZSe4VgLfMlJDs+2k6w/Xc8ONvassBjC3NmCXbONYaz 3zpGCLby03cea24awdlBUzd5NOCEYG8Sl6rUcZrw/YkCRb77OT/d4Ztln/xBZqNRQQGiKIaO ZHLrjxUgH4qgtzMOxyrm5UBaxixM9+EFSEBh9CyfcRk9PG+xgU5h5uwu0ss4Hco4W62E1yOk o5gHTaHemKG3MHUNnf88PvQupnhiifCy6O+kbXiMLEYCE1pXiwKVap1KrkyNCtOmKPRqZVbY mTSVBf19r+rCzxstaHEo1oZoCol9hTtU4QoRX67T6lU2xFCYOFDY4w5TiIRJcv15TpN2SpOZ ymltaBOFi4OEcce5RBGdLM/gUjgundP8b3mUT3A2Ojv8SNn+tDNmCsDZ1B5V2tGjPzQV73t1 QrP1gNg43+a8qzXu1ika9gXHBvV8ToysQJ1rJZIXZRe3OTff9g9sC5mJPRk32GudjSlrWPSz hEjdHxNGpX55ZfKIgPU1uZ7TCwb1EETISu5LbimPNKZLD9v8Zb/0CbncuQ/BM8kHxbhWIZdJ MI1W/ge/8HDcuQIAAA== X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that __page_pool_release_page_dma() is for releasing netmem, not struct page, rename it to __page_pool_release_netmem_dma() to reflect what it does. Signed-off-by: Byungchul Park --- net/core/page_pool.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 00bd5898a25c..fd71198afd8b 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -673,7 +673,7 @@ void page_pool_clear_pp_info(netmem_ref netmem) netmem_set_pp(netmem, NULL); } =20 -static __always_inline void __page_pool_release_page_dma(struct page_pool = *pool, +static __always_inline void __page_pool_release_netmem_dma(struct page_poo= l *pool, netmem_ref netmem) { struct page *old, *page =3D netmem_to_page(netmem); @@ -721,7 +721,7 @@ static void page_pool_return_netmem(struct page_pool *p= ool, netmem_ref netmem) if (static_branch_unlikely(&page_pool_mem_providers) && pool->mp_ops) put =3D pool->mp_ops->release_netmem(pool, netmem); else - __page_pool_release_page_dma(pool, netmem); + __page_pool_release_netmem_dma(pool, netmem); =20 /* This may be the last page returned, releasing the pool, so * it is not safe to reference pool afterwards. @@ -1139,7 +1139,7 @@ static void page_pool_scrub(struct page_pool *pool) } =20 xa_for_each(&pool->dma_mapped, id, ptr) - __page_pool_release_page_dma(pool, page_to_netmem(ptr)); + __page_pool_release_netmem_dma(pool, page_to_netmem((struct page *)ptr)= ); } =20 /* No more consumers should exist, but producers could still --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 174DF222578; Fri, 23 May 2025 03:26:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970789; cv=none; b=VR1efZmlT6ERmfYnTDey6Sc3NYOOY7ydtSz/cHOZsHNQ1dPoRVI4VkP4sriBl7EbC8OWeyS+Wfej7URr2xqZrlA3GYvQ2skis2caZ2oT/IQqzYiRWIEL3HcCg0RsR0jtwg04P4pi9Sl9Nc9smDW4coEhcQddH4D/CPL6JnsyDtM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970789; c=relaxed/simple; bh=JwC5FopaTIpoUXDYp0ofYPsRLafHFGG+4lEMajJog5g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=Uu09TpAK6hI7aRf6AxOh7qBrl+wuNsX911mLbUZ/wmE3SEy+iBBlhFnp3zLomiY1LkqNbWYFCi4LyyevH5Nq7msanoOgf5Dy+7zYRKOXQz/1Lf5vZ7Jmsg8V2bkrnOawwNZqmD3Yqz+spi7PwJ5D/Apy4yyJdovZ/k57dFC4dJE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-c5-682feadc1c29 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 09/18] page_pool: rename __page_pool_put_page() to __page_pool_put_netmem() Date: Fri, 23 May 2025 12:26:00 +0900 Message-Id: <20250523032609.16334-10-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRWUwTYRSF/TvTmaFhwqQSHdGIVo2BIIsBvQ/E8OZIfJCIslTABkbbsFoW wahBwShIgQBBgZIUkcrSpKQiFK1ECrJERWSzIlsw8OACEWhlEZVCfPty7jnfy6UwcQfuQikS UnhlgixOQohw0Q/HR0fGvnrJvYd1rqDW6whoWE6HJ1NGIajrmxEsrXwmYbGzm4DqKhsG6vfZ OFj1qxjMdE2TMKmdxcF0twWD6YIeAlTZaxjcNtYKoL85XwglqzUYtGROkTD4XE3AhO6vEGbN Khx6y+twmMwPgC7NDrC9+Y6gU98iAFteJQHFAxoCvmRPIhjomMah4lY+An2bRQhry2oiYD/X VPdJwLWWj5OcxpDKPa1153ItAxhnqM8hOMNCEcmNjZgIrufhGs61GhcFnCprjuB+zozi3Hzb MMHpm4Zx7q2mk+QWDXvPMOEi/xg+TpHGK71OXBTJB4ztWNI9Jn2uIIvMRKV0LqIolvFlVb+O 5yKHTcxp/iCwM8EcZi2WFczOzowPuzjdjeciEYUxc0J2Rr22WdrOSNmy+m+4nXHmEGvSagm7 k2aOsapa/y2nK9vQ+GrT47ARF05YCTuLGT/2xdAoaXeyjJVkVSoL2hrsYttrLXghojVoWz0S KxLS4mWKOF9PeUaCIt0zOjHegDZeq73xW2pEC/1nzYihkMSRNoq85GKhLC05I96MWAqTONOv Zz3lYjpGlnGNVyZGKVPj+GQz2k3hkp30UdvVGDFzWZbCx/J8Eq/8fxVQDi6ZiLgQVXnnpcm7 75QgJ881dj2oO8DjpDZw1BAxWFR16eP6yuy+6hU+mHEqPB/Nu+neHXQqGaug9lD9PaPWyOD7 S36BYdKom5EHHCbC50/HYGNZsREhbeOWELqo2Jox99jJQ/rMjVyq6R3pe/CHHiq9EnruelDo jCmsqgwl2hq9oiV4slzm444pk2X/ABimipjWAgAA X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRyG+++cnR1Hg+McdrAPxkpMoZmQ9cus/BD0rygkSEE/5MhDG17Z 1DQwLA0v5SUtKZu2FOe8MVuySw6taV5Q0Waad8XQpMLKG+q6qdG3h/d9eb68NCGuJj1oZVwi p4qTx0gpISm8dCLj0MRnP8Vha6sYNIZ6CurWU6B6xsIHTa0JwcrGuACW2zspqHy+RoCmP5OE VcMmAXMdswKY1s2TYMsyEzBb0EVBXqaTgDsWPQ/ayrr5MGDK58PDzSoCzOkzAhh8paFgqv4P H+bteSR0l9aQMJ0fDB1ad1jr+Yqg3WDmwdr9MgqKHVoKPmZOI3C0zZLw9HY+AkPLCB+c6xoq WIqbakZ52Fo6KcBaYxJ+qffFuSMOAhtrcyhsXCoS4IlhG4W7HjtJbLUs83BexiKFf8yNkfhb yxCFKxe+87ChaYjEvdp2QYhruDAoiotRJnMqv1ORQoXD8oZIyGZSFgsyBOmoRJSLXGiWOcLm mN7xtplivNmRkQ1imyWMP7s820nmIiFNMIt8dk7j3Bm5MRHsk9ov5DaTjBdr0+moXETTIuYo m6cP+uf0ZOsaX+94XLbiwqlVapvFTADb/H5MUIiEWrSrFkmUccmxcmVMgEwdrUiNU6bIrsXH GtHWfbq0nw8saGXwrB0xNJLuFh2M9VOI+fJkdWqsHbE0IZWI3s7LFGJRlDz1JqeKv6pKiuHU drSXJqV7ROfDuEgxc12eyEVzXAKn+t/yaBePdJR2uevWL+J4xMmJewkGu2fYjXN9IQ19tgXj PltUyQsTtoZzPYFX7jYOV7v+rno0GrBQbyat4pLQSc8wRUOfW4Xe3TunXxgm82jZnzZgS6nU Nj/zadVV+Jwpaq1LcnhdMEefXqfGl5IkF/XKwOZjzvIPrlmh2YO9nw6UF0vqpnqkpFoh9/cl VGr5X7RkK5u6AgAA X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that __page_pool_put_page() puts netmem, not struct page, rename it to __page_pool_put_netmem() to reflect what it does. Signed-off-by: Byungchul Park --- net/core/page_pool.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index fd71198afd8b..01b5f6e65216 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -789,7 +789,7 @@ static bool __page_pool_page_can_be_recycled(netmem_ref= netmem) * subsystem. */ static __always_inline netmem_ref -__page_pool_put_page(struct page_pool *pool, netmem_ref netmem, +__page_pool_put_netmem(struct page_pool *pool, netmem_ref netmem, unsigned int dma_sync_size, bool allow_direct) { lockdep_assert_no_hardirq(); @@ -849,7 +849,7 @@ static bool page_pool_napi_local(const struct page_pool= *pool) /* Allow direct recycle if we have reasons to believe that we are * in the same context as the consumer would run, so there's * no possible race. - * __page_pool_put_page() makes sure we're not in hardirq context + * __page_pool_put_netmem() makes sure we're not in hardirq context * and interrupts are enabled prior to accessing the cache. */ cpuid =3D smp_processor_id(); @@ -868,7 +868,7 @@ void page_pool_put_unrefed_netmem(struct page_pool *poo= l, netmem_ref netmem, allow_direct =3D page_pool_napi_local(pool); =20 netmem =3D - __page_pool_put_page(pool, netmem, dma_sync_size, allow_direct); + __page_pool_put_netmem(pool, netmem, dma_sync_size, allow_direct); if (netmem && !page_pool_recycle_in_ring(pool, netmem)) { /* Cache full, fallback to free pages */ recycle_stat_inc(pool, ring_full); @@ -969,7 +969,7 @@ void page_pool_put_netmem_bulk(netmem_ref *data, u32 co= unt) continue; } =20 - netmem =3D __page_pool_put_page(pool, netmem, -1, + netmem =3D __page_pool_put_netmem(pool, netmem, -1, allow_direct); /* Approved for bulk recycling in ptr_ring cache */ if (netmem) --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 45ACA223706; Fri, 23 May 2025 03:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970791; cv=none; b=rPr4ufASrHFXOK7ltcKhNlmtKfivqABNGVGr/aiRTzKUzE0dDypwL8edtg3e6eO0ZMrmvGvmj4FVfLINjzX14b6D0P+CmumshugM1dpg7/ofN5hHXl4CUJ1bpZl2BriTO1+tpoWmYuc01LYR5BiXakS2j8SJVdB8r81XlhRl1h4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970791; c=relaxed/simple; bh=Q25QQvMCVB4ttatlEs0Z7kGrOH8zr4XA0WKeasesxB0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=LkUwg25hmCshNWfqbSiGeZdEE6ndgRPXz2eI9Tr9hjlgWNTqTxANd1ac4CuXXxYiseasGeEFy04UMDScGVz8AgU5sP5MIV3cFbv8LKR6uvP+JE2sqdcYtyAUxlzOZBzviwnOkFMJCZcJtGcip5KUwmufT2D+0xVGOL9Rk+TxCaw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-cf-682feadcff71 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 10/18] page_pool: rename __page_pool_alloc_pages_slow() to __page_pool_alloc_netmems_slow() Date: Fri, 23 May 2025 12:26:01 +0900 Message-Id: <20250523032609.16334-11-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRaUiTcRzH++959jzPhqOHKfWokDSQUnAemf2gA9+Ef3oVZJZZ1MinNtQp m5qKkpkRDV3ildYTTCJvWMxrHnTMeZGmadY0U/EKpBRPPMJySu8+fK83X4aQ20kPRqNN5HVa VayCkpLS3y5lfmPz/uqAn6XeIJhrKajZSIGKSasYhOpGBKub32lYsXdR8KpsnQChP5uENfMW AbOdUzRMlM+R0Pa4iYCpp90U5GZvE5BlrRTBQKNRDIVbrwloypykYahFoGC89q8Y5my5JPQ8 ryJhwhgKnaZDsP7xFwK7uUkE6zkvKSgYNFEwnT2BYLB9ioQXD4wIzG8dYtjeEKjQo7i+akSE m5//oLHJkoTrKn2xwTFIYEv1EwpblvNpPPa1jcLdJdskbrauiHDuwwUKL82Oknjx7TCFzfXD JO412Wm8Yjlykb0mPRPNx2qSeZ3/uVtSdZZ5R5TQLkkRSjtQJsphDEjCcGwwN20vFhsQs8eG zAtOmWKPcQ7HJuFkNzaQW5nqIg1IyhDsgpibFbZFTsOVjeF6hmx7IZL15j58KqedLGNDuGc1 A8T+vhdX8+b9Hkt29bzxNcrJcvYk1/pllHaOcuwSzU13FFP7BXfuQ6WDzEMyEzpQjeQabXKc ShMbrFSnajUpytvxcRa0+215xp8oK1oeuGRDLIMULjKr1F8tF6uS9alxNsQxhMJN1jGnVMtl 0arUNF4Xf1OXFMvrbciTIRWHZUHr96Ll7F1VIh/D8wm87r8rYiQemaiitDLrkZEK53eiGu73 ep4KuKZMt3tH5EeG4NM+J5r60y5rS94tPgtvjOjz62wos86X2M6uBn4rmJgJc9dPHvZZGNpJ V5+UQsWd5chsr5aiwuNXfxklQsaYq/IGU3E6NOaK6+J5YTOjdSZopPx63+cuc9hB34Qifbhn HZ9SJ5lVkHq1KtCX0OlV/wANXJze1wIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAAzWRW0hTcRzH+59zds7ZcnGclid9CBaiCGlixg8KkV48GmVvRUQ58uCGm8qm MqvBUilazrwUeZm2Eu/WdIrOslWbV7ISzUumThaaRJjmBXXdVOjtw+fzffvSuKSW8KcVKem8 OkWmlJIiQnT2RM6RqW9h8qOtG35gsjSR0LihhdpZmwBMDe0IVjc/U7DS3UdC1eN1HEwfcglY s2zhMNfrpsBVM09A1+0OHNz3+kkw5npwyLbVYeCsGBDAUHu+AO5vVePQoZ+lYOS5iYSZpr8C mHcYCRgoqyfAlR8NveYDsP72O4JuSwcG63kVJBQPm0n4kutCMOx0E1B+Mx+BxT4hAM+GiYyW cm31nzCus2ya4szWDK61LoQzTAzjnLXhDslZfxZR3NRYF8n1l3gIrtO2gnHGnEWSW56bJLgf 9lGSq1pYwjhL2yjBDZq7qXPeF0UnE3mlIpNXh0UliOTZlj9YmlOoNZX2ID3Kow2IplnmGGvQ xxmQkCaZIHZiYhPfYV8mnF1x9xEGJKJxZlHAzpk82E7wYZLZgRHH7ohgAtk372uoHRYzx9mH jUO7nmUOsY3Nr3dZuO0LZtbIHZYwkeyLj5NUARKZ0Z4G5KtIyVTJFMrIUE2yPCtFoQ29mqqy ou37anS/Cm1odSTGgRgaSb3EwaowuUQgy9RkqRyIpXGpr7hnPlQuESfKsq7x6tQr6gwlr3Gg AJqQ+onjzvMJEiZJls4n83war/5fMVror0eSWHZzgdJ0UfuKO/jDyuKWCPupIt10zP6y+pen 27xb2u9+bQ7qGbNGl2ivXwpOb71sjp0ZT1r3zC1oHmHezZM2qjokwn6QDLgQlesTZFwO1Jea XNklo2cqkqt+6zqXnC2FKKo08ZaX8F35A61ufNBdWfnqmSH+SfyNiqeNe1elhEYuCw/B1RrZ P3u36Dq6AgAA X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that __page_pool_alloc_pages_slow() is for allocating netmem, not struct page, rename it to __page_pool_alloc_netmems_slow() to reflect what it does. Signed-off-by: Byungchul Park --- net/core/page_pool.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 01b5f6e65216..1071cb3d63e5 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -543,7 +543,7 @@ static netmem_ref __page_pool_alloc_large_netmem(struct= page_pool *pool, } =20 /* slow path */ -static noinline netmem_ref __page_pool_alloc_pages_slow(struct page_pool *= pool, +static noinline netmem_ref __page_pool_alloc_netmems_slow(struct page_pool= *pool, gfp_t gfp) { const int bulk =3D PP_ALLOC_CACHE_REFILL; @@ -615,7 +615,7 @@ netmem_ref page_pool_alloc_netmems(struct page_pool *po= ol, gfp_t gfp) if (static_branch_unlikely(&page_pool_mem_providers) && pool->mp_ops) netmem =3D pool->mp_ops->alloc_netmems(pool, gfp); else - netmem =3D __page_pool_alloc_pages_slow(pool, gfp); + netmem =3D __page_pool_alloc_netmems_slow(pool, gfp); return netmem; } EXPORT_SYMBOL(page_pool_alloc_netmems); --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 70135224AE1; Fri, 23 May 2025 03:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970790; cv=none; b=Ebvz3RmJlIYTruP+i6RXBOA90qPK8tVhXPFyDHAVPeLPnQdwMp5FPdtNo/SWKg/GjbcGw5qai1qliCDIvm3GnDsbkTiNNHdkyULg6mZBvsQbW/EbOBGHm1vhXaVGY89kSm3jh5WCIGaU73kxAPz8R6lqFXxfT9mxSl1HqcsTqpk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970790; c=relaxed/simple; bh=x0o0tW2WrwqtIJ0+MQrYN1XeLwC96YAL6ESpevfMv+c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=aKxAgc5xbTnBlQTJ/EYVID92Xcq3vZBfP/FGZFrj7/KSDRZQzUQG5MrPghQqRX7US+NzFalLbq/VysBS2wJSkirKzrsaQusuk94GqAjdYxOjdHd8tALvsDFv3mSYn328f8qXeqgwL+vTW79baVSm15vUF/V+3C0UpS2x4QHhExM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-d9-682feadc0d0a 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 11/18] mlx4: use netmem descriptor and APIs for page pool Date: Fri, 23 May 2025 12:26:02 +0900 Message-Id: <20250523032609.16334-12-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRbUhTYRiGe3fevee4Whxm6FHJamGF0MzQeNDoE+P0ow+M+lGQjTy54aay qWlUbGlFoiYVJbpiUZpfMFmms8RqaloWiWnMrymKSmFKmw51hrk+/l3cz83FDQ9DyVpwMKNO SRd0KUqNnEiw5Meax9sHv0eodpRVbwOTpYZA9XwWPBuxicFUVY9gdmGABndrO4Enjz0UmD7n YpizLFIw/m6UhuHyCQxNNxsoGL3dQaAg10vBNVuFCLrqC8Vwb7GMggbDCA1fXpoIOGuWxTBh L8DwvqQSw3DhPnhnDgBP5xSCVkuDCDz5Dwnc7TYTGMsdRtDdMoqh1FiIwNLsEIN33kT2beLr KvtEfGPJEM2brRn884pwPs/RTfHWqluEt7ru0Pzg1ybCdxR7Md9oc4v4gpxpwv8c78f8THMv 4S11vZj/aG6lebc19Dh7WrI7UdCoMwVdxJ5zEpXjwy2Slh+T5RwpExvQkiIP+TEcG8VdN9ro /zxTc13kY8Ju5RyOBcrH69hIzj3ajvOQhKHYaTE3bvL+Kfmzh7lJl3elxDCYDeOabqh9KGV3 cc7u+L/KDVx17Zs/Gr+VuMg5R3wsY6O5Vz39tE/JsXM0N/Twwb8NQdzbCgcuQlIzWlWFZOqU TK1SrYlSqLJT1FmK86laK1p5bfmVpTM25Oo6YUcsg+RrpDZJhEomVmbqs7V2xDGUfJ20bUKh kkkTldmXBF1qgi5DI+jtKITB8kDpTs/FRBmbpEwXkgUhTdD9v4oYv2ADOkssoVO3B1Yn6L/N OvosL17HtB7Bg4377caDBetDY68a8M1DqbBl8IAis/1Tf0K+32Tx3K+lqKdH4x51xW5Oqi+1 myri20hDk/a+GIVal4OXi7XG5JOu0jFNXO0x/ydYGjiWY0u+u1F9oTNkOf94QJLzcpBJ5PLf 2xOmWxt9So71KmVkOKXTK38D+9Dn5dYCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRyG/Z9zdnZcLo5z1EGDYGCW5ExK+1mifvNkEBFRUGQOPbnhfVPR KDJvoemyG4ROWpjmrWZeNk0xm3fLypkxL01ZaCamlbrUGaVG3x7e9+H98lK4qJxwpRRxSZwy ThYjIQWE4MTRTK/xWW/5AXWuG2h0NSRUr6TCk8kmHmiq9AiWVsf4sNjZQ0LpIxsOmndZBCzr 1nCY6rbyYaJ8moDWGwYcrLd6SSjIsuOQ0VSBQUdJHw/e69U8uLdWhoMhfZIPQy80JFhq/vBg 2lhAQF9RJQET6mDo1u4A2+s5BJ06Awa2/BIS7pq0JHzOmkBg6rASUHxdjUDXZuaBfUVDBkvY hsoRjG0u+sRntXXJbH2FJ5tnNuFsXVUuydb9vMNnxz+2kmzvAzvBNjctYmxB5jzJ/pgaJdiF tmGSLZ35jrG6hmGCfaPt5J90PicIiORiFCmc0jswXCA39+eSCflHUi2TZbx0tC7NQ44UQx9i FmqysU0maQ/GbF7FN1lM+zCL1h4iDwkonJ7nMVMa+5bkQh9jvvy0b0gURdDuTGuOYhOFtB9j MZ36N7mbqa5t35px3IgLLcvkJotoX6blwyi/EAm0yKEKiRVxKbEyRYyvVBUtT4tTpEoj4mPr 0MZ75VfXbzehpaEQI6IpJHES7o31lot4shRVWqwRMRQuEQu7pqVykTBSlnaZU8ZfVCbHcCoj cqMIyU5h6FkuXERHyZK4aI5L4JT/W4xydE1H+5QXtsmMhSMeD9uKxOiwaPZaWP3j6e7tl8y/ S3Rzfr+6ppr7xPeP85/2+g+uDmSfTmxtL0oM8jY02oKejwUwuzKkB0Mxa3+U6dXbmtqIsOKV m4HuL/3d9c/Oo2EX5+bCwW85CWe0g157HKig/aFXZgZIvearZ0dHiwVrDBGXOEkIlVzm44kr VbK/HKXge7kCAAA= X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" To simplify struct page, the effort to seperate its own descriptor from struct page is required and the work for page pool is on going. Use netmem descriptor and APIs for page pool in mlx4 code. Signed-off-by: Byungchul Park --- 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 +- 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ether= net/mellanox/mlx4/en_rx.c index b33285d755b9..82c24931fa44 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -62,18 +62,18 @@ static int mlx4_en_alloc_frags(struct mlx4_en_priv *pri= v, int i; =20 for (i =3D 0; i < priv->num_frags; i++, frags++) { - if (!frags->page) { - frags->page =3D page_pool_alloc_pages(ring->pp, gfp); - if (!frags->page) { + if (!frags->netmem) { + frags->netmem =3D page_pool_alloc_netmems(ring->pp, gfp); + if (!frags->netmem) { ring->alloc_fail++; return -ENOMEM; } - page_pool_fragment_page(frags->page, 1); + page_pool_fragment_netmem(frags->netmem, 1); frags->page_offset =3D priv->rx_headroom; =20 ring->rx_alloc_pages++; } - dma =3D page_pool_get_dma_addr(frags->page); + dma =3D page_pool_get_dma_addr_netmem(frags->netmem); rx_desc->data[i].addr =3D cpu_to_be64(dma + frags->page_offset); } return 0; @@ -83,10 +83,10 @@ static void mlx4_en_free_frag(const struct mlx4_en_priv= *priv, struct mlx4_en_rx_ring *ring, struct mlx4_en_rx_alloc *frag) { - if (frag->page) - page_pool_put_full_page(ring->pp, frag->page, false); + if (frag->netmem) + page_pool_put_full_netmem(ring->pp, frag->netmem, false); /* We need to clear all fields, otherwise a change of priv->log_rx_info - * could lead to see garbage later in frag->page. + * could lead to see garbage later in frag->netmem. */ memset(frag, 0, sizeof(*frag)); } @@ -440,29 +440,33 @@ static int mlx4_en_complete_rx_desc(struct mlx4_en_pr= iv *priv, unsigned int truesize =3D 0; bool release =3D true; int nr, frag_size; - struct page *page; + netmem_ref netmem; dma_addr_t dma; =20 /* Collect used fragments while replacing them in the HW descriptors */ for (nr =3D 0;; frags++) { frag_size =3D min_t(int, length, frag_info->frag_size); =20 - page =3D frags->page; - if (unlikely(!page)) + netmem =3D frags->netmem; + if (unlikely(!netmem)) goto fail; =20 - dma =3D page_pool_get_dma_addr(page); + dma =3D page_pool_get_dma_addr_netmem(netmem); dma_sync_single_range_for_cpu(priv->ddev, dma, frags->page_offset, frag_size, priv->dma_dir); =20 - __skb_fill_page_desc(skb, nr, page, frags->page_offset, + __skb_fill_netmem_desc(skb, nr, netmem, frags->page_offset, frag_size); =20 truesize +=3D frag_info->frag_stride; if (frag_info->frag_stride =3D=3D PAGE_SIZE / 2) { + struct page *page =3D netmem_to_page(netmem); + atomic_long_t *pp_ref_count =3D + netmem_get_pp_ref_count_ref(netmem); + frags->page_offset ^=3D PAGE_SIZE / 2; release =3D page_count(page) !=3D 1 || - atomic_long_read(&page->pp_ref_count) !=3D 1 || + atomic_long_read(pp_ref_count) !=3D 1 || page_is_pfmemalloc(page) || page_to_nid(page) !=3D numa_mem_id(); } else if (!priv->rx_headroom) { @@ -476,9 +480,9 @@ static int mlx4_en_complete_rx_desc(struct mlx4_en_priv= *priv, release =3D frags->page_offset + frag_info->frag_size > PAGE_SIZE; } if (release) { - frags->page =3D NULL; + frags->netmem =3D 0; } else { - page_pool_ref_page(page); + page_pool_ref_netmem(netmem); } =20 nr++; @@ -719,7 +723,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struc= t mlx4_en_cq *cq, int bud int nr; =20 frags =3D ring->rx_info + (index << priv->log_rx_info); - va =3D page_address(frags[0].page) + frags[0].page_offset; + va =3D netmem_address(frags[0].netmem) + frags[0].page_offset; net_prefetchw(va); /* * make sure we read the CQE after we read the ownership bit @@ -748,7 +752,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struc= t mlx4_en_cq *cq, int bud /* Get pointer to first fragment since we haven't * skb yet and cast it to ethhdr struct */ - dma =3D page_pool_get_dma_addr(frags[0].page); + dma =3D page_pool_get_dma_addr_netmem(frags[0].netmem); dma +=3D frags[0].page_offset; dma_sync_single_for_cpu(priv->ddev, dma, sizeof(*ethh), DMA_FROM_DEVICE); @@ -788,7 +792,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struc= t mlx4_en_cq *cq, int bud void *orig_data; u32 act; =20 - dma =3D page_pool_get_dma_addr(frags[0].page); + dma =3D page_pool_get_dma_addr_netmem(frags[0].netmem); dma +=3D frags[0].page_offset; dma_sync_single_for_cpu(priv->ddev, dma, priv->frag_info[0].frag_size, @@ -818,7 +822,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struc= t mlx4_en_cq *cq, int bud if (likely(!xdp_do_redirect(dev, &mxbuf.xdp, xdp_prog))) { ring->xdp_redirect++; xdp_redir_flush =3D true; - frags[0].page =3D NULL; + frags[0].netmem =3D 0; goto next; } ring->xdp_redirect_fail++; @@ -828,7 +832,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struc= t mlx4_en_cq *cq, int bud if (likely(!mlx4_en_xmit_frame(ring, frags, priv, length, cq_ring, &doorbell_pending))) { - frags[0].page =3D NULL; + frags[0].netmem =3D 0; goto next; } trace_xdp_exception(dev, xdp_prog, act); diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ether= net/mellanox/mlx4/en_tx.c index 87f35bcbeff8..b564a953da09 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c @@ -354,7 +354,7 @@ u32 mlx4_en_recycle_tx_desc(struct mlx4_en_priv *priv, struct page_pool *pool =3D ring->recycle_ring->pp; =20 /* Note that napi_mode =3D 0 means ndo_close() path, not budget =3D 0 */ - page_pool_put_full_page(pool, tx_info->page, !!napi_mode); + page_pool_put_full_netmem(pool, tx_info->netmem, !!napi_mode); =20 return tx_info->nr_txbb; } @@ -1191,10 +1191,10 @@ netdev_tx_t mlx4_en_xmit_frame(struct mlx4_en_rx_ri= ng *rx_ring, tx_desc =3D ring->buf + (index << LOG_TXBB_SIZE); data =3D &tx_desc->data; =20 - dma =3D page_pool_get_dma_addr(frame->page); + dma =3D page_pool_get_dma_addr_netmem(frame->netmem); =20 - tx_info->page =3D frame->page; - frame->page =3D NULL; + tx_info->netmem =3D frame->netmem; + frame->netmem =3D 0; tx_info->map0_dma =3D dma; tx_info->nr_bytes =3D max_t(unsigned int, length, ETH_ZLEN); =20 diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/eth= ernet/mellanox/mlx4/mlx4_en.h index ad0d91a75184..3ef9a0a1f783 100644 --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h @@ -213,7 +213,7 @@ enum cq_type { struct mlx4_en_tx_info { union { struct sk_buff *skb; - struct page *page; + netmem_ref netmem; }; dma_addr_t map0_dma; u32 map0_byte_count; @@ -246,7 +246,7 @@ struct mlx4_en_tx_desc { #define MLX4_EN_CX3_HIGH_ID 0x1005 =20 struct mlx4_en_rx_alloc { - struct page *page; + netmem_ref netmem; u32 page_offset; }; =20 --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6BD712248A4; Fri, 23 May 2025 03:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970790; cv=none; b=JIHQhCHcynMl+Xn26szhKnEh3t3gto/+L+BTYMhgYuTgmTydVKH1T9ryyQ/uQPpo8LYRRfsLQMBENchsoBNemR0kXcgO7IdyIxCdFWdcMsumEA1zW9v7tuAaisDCQ0COg2oPpcN5YfS3kPnm3G87fTLvbSdKQDbf47KJLjHKU9g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970790; c=relaxed/simple; bh=auMzu5bwtgTWBbkAtEOVi0fODaAwrqRd9Gco0GHErxM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=XLWosBdC5/MhBk8eiCla1ZzBuXJRGHIFKp1DidcIKPENWxBBPWKkYb3GAVC1se/0nj+P6tXh+M6mUFzEK9I77Tc74X5eYzl7xd5dkGcBNCAbQUkpXw46aF4iRXz1N3QoaIFKSSS5iznBN21jkAVxi1gfB0LOOcIoS0sGZ+3/p84= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-e3-682feadc1e0a 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 12/18] page_pool: use netmem APIs to access page->pp_magic in page_pool_page_is_pp() Date: Fri, 23 May 2025 12:26:03 +0900 Message-Id: <20250523032609.16334-13-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWReUiTcRzG++09fXPwMk3fNIxWZhlpisUXKvHPXyB0QYedo7204ZHMIxcF VkObubUOpWPFskxbxmxKrgOptTxSsDxilRcrLcO0NJemaM7wvw/P93kevvCwhMxFhrDqtExR k6ZIkdMcyf3wL1nb+T1ate5R/how2ypoeDCeA2W9DgrM1scIfk98YmDUVU/DndteAswtOhLG bH8J6KvzMNBzr5+E5/k1BHguNNBg0E0ScMZRLoG3j40UXPlbSkBNbi8DbU/NNHRXzFDQ7zSQ 0Hj9Pgk9xgSoswSBt2kQgctWIwFv4U0aLrdaaPis60HQ+spDwo3TRgS2WjcFk+NmOmEZrr7/ QYKfXO9isMWehavKI3GBu5XAdquexvaRSwzufP+cxg1XJ0n8xDEqwYazQzT+1feRxMO1HTS2 VXeQuNniYvCoPWwbn8RtUoop6mxREx1/mFMNluqp9JGFOVVvhuhclMcVID9W4OMEp76MnOc/ pluMj2k+QnC7JwgfB/IxwqinftbDsQQ/RAl95klJAWLZAF4p/ByI8HlIPlwobvfMZaX8BsFV /Iz437lUeFD5Yo79ZnVT9xjtYxm/XnjW/pHxdQr8BCP87pt/YrHwstxNmpDUghZYkUydlp2q UKfERam0aeqcqCPHUu1odtt7p6b2OdDI251OxLNI7i91cNEqGaXIztCmOpHAEvJA6ev+KJVM qlRoT4iaY4c0WSlihhOFsqQ8WBrrPa6U8UcVmWKyKKaLmvmrhPULyUWrAqpCB8MbVWHVBRvz rCMtu5cnBiZ/CVpZZdq6KGRPLRG5t0n/sKz724vtA2A6H6B7NLMmVsPLF854sXTzwbtdUftJ 8+q6d22G8ampa4na5hmuKMIafKskidAYVxSd3rtjV2HhuemT8RPaLSXTxsrh+ANLqdVNX7un b1zckbd8SamczFApYiIJTYbiH6XJGKPXAgAA X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTYRzGe3fOzjmuFqdpdTByMBFDyimY/aGIUVlvfag+JUWUox3dclPZ VNQQLCVT8lKJWK1YlrcpLaZ4SbGay0tJl3lhlaasJlk6zVvewrTo24/n9uVhCEkF6cto4hJ5 fZxSK6NEpOj43sxdA9/l6pDRUj8wWmooqJ5PgYrhRiEYzfUIZhY+0TBt76Dg4YM5Aoxvs0iY tSwS4G530TBUPkJCS3YDAa6CTgryspYIuNJYKYC2e11CeFefL4SixTICGjKGaeh5aqTgc82K EEZseSR03akiYShfAe2mLTD3egyB3dIggLnr9yi45TBR8CVrCIGjzUXC3cv5CCytTiEszRsp hQzXVX0Q4KY7gzQ2WZNwbWUQznU6CGw151DYOnWTxgP9LRTuLFkicVPjtADnZXoo/NP9kcQT rX0UfvhtUoAtdX0k7jbZ6ZObzoj2qXitJpnXy/dHidRjZTnChKn1KbWvPFQGuirKRV4Mx4Zx vwrv02tMsYGc07lArLEPG8pNuzrIXCRiCNYj5NzGJUEuYhhvVsVNjgauZUg2gCvudf3titlw zl7cTPzblHLVT57/Za9VvfDzLLXGEnY319z7kS5EIhNaZ0Y+mrhknVKj3R1siFWnxmlSgi/E 66xo9b7y9OUbjWim54gNsQySbRDv0MnVEqEy2ZCqsyGOIWQ+4pcjwWqJWKVMTeP18ef1SVre YEPbGFK2VXwsko+SsDHKRD6W5xN4/X9XwHj5ZqAHvlP1y4ro92el/oNF/pdON8yd1/mt2JJ+ 50vn06TDeaZnmYf3hCVGqPzLSjd/klu7O39sp9/EHEy/fGzTKZXn0bkc6SF+MH6jd4DCYd5P Ou9/HRiNKA4Jd88kHrjoVXqiwrzt7HiZyTQYPTGueHz7Gm+WH41U7XxR8ri/wFnszpaRBrUy NIjQG5R/AAwfKlm6AgAA X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" To simplify struct page, the effort to seperate its own descriptor from struct page is required and the work for page pool is on going. To achieve that, all the code should avoid accessing page pool members of struct page directly, but use safe APIs for the purpose. Use netmem_is_pp() instead of directly accessing page->pp_magic in page_pool_page_is_pp(). Signed-off-by: Byungchul Park --- include/linux/mm.h | 5 +---- net/core/page_pool.c | 5 +++++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 8dc012e84033..3f7c80fb73ce 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -4312,10 +4312,7 @@ int arch_lock_shadow_stack_status(struct task_struct= *t, unsigned long status); #define PP_MAGIC_MASK ~(PP_DMA_INDEX_MASK | 0x3UL) =20 #ifdef CONFIG_PAGE_POOL -static inline bool page_pool_page_is_pp(struct page *page) -{ - return (page->pp_magic & PP_MAGIC_MASK) =3D=3D PP_SIGNATURE; -} +bool page_pool_page_is_pp(struct page *page); #else static inline bool page_pool_page_is_pp(struct page *page) { diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 1071cb3d63e5..37e667e6ca33 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -1284,3 +1284,8 @@ void net_mp_niov_clear_page_pool(struct net_iov *niov) =20 page_pool_clear_pp_info(netmem); } + +bool page_pool_page_is_pp(struct page *page) +{ + return netmem_is_pp(page_to_netmem(page)); +} --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 89E242253BC; Fri, 23 May 2025 03:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970792; cv=none; b=DzVSGh07Tci5muu3CfG0xnXqNYHpZ7Tq7v1JETLzuuKmNbHYHQG9usJvjUIxSXlxSThsSyumxK7bSeEJrADfih0n1FnReLulBesmZ68C+mDhDG6l2xHAC68z0yQmbujB15r9REvCV9NKYo9a3iCgl/X3dGqIjYDAh6b4bKJ8grE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970792; c=relaxed/simple; bh=SeSBK62dqF+05PmsSPXb1g97oxQQruBbULJRKaYuKSQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=D8Gt9DcRXm2J4uDb+aRYl91qBsBL0/2r9YbRhh/74FOu4G6uSs+U7/fRce0DTvlkcZdDIwzPCw4Q5zzrwqU1GZe9Bu1+9RvHkcH59IawPrQybOns2rUYpR8ONcX1Gu9PFgcLpi0eJ6V+Gz5Yi4oYi8UffN1NSPFU+eEZl7FAgtI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-ed-682feadc8582 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 13/18] mlx5: use netmem descriptor and APIs for page pool Date: Fri, 23 May 2025 12:26:04 +0900 Message-Id: <20250523032609.16334-14-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRXUhTYRzGe3fenXNcLU4r9GhQOQhR8BOzf19mIfRGFwVKFxbU0oNbObX5 kQaVqRCNNPsysUmr0JxKiyk6zSznNo0ixVTm52zlLqKsNM1cVE7p7uH38PxuHpaSdeEAVpWe LWjSFWlyWoIlX9Y8CB37FK6M+OaJAp2xgYb6hTx4PGkWg66uGcGPX6MMzFq7aXj0YJ4CXW8x hjnjIgVTdhcDzho3hvYrLRS4rvfQUFLsoaDQXCuCvuZSMdxerKagpWCSgXdtOhomGv6KwW0p wfCq0oDBWRoHdr0vzL/+jMBqbBHB/LUqGm7162n4UOxE0N/lwnDvcikCY4dDDJ4FHR0XSJoM wyLSWjnOEL0phzTWhhCto58iprqrNDHN3GTI2FA7TXoqPJi0mmdFpKRomibfp0Yw+doxSBNj 0yAmb/RWhsyaNh3hkiS7U4Q0Va6gCY89KVFeH9ifaShGeVMVjeIC9EStRT4sz0Xzw88/iLSI Xc5VvXleTHNBvMPxi/LmDVwkP+vqxlokYSluWsxP6Twib7GeO8gPWYYo7xZzW/ne98SLpVwM b7vhpFf0m/n6py+XPT5LvGxibpnLuG38s4ERxuvkuTmGt44P45WBP99Z68BlSKpHq+qQTJWe q1ao0qLDlPnpqryw5Ay1CS1dW3Ph9zEzmulLsCCORfI1UrMkXCkTK3Kz8tUWxLOUfIPU5g5T yqQpivzzgibjhCYnTciyoI0slvtJo+bPpci4VEW2cEYQMgXN/1bE+gQUoKLghxZpwEdrTme8 bEeVym5bBYFtc5N7tiTLk20HUl9oPTdQVcLm0Q7/n3dyfBuCvkQ6dybVX9x+VBIbG3FqIPbQ 4ag2LmEwkVudMnn6bvyl46F691uGNtCv6hOx5M/4Favv3rVn2/Ypy9ddmA4+L/cbnqhmxvzu i2MCywvtTbvkOEupiAyhNFmKf11ri2vWAgAA X-Brightmail-Tracker: H4sIAAAAAAAAAzWRe0hTcRzF++3e3V1Hg9uSvExIWNhjmtPI+EYREkW//COKoCAEnXlpQzdt U5lB4WMYDd8aiU5YWD6muJqis0xi84mW5TtTZzPtQan5wlcPJ/Tf4XM4Bw6HJsQVpIRWaRI5 rUYRJ6WEpPDSqYyj49/lyuAnTimYrLUU1KzpoXLKzgeTpRHB8vpHASy1dVJQ/niVAFOfgYQV 6wYBMx1uAbgqZkloud9EgDu3i4JswyYB6fYqHjjLuvnwrjGHD0UbTwloSp0SwMALEwWTtX/5 MOvIJqG7pJoEV04YdJj3wWrPDwRt1iYerGaVUVDYb6Zg2uBC0O90k1CaloPA2jrKh801ExUm xQ3VH3i4uWRCgM22JFxfJcPG0X4C2ywPKGxbLBDg8eEWCncVb5K42b7Ew9kZcxT+NTNG4vnW IQqXf13gYWvDEIl7zW2Cy3tuCE/HcHGqZE4rPxMlVOYOnk2oNiD9THE9PxXVqY2IplnmOFvW pzciL5piDrGjo+uER3szIeySu5M0IiFNMHN8dsa0yfMYe5mL7LBjmPBkScaf7fuEPVjEnGDb 812UR7OMH1vz7PVOj9c2z5tc2eFiJpR9OTgmyENCM9plQd4qTbJaoYoLDdLFKlM0Kn3QzXi1 DW2/V3F3K9+OlgcuOBBDI+lu0WG1XCnmK5J1KWoHYmlC6i1qnw1SikUxipQ7nDY+UpsUx+kc yJcmpT6i8OtclJi5pUjkYjkugdP+d3m0l2R79+eTge3+PRFfMh/6jP3J+raoKUwxvnp0+330 vHn4XJJlrLAjEoK2jskOBpwPTz9i+NlaetV4bX9F8Bu1euJA9Nxvq0uduaCfcs8VpZLTFt9p 1Z60tUmtn9HbSNnvVWmu1EWkto7IekYCEuVCiSywwFZWWfpc4qy3ynvfhlYtS0mdUhEiI7Q6 xT9FJszpuQIAAA== X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" To simplify struct page, the effort to seperate its own descriptor from struct page is required and the work for page pool is on going. Use netmem descriptor and APIs for page pool in mlx5 code. Signed-off-by: Byungchul Park --- 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 +++++++++---------- include/linux/skbuff.h | 14 ++++ include/net/page_pool/helpers.h | 4 ++ 7 files changed, 73 insertions(+), 50 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/eth= ernet/mellanox/mlx5/core/en.h index 5b0d03b3efe8..ab36a4e86c42 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -557,7 +557,7 @@ struct mlx5e_icosq { } ____cacheline_aligned_in_smp; =20 struct mlx5e_frag_page { - struct page *page; + netmem_ref netmem; u16 frags; }; =20 @@ -629,7 +629,7 @@ struct mlx5e_dma_info { dma_addr_t addr; union { struct mlx5e_frag_page *frag_page; - struct page *page; + netmem_ref netmem; }; }; =20 diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c b/drivers/net= /ethernet/mellanox/mlx5/core/en/xdp.c index 5ce1b463b7a8..cead69ff8eee 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c @@ -61,7 +61,7 @@ static inline bool mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5e_rq *rq, struct xdp_buff *xdp) { - struct page *page =3D virt_to_page(xdp->data); + netmem_ref netmem =3D virt_to_netmem(xdp->data); struct mlx5e_xmit_data_frags xdptxdf =3D {}; struct mlx5e_xmit_data *xdptxd; struct xdp_frame *xdpf; @@ -122,7 +122,7 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5= e_rq *rq, * mode. */ =20 - dma_addr =3D page_pool_get_dma_addr(page) + (xdpf->data - (void *)xdpf); + dma_addr =3D page_pool_get_dma_addr_netmem(netmem) + (xdpf->data - (void = *)xdpf); dma_sync_single_for_device(sq->pdev, dma_addr, xdptxd->len, DMA_BIDIRECTI= ONAL); =20 if (xdptxd->has_frags) { @@ -134,7 +134,7 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5= e_rq *rq, dma_addr_t addr; u32 len; =20 - addr =3D page_pool_get_dma_addr(skb_frag_page(frag)) + + addr =3D page_pool_get_dma_addr_netmem(skb_frag_netmem(frag)) + skb_frag_off(frag); len =3D skb_frag_size(frag); dma_sync_single_for_device(sq->pdev, addr, len, @@ -157,19 +157,19 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct ml= x5e_rq *rq, (union mlx5e_xdp_info) { .page.num =3D 1 + xdptxdf.sinfo->nr_frags }); mlx5e_xdpi_fifo_push(&sq->db.xdpi_fifo, - (union mlx5e_xdp_info) { .page.page =3D page }); + (union mlx5e_xdp_info) { .page.netmem =3D netmem }); for (i =3D 0; i < xdptxdf.sinfo->nr_frags; i++) { skb_frag_t *frag =3D &xdptxdf.sinfo->frags[i]; =20 mlx5e_xdpi_fifo_push(&sq->db.xdpi_fifo, (union mlx5e_xdp_info) - { .page.page =3D skb_frag_page(frag) }); + { .page.netmem =3D skb_frag_netmem(frag) }); } } else { mlx5e_xdpi_fifo_push(&sq->db.xdpi_fifo, (union mlx5e_xdp_info) { .page.num =3D 1 }); mlx5e_xdpi_fifo_push(&sq->db.xdpi_fifo, - (union mlx5e_xdp_info) { .page.page =3D page }); + (union mlx5e_xdp_info) { .page.netmem =3D netmem }); } =20 return true; @@ -702,15 +702,15 @@ static void mlx5e_free_xdpsq_desc(struct mlx5e_xdpsq = *sq, num =3D xdpi.page.num; =20 do { - struct page *page; + netmem_ref netmem; =20 xdpi =3D mlx5e_xdpi_fifo_pop(xdpi_fifo); - page =3D xdpi.page.page; + netmem =3D xdpi.page.netmem; =20 /* No need to check page_pool_page_is_pp() as we * know this is a page_pool page. */ - page_pool_recycle_direct(page->pp, page); + page_pool_recycle_direct_netmem(netmem_get_pp(netmem), netmem); } while (++n < num); =20 break; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h b/drivers/net= /ethernet/mellanox/mlx5/core/en/xdp.h index 46ab0a9e8cdd..931f9922e5c5 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xdp.h @@ -90,7 +90,7 @@ union mlx5e_xdp_info { union { struct mlx5e_rq *rq; u8 num; - struct page *page; + netmem_ref netmem; } page; struct xsk_tx_metadata_compl xsk_meta; }; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index 9bd166f489e7..4d6a08502c5e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -708,24 +708,29 @@ static void mlx5e_rq_err_cqe_work(struct work_struct = *recover_work) =20 static int mlx5e_alloc_mpwqe_rq_drop_page(struct mlx5e_rq *rq) { - rq->wqe_overflow.page =3D alloc_page(GFP_KERNEL); - if (!rq->wqe_overflow.page) + struct page *page =3D alloc_page(GFP_KERNEL); + + if (!page) return -ENOMEM; =20 - rq->wqe_overflow.addr =3D dma_map_page(rq->pdev, rq->wqe_overflow.page, 0, + rq->wqe_overflow.addr =3D dma_map_page(rq->pdev, page, 0, PAGE_SIZE, rq->buff.map_dir); if (dma_mapping_error(rq->pdev, rq->wqe_overflow.addr)) { - __free_page(rq->wqe_overflow.page); + __free_page(page); return -ENOMEM; } + + rq->wqe_overflow.netmem =3D page_to_netmem(page); return 0; } =20 static void mlx5e_free_mpwqe_rq_drop_page(struct mlx5e_rq *rq) { + struct page *page =3D netmem_to_page(rq->wqe_overflow.netmem); + dma_unmap_page(rq->pdev, rq->wqe_overflow.addr, PAGE_SIZE, rq->buff.map_dir); - __free_page(rq->wqe_overflow.page); + __free_page(page); } =20 static int mlx5e_init_rxq_rq(struct mlx5e_channel *c, struct mlx5e_params = *params, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/= ethernet/mellanox/mlx5/core/en_rx.c index 84b1ab8233b8..78ca93b7a7ee 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -276,16 +276,16 @@ static inline u32 mlx5e_decompress_cqes_start(struct = mlx5e_rq *rq, static int mlx5e_page_alloc_fragmented(struct mlx5e_rq *rq, struct mlx5e_frag_page *frag_page) { - struct page *page; + netmem_ref netmem; =20 - page =3D page_pool_dev_alloc_pages(rq->page_pool); - if (unlikely(!page)) + netmem =3D page_pool_dev_alloc_netmem(rq->page_pool, NULL, NULL); + if (unlikely(!netmem)) return -ENOMEM; =20 - page_pool_fragment_page(page, MLX5E_PAGECNT_BIAS_MAX); + page_pool_fragment_netmem(netmem, MLX5E_PAGECNT_BIAS_MAX); =20 *frag_page =3D (struct mlx5e_frag_page) { - .page =3D page, + .netmem =3D netmem, .frags =3D 0, }; =20 @@ -296,10 +296,10 @@ static void mlx5e_page_release_fragmented(struct mlx5= e_rq *rq, struct mlx5e_frag_page *frag_page) { u16 drain_count =3D MLX5E_PAGECNT_BIAS_MAX - frag_page->frags; - struct page *page =3D frag_page->page; + netmem_ref netmem =3D frag_page->netmem; =20 - if (page_pool_unref_page(page, drain_count) =3D=3D 0) - page_pool_put_unrefed_page(rq->page_pool, page, -1, true); + if (page_pool_unref_netmem(netmem, drain_count) =3D=3D 0) + page_pool_put_unrefed_netmem(rq->page_pool, netmem, -1, true); } =20 static inline int mlx5e_get_rx_frag(struct mlx5e_rq *rq, @@ -358,7 +358,7 @@ static int mlx5e_alloc_rx_wqe(struct mlx5e_rq *rq, stru= ct mlx5e_rx_wqe_cyc *wqe, frag->flags &=3D ~BIT(MLX5E_WQE_FRAG_SKIP_RELEASE); =20 headroom =3D i =3D=3D 0 ? rq->buff.headroom : 0; - addr =3D page_pool_get_dma_addr(frag->frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag->frag_page->netmem); wqe->data[i].addr =3D cpu_to_be64(addr + frag->offset + headroom); } =20 @@ -501,7 +501,7 @@ mlx5e_add_skb_shared_info_frag(struct mlx5e_rq *rq, str= uct skb_shared_info *sinf { skb_frag_t *frag; =20 - dma_addr_t addr =3D page_pool_get_dma_addr(frag_page->page); + dma_addr_t addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); =20 dma_sync_single_for_cpu(rq->pdev, addr + frag_offset, len, rq->buff.map_d= ir); if (!xdp_buff_has_frags(xdp)) { @@ -514,9 +514,9 @@ mlx5e_add_skb_shared_info_frag(struct mlx5e_rq *rq, str= uct skb_shared_info *sinf } =20 frag =3D &sinfo->frags[sinfo->nr_frags++]; - skb_frag_fill_page_desc(frag, frag_page->page, frag_offset, len); + skb_frag_fill_netmem_desc(frag, frag_page->netmem, frag_offset, len); =20 - if (page_is_pfmemalloc(frag_page->page)) + if (netmem_is_pfmemalloc(frag_page->netmem)) xdp_buff_set_frag_pfmemalloc(xdp); sinfo->xdp_frags_size +=3D len; } @@ -527,27 +527,27 @@ mlx5e_add_skb_frag(struct mlx5e_rq *rq, struct sk_buf= f *skb, u32 frag_offset, u32 len, unsigned int truesize) { - dma_addr_t addr =3D page_pool_get_dma_addr(frag_page->page); + dma_addr_t addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); u8 next_frag =3D skb_shinfo(skb)->nr_frags; =20 dma_sync_single_for_cpu(rq->pdev, addr + frag_offset, len, rq->buff.map_dir); =20 - if (skb_can_coalesce(skb, next_frag, frag_page->page, frag_offset)) { + if (skb_can_coalesce_netmem(skb, next_frag, frag_page->netmem, frag_offse= t)) { skb_coalesce_rx_frag(skb, next_frag - 1, len, truesize); } else { frag_page->frags++; - skb_add_rx_frag(skb, next_frag, frag_page->page, + skb_add_rx_frag_netmem(skb, next_frag, frag_page->netmem, frag_offset, len, truesize); } } =20 static inline void mlx5e_copy_skb_header(struct mlx5e_rq *rq, struct sk_buff *skb, - struct page *page, dma_addr_t addr, + netmem_ref netmem, dma_addr_t addr, int offset_from, int dma_offset, u32 headlen) { - const void *from =3D page_address(page) + offset_from; + const void *from =3D netmem_address(netmem) + offset_from; /* Aligning len to sizeof(long) optimizes memcpy performance */ unsigned int len =3D ALIGN(headlen, sizeof(long)); =20 @@ -684,7 +684,7 @@ static int mlx5e_build_shampo_hd_umr(struct mlx5e_rq *r= q, goto err_unmap; =20 =20 - addr =3D page_pool_get_dma_addr(frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); =20 for (int j =3D 0; j < MLX5E_SHAMPO_WQ_HEADER_PER_PAGE; j++) { header_offset =3D mlx5e_shampo_hd_offset(index++); @@ -794,7 +794,7 @@ static int mlx5e_alloc_rx_mpwqe(struct mlx5e_rq *rq, u1= 6 ix) err =3D mlx5e_page_alloc_fragmented(rq, frag_page); if (unlikely(err)) goto err_unmap; - addr =3D page_pool_get_dma_addr(frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); umr_wqe->inline_mtts[i] =3D (struct mlx5_mtt) { .ptag =3D cpu_to_be64(addr | MLX5_EN_WR), }; @@ -1212,7 +1212,7 @@ static void *mlx5e_shampo_get_packet_hd(struct mlx5e_= rq *rq, u16 header_index) struct mlx5e_frag_page *frag_page =3D mlx5e_shampo_hd_to_frag_page(rq, he= ader_index); u16 head_offset =3D mlx5e_shampo_hd_offset(header_index) + rq->buff.headr= oom; =20 - return page_address(frag_page->page) + head_offset; + return netmem_address(frag_page->netmem) + head_offset; } =20 static void mlx5e_shampo_update_ipv4_udp_hdr(struct mlx5e_rq *rq, struct i= phdr *ipv4) @@ -1673,11 +1673,11 @@ mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, stru= ct mlx5e_wqe_frag_info *wi, dma_addr_t addr; u32 frag_size; =20 - va =3D page_address(frag_page->page) + wi->offset; + va =3D netmem_address(frag_page->netmem) + wi->offset; data =3D va + rx_headroom; frag_size =3D MLX5_SKB_FRAG_SZ(rx_headroom + cqe_bcnt); =20 - addr =3D page_pool_get_dma_addr(frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset, frag_size, rq->buff.map_dir); net_prefetch(data); @@ -1727,10 +1727,10 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, s= truct mlx5e_wqe_frag_info *wi =20 frag_page =3D wi->frag_page; =20 - va =3D page_address(frag_page->page) + wi->offset; + va =3D netmem_address(frag_page->netmem) + wi->offset; frag_consumed_bytes =3D min_t(u32, frag_info->frag_size, cqe_bcnt); =20 - addr =3D page_pool_get_dma_addr(frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset, rq->buff.frame0_sz, rq->buff.map_dir); net_prefetchw(va); /* xdp_frame data area */ @@ -2003,12 +2003,12 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq = *rq, struct mlx5e_mpw_info *w =20 if (prog) { /* area for bpf_xdp_[store|load]_bytes */ - net_prefetchw(page_address(frag_page->page) + frag_offset); + net_prefetchw(netmem_address(frag_page->netmem) + frag_offset); if (unlikely(mlx5e_page_alloc_fragmented(rq, &wi->linear_page))) { rq->stats->buff_alloc_err++; return NULL; } - va =3D page_address(wi->linear_page.page); + va =3D netmem_address(wi->linear_page.netmem); net_prefetchw(va); /* xdp_frame data area */ linear_hr =3D XDP_PACKET_HEADROOM; linear_data_len =3D 0; @@ -2117,8 +2117,8 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *r= q, struct mlx5e_mpw_info *w while (++pagep < frag_page); } /* copy header */ - addr =3D page_pool_get_dma_addr(head_page->page); - mlx5e_copy_skb_header(rq, skb, head_page->page, addr, + addr =3D page_pool_get_dma_addr_netmem(head_page->netmem); + mlx5e_copy_skb_header(rq, skb, head_page->netmem, addr, head_offset, head_offset, headlen); /* skb linear part was allocated with headlen and aligned to long */ skb->tail +=3D headlen; @@ -2148,11 +2148,11 @@ mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq= , struct mlx5e_mpw_info *wi, return NULL; } =20 - va =3D page_address(frag_page->page) + head_offset; + va =3D netmem_address(frag_page->netmem) + head_offset; data =3D va + rx_headroom; frag_size =3D MLX5_SKB_FRAG_SZ(rx_headroom + cqe_bcnt); =20 - addr =3D page_pool_get_dma_addr(frag_page->page); + addr =3D page_pool_get_dma_addr_netmem(frag_page->netmem); dma_sync_single_range_for_cpu(rq->pdev, addr, head_offset, frag_size, rq->buff.map_dir); net_prefetch(data); @@ -2191,7 +2191,7 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct= mlx5e_mpw_info *wi, struct mlx5_cqe64 *cqe, u16 header_index) { struct mlx5e_frag_page *frag_page =3D mlx5e_shampo_hd_to_frag_page(rq, he= ader_index); - dma_addr_t page_dma_addr =3D page_pool_get_dma_addr(frag_page->page); + dma_addr_t page_dma_addr =3D page_pool_get_dma_addr_netmem(frag_page->net= mem); u16 head_offset =3D mlx5e_shampo_hd_offset(header_index); dma_addr_t dma_addr =3D page_dma_addr + head_offset; u16 head_size =3D cqe->shampo.header_size; @@ -2200,7 +2200,7 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct= mlx5e_mpw_info *wi, void *hdr, *data; u32 frag_size; =20 - hdr =3D page_address(frag_page->page) + head_offset; + hdr =3D netmem_address(frag_page->netmem) + head_offset; data =3D hdr + rx_headroom; frag_size =3D MLX5_SKB_FRAG_SZ(rx_headroom + head_size); =20 @@ -2225,7 +2225,7 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct= mlx5e_mpw_info *wi, } =20 net_prefetchw(skb->data); - mlx5e_copy_skb_header(rq, skb, frag_page->page, dma_addr, + mlx5e_copy_skb_header(rq, skb, frag_page->netmem, dma_addr, head_offset + rx_headroom, rx_headroom, head_size); /* skb linear part was allocated with headlen and aligned to long */ diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 5520524c93bf..faf59ea5b13f 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -3887,6 +3887,20 @@ static inline bool skb_can_coalesce(struct sk_buff *= skb, int i, return false; } =20 +static inline bool skb_can_coalesce_netmem(struct sk_buff *skb, int i, + const netmem_ref netmem, int off) +{ + if (skb_zcopy(skb)) + return false; + if (i) { + const skb_frag_t *frag =3D &skb_shinfo(skb)->frags[i - 1]; + + return netmem =3D=3D skb_frag_netmem(frag) && + off =3D=3D skb_frag_off(frag) + skb_frag_size(frag); + } + return false; +} + static inline int __skb_linearize(struct sk_buff *skb) { return __pskb_pull_tail(skb, skb->data_len) ? 0 : -ENOMEM; diff --git a/include/net/page_pool/helpers.h b/include/net/page_pool/helper= s.h index 93f2c31baf9b..aa120f6d519a 100644 --- a/include/net/page_pool/helpers.h +++ b/include/net/page_pool/helpers.h @@ -150,6 +150,10 @@ static inline netmem_ref page_pool_dev_alloc_netmem(st= ruct page_pool *pool, { gfp_t gfp =3D GFP_ATOMIC | __GFP_NOWARN; =20 + WARN_ON((!offset && size) || (offset && !size)); + if (!offset || !size) + return page_pool_alloc_netmems(pool, gfp); + return page_pool_alloc_netmem(pool, offset, size, gfp); } =20 --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B40E222618F; Fri, 23 May 2025 03:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970790; cv=none; b=ufk3oiqxG5Kds9CKCi41senPdm2tJv2B6f56GQGmAzMAMr9qAY10bgQP3gNerl+u63THNaXhxMJOTRNyUl6+WcLCawNyyVJaCfTw5TMnrQnkIh2dClW2J8naDhmgeBP+zjr9M6jGXyZHL0MterS0s9HAN0WBnSOeVYT0bMvpuJU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970790; c=relaxed/simple; bh=YONehhNSiKIx13tSF9qEqbSwL9lbM3m3QVv1jPV5eXo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=t6wNWW6GhK5Lm5k0vMBJ2Zl8PiRgL5YCMrytLrzZsS8bIQNzy3GY98baY5F8yiNNXDBwNcQTJG5fSygopqri+YE2nnBI2lBj2NiO2nRg0RUPqZVWUeYJxKGLOvaxnO9XkbLd/efdIvMR+z1Wt6pyAM99kOpRM1n/fhkLLTcGo58= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-f7-682feadc7e0f 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 14/18] netmem: use _Generic to cover const casting for page_to_netmem() Date: Fri, 23 May 2025 12:26:05 +0900 Message-Id: <20250523032609.16334-15-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRfUhTYRyFe3ff3Xs3Wt2W1K2gaPRBkppl9iMioojeosAwCQq0kZe2mlNm 2gwqm1a41MSEYq6YSOZHNFvmZom4tdSoSCxrfqRibZKaUmuzXFHO6L+HczjPP4el5G68lFVr Tws6rVKjoKVY+mVuRVT/aIxqQ+h+HJit92io+6GHu0MOMZhrGxF8/9nHgN/dTkNlRZAC8+t8 DAHrNAXetmEGBqt8GJqv2CkYvtZBQ1F+iAKDo1oEnY3FYiibvkOBPXeIgTePzTQM3PsjBp+r CMNzUw2GweId0GZZBMEX4wjcVrsIgoW3aLjeZaHhY/4ggq6nwxjKLxYjsLZ4xBD6YaZ3rCQN NT0i0mT6wBCLLYs8rI4kRk8XRWy1BTSxfStlSP+7Zpp03Axh0uTwi0hR3gRNvnp7MZls6aaJ taEbk5cWN0P8tuUJ3BHptlRBo84WdDHbj0lV76sLRBmXWX3hlAnnon7aiFiW5+L4sd5dRiSZ xcoXhUyYaW4t7/H8pMIcwcXy/uF2bERSluImxLzXHBKFi4XcYd4/+RuHGXOredO0YXYs4+L5 kZcB8T/pCr6uvnVWJJnJSwYCdJjl3Gb+ydteJizluQDDT437qH+DJbyz2oNLkMyC5tQiuVqb naZUa+KiVTlatT76eHqaDc18W3Xu11EH+taZ6EIcixRzZQ5pjEouVmZn5qS5EM9SigjZM1+0 Si5LVeacFXTpKbosjZDpQstYrFgs2xg8kyrnTihPC6cEIUPQ/W9FrGRpLopK+p2U3JK3+/yN Iwn1Q2tuj/a1enpu2vdYtyqUCTtvrKt0fv7+YOrilgv7bJL43RWrYg376xvPtw50lNtI3kTb gjNZKdtH9poll8om/+hVV7SPgmM1zrryTa+8EQcux0+vKqzikuc4C1Lvaq4eOrX160HT/GWG 9SdrhU93pIml84q3KXCmShkbSekylX8BA3JZktcCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAAzWRe0hTcRzF/e3e3d2tltcpdbE/goFpgi4h61uKCVHenvhHIPhHOfLmhvPR pqaiZE40l5pmZKwpE8nmA1ZLfGMx3yiVM8u3sjUTKTXnW8PU6L8P53DO+eOQmMiAu5Py2ARW GStViAkBLrgRoPYZn5PIThZPeILOWEtAzXoyvJ5u5IKuuh7B8sYYDxwd3QRUlK9ioPuUhcOK cRMDe5eVB1OVMzi05jRgYH3SQ0B+1hYGmY0GDrSX9nLhc30BF55tvsKgIWOaB4PNOgIma3e4 MGPOx6FXW4XDVEEwdOkPw2rfTwQdxgYOrOaVElBs0RNgy5pCYGm34vDyYQECY9swF7bWdUSw mKmrGuEwTdoJHqM3JTLvDN6MZtiCMabqXIIxLT3lMeNfWwmm58UWzjQ1OjhMvnqeYH7bR3Fm oW2IYCpmFzmMsW4IZ/r1HbxQl3BBYCSrkCexSklQhED2zZDLic8mk/PWtHgGGic0iE/S1Cm6 oi+Pt8cE5UkPD29ge+xG+dEOazeuQQISo+a5tF23xdkzXKkw2rHwB99jnPKgtZuZ+2EhdZr+ 0b/C/Vd6jK5582G/iL+rF06u7I+JKH+65csorxAJ9MipGrnJY5NipHKFv68qWpYSK0/2vRMX Y0K7/1Wmbxc1ouXBEDOiSCQ+KPSKkchEXGmSKiXGjGgSE7sJO2d8ZSJhpDQllVXG3VYmKliV GR0lcfER4ZUwNkJERUkT2GiWjWeV/10OyXfPQOqzHx9t3tN4tDizbY8Dl0It5276PJjLze55 O7JIDmlcLeeLJMh8/Pn69w0fr0sDLjM5A5HNtu2yE+VrIRfAhhz2tFs7rZXk/TH32qC44i6+ zZpa5HSgpP/qZXG+4/oZx/b79M4yuEashRa7LEUdUs+Gh5U4p110KLS/pHe3A8S4Sib188aU KulfqfQKkLsCAAA= X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The current page_to_netmem() doesn't cover const casting resulting in trying to cast const struct page * to const netmem_ref fails. To cover the case, change page_to_netmem() to use macro and _Generic. Signed-off-by: Byungchul Park Reviewed-by: Mina Almasry --- include/net/netmem.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/include/net/netmem.h b/include/net/netmem.h index 29c005d70c4f..c2eb121181c2 100644 --- a/include/net/netmem.h +++ b/include/net/netmem.h @@ -172,10 +172,9 @@ static inline netmem_ref net_iov_to_netmem(struct net_= iov *niov) return (__force netmem_ref)((unsigned long)niov | NET_IOV); } =20 -static inline netmem_ref page_to_netmem(struct page *page) -{ - return (__force netmem_ref)page; -} +#define page_to_netmem(p) (_Generic((p), \ + const struct page *: (__force const netmem_ref)(p), \ + struct page *: (__force netmem_ref)(p))) =20 static inline netmem_ref alloc_netmems_node(int nid, gfp_t gfp_mask, unsigned int order) --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D9C1C22A4E0; Fri, 23 May 2025 03:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970791; cv=none; b=cmDrPnxM+QTDPKTzmUpofkVBQuglSdiLEtzDHu5bs/xkYH6z4vGlHtFl0jNkGkF02N/fuh1CqXdPt+vc8fzDMlgT/eDiGornYfhV9SIImcMmVxOi2LOHHsTscycnPsAlMUI8gCid39FudIzruIbOTlo2jh+gcDed5ox+ZNxSRks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970791; c=relaxed/simple; bh=dJj0069KrtHblFH15XSGouMC22wVlSq9OpZxzt44gMo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=LqNHT1oazsIjpfNolH0QvhaqWZtL0W/W90qQs1gUYkByONDfyQuBUx2wlThqPv1xT/YvdEou72zq2/9JtpppAwXaV7RTxP14stNpUpzM3fhW66ei8IgJZUVu0RV4KP7fRDI1lVHGQgRbToP6zqtmAgrXiIJaRuEyyg98U4G1DrA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-01-682feadc3ddf 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 15/18] netmem: remove __netmem_get_pp() Date: Fri, 23 May 2025 12:26:06 +0900 Message-Id: <20250523032609.16334-16-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTYRjHe3fenXMcDg5L6miRtIoiSiu1HiLLL+UbRNiFogvUSQ9uOKdt ZRoFpoNInEpZlK2a2UVXsVqmm7dqal6SEi1Z5iUWrghr5FLUFeYsv/34/Z/n/+XPUoomHMaq tSdEnVbQKGkZln0Pvr2671ukas0t10YwWR/S8GA8E+5/skvBZKlC8GviIwO+phYaykrHKDC9 NWAYtU5SMPTKzcDgPQ+GuvPVFLgLW2kwGvwU5NjLJdBZVSCF4sm7FFRnf2Kgu8ZEw8DDKSl4 nEYMbSUVGAYL4uCVeR6MvR5G0GStlsBY/g0aLnWZafhsGETQ1ejGcP1cAQJrg0sK/nETHbeY VFZ8kBBHST9DzLaT5Gn5SpLn6qKIzXKBJraRiwzp66mjSetVPyYOu09CjLk/aPJzqBcTb8N7 mlgr32PSYW5iiM+2KIE7KNuUJGrUGaIucvNRmarZ7cbpt2SZI0YvzkbNbB4KYnkumu92TlGz fKGxGAeY5pbzLtfEjA/h1vI+d8u0l7EU90PKD5n8kkAwl9vAD7R/RwHG3DJ+uK1m5kHOrefr r+Qy/0rD+QePX8z4oGlfNDBKB1jBxfC173r/30ww/B+H5h+H8i/LXbgIyc1ojgUp1NqMVEGt iY5QZWnVmRGJaak2NL3tvbO/D9nRSOceJ+JYpAyW22WRKoVUyNBnpToRz1LKEHmzJ0KlkCcJ WadFXdoR3UmNqHeiBSxWzpevGzuVpOCShRNiiiimi7rZVMIGhWWjqH1HX9Y350ZJdu1+1rBq m7BTXZrWwyVo6l/suFPI2EwrSsOEfon3S8qbRx2JJV7HImnL1mOXqww/o073jU61VKRv6Iu+ s2R7cGzs7zP9ZTmKWr2BLEg4MN4+2Xl4P7vQErKXlWuexzyhPFvW518LiU8OvRn/FVXNWX48 fGll/NxaJdarhLUrKZ1e+AtvG9rA1wIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRyG/e+cnXM2HJym5MnCaBGV5Q3UflmEBNWhG5ZlZqbOPLjl3GRT 06C0NEJxZiUhNmklmTdYqHhLpeb9gpWmLvPWShHxfsNLVM7o28Pz8r5fXgoT5+P2lFwZzamV UoWEEOLC80eSnAYmXGSuaR+cQGcoJqBoJQ7ejFTyQVdYjmBx9RsJCw3NBOS+XMZA9zEZhyXD GgajTWYShvPGcKh5WIGB+VELAdrkdQzuV+bzoD6nlQ+fytP5kLn2GoOKxBESuqt1BAwV/+HD mFGLQ2t2AQ7D6d7QpN8Ky+2TCBoMFTxYTssh4GmXnoAfycMIuurNODy/l47AUGfiw/qKjvCW sGUFX3lsVfYgyepLYtjSfEc21dSFsSWFKQRbMv+EZAd6awi2JWsdZ6sqF3isNmmaYOdG+3F2 pq6HYHPHZ3msoawHZzv0DaTPlgDh0TBOIY/l1C7HQoSyRrMZj3ohjJvXzuCJqJFKRQKKod2Z lPpM3MIEvZcxmVYxC9vSbsyCuXnDCymMnuYzo7p1niWwoQ8xQ21TyMI4vYeZbK3eLIhoT6b2 WRL5b3QnU/T2/aYXbPiMoSXCwmLag3n3pZ/MQEI9sipEtnJlbKRUrvBw1kTI4pXyOOcbqsgS tPFf3p1fjyvRYvcpI6IpJLEW7Yt0kYn50lhNfKQRMRQmsRU1jjnLxKIwafxtTq0KVscoOI0R badwiZ3o9BUuREyHS6O5CI6L4tT/Ux4lsE9EpWkHbQKvTSVMBc62hejtfq4Me82duNCrCEoY 9O1z/G28bkrwUykVpRpt2ESxT36VYNvq4ZGObrm/qpA8MN1X7q90v3g5K7zab/elWw67sJOe V42hx0duegocHrxadKzVnB0PDXBpF3cqzyW6Wmd3Bqm9fMemrb6b9p8JntzB3f0swTUyqZsj ptZI/wJ9qe0wuwIAAA== X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" There are no users of __netmem_get_pp(). Remove it. Signed-off-by: Byungchul Park Reviewed-by: Mina Almasry --- include/net/netmem.h | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/include/net/netmem.h b/include/net/netmem.h index c2eb121181c2..c63a7e20f5f3 100644 --- a/include/net/netmem.h +++ b/include/net/netmem.h @@ -224,22 +224,6 @@ static inline struct net_iov *__netmem_clear_lsb(netme= m_ref netmem) return (struct net_iov *)((__force unsigned long)netmem & ~NET_IOV); } =20 -/** - * __netmem_get_pp - unsafely get pointer to the &page_pool backing @netmem - * @netmem: netmem reference to get the pointer from - * - * Unsafe version of netmem_get_pp(). When @netmem is always page-backed, - * e.g. when it's a header buffer, performs faster and generates smaller - * object code (avoids clearing the LSB). When @netmem points to IOV, - * provokes invalid memory access. - * - * Return: pointer to the &page_pool (garbage if @netmem is not page-backe= d). - */ -static inline struct page_pool *__netmem_get_pp(netmem_ref netmem) -{ - return __netmem_to_page(netmem)->pp; -} - static inline struct page_pool *netmem_get_pp(netmem_ref netmem) { return __netmem_clear_lsb(netmem)->pp; --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0976722CBD0; Fri, 23 May 2025 03:26:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970790; cv=none; b=ODvKtG+BxQoS1jYhA2GRD3NLvJ7Ry9RmZcVmG2P+neHRXQOpaxMc6ayeW90txltRyGW+IDMB7ngGdcxIncJitg5LFb9GPHqFtIhQYrOPb1Gyp6C24d+3lcVtJ50N8Q2qy9FhRvSHqI0V8T2k3RnnuTKH0w0Lkxe78z8+WqaquS4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970790; c=relaxed/simple; bh=3L2Sd+xZtgizrI7/hZTYQUIdhjVtfvc7DF5TSB/XC6Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=qy28QPTSXcSAPAfx0uujUI7UlC5gvcw1R/3L6YRTJq8hk/RASKf83uRgjtmhJGcBHOPtglQUdMqKKacKC2Dua+FczIvip50I3tHWNUMsJeqBrtlV1l1+BE3vnICxQZso4TBDucBejF2uZRANIrKyIZPTVdvt9BB8M/ZZlQnt8sg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-0c-682feadc1cb7 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 16/18] page_pool: make page_pool_get_dma_addr() just wrap page_pool_get_dma_addr_netmem() Date: Fri, 23 May 2025 12:26:07 +0900 Message-Id: <20250523032609.16334-17-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTYRzGe3fevedsNDosqWNBl0EIQjPL5P1gMvqQL30IyQ+BRXnQUxvO aZvOqRRLjUhy3SSGTZpdljdYrounVlG60igozeVaeWHmCjMtzeUlKmf17cfzPP/flz9DKX1w FaMzFApGA69XITmUf1lav7F/NEG7abaGwg53C8LNMxZ8fUiUYkfTHYC/z76j8ZSvE+Er9ZGF xctKiKfdcxQeeRqi8aArDPH9E20UDp3uQri6cp7C5WKDBL+6Y5PimrlrFG6zDtH49T0HwgMt v6U43F4N8bPaRogHbRr81LkCR56PAexzt0lw5FQdwud7nAgPVw4C3NMRgvjiMRvA7ocBKZ6f cSDNenKr8a2E3K3tp4nTU0RuNsSTqkAPRTxNJxHxTJ6jyfs39xHpss9DcleckpDqinFEvo0E IZl46EfEfcsPyQunjyZTnjXpbKY8JUfQ68yCMSE1S6612ydRwSWZxRr2QyuYoauAjOHYJO6F 1SupAswi/7ZlR2PExnGBwCwV5Rg2kZsKdcIqIGcodlzKjTjmJdFiOavjWjvaFhmyGzjx5ACM soJN5oLD4j//Wq75xqNFkWwhPzMwjaKsZLdy3t4gHZVy7DTNed290r8HsdzjhgA8AxROsKQJ KHUGcx6v0yeptSUGnUWdnZ/nAQu/dR35uVcEk68y2gHLANVShShP0CqlvNlUktcOOIZSxSie hNVapSKHLykVjPkHjEV6wdQOVjNQtVKxOVKco2QP8YVCriAUCMb/rYSRrbKCvE+aq5+8N7vM aQ2j5Y7sH7zVvDu+TnO7z6nu69j3eUAp/x67Pbs7dTA1k0i7BYdr3+WPGfkVO/wd9XFPvro/ m9Xr0s4eTdkTtjdrfrkOfxP9F3L3lh6Hw2UZ+x3oQ9L+E2M7H9i3oFrDslE+7mDZ5OF36duS gwWWidYVxVm2XSpo0vKJ8ZTRxP8BsPeBqtcCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAAzXRe0hTcRwF8H67z80G12V5M6MYPYV8kfGNQrRCLz0k+iMpqBx6cUunsqlo EM0X4dBppiE6cyL5hqWJzgcmznzU0poaS01FcWSEmS/UheaC/vtwDpx/Do1JqnEPWhGXyKvi ZLFSUoSLwi5knJn84SP3fTHuD3pjAwn1GylQPWMiQF/XgmB1c4KCld5+Eior1jHQD2fisGbc wmC+b5aC6So7Dp1PWzGYzRsgITfTgUG6qUYA5rJBAj616Ago3HqFQatmhoKRdj0JUw07BNh7 cnEYLKnFYVoXBH2GA7D+4SeCXmOrANZzykh4bjWQMJc5jcBqnsWhNE2HwNhlI8CxoSeDpFxz 7VcB11byjeIMTUncmxovTmuzYlxTXTbJNS0XUNzkl06SGyh24FybaUXA5WYsktzv+XGc+9U1 RnKV35cEnLF5DOcshl7qputd0cUoPlaRzKt8AiNE8uLiZTKhXJiisY/hGrRBaRFNs8xZdkcX qUVCmmROsjbbJua0G+PHrsz241okojFmkWDn9Q6Bs9jHKNhGc+s/48xx1pQ9hTstZs6x43Mm ymmWOcLWv+7+NyTczfOn1kinJUwA2zE6TuUjkQHtqUNuirhkpUwRG+CtjpGnxilSvCPjlU1o 976qx3+emdDqSGgPYmgk3Ss+pfSRSwhZsjpV2YNYGpO6id/ZveUScZQs9RGvin+gSorl1T3o EI1L3cVXw/kICRMtS+RjeD6BV/1vBbTQQ4N80064vF0gT9/aeaK97loxVH5neWL14cECa/tt W03E+/rP5qSQQoML6tgOTh5zCWnMshzVl97fzKhcqG7OC1ff8zxst1hCSsrLXw4R0UXnVXLZ lSXd/iVXs94aMJxFbK+3uVyyFF2+kT7QEKgcDVo6dq3M/aMjWOzv2c2EFYXmSHG1XObnhanU sr8WbSCuugIAAA== X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The page pool members in struct page cannot be removed unless it's not allowed to access any of them via struct page. Do not access 'page->dma_addr' directly in page_pool_get_dma_addr() but just wrap page_pool_get_dma_addr_netmem() safely. Signed-off-by: Byungchul Park Reviewed-by: Mina Almasry Reviewed-by: Ilias Apalodimas --- include/net/page_pool/helpers.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/include/net/page_pool/helpers.h b/include/net/page_pool/helper= s.h index aa120f6d519a..bcd0c08fd5b8 100644 --- a/include/net/page_pool/helpers.h +++ b/include/net/page_pool/helpers.h @@ -441,12 +441,7 @@ static inline dma_addr_t page_pool_get_dma_addr_netmem= (netmem_ref netmem) */ static inline dma_addr_t page_pool_get_dma_addr(const struct page *page) { - dma_addr_t ret =3D page->dma_addr; - - if (PAGE_POOL_32BIT_ARCH_WITH_64BIT_DMA) - ret <<=3D PAGE_SHIFT; - - return ret; + return page_pool_get_dma_addr_netmem(page_to_netmem(page)); } =20 static inline void __page_pool_dma_sync_for_cpu(const struct page_pool *po= ol, --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 50E8D2494C2; Fri, 23 May 2025 03:26:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970791; cv=none; b=Cvnkhdc/1By2D1mHwnnXUVTF5jEHac1A2KMidzj5U1n98o3iSdvRWKcD9xcmgAMyqAGtv2wf6fXiL8P2CO637HQguH0xJCTqBclWx+0GMmpiim+/bcvG8crmrmc2tJ3lzIuDlxEt07fJjF9vIs9AzUGQcWmaa4zKYJSSjyvrDo4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970791; c=relaxed/simple; bh=Z3JJeNdwGBejhySVSY6ZldGF6m28wstyI2xRaKuKRmY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=CWGgVpdu6QyljTbZ8BzWkGfIH5MUY9dtBftYJB8qz4PsSMn1pm75B5lJba496eJT3iGEldzIPCA9qdD9COlPx6E7tYCC1i6PtnUAiVvETaMF+2AbAs0mQh7NXmVgJj/3khoOihQxS/0RnByqfNQb0CvcPWMWZD4/KaMvh8i4AaI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-16-682feadce21a 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 17/18] netdevsim: use netmem descriptor and APIs for page pool Date: Fri, 23 May 2025 12:26:08 +0900 Message-Id: <20250523032609.16334-18-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAz2Ra0hTcRjG+++cnXOcrg5L659h0UAjIW+ZvIWUn+oEYUXQhyJ15KEtr2xq 0y6YSZqpWXYxWzSpzBvMluk001zzRkKmacvykqKSeMtbuinmlPr243mf53k/PAwhMZHOjCIy hldGysKllIgUjTnk7e4e8ZR7GTLtQKMroaB4Xg0v+wxC0BSVI5hZ+E7DtKmRgmd5cwRoPiWT MKuzEDDY0E9Db/4QCdUpFQT0326iICPZSkCSoUAAreWZQrhneUFARWIfDe1VGgp6SpaFMGTM IKE5t5CE3swAaNBugrmPowhMugoBzKU/oSC7TUvBQHIvgrYP/SQ8vpaJQFdjFoJ1XkMF7ODK Cr8JuMrcbprT6mO51wXuXJq5jeD0RTcpTj91l+Z+dFZTXFOOleQqDdMCLuP6OMX9HuwiuYma DorTlXWQXIvWRHPT+m3H2dMi/1A+XBHHKz0PhIjkk8mviOghibqivFuQiMo2pCE7BrO+eOBN IfWfDc0CG1PsTmw2LxA2dmS98XR/I5mGRAzBjgvxoMa6YmKYjWwg1lku2zwk64qfzBQjG4tZ P1yYs8aY3Y6LS9+v9tit6Fk9s6u/JOxe/PZLF23rxOwsjZfud9BrgS24rsBMZiGxFq0rQhJF ZFyETBHu6yGPj1SoPc5FRejRyrb5VxbPGNBU60kjYhkkdRAbRJ5yiVAWp4qPMCLMEFJHcf2Q h1wiDpXFJ/DKqGBlbDivMqKtDCndLPaZuxgqYc/LYvgwno/mlf+uAsbOORGlf67EgXssbi6K E3fqqoKEj5L+DGepamsjLvChqW5+B9P9Lz2dt5+4kdvpO5y4vEvd0ONoPVUzonXbt5h99FBL UIiTfe2vgnZVfemDh0fG3MJwgsVV+s57SYRSnVyeG3/6HPtaHyzb7y0NXH/W63Cj0pTRMFk9 erX4liCPxXU9KVJSJZd5uxNKlewvGfoLdNcCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAAzXRa0hTcRgG8P47Z2fH1fA4RQ9GGYNIBJ2Kl1e6YPShQ4KEFtaQcuShLTe1 TdccRpqLUnJpFxTbYGV5x9U0N0tGTfNCA0szlnlDcYSEaV7yRuWKvv143ofny0tiwno8mJRn 57GqbKlCRPBxfvLBkvCxObEssmorHoyWFgKa17RQP2XngrGpA8Hy+hceLPX0EVD7aBUD46Ae hxXLBgazvdM8mKzz4NB104bB9J1+Asr1mxhctzdwoNs0wIX3HQYu3N94ioGtaIoHwy+NBEy0 /OaCx1mOw0BNIw6ThkToNQfC6rtvCHosNg6s3jYRcG/ITMCMfhLBUPc0Dg+LDQgsDjcXNteM RKKIaW/8zGE6a8Z5jNmaz7Q1hDFl7iGMsTaVEoz1x10eM/api2D6qzdxptO+xGHKS+YJZnF2 FGe+O0YIpvbrAoextI/gjMvcwzvpJ+EfymQVcg2rEh/J4MsW9M+xXI9Qa+sY5xShdt8y5EPS VAw9Yx/geE1QB2i3ex3zOoCKopem+/AyxCcxap5Lzxo3t0sk6U8l05aNQm8Hp/bTpuVm5LWA iqMbq/+ZpkLo5mev/+74bOcVEyuE10Iqln71cZRXgfhmtKMJBcizNUqpXBEboc6SFWTLtREX cpRWtP2+uqtblXa0PHzciSgSiXYJQpVimZAr1agLlE5Ek5goQPDWEyETCjKlBTpWlXNela9g 1U60m8RFQYITaWyGkLoozWOzWDaXVf2/ckif4CIkkcRJgx4Hazs1rUn5tTHhpWfOnWqbE/g+ ie8fzJ8LytVPRrcuTjxI25eUEvqrOF0RuBdSb3GV9AtV3LJDQqVeflOYFuk6ZipKCSu4NnzJ ddZ/Z4IzTVkZRN4wiw0x6a5F6+GQvhEWTBlVR3Vuw1howk/bhs7ht+eDUnc6+ooIV8ukUWGY Si39A8t6AHa6AgAA X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" To simplify struct page, the effort to seperate its own descriptor from struct page is required and the work for page pool is on going. Use netmem descriptor and APIs for page pool in netdevsim code. Signed-off-by: Byungchul Park --- drivers/net/netdevsim/netdev.c | 18 +++++++++--------- drivers/net/netdevsim/netdevsim.h | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index af545d42961c..c550a234807c 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -821,7 +821,7 @@ nsim_pp_hold_read(struct file *file, char __user *data, struct netdevsim *ns =3D file->private_data; char buf[3] =3D "n\n"; =20 - if (ns->page) + if (ns->netmem) buf[0] =3D 'y'; =20 return simple_read_from_buffer(data, count, ppos, buf, 2); @@ -841,18 +841,18 @@ nsim_pp_hold_write(struct file *file, const char __us= er *data, =20 rtnl_lock(); ret =3D count; - if (val =3D=3D !!ns->page) + if (val =3D=3D !!ns->netmem) goto exit; =20 if (!netif_running(ns->netdev) && val) { ret =3D -ENETDOWN; } else if (val) { - ns->page =3D page_pool_dev_alloc_pages(ns->rq[0]->page_pool); - if (!ns->page) + ns->netmem =3D page_pool_dev_alloc_netmem(ns->rq[0]->page_pool, NULL, NU= LL); + if (!ns->netmem) ret =3D -ENOMEM; } else { - page_pool_put_full_page(ns->page->pp, ns->page, false); - ns->page =3D NULL; + page_pool_put_full_netmem(netmem_get_pp(ns->netmem), ns->netmem, false); + ns->netmem =3D 0; } =20 exit: @@ -1077,9 +1077,9 @@ void nsim_destroy(struct netdevsim *ns) nsim_exit_netdevsim(ns); =20 /* Put this intentionally late to exercise the orphaning path */ - if (ns->page) { - page_pool_put_full_page(ns->page->pp, ns->page, false); - ns->page =3D NULL; + if (ns->netmem) { + page_pool_put_full_netmem(netmem_get_pp(ns->netmem), ns->netmem, false); + ns->netmem =3D 0; } =20 free_netdev(dev); diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netd= evsim.h index d04401f0bdf7..1dc51468a50c 100644 --- a/drivers/net/netdevsim/netdevsim.h +++ b/drivers/net/netdevsim/netdevsim.h @@ -138,7 +138,7 @@ struct netdevsim { struct debugfs_u32_array dfs_ports[2]; } udp_ports; =20 - struct page *page; + netmem_ref netmem; struct dentry *pp_dfs; struct dentry *qr_dfs; =20 --=20 2.17.1 From nobody Sun Dec 14 12:13:44 2025 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 564A5270ECD; Fri, 23 May 2025 03:26:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.125.252.92 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970793; cv=none; b=iD+FLpQM571sUjsbuLt4dQ7xyibSLWDtQ7SzkWGUD1cHqXyaMwLJaz/DkAzPPkFobPcrKnSIMX9WRbma/JrUqA7o4fVsRq188JX9hrgWav+hcgiVpkY3MbUba9xkcN2ky5IuFQz9mQCZfV7MOG9Uxxm2iF2O8pH3fUkvSvJlCxk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747970793; c=relaxed/simple; bh=C9NK/m9W07yH0SH2bdXndsqdPgn7AEXo1UEv0+SzIRk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=VvgG4pNM25llbw5yVSZhnOY6x1KE/+yoHANxUJQIpwXpFJAcNqWqtd7mUBrCMwa5Zcyeymfhg6g0pXL+PEa4nLLneTvybn8LPhdYH/KPYVvvUWysKgWarEjWwsSpjQmUpClL5OJ3RdD1yqlOGHVriU/CIVphL6rNidw52GxU5OQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com; spf=pass smtp.mailfrom=sk.com; arc=none smtp.client-ip=166.125.252.92 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sk.com X-AuditID: a67dfc5b-681ff7000002311f-23-682feadd3b6c 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 18/18] mm, netmem: remove the page pool members in struct page Date: Fri, 23 May 2025 12:26:09 +0900 Message-Id: <20250523032609.16334-19-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRSUwTYRiG/TvTmaGhZqwII4poFTUQ2YLmI0HDwcN/MgY1cTlII6OtlMWW PUGrEo0NICphsyQlRqylsVoRWkSUAgWiEWSzgiyp0oMiO0TBuBTl9uR9v++5vAwhaSH9GUVy Gq9KlimllIgUffOu2jP8JUwePjS1FnRmEwU137PgwZhVCDpjHYL5H0M0zLW2U3CvapEAXVce CQvmJQLGHS4aRqvdJDReryfAdbODgoK8ZQKuWA0C6K4rFELx0n0C6jVjNPQ26CgYMf0Wgtte QEJnxUMSRgtjwaH3hcXXEwhazfUCWMyvpOBOj56CT3mjCHpaXCTcvVyIwNzkFMLydx0Vuw3X PvwgwLaKYRrrLen4qSEYa509BLYYb1DYMnubxh8HGincUbZMYpt1ToALrk5SeGZ8kMRTTf0U Ntf2k/iNvpXGc5Yth9mTopgEXqnI4FVhB+JF8icFTkFqi1+Wu3eTBpkkWuTFcGwUZ8jToVVe yHcLPEyxuzin8wfhYR82gptztZNaJGIIdlLIjeuWV47Ws4e46SYTpUUMQ7JBXHVJuCcWs/u4 WeNL+p8zkKt5/GrF4/U3LxpZoDwsYfdyz/sGaY+TY2dorsw2/f9hI9dscJJFSKxHa4xIokjO SJIplFGh8uxkRVbomZQkC/o7bXXuz1NWNNt9xI5YBkm9xVZRmFwilGWos5PsiGMIqY+4zR0q l4gTZNk5vCrltCpdyavtaBNDSv3EkYuZCRL2nCyNT+T5VF612goYL38N0lwovdYZEq1t25h2 LeAXE1DRPDGwFGfIdMTF75gpdzsvK83RBsdAnz3361Hl1YmS4Usvdh576zCdjel1nX8X1et7 8ESIfWypPLNh9y2N99bIIHyxNOlRunRzgxonBt6vGf0cn98jLw5UXOlc98x//3zw9uNcii2n yth1tHJD1XuHlFTLZRHBhEot+wN92pOl1gIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRyG++9cN1qcTqsORgQr07ScWsYPCjWK/CNk9akIQpcd2vLKZuK6 YSqUw5mWWdqMydByCsspzpWsmNcuULiU5W1hOaLCLl5ILSyNvj0878v75WUJvo4MYrWZOaIu U52upGWkLGlP4Y7RTypNZOM2MNubaGj8mQf337VTYLa1IZieG2ZgqquXBmvtLAHmV0UkzNjn CZjoGWfAXx8goeOqk4Dx6300mIoWCChofyCBzppnFLxuK6WgYr6OAGf+Owa8j8w0jDUtUhDw mEh4Vt1Agr80Hnos62D2xRcEXXanBGZLami42W+h4X2RH0F/5zgJd6+UIrC7fRQs/DTT8Urc 2vBWgl3Vowy2OM7hlgdh2OjrJ7DDVkxjx48bDB4Z7KBx350FErvapyTYVDhJ4+8TQyT+6h6g sfXjNwm2tw6Q+KWlizmy+oRs72kxXZsr6lSxKTJNs8knye5cnxfwbshHTbwRSVmB2yXMlAQk S0xzIYLPN0cssYKLEqbGe0kjkrEEN0kJE+aF5dIaLkn45m6ijYhlSS5YqK+MXNJybrfww/aE +be5SWh8+HR5R/rXl43N0EvMczHC4zdDTBmSWdAKG1JoM3Mz1Nr0mAh9msaQqc2LSM3KcKC/ 59Vf+lXejqa9CR7EsUi5Uh6aodLwlDpXb8jwIIEllAp5dyBCw8tPqw3nRV1Wsu5cuqj3oA0s qVwvTzwmpvDcGXWOmCaK2aLufyphpUH5KPxQVrC+fOcYexL2Sb3QJjv4QRXOHNmzlRqJWVXm n3e4EpJdk9zmlo2VxYmtistZWt5YeNscFBeqOOCMqzjbmFZ/in9e4L949Gl3cfQ1qyEvovDW cPm8dvA3dTgndfuF2JfWugq8GF12vrlKuj/ctMVQ1R1w13523jvOz6wNUZJ6jToqjNDp1X8A 10tm/bgCAAA= X-CFilter-Loop: Reflected Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that all the users of the page pool members in struct page have been gone, the members can be removed from struct page. However, since struct netmem_desc might still use the space in struct page, the size of struct netmem_desc should be checked, until struct netmem_desc has its own instance from slab, to avoid conficting with other members within struct page. Remove the page pool members in struct page and add a static checker for the size. Signed-off-by: Byungchul Park --- include/linux/mm_types.h | 11 ----------- include/net/netmem.h | 28 +++++----------------------- 2 files changed, 5 insertions(+), 34 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 873e820e1521..5a7864eb9d76 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -119,17 +119,6 @@ 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 dma_addr; - atomic_long_t pp_ref_count; - }; struct { /* Tail pages of compound page */ unsigned long compound_head; /* Bit zero is set */ }; diff --git a/include/net/netmem.h b/include/net/netmem.h index c63a7e20f5f3..257c22398d7a 100644 --- a/include/net/netmem.h +++ b/include/net/netmem.h @@ -77,30 +77,12 @@ struct net_iov_area { unsigned long base_virtual; }; =20 -/* 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 dma_addr; - * atomic_long_t pp_ref_count; - * }; - * - * We mirror the page_pool fields here so the page_pool can access these f= ields - * without worrying whether the underlying fields belong to a page or net_= iov. - * - * The non-net stack fields of struct page are private to the mm stack and= must - * never be mirrored to net_iov. +/* XXX: The page pool fields in struct page have been removed but they + * might still use the space in struct page. Thus, the size of struct + * netmem_desc should be under control until struct netmem_desc has its + * own instance from slab. */ -#define NET_IOV_ASSERT_OFFSET(pg, iov) \ - static_assert(offsetof(struct page, pg) =3D=3D \ - offsetof(struct net_iov, iov)) -NET_IOV_ASSERT_OFFSET(pp_magic, pp_magic); -NET_IOV_ASSERT_OFFSET(pp, pp); -NET_IOV_ASSERT_OFFSET(dma_addr, dma_addr); -NET_IOV_ASSERT_OFFSET(pp_ref_count, pp_ref_count); -#undef NET_IOV_ASSERT_OFFSET +static_assert(sizeof(struct netmem_desc) <=3D offsetof(struct page, _refco= unt)); =20 static inline struct net_iov_area *net_iov_owner(const struct net_iov *nio= v) { --=20 2.17.1