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 2E866C83F1A for ; Sun, 13 Jul 2025 23:39:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8AA746B0089; Sun, 13 Jul 2025 19:39:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 85B186B0095; Sun, 13 Jul 2025 19:39:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 749A56B0096; Sun, 13 Jul 2025 19:39:44 -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 6307D6B0089 for ; Sun, 13 Jul 2025 19:39:44 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 0E1B014041E for ; Sun, 13 Jul 2025 23:39:44 +0000 (UTC) X-FDA: 83660861088.14.9B252B1 Received: from invmail4.hynix.com (exvmail4.skhynix.com [166.125.252.92]) by imf22.hostedemail.com (Postfix) with ESMTP id 6438DC0002 for ; Sun, 13 Jul 2025 23:39:41 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; spf=pass (imf22.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752449982; a=rsa-sha256; cv=none; b=4P96zhsgbK9tG4A250Ty03tWrlBBz2+VuE8OGMfao7rD6wV3awowhEkTaJ5GursWvsuwkf ftbmRKzJRV+7jopUtBJKrvXL99DFJKiCbbDMM4Q0zTKbdWp6EpwGM3odnX1l6+rl+BfE0c abVx2NCEOf/k2HN5MUUAsVRTUf1XiGo= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=none; spf=pass (imf22.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=1752449982; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gvR/Kf1zKD8FXWgU6wxKl79zXephlwBpjktXllO8ctQ=; b=jauToE0Tcvo5Df6q8nebVln31upB0GHlI+x0uPUVLA+rY5dKyu1FhZuJ48rBwkqv3jR4eW EW17vTKGKggTtDgz18gd4oQyRkt3y7beDZcqm+iHA0+8iylyy+BdqGyvNyP95/zKitPmYB A8O3bZyURMxxJ4+8gJa3noYw8OCMNpk= X-AuditID: a67dfc5b-669ff7000002311f-8f-687443bb3d56 Date: Mon, 14 Jul 2025 08:39:34 +0900 From: Byungchul Park To: Pavel Begunkov Cc: willy@infradead.org, netdev@vger.kernel.org, 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, 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, hannes@cmpxchg.org, ziy@nvidia.com, jackmanb@google.com Subject: Re: [PATCH net-next v9 2/8] netmem: introduce utility APIs to use struct netmem_desc Message-ID: <20250713233934.GA26068@system.software.com> References: <20250710082807.27402-1-byungchul@sk.com> <20250710082807.27402-3-byungchul@sk.com> <4a8b0a45-b829-462c-a655-af0bda10a246@gmail.com> <20250713230752.GA7758@system.software.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250713230752.GA7758@system.software.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-Brightmail-Tracker: H4sIAAAAAAAAA02SW0hTcRzH+59zds5xbHGcVv/sIVtJoF3Fh18YFd04FVEQ9lAPNfLQRtNi M9PA0rKbeQmL1LVkdpnmpMVabmWFrs0LCtnEXBfzloKlzryVrazNkHz78Lt8ft+HH0vKikRh rCoxSdAkKtRyWkyJByV3VlZtSVKuKWmMBb25ggbTjxQo7bSLQF9eiWBs8gMDo846Gu6WTJCg f51Jwbj5Jwm9td0MmCy7ocPYR8HzSzYSuvPqacjJ9JHwYnKIgXP2MgKaK3NFcOPnfRJs6Z0M tDzT0/Cp4o8I+hw5FDToHlDQkbsJag3zYaJxAIHTbCNgIvs2DdfdBhp6MjsQuF91U3ArIxeB +aVHBL4ffsct1ydm0zL+1YCX5K0P3hH8U107wxssJ/nHZZF8lsdN8pbyKzRvGcln+I9vn9N8 faGP4p/aRwk+5/wQzX/rfU/x3petNG+2tlJ8k8HJ7A0+IF4fL6hVyYJm9YbDYmVm+13RieKw FHdLDZOO2kKzUBCLuRjcWmGlZ9iqN4kCTHER2FucQwWY5pZjj2eSDHAoF4W/tjmYLCRmSa6Q xg+7jNPLIdwhPFxQSQRYygGuepY/zTLOgfDN7Lh/9WDcUPR5Wkpykdgz1e+fYf28CJdOsQEM 8q8Od3OBiXncUlxdWUcETmHOyuIXV8uJfzkX4poyD3UNcbpZVt0sq+6/1YDIciRTJSYnKFTq mFXK1ERVyqojxxMsyP8wxrRfB+1opHmfA3EskkukHqtWKRMpkrWpCf7cLCkPlX5p1yhl0nhF 6mlBc/yQ5qRa0DrQIpaSL5BGT5yKl3FHFUnCMUE4IWhmugQbFJaOQqrVsfsv+4TiqsGRcCoj unbPh4jxt0Yi+pFtzliB7/L9U0u2zh3OKy2JjHpzwSyBus7fQZvrJeMrTKE9rm1TIbtMqj97 L7VtlPWTOy7GxRQ3Nnh717nCC3GHCwYj2vQShZDdJD4Y0jX5ffviJ0390fdi3Gd37xzLd0bN 70rbeEZOaZWKtZGkRqv4C3CGuQAsAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA02Sa0iTcRSH+7/3jUava9WLfWphpdHFSjrQBSGrt6DoQxGUYaO9a6M5bVOb kWA5KIeuvJC1liwk77RYY85LYltpEpRNrGmZujK6OrtJurA2I/Lbwzm/58f5cBhcGiZiGY0u S9DrFFo5JSbEezcVrGrdlqVe29YYDzZHIwUNP41QM+whwVbvRvB98gUN3+53UVB1YwIH2xMT AT8cUziMdgZpaHDugaHqtwS0nW/CIXjxIQXFpjAOdyfHaDjnqcXAd72bhB63hYTyqZs4NOUP 09DbYqPgVeNvEt56iwnottYRMGRJhk77Qph49AnBfUcTBhNF1yko89speG0aQuD3BQm4dtaC wNEeICH8M9Jx7cErOjmO930K4byrrh/jm62DNG93ZvN3ahN4c8CP8876Qop3fi2l+ZfP2ij+ 4ZUwwTd7vmF8ccEYxX8ZHSD4UHsfxVe9G8d4h6uP2Cc9JN6sFLSaHEG/ZutRsdo0WEVmVsYa /b336Hz0XGZGIoZjN3AuWwMZZYKN40KVxUSUKXY5FwhM4lGWsSu5j8+9tBmJGZy9QnG3Rqqp 6GI+m8aNV7ixKEtY4FpbSmdYynoRd7nowN95DNd99c1MKc4mcIHp95EME+HFXM00E0VRRB0P stHEAnYp1+Huwi4hiXWWbJ0lW//LdoTXI5lGl5Ou0GiTVhtOqHN1GuPqYxnpThR5ieq8XyUe 9L13pxexDJLPlQRcBrWUVOQYctMjBzK4XCb5MKhXSyVKRe5pQZ+Rps/WCgYvWswQ8kWS3QeF o1L2uCJLOCEImYL+3xZjRLH5SDBViHpSYMT8GLuqJMMxAU1o8HP8kZU+12jH+pMXahOTtm9c z7W8vKG6V35Yl122cZ25yLjfFDOwZocqfupLiiov7ylezrT3y0w6asG+FYUdqT1zXJWJqcqt sGVbxpm0/d6xAVew71SpaHpXakqSalnNba8FfqCSgkeSD/OWyAmDWpGYgOsNij9Wp7R+DgMA AA== X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 6438DC0002 X-Stat-Signature: w7uamekbo4sgigd7wx154stujxf8sxcu X-HE-Tag: 1752449981-930184 X-HE-Meta: U2FsdGVkX1+9rnzUwVLKgW7rXZxmDeTR+xcKZvPfy6s4MwYlNoeqyxR4ham4symq7e8kdk5T0pXv8ZD2pXa6i4Y2uZ0N8Hc9U4jY9el1qBb48OADETeXdU833C2x/YOpKdRLflLkKPlIJsVtobRGPJjD4G0uCPffIaXgkOmFgZVKgehFl0DbGCQWfIktRQeroKBwdIfh/BGaSWt+TlPdXDWDK8zjWs/LG7rA6D7UdGRXWrxtCEFVEVUfba4I6MFJhZ4DhwKvBK4UovqtGpwIjMw+v6jX7ilDRRM3NzT/txs6HXEsOJrc/d883Mjgnu8ONf6vVicNr8kCNpjwQ3TdsBDrfpECfJScVvWx5FRebq9d49ToIEzUa9cBYGYoQ5zyiMgh+z42qrIePsWoK2Jv0qxDOyrsTwnZrtWMbxiA5NZ08D03kMbNpy7F1nH23CSDOoT/GrljohmxleVM6nAefCDtBR3bBpKWcqYHHFPdLa3+E/VWX4ozJ6MNO0W8ePDK+9ut+80idXYIPcuOQWApWmFktngCb+PSj3z85VvUp2jIgchzVaMEX9D/6yTAiofGTC5VRGqhralaVHyPxWTFzgG5v527O8vt1N43+65OBkaK7Hqt1EQJZ6KwL69yPTd5KturehQj8yW1mOrVeHxyroT4tShTZc7XZ0fMFtFg+J4qRdUA9l+C8W1BRa+wYDu/xxqQPn4vwkFKCq2j5cegwc7ya9gdDQtu0WvuWgNNGp48ZAECZN1a3L4i9Y3HwO/Cgc3nJ5Nw0ryuyxkrTbf8eKzZ0TmtmuTNdzZx0t76GgT+FP0PbPkKLqZurKPqAi46btkREp8SHuWP4HXmLZLpXBdqKPexYR2i+q5Qe/RNpZ+ASYTOIEYWIi/NFRyFp4FM6wA/JZoJTmkmgDWyWh8hkn2XxOHrHjHuUEn8SJbyQ2BEal4M8QlsrWJ1HHYUhRVybF2A1d1PqllCNlle8DK 0OyRiTOX xHbI5OIBA2t4fQXdCLGD3hL6Pfz6zuLtTAOR7 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 Mon, Jul 14, 2025 at 08:07:52AM +0900, Byungchul Park wrote: > On Sat, Jul 12, 2025 at 12:59:34PM +0100, Pavel Begunkov wrote: > > On 7/10/25 09:28, Byungchul Park wrote: > > ...> + > > > static inline struct net_iov *netmem_to_net_iov(netmem_ref netmem) > > > { > > > if (netmem_is_net_iov(netmem)) > > > @@ -314,6 +340,21 @@ static inline netmem_ref netmem_compound_head(netmem_ref netmem) > > > return page_to_netmem(compound_head(netmem_to_page(netmem))); > > > } > > > > > > +#define nmdesc_to_page(nmdesc) (_Generic((nmdesc), \ > > > + const struct netmem_desc * : (const struct page *)(nmdesc), \ > > > + struct netmem_desc * : (struct page *)(nmdesc))) > > > > Considering that nmdesc is going to be separated from pages and > > accessed through indirection, and back reference to the page is > > not needed (at least for net/), this helper shouldn't even exist. > > And in fact, you don't really use it ... > > > +static inline struct netmem_desc *page_to_nmdesc(struct page *page) > > > +{ > > > + VM_BUG_ON_PAGE(PageTail(page), page); > > > + return (struct netmem_desc *)page; > > > +} > > > + > > > +static inline void *nmdesc_address(struct netmem_desc *nmdesc) > > > +{ > > > + return page_address(nmdesc_to_page(nmdesc)); > > > +} > > > > ... That's the only caller, and nmdesc_address() is not used, so > > just nuke both of them. This helper doesn't even make sense. > > > > Please avoid introducing functions that you don't use as a general > > rule. > > I'm sorry about making you confused. I should've included another patch > using the helper like the following. As Mina suggested, I will add this helper along with the patch using it. Byungchul > Byungchul > > ---8<--- > diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_txrx.c > index cef9dfb877e8..adccc7c8e68f 100644 > --- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c > +++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c > @@ -3266,7 +3266,7 @@ static u32 idpf_rx_hsplit_wa(const struct libeth_fqe *hdr, > struct libeth_fqe *buf, u32 data_len) > { > u32 copy = data_len <= L1_CACHE_BYTES ? data_len : ETH_HLEN; > - struct page *hdr_page, *buf_page; > + struct netmem_desc *hdr_nmdesc, *buf_nmdesc; > const void *src; > void *dst; > > @@ -3274,10 +3274,10 @@ static u32 idpf_rx_hsplit_wa(const struct libeth_fqe *hdr, > !libeth_rx_sync_for_cpu(buf, copy)) > return 0; > > - hdr_page = __netmem_to_page(hdr->netmem); > - buf_page = __netmem_to_page(buf->netmem); > - dst = page_address(hdr_page) + hdr->offset + hdr_page->pp->p.offset; > - src = page_address(buf_page) + buf->offset + buf_page->pp->p.offset; > + hdr_nmdesc = __netmem_to_nmdesc(hdr->netmem); > + buf_nmdesc = __netmem_to_nmdesc(buf->netmem); > + dst = nmdesc_address(hdr_nmdesc) + hdr->offset + hdr_nmdesc->pp->p.offset; > + src = nmdesc_address(buf_nmdesc) + buf->offset + buf_nmdesc->pp->p.offset; > > memcpy(dst, src, LARGEST_ALIGN(copy)); > buf->offset += copy; > -- > > > + > > > /** > > > * __netmem_address - unsafely get pointer to the memory backing @netmem > > > * @netmem: netmem reference to get the pointer for > > > > -- > > Pavel Begunkov