From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 421C5C71136 for ; Thu, 12 Jun 2025 00:40:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B3A1E6B007B; Wed, 11 Jun 2025 20:40:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AC4096B0088; Wed, 11 Jun 2025 20:40:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 98AF46B0089; Wed, 11 Jun 2025 20:40:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 778EC6B007B for ; Wed, 11 Jun 2025 20:40:03 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 02A9B819A2 for ; Thu, 12 Jun 2025 00:40:02 +0000 (UTC) X-FDA: 83544891486.27.FDE2FCC Received: from invmail4.hynix.com (exvmail4.skhynix.com [166.125.252.92]) by imf08.hostedemail.com (Postfix) with ESMTP id 40F7E160012 for ; Thu, 12 Jun 2025 00:39:59 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=none; spf=pass (imf08.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749688801; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zucom74tKudKzPoFgMYSfA0vojVQAeH7KZH+ezd2trI=; b=WU5ZaI+MqqaHf1qX2cVAihqHQKhx6D5fptPGZY5rKT73i0+lhq1GdF71nB9PqwJ1RO/k4n QF4cVtXFENyHFytI1UUtf9bE87GEE9hS2ox7Poed679vohCoewbKh+NGgoNFYjsdf6rI2A sTeFtfi+pzgvsw12N50sAK/iicC4kck= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=none; spf=pass (imf08.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749688801; a=rsa-sha256; cv=none; b=J2C70IhwBTU+AQEEkzBfMgK6Z+HYqQ0u1xdj0hNdMizsb2MlaqId+5Gexs5o4mbgrDjkMN mAmKr5zMasi/DTBs6l9xXlqVKVah12K6tIu4M4DU5idaz0flZtgwlvZ/uhXj2xm0NrS1e6 3RYi9/lY144za4gg9FNW8Z5v4rqds0w= X-AuditID: a67dfc5b-669ff7000002311f-7f-684a21dbc596 Date: Thu, 12 Jun 2025 09:39:49 +0900 From: Byungchul Park To: Pavel Begunkov Cc: Mina Almasry , willy@infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel_team@skhynix.com, kuba@kernel.org, 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, toke@redhat.com, tariqt@nvidia.com, edumazet@google.com, pabeni@redhat.com, saeedm@nvidia.com, leon@kernel.org, ast@kernel.org, daniel@iogearbox.net, david@redhat.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, mhocko@suse.com, horms@kernel.org, linux-rdma@vger.kernel.org, bpf@vger.kernel.org, vishal.moola@gmail.com Subject: Re: [PATCH net-next 9/9] page_pool: access ->pp_magic through struct netmem_desc in page_pool_page_is_pp() Message-ID: <20250612003949.GA41589@system.software.com> References: <20250609043225.77229-1-byungchul@sk.com> <20250609043225.77229-10-byungchul@sk.com> <20250610014500.GB65598@system.software.com> <937e62c5-0d12-4bea-b0c1-a267c491cf72@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <937e62c5-0d12-4bea-b0c1-a267c491cf72@gmail.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-Brightmail-Tracker: H4sIAAAAAAAAA02Sa0hTYRjHfc95d3YcDo7T6tWgcBKBoaYZPVRG9CGOfeliRHdbeWojXTLT plDMMixLi5LMuWomqZk1WjanidkybymZZq2Ll9Tph65uJZZ2cZPIbz/+//d9fs+Hh6VlxaJA VqU+LGjUigQ5I8GSTz7XQ98GrVMutvRGgsFUwcCtcS2U9ltFYCi3IPj2460YXA1NDBQXjdFg eJaJ4bvpJw2OxgEx9JUMY6jNqqJh4FwzAzmZEzQct5ZR0GHJFUHezxs0VOn6xdBVY2Cgt+KP CIZtORha9Dcx9OWuhkbjbBh7+hFBg6mKgrGzVxi42GlkYDCzD0Hn4wEMhRm5CEx1dhFMjBuY 1UF85c3XFF+t7xHzRnMKf68shM+2d9K8ufw0w5udF8T8u5e1DN98eQLz1VYXxeec+Mzwo443 mP9S183wpspuzLcZG8S8yzxvA7ddsjJeSFClCprwVXskytz8SZzUGqQ92dFO6ZAjIBuxLOGi yNDrzdnI24M1Iy/EbsbcAlJa89DDDLeQ2O0/aDf7c4vIh1e2qVzC0txHETFlWbC78ONSSNaz 854PUg7Il8G7nkcy7gxFxk+58HThS1oKhjxMT02dvNpJu5egubmk9Dc7Hc8nJ+4XemTeXDRp b24WuXkWF0zqLU2UeybhrCwpyqnH01sHkEdldnwe+epnKPQzFPr/Cv0MhRHhciRTqVMTFaqE qDBlmlqlDdt3KNGMpk6n5OjkDitydsTaEMciuY/UqoxRykSK1OS0RBsiLC33l872m4qk8Yq0 dEFzKE6TkiAk29BcFsvnSCPHjsTLuAOKw8JBQUgSNP9aivUO1KHY/r1d/RuvhOhi2i99vWbb VTfoG5OoXXlU7LAmjdy57TU/KXj7krhC+aeGwP09Z7bqHtTubom7tn6Z0RmhDrfmm12FzvCd +9+vefK8dVThc7U0eh0bnbHNZCtbmq31+n56+aSFYgq25K0okTtfpZf/al3btDZoU+iSDT6h x44PtWXp5ThZqYgIoTXJir/o4XKSNgMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA02Sa0hTcRiH+Z/bjsPV8baO+iFahGR0owtvdLM+1CkogwipiDrVoY3clE3F RYHlanbZukI2ZyxE55aw8rKtMaympGblrcs0zbA2gyzzkmhKNheR3x5+v/d93i8vjUfryQRa ocoS1Co+XUaJCfHu9flL3y/YKV9RMxAPZkcFBffHc8H60U2C2e5EMDrxXgQj9Q0UlNwbw8Hc oiPgp+MXDoFnfSLoLQsS4NW7cOi72kiBQTeJwzl3OQZ1xU0ktDqNJNz6VYqDK++jCDo8Zgo+ VEyTEPQZCGgy2QjoNabAM4sUxpoHENQ7XBiMXSmm4Ga7hYJPul4E7XV9BBSdNSJw1PpJmBw3 UykyrtrWiXGPTD0izlKZzVWVJ3OX/O04V2m/SHGVwzdEXPdbL8U1Fk4S3CP3CMYZ8r9T3FCg i+AGa99QXMmXHxjnqH5DcC8s9aI9UQfEG44L6YocQb180xGx3Hh7ish8viD3fOtLLA8F4i+h CJplVrOe/teiGSaYRazV8zjMFJPE+v0T+AzHMkvYr+98oVxM48wAyTr0TmKmiGGyWX3LtfCC hAF28NPD8FA0cxljxwtGiL9FFNt053OY8ZB16m57yEqHOJG1/qb/xvPZ/Jqi8LEIZiP7srGR nOE4ZiH7xNmAXUNzTLNMplkm03+TaZbJggg7ilWocpS8In3NMs1JuValyF12LENZiULvUXZm 6robjXZs9yGGRrJIiVu+Qx5N8jkardKHWBqXxUqkMaFIcpzXnhLUGYfV2emCxocSaUI2T7Iz TTgSzZzgs4STgpApqP+1GB2RkIesBbVHTb7kLXuD3sKk2lWJem9wNPI6HRX3dl9kolRr/xY8 mxpPDqaWXK442C9dlzqtel5UBc2vFj+oaLM8bQ74DrV5beP9t+5MDJ22uTJLtl3Y2sB7koZ3 GbpLD8cUv3Bt1qVdnGO8v0mZ3dW6H1X10Ie+rG3TFDi1hXWqzrlXZYRGzq9MxtUa/g/f9oLO GgMAAA== X-CFilter-Loop: Reflected X-Stat-Signature: hx4pe8h76fnbjbkkyczwdgzxpenroosr X-Rspamd-Queue-Id: 40F7E160012 X-Rspam-User: X-Rspamd-Server: rspam09 X-HE-Tag: 1749688799-498936 X-HE-Meta: U2FsdGVkX19SM+iMpNaej+EUjfLxiSVJFSyaFwguYyAQtOL7JEG451DD79QBSA+3sfkM1++okOXvh76waJH+ER0pL7Ymx0dmrRnG1YzUwHyz65WxSAwklJoWvK77AU5sHTKG4agU7kvahE0PeBFwFPfhpwIPqWy4/J8RhV4r5OcVH9kc+i46xO09EHFmI76K9HyrKxK7xnmLN3x7uyW9iT8sIGS2jyKJRGp8Iu9o4dQpWqHOVe3yQIUiQ8kh0lq6dRhsmBPX6gplehetT9UCb9WDKZhqWYFFSfTN56ocY0psj+nDHJKmF4rxhmyejylXwCaMHzlVx3wY8Gti4qgPgL8f+o6ksmVN6SfqpTrBXDZbXsIKucHhAD4+nnb/MjE9nf+o13kbnoAxJFJ9nCab0IeG9v1PcKIzwB9uJfS7ig/esMn4M4j+1UFcYXk/891VLp8Xgqys8Z20ka0441DLv1hhYVlB07OmgLoRFsxBZEnkr4rDsrmSM1LyNvu78drdEewwE1eP7I4rEP2IPi2kcws7sCgh1Y16jxcXuvaFvtAL/AoZsyosOzepUPkdkRCI7yTU73wH85ORTdWcwQPx1yZAmo2EplyxYWfGe/xZKbpDzOJBEJTgq78XDjTEJojd7zC7umCidcN9Lzve5GoTAZL6moG2swP1mIstdVkAmSfGM/zjpNqT9sbqVtj9K5O32+uL5neMUxm9ZREOoDM0+uGQkYLdk84bwr6h8HwezvIzn6nNTrNhzqS8Nft4gnHv5L1//DiwcWmtCgdafQTcqNuiD/FlPL0sV/g0YjY2na/a0sydDFNso3RqBKEd7Yuj5biwd482A836/LiwBADJcHZyTz3Lj3qiyou1uPe+U4C3byxhTXPRyMMMCCpJa06b/VS8ZGp/UqvgZBdqN4Hk2u82eLhHncohCId1mhC37SYtoSIDPgDTJaETgR5ydKGBeQfE0e/0DQACiHrEgjD RLoRI/d1 L2pQecP1wN5eIGCRwZTFv/RJ94qKZevQ4YBXoD6UrR9yOgNwp5sL9f46V2sbqKD6aZCY3igQTMTb1R6KrUUM6Jcx0/nhQ/s4KiOLUOmsKRXhHkzVTT/G0Of/Y3PTHEMxJrybfjlKn7Q0wUqOd24cIGYBvfQwfRnbqsDTK6n4ThRAD6T80YRdzRaEduiHgQvseJCrPMp+qwbtOilk= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, Jun 11, 2025 at 03:30:28PM +0100, Pavel Begunkov wrote: > On 6/10/25 02:45, Byungchul Park wrote: > > On Mon, Jun 09, 2025 at 10:39:06AM -0700, Mina Almasry wrote: > > > On Sun, Jun 8, 2025 at 9:32 PM Byungchul Park wrote: > > > > > > > > To simplify struct page, the effort to separate 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 directly accessing page pool > > > > members of struct page. > > > > > > > > Access ->pp_magic through struct netmem_desc instead of directly > > > > accessing it through struct page in page_pool_page_is_pp(). Plus, move > > > > page_pool_page_is_pp() from mm.h to netmem.h to use struct netmem_desc > > > > without header dependency issue. > > > > > > > > Signed-off-by: Byungchul Park > > > > Reviewed-by: Toke Høiland-Jørgensen > > > > --- > > > > include/linux/mm.h | 12 ------------ > > > > include/net/netmem.h | 14 ++++++++++++++ > > > > mm/page_alloc.c | 1 + > > > > 3 files changed, 15 insertions(+), 12 deletions(-) > > > > > > > > diff --git a/include/linux/mm.h b/include/linux/mm.h > > > > index e51dba8398f7..f23560853447 100644 > > > > --- a/include/linux/mm.h > > > > +++ b/include/linux/mm.h > > > > @@ -4311,16 +4311,4 @@ int arch_lock_shadow_stack_status(struct task_struct *t, unsigned long status); > > > > */ > > > > #define PP_MAGIC_MASK ~(PP_DMA_INDEX_MASK | 0x3UL) > > > > > > > > -#ifdef CONFIG_PAGE_POOL > > > > -static inline bool page_pool_page_is_pp(struct page *page) > > > > -{ > > > > - return (page->pp_magic & PP_MAGIC_MASK) == PP_SIGNATURE; > > > > -} > > > > -#else > > > > -static inline bool page_pool_page_is_pp(struct page *page) > > > > -{ > > > > - return false; > > > > -} > > > > -#endif > > > > - > > > > #endif /* _LINUX_MM_H */ > > > > diff --git a/include/net/netmem.h b/include/net/netmem.h > > > > index d84ab624b489..8f354ae7d5c3 100644 > > > > --- a/include/net/netmem.h > > > > +++ b/include/net/netmem.h > > > > @@ -56,6 +56,20 @@ NETMEM_DESC_ASSERT_OFFSET(pp_ref_count, pp_ref_count); > > > > */ > > > > static_assert(sizeof(struct netmem_desc) <= offsetof(struct page, _refcount)); > > > > > > > > +#ifdef CONFIG_PAGE_POOL > > > > +static inline bool page_pool_page_is_pp(struct page *page) > > > > +{ > > > > + struct netmem_desc *desc = (struct netmem_desc *)page; > > > > + > > > > + return (desc->pp_magic & PP_MAGIC_MASK) == PP_SIGNATURE; > > > > +} > > > > +#else > > > > +static inline bool page_pool_page_is_pp(struct page *page) > > > > +{ > > > > + return false; > > > > +} > > > > +#endif > > > > + > > > > /* net_iov */ > > > > > > > > DECLARE_STATIC_KEY_FALSE(page_pool_mem_providers); > > > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > > > index 4f29e393f6af..be0752c0ac92 100644 > > > > --- a/mm/page_alloc.c > > > > +++ b/mm/page_alloc.c > > > > @@ -55,6 +55,7 @@ > > > > #include > > > > #include > > > > #include > > > > +#include > > > > > > mm files starting to include netmem.h is a bit interesting. I did not > > > expect/want dependencies outside of net. If anything the netmem stuff > > > include linux/mm.h > > > > That's what I also concerned. However, now that there are no way to > > check the type of memory in a general way but require to use one of pp > > fields, page_pool_page_is_pp() should be served by pp code e.i. network > > subsystem. > > > > This should be changed once either 1) mm provides a general way to check > > the type or 2) pp code is moved to mm code. I think this approach > > should acceptable until then. > > I'd argue in the end the helper should be in mm.h as mm is going to > dictate how to check the type and keep them enumerated. Definitely yes, I agree. However, mm cannot do that for now. With the current way, it should be served by pp code since the type checking is done through the pp fields. Byungchul > > Reviewed-by: Pavel Begunkov > > -- > Pavel Begunkov