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 2DEA1C83F1D for ; Sun, 13 Jul 2025 23:08:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 49E1A6B007B; Sun, 13 Jul 2025 19:08:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 44F1A6B0089; Sun, 13 Jul 2025 19:08:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 364C06B008A; Sun, 13 Jul 2025 19:08:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 217FA6B007B for ; Sun, 13 Jul 2025 19:08:05 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id A20C58044B for ; Sun, 13 Jul 2025 23:08:04 +0000 (UTC) X-FDA: 83660781288.06.DB7DC9F Received: from invmail4.hynix.com (exvmail4.skhynix.com [166.125.252.92]) by imf15.hostedemail.com (Postfix) with ESMTP id 02B9AA0007 for ; Sun, 13 Jul 2025 23:08:01 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; spf=pass (imf15.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=1752448083; a=rsa-sha256; cv=none; b=PJAHoacRcSu3CZw8eSM5Mqz/bCSDpZdfQMiXnUv7QPeO6MaddME6rkPIjwu6XDNVRfabYJ y9fvVwXR8JRGAcUKD+lId/fp0A5l7f7D3+mHSApG8U6+wtjw7WjHD1vdtYFpM7LCQ0OZrU ZX6ek5t2Bym/v5Q0Jp5WQzNVH8G9huU= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf15.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=1752448083; 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=5NjY9kW7kshf9dAjbXgZ1wm61kQxfuRUn23mGud4w+4=; b=aunFVi/hUb7wmvm40UVZCI8ZYGBzVmKVuzqRdIxG5kB4x0fNI3/v4ZsJ5/MTyndEeyREgv MLEDHp6tVew2xbxCiVxLDlDwmih4fOWELduwSyk02CRTKDx0NKnKkdj+mOnHlJQOnnyZC+ 1Cmo6Tw5brlFyUGR0Dc7SNwqhYL2tBI= X-AuditID: a67dfc5b-669ff7000002311f-1d-68743c4ddf33 Date: Mon, 14 Jul 2025 08:07:52 +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: <20250713230752.GA7758@system.software.com> References: <20250710082807.27402-1-byungchul@sk.com> <20250710082807.27402-3-byungchul@sk.com> <4a8b0a45-b829-462c-a655-af0bda10a246@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4a8b0a45-b829-462c-a655-af0bda10a246@gmail.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-Brightmail-Tracker: H4sIAAAAAAAAA02Se0hTcRTH+e3e3XsdTq7L9JdCf6wkMsxSqRNpGPXHjRKioD966cpLG/li 803FSiWyNLMiWyuW4lucLZkzTHQuHygllnZLy0dllo9V1khnD6dE/vfhe875nPPHYQiZTuzL qOKTeHW8IlZOSUjJlHtRYGRYknLTeO4W0BurKaj6mQZlwxYx6CvNCL7PDtAwY2unoPi+gwD9 sywSfhjnCPjQNkpDlSkShkrHSGi8WE/A6NUOCnKznAQ8np2m4YKlXAQ95jwx3JgrIaBeO0zD 80d6Ct5W/xHDmDWXhE5dBQlDeRHQZvAGR9ckApuxXgSOK3cpuN5roOBd1hCC3tZREu6cz0Ng bBLE4Py54Ljz5C0dsZZrnbQTXF3FKxHXoHtDcwZTMvewPIDLEXoJzlR5ieJM3wpobrC/keI6 Cp0k12CZEXG5mdMU9/XDa5KzN/VRnLGuj+S6DTZ6v+dhSVgMH6tK4dVBO6IlyqcNPUTilE/a BUezSIsKVuQgNwazobitvx/9Y1u1nXAxyfpjY8d7kYspdh0WhNnF3IvdgCdeWukcJGEItpDC NSOllKuwgo3CX26ZFwek7FZcMjVCu1jG3kBY2wlLuSfuvP2edDHBBmDh96eFfmaB/XDZb8YV u7HheL44e1Gzkl2Dm83tItcuzDYy+Jf2HrV06CrcUi6Q+YjVLdPqlml1/7UGRFQimSo+JU6h ig3dqEyPV6VtPJkQZ0ILH1N6dv6IBX3rOWhFLIPk7lKhTqOUiRUpmvQ4K8IMIfeSfn6jVsqk MYr0DF6dEKVOjuU1VuTHkHIfabAjNUbGnlIk8ad5PpFX/6uKGDdfLdq+q3xzxvGivWmw8+aY suVs5vwL/0HsHE+d0AV/rIn0CEreO0z5jW7z5EekpQeCC8+EhNzs9hho/VQmWC6nDub/eHAu 5JjfL7uX2+r5qKL17XNl3pf0iWaxJT9mzHSw66jNeu3J7ujAQPmhPcXTvfdOBN0Nz/afcNbu M3k3rRFq7XJSo1RsDiDUGsVfDUSl9S0DAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA02Sa0hTcRjG+59zds5xNDzNlX80CibdDEst64UsDIIOghFBSBewkac2UrPN RLuAqRFaWpmgzRmGtHKTRmvsUma2zdrooizUWalpdte0MslLljMiv/14nvf3fHpZUjpJhbGq jCxBnaFIk9NiSrxtQ0FUUnyWMvqTJwJ0pnoajD9z4Ppruwh0BiuCkbGXDHx3P6Kh9uooCbqW Qgp+mMZJePuwjwGjOQl69O8oaDhjI6HvvIeGksIJEu6NfWEg336DAFe1VwSt1lIRlI9fI8GW 95qB53d0NHTX/xbBO2cJBV5tHQU9pQnwsGYBjD4eQOA22QgYPVdNwyVfDQ1vCnsQ+Fx9FFSd KkVgavSLYOLn9EZVczeTsIR3DQyRvKWuk+Ad2i6GrzEf5W/fiOSL/T6SNxuKaN78rYzhX7U3 0LyncoLiHfbvBF9S8IXmv759QfFDjW00X/thmOBNljZqu3S3OD5VSFNlC+rVm/aJlc8crWTm YGhO/mgTkYfKQopREIu5tdhdP0QGmOKWYJOnnwgwzS3Dfv/YTC7jVuLPHU6mGIlZkquk8c1e PR0oQrgUPFxhnREk3Hp8bbCXCbCUK0c4zwt/83nYe7mfCjDJRWL/1Mfpe3aaw/H1KTYQB3Eb 8WTt6ZmZ+VwEbrI+Ii4giXaWrZ1la//bNYg0IJkqIztdoUqLW6U5pMzNUOWs2n843Yymf0J/ cvKiHY083+pEHIvkcyV+i0YpFSmyNbnpToRZUi6TfOpSK6WSVEXuMUF9OEV9NE3QOFE4S8lD JYnJwj4pd1CRJRwShExB/a8l2KCwPNTSNmdn9Nj7B2uIE09rK91hRTsslvC16a+OOKnmKMfc RcdlS41PhP7x2L3B8l9ou0v3+eO6RHHFlZTkFWdX9O1p7+6KOqbXDCfELh80RE90HrgfCo/j dp0gR+76XOychTh+p3GzjMOZQYotMR1nKVtnMN1bvbDKHzpguOUTLY6TUxqlIiaSVGsUfwAk /SylDwMAAA== X-CFilter-Loop: Reflected X-Rspamd-Queue-Id: 02B9AA0007 X-Stat-Signature: 1b38ao7tj556xrre4cxzjiwdbyeonbib X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1752448081-395717 X-HE-Meta: U2FsdGVkX18ZzUrQOHkAs3hEX3B685sjP3/z1awwe3NxdiLy/LgHB1O5cwyxVrHuaHAKtiUjmLs1OfnoW45pMKA2k/cksDQYJfBWldoQ0XzUug8WOf5OnihTbnpEuEey2FQ6Dfj5ndCL+JKZU4fw35XZszOY0N/vneTimUjdAOaeWJIUuGULTcIMtDkR68CLflnnVfywtKRciNKVbXl7pU+DHIC/gvTVI+KviEi08hrOpTPHey8KauToYDa0102SfAt9tg0bqIDI3FL1dkhb3fdwSVlpMVIsDs/Etaw5fHI12FGwZTHiKJj0l/ciWq3EGUiBCwWJyiOSS/a380rTDVgpPGWx/oguws0aq9+0lO7dHKGoUoXaQV2xgO+4dsEN/9Fw8EXVANVty0awnXm/k7R7bapPbIDO6zZT9IJjwhTYmIkXIXlIjbTYIZGN6KLpI6tX8ulSq/gt9vSoT29FCEUORLvut7QLdBx6nQjqCcdHdpiyKfRjeDVc714tfXIEVvvb9Jnk9wsommwLOaWkllRUpQce9BEcor0dgvo6Uvialck2DnNXQjbYGxWYxLEOBy2EYTtVxNG2WoSgsIoy0D3sOrlNK7ycdrPLGzcJh/C25YULULNsYQeqPcciK3SP8az6fJrBTnCxxMCUf5solA1wHo6bbP0oz/cCuV1uL/Jpk+Tx465heSmjREOfmuCDCPdiiP2JIhO8FMfcf8MiASUV7L/2KubY25o15L10tQqkLYtKJD4rryfIF9QdKBxjaGaEp2eBEAmZ1eiv79tLauSZUhlgpWTZ8t/LAFlEzYPdEqHNm/K4+khs5QZj8BfLdHeTK+gi0V4lPuPl8GjO5v1a3fZt6zVJ1hyl4VCItjoKuklien2p1m04bBkGbQGRrGSvB/V0w+LmBvfE0EJjtHvyfo60hJEk8Lu/GKVQJuA2XButeUl9ztjDFvYJNZtgUEzq10R8EimWJM42kpW 3htzJc/e E4wiGWMLRckdvZG3RSY905q+SnmWaunDXn7w/ 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 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. 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