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 F274DC3ABC3 for ; Mon, 12 May 2025 12:31:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E987D6B00F9; Mon, 12 May 2025 08:31:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E47586B00FA; Mon, 12 May 2025 08:31:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D10966B00FB; Mon, 12 May 2025 08:31:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id B1D336B00F9 for ; Mon, 12 May 2025 08:31:02 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 43F2A810E6 for ; Mon, 12 May 2025 12:31:02 +0000 (UTC) X-FDA: 83434190364.27.A16E1C3 Received: from invmail4.hynix.com (exvmail4.skhynix.com [166.125.252.92]) by imf26.hostedemail.com (Postfix) with ESMTP id 57AEE140011 for ; Mon, 12 May 2025 12:30:59 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf26.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf26.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747053060; 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=7mfws6/3Ke4wEMCSuuGtPT49FY1+PsH/fekH6in9hpA=; b=6AL5JRbxso3Xt0i7LeKY6KLk9y9V86hI4YB9mjo/+W6d3eq9TSQLE5QIMFQOXAJBHz0wsH ZMlCWSNzxUZ22WP/DocC6qqSedftkFRMqtvi7BsP4aNv5h/2EpPg2iTDWPuo0k69umUc85 ciR2vlW327Ek7vDnCFpRw85dE8qrKCE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747053060; a=rsa-sha256; cv=none; b=ks7o+jQh1oRB6vtL10BIpuJGASC3asJiQereUWHPlGR2WDqQOaYQDcxg6b/hanfaM9sqrZ 6pzFPw9Xd9fU4zvcb9T0UKRuC9e6M6iDvyQUas1k3Yh9e+d7o6OdHZS2XotCVI2GZR0sk4 Rki2ds3NxxkA6dbQ7lLH9S/WSPgZvao= X-AuditID: a67dfc5b-669ff7000002311f-70-6821ea0019eb Date: Mon, 12 May 2025 21:30:51 +0900 From: Byungchul Park To: Mina Almasry Cc: 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, ast@kernel.org, daniel@iogearbox.net, davem@davemloft.net, john.fastabend@gmail.com, andrew+netdev@lunn.ch, edumazet@google.com, pabeni@redhat.com, vishal.moola@gmail.com Subject: Re: [RFC 02/19] netmem: introduce netmem alloc/put API to wrap page alloc/put API Message-ID: <20250512123051.GA45370@system.software.com> References: <20250509115126.63190-1-byungchul@sk.com> <20250509115126.63190-3-byungchul@sk.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFIsWRmVeSWpSXmKPExsXC9ZZnkS7DK8UMg+mnTS3mrF/DZrH6R4XF 8gc7WC2+/LzNbrF44TdmiznnW1gsnh57xG5xf9kzFos97duZLXpbfjNbNO1YwWRxYVsfq8Xl XXPYLO6t+c9qcWyBmMW3028YLdbvu8Fq8fvHHDYHIY8tK28yeeycdZfdY8GmUo/NK7Q8um5c YvbYtKqTzWPTp0nsHneu7WHzODHjN4vHzh2fmTw+Pr3F4vF+31U2j8+b5AJ4o7hsUlJzMstS i/TtErgyNj38wFjwX6TiYsMfpgbGLoEuRk4OCQETiZ33X7HB2LsbutlBbBYBVYkDd08xgdhs AuoSN278ZAaxRQQ0JZbsm8jaxcjFwSywhFli3aINLCAJYYEYiS33NoHZvAIWElvnLGAHKRIS eM8o8WTTdmaIhKDEyZlPwIqYgab+mXcJKM4BZEtLLP/HARGWl2jeOhusnFMgUKLj9hdGEFtU QFniwLbjTBCHHmKXeN3sD2FLShxccYNlAqPgLCQbZiHZMAthwywkGxYwsqxiFMrMK8tNzMwx 0cuozMus0EvOz93ECIzhZbV/oncwfroQfIhRgINRiYf3xEvFDCHWxLLiytxDjBIczEoivI3b gUK8KYmVValF+fFFpTmpxYcYpTlYlMR5jb6VpwgJpCeWpGanphakFsFkmTg4pRoYdS/k2V/5 dOHCZh3rZ/kXGaSNHV/e3PatXeRvoTmf97x2r3S+0DjG96yF6VkhX6Lq2DPy92w1OvulaeG1 Pf9+KfRr9TZ3zFd01g0TXHTf/YDPs5wnkss4Q/avMN56/urN31KbOVStLr5ec5t/4spIBsM9 e38ELN2lNEf09p4+fcEl64Meh8suUWIpzkg01GIuKk4EAOZuEgLdAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrEIsWRmVeSWpSXmKPExsXC5WfdrMvwSjHD4PNJNYs569ewWaz+UWGx /MEOVosvP2+zWyxe+I3ZYs75FhaLp8cesVvcX/aMxWJP+3Zmi96W38wWTTtWMFkcnnuS1eLC tj5Wi8u75rBZ3Fvzn9Xi2AIxi2+n3zBarN93g9Xi9485bA7CHltW3mTy2DnrLrvHgk2lHptX aHl03bjE7LFpVSebx6ZPk9g97lzbw+ZxYsZvFo+dOz4zeXx8eovF4/2+q2wei198YPL4vEku gC+KyyYlNSezLLVI3y6BK2PTww+MBf9FKi42/GFqYOwS6GLk5JAQMJHY3dDNDmKzCKhKHLh7 ignEZhNQl7hx4ycziC0ioCmxZN9E1i5GLg5mgSXMEusWbWABSQgLxEhsubcJzOYVsJDYOmcB O0iRkMB7Roknm7YzQyQEJU7OfAJWxAw09c+8S0BxDiBbWmL5Pw6IsLxE89bZYOWcAoESHbe/ MILYogLKEge2HWeawMg3C8mkWUgmzUKYNAvJpAWMLKsYRTLzynITM3NM9YqzMyrzMiv0kvNz NzECY3JZ7Z+JOxi/XHY/xCjAwajEw3vipWKGEGtiWXFl7iFGCQ5mJRHexu1AId6UxMqq1KL8 +KLSnNTiQ4zSHCxK4rxe4akJQgLpiSWp2ampBalFMFkmDk6pBkaDzzG72GuPs+U9nMhr72Br r/K2bsfNzHnhizM8BOwK9PmmLf7V/uHaq1fq3avy3NJl10yILnQqfSWaVf3nTDJHVGNAN4uI 3RMbrifaBSoLDep1YlXLHPSZNoUlO3auMvutr3Cth4VzncieyepL/5ptORQ+V/uI38qly4+d 7knPeWattHzGUyWW4oxEQy3mouJEAPlTfUrFAgAA X-CFilter-Loop: Reflected X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 57AEE140011 X-Stat-Signature: 6cua9wssjkcxktnmmiuon7akqou7hzz4 X-Rspam-User: X-HE-Tag: 1747053059-87963 X-HE-Meta: U2FsdGVkX19eDD6vMAuvUYx3mNkCNetnutWiEopeRbImAfiqx0v5e2aZp6DGGzoc0TcDr5HoB4ohHleissmv2B962Mtf3upm+2W96cVxGCOrf0XFFZGnLV18i2ZXus+PquHZYpaqyB+L2weiEftaFDHM1Q0nj01MYXHqZK+/LYVThT6YcyH0bXrips4pK1XCIpZ1Sq7RQPCgivgXOAc3pdl1hKOmPzN5ZACpUVAak+YgmqvRECtCXL0u88YNrb/HS46J4uwJohBPjOeeMYDdGqS0pcNcDbHx4O1Sp8OOqkAtuBUUIuBwIOw4N6C00Oyz66I7sRyCUOicS6N41CCp0k1tSc2fEtiGnUqaBC+yGmeYZN8E0rdl9XSTk/DsjE+jKD02is608AbzEUiedvyGragcftAf6bxCrtMVe7DiflYcviC+aFuBkpYNsHYm5vR2yLS2e1NF1bRrqREeDzLMmVGEEFwIZnW14LKqk776PNrLA5sAr6IO2Iq+eWNaZkxSJ3czk87vx/4ZsiLN8j10el98G/BvODeOcY8aVmdcFhqbd8lUeGEPdDKwUwDYto8MJzpHC2Jztot6568HJ0a4gjsNkSSJSAClzkkiv0W29crtCv3suNRUE4fSpGlK3/rXUNpRWILw0bFWljxMKWd09+MiDEqEMKZpzOjJ3ORC1f4evHUyrd6kIfcrC0wSM34TGutNy4WW3b1INEPiDb0gIkXVw+WvqcPkXmZF+iwYizXeY6L8TkqQOGS8eOFHY30Do/AhEy2IPTpxd52ek41FsOoCFQfuiRlWcIGMhqyo9moS2tDQ1IuyDoxg9fuGkTQgOWvxCWxxaXYSePAlHx9Q1jPIN4h3revDT5EpEQyyuNbbABRhgKsw538Ybeq61CBiFLxdNBWcom81oNsEgr88Kfheyfwzg3HfsgsO+0Yj9tU82Ee9/4aB2/X3INwc6P5x6dDU/6sUHyLdRtGmbEZ BoCIywF4 HcBr7sQFjlKhewwdwznabrslwTCzh3ViTHktzQWm7icBF4efP0+eyTieuP7P1UNvHjw0NG1elDB65zwBAtVu+xA5IaPsMUJM9WpcilmhGW0HZCKRIEB17w/B6D2wM9i4nxfl3ik1izn1T4w58sA1v4jFw+w== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, May 09, 2025 at 07:08:23AM -0700, Mina Almasry wrote: > j > > On Fri, May 9, 2025 at 6:39 AM Mina Almasry wrote: > > > > On Fri, May 9, 2025 at 4:51 AM Byungchul Park wrote: > > > > > > To eliminate the use of struct page in page pool, the page pool code > > > should use netmem descriptor and API instead. > > > > > > As part of the work, introduce netmem alloc/put API allowing the code to > > > use them rather than struct page things. > > > > > > Signed-off-by: Byungchul Park > > > --- > > > include/net/netmem.h | 18 ++++++++++++++++++ > > > 1 file changed, 18 insertions(+) > > > > > > diff --git a/include/net/netmem.h b/include/net/netmem.h > > > index 45c209d6cc689..c87a604e980b9 100644 > > > --- a/include/net/netmem.h > > > +++ b/include/net/netmem.h > > > @@ -138,6 +138,24 @@ static inline netmem_ref page_to_netmem(struct page *page) > > > return (__force netmem_ref)page; > > > } > > > > > > +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); > > > +} > > > + > > > +static inline void put_netmem(netmem_ref netmem) > > > +{ > > > + put_page(netmem_to_page(netmem)); > > > +} > > > > We can't really do this. netmem_ref is an abstraction that can be a > > struct page or struct net_iov underneath. We can't be sure when > > put_netmem is called that it is safe to convert to a page via > > netmem_to_page(). This will crash if put_netmem is called on a > > netmem_ref that is a net_iov underneath. > > > > On a closer look, it looks like this put_netmem is only called from > code paths where you are sure the netmem_ref is a page underneath, so > this is likely fine for now. There is a net_next series that is adding > proper put_netmem support [1]. It's probably best to rebase your work > on top of that, but this should be fine in the meantime. Indeed. Hm.. It'd be the best to work on the top of yours. If it takes too long, I keep working on as it is for now and will adjust this patch later once your work gets merged. Byungchul > [1] https://lore.kernel.org/netdev/20250508004830.4100853-1-almasrymina@google.com/ > > -- > Thanks, > Mina