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 6EDC2C5B543 for ; Thu, 5 Jun 2025 20:34:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DE4646B00A6; Thu, 5 Jun 2025 16:34:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D952D6B00AB; Thu, 5 Jun 2025 16:34:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C5BE86B00AD; Thu, 5 Jun 2025 16:34:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id A3E206B00A6 for ; Thu, 5 Jun 2025 16:34:43 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 443131A110A for ; Thu, 5 Jun 2025 20:34:43 +0000 (UTC) X-FDA: 83522500446.23.B3A04B4 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) by imf11.hostedemail.com (Postfix) with ESMTP id 614D940002 for ; Thu, 5 Jun 2025 20:34:41 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=DIIJ+Wsv; spf=pass (imf11.hostedemail.com: domain of almasrymina@google.com designates 209.85.214.177 as permitted sender) smtp.mailfrom=almasrymina@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749155681; 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:dkim-signature; bh=4ZoLre5WJXzZI3tRwkyLjsbHGJ2C1Pcu+Ob2SlEJwY0=; b=VNsv4OrPOv3OgClHP8a9V/KeCpZ0m9UBfRxQt0vep4Gihja2ucXsZsAMQd5iUDxjB28heE kFC7LAlT4uU2jMXtkM/yVLEgkEFsrwpgOZ1epWO0yYEpVvk4JBj51G63ml/JG17aH8odFs oioZKmK9RlHg3mo0W7klN27fjzWvqSc= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=DIIJ+Wsv; spf=pass (imf11.hostedemail.com: domain of almasrymina@google.com designates 209.85.214.177 as permitted sender) smtp.mailfrom=almasrymina@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749155681; a=rsa-sha256; cv=none; b=w0z1sN07bATkP66A2xRD8Qr0/noXxPwv4zWFscSORHR9CCPH0d+V0ZWNdSAZvcATB+TCeJ EKi5opZEfEXlQ9AZ72C1xm5+iLRgpZ/DyCiaNh1uYdNJ4ZoyY2kBhTwAgFKkGb0FM7XuSw RXddY8TCjrib5pvnksgO6KGLcySl5cQ= Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2348ac8e0b4so19365ad.1 for ; Thu, 05 Jun 2025 13:34:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749155680; x=1749760480; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=4ZoLre5WJXzZI3tRwkyLjsbHGJ2C1Pcu+Ob2SlEJwY0=; b=DIIJ+WsvU1wFnTNGur81aPQZl7x9CP3nzFXq8rd8sSbOPWJHtIDxbtsPQGPHYoA94w YScrZzEt5+Iv+7a4dZK/PBO1ijmqYSqiBJxTjJ2lFfdnYnHqTm1+PYgUYzxFi8mUy36L eV+8ygCS4fbCFbK+v1Z/Vw6YXXJZESD8f3l7A3tyA7mg2Yn5rmufnv/TeR1sSlSzm6uj aUEamTh6sMo1IpQQ6cfUUKpvsabdQwaOW91AfO/xfoSgv/IxwswSDWF5WQxPiLhpBsFJ 1ZRhsyRUgrV/Lliw90Xhi+VF6u5eBNC3gHTFxAHdR1SSjL2bHZB33Ii0u7SzswGIQC5/ tm3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749155680; x=1749760480; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4ZoLre5WJXzZI3tRwkyLjsbHGJ2C1Pcu+Ob2SlEJwY0=; b=LtIxlgyhICe6aPjkbZfvi7ns//R5BMpad1sXUvScEL/C5Telc/Jeo536ESR55dKxWn dT5C/n7/MjrIJMgQL/6oCiHQ/3+1+jxiQs9GUZnJmcNsYicnv47m0nX7VpEieBQm25+Y qxZMeJ49/GNilDEzWsCt4XS0TT52guDEayexGjfvKixhtj4XszzORdshGyggJZVAAfj7 LVYKVsiX4e6By8MZd+T6nmkx8N1xxss46tyLIFYFTL1ZJN1mQ9tZEC8tmGFtAkQrF9TH mZl1ii+m1B5V+AYcoTA3FqOgB+HSsL/bcO5hKCkwtSEHOfC1hjloBem7nxWrF0+SItgp L6Hw== X-Forwarded-Encrypted: i=1; AJvYcCWtAgNnamk78691dE58zZIMw9us086Jtjd57u07/xkRGYqOpzocGsBaf3k7K46i/ZBgEJzG9d2nGQ==@kvack.org X-Gm-Message-State: AOJu0Yz9B5nmSqReGR8adlrLbYBlC3ILBMvw6ebMEVqnwE3UFCy+Yi/t WC0rkPdxMsf1Fd1vjN4uVjachYqmlxlyHzQkrx7xcn6TscpH286RZelAWaSxDPpHs3kKyJ6WxEo c1e70KxnIVDpOh7FwpPkUKUVOsHFbJHJZEWLIexdq X-Gm-Gg: ASbGncva2MrVXoicDoI8KlegVl3Y9Y9c6CRbWxxGMZJLRgZvb2Xo6fsoethNhr3p29M YY3hsuVP/rEZEZdB8l6M2hEqYY1vo/naFCF6uNDfQOp6QSBA+m3RH0thgU7eraG2OmxfHZffRz6 VFbhOxA1yKw6JvgJRusCHi8etg0TQusADbq3ScjIS46XAB X-Google-Smtp-Source: AGHT+IEz65fw6eX6HnqKD1lGuCRGB/lwbhJS2C0P8T2RK/ATRMV91beDaRjDj92IaN4e2RiyHUifHQ+O8l0xyf76AkM= X-Received: by 2002:a17:902:f60b:b0:234:8eeb:d81a with SMTP id d9443c01a7336-236021e505cmr754845ad.16.1749155679795; Thu, 05 Jun 2025 13:34:39 -0700 (PDT) MIME-Version: 1.0 References: <20250604025246.61616-1-byungchul@sk.com> <20250604025246.61616-4-byungchul@sk.com> <29f2c375-65e3-4d22-8274-552653222f8d@gmail.com> In-Reply-To: From: Mina Almasry Date: Thu, 5 Jun 2025 13:34:25 -0700 X-Gm-Features: AX0GCFsZcj1hI7C7EPh1g4w7_P54Ew1pJG_c13sE__2Bloq-K4EM8uiIisV8cik Message-ID: Subject: Re: [RFC v4 03/18] page_pool: use netmem alloc/put APIs in __page_pool_alloc_page_order() To: Pavel Begunkov Cc: Byungchul Park , 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 614D940002 X-Stat-Signature: 3nne8hzo38pjy7s6w3t69kd96n5ri38z X-Rspam-User: X-HE-Tag: 1749155681-430817 X-HE-Meta: U2FsdGVkX1+ZGTsbwwl8XJ3kr3sLpgf1o+C6RW0lIixqfdEu1P5quCuG/zjbMlm7vntvSHiLxcHNpuyq6OdrYG4TBPsIUr5Wr9fJTeZpJy81PQXx91kkN8qxqsuBwcZSezjaYAyOdpl1OiBtahf/6ZRkJTXXfztyUGd5/bu6RfvEwlA/bNW2pfLbHNVzdv0F6Ajo8UFbRqTy4L/2nGmdO0cUwkh9MjDzB8XaFTp1TlO5K0boPGl6Ss/rFLeX7lgaa57GZ0s2qfCEYAUdiYnN8qIabKTc7VR4+hx4h2COk4ciUo8OLHmiB//8i083hnsiSDvjhMgGsqx9PzDMB5UGfgNXUiy5xg/U5pd6Fa8SpAH4Y7D1Za4Or8hMTjxljnnyaYLlNeeoTo745byv/BJy/LeegYcAqIb32wwSnecCkdx+ccskcysMzJFyc9UbxRXG2UFIeIyag+nffsD6VysKMAJdclwAvSIDInzyggeg/W8iCSLEbHYoO2vrXVzr7c/kATe4BB5vLLzzxsRp1aM0KbLoahlWK13T7MR3Z+NkH/vpwi8d5l1zedF2x8VKrZim/iu9ZFtKvTAMpTYgxPfsHjr0Gn1zvEAUhV/Tki7OwVIUfYs3rcZENsR+/3lv0IJqJdq7N+s7UXx2mrGTpf7Er5IaXeWhux6p42WpK1SqYL6B/R5BJ0gEs10W9TCZAYW4YQiVDNmy1+JlBud4Q+2DoNGpm/XxmtxpFefEHAiTFxYe+h7OwPPMwDuSiDSJmdnoe71BBeC80paPeZcNiMiB0tyoE6zi9g2OC4CXWNExf+op4j6OayoTjKyF+YXn95aUSj4bW5WBG7jsRTeTgragtyaoSSxQwjUidotgNWfX3C7TYhv1f+kj5zIMBIEiv3/hyhCutS2dHOHHg72LlraEh0j8lp9B0yyR0VAn+wHP9lX9WNU8U5SpkZTVkNcVk7DwaWQg16M2yD0OnVY8Nei 6izlFYMz tiCHlNvb1fAzjOUV9B2g2cz/ChisDVipRHUOAb8p66ffZxlq3mibS4hxTBEinAkp6K5U8VFumvh7t7IsZkt9/XC7YU35lf7YDohN5nwxoDKh5CaAjbbGRL/TEd3Hny345Qg7Quk6rz8ti9i0euK3M90E9SejnQyYP+HDaWUli+XwmI0IWa62HNKuTcLGachJtI2s/209sAngWZ/DVwQDow2Wa+SaDEwDofb6wxqa113LZCyn1+RYFuiQjyr/hcb1opa1oK2Y/iKLlft4PK/x06HMZInk8Dj9nerz8oTRuTZwWClSPPtBQOF0bc7dl/14wUziG1YA3crOblnCienXlcBWzo9IKqOP0u9i7JmmNWd/y09gEJhGJDaoVBS2cdU5WqVv/iOWdfjX1n/9XvSTRyYoKbovLWPXTVIVU5En+qISLjvM= 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 Thu, Jun 5, 2025 at 1:26=E2=80=AFPM Pavel Begunkov wrote: > > On 6/5/25 20:39, Mina Almasry wrote: > > On Thu, Jun 5, 2025 at 3:25=E2=80=AFAM Pavel Begunkov wrote: > >> > >> On 6/4/25 03:52, Byungchul Park wrote: > >>> 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 > >>> Reviewed-by: Mina Almasry > >>> --- > >>> net/core/page_pool.c | 26 +++++++++++++------------- > >>> 1 file changed, 13 insertions(+), 13 deletions(-) > >>> > >>> diff --git a/net/core/page_pool.c b/net/core/page_pool.c > >>> index 4011eb305cee..523354f2db1c 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; > >>> } > >>> > >>> -static struct page *__page_pool_alloc_page_order(struct page_pool *p= ool, > >>> - gfp_t gfp) > >>> +static netmem_ref __page_pool_alloc_page_order(struct page_pool *poo= l, > >>> + gfp_t gfp) > >>> { > >>> - struct page *page; > >>> + netmem_ref netmem; > >>> > >>> 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; > >>> > >>> - if (pool->dma_map && unlikely(!page_pool_dma_map(pool, page_to_= netmem(page), gfp))) { > >>> - put_page(page); > >>> - return NULL; > >>> + if (pool->dma_map && unlikely(!page_pool_dma_map(pool, netmem, = gfp))) { > >>> + put_netmem(netmem); > >> > >> It's a bad idea to have {put,get}_netmem in page pool's code, it has a > >> different semantics from what page pool expects for net_iov. I.e. > >> instead of releasing the netmem and allowing it to be reallocated by > >> page pool, put_netmem(niov) will drop a memory provider reference and > >> leak the net_iov. Depending on implementation it might even underflow > >> mp refs if a net_iov is ever passed here. > >> > > > > Hmm, put_netmem (I hope) is designed and implemented to do the right > > thing no matter what netmem you pass it (and it needs to, because we > > can't predict what netmem will be passed to it): > > > > - For non-pp pages, it drops a page ref. > > - For pp pages, it drops a pp ref. > > - For non-pp net_iovs (devmem TX), it drops a net_iov ref (which for > > devmem net_iovs is a binding ref) > > - For pp net_iovs, it drops a niov->pp ref (the same for both iouring > > and devmem). > > void put_netmem(netmem_ref netmem) > { > struct net_iov *niov; > > if (netmem_is_net_iov(netmem)) { > niov =3D netmem_to_net_iov(netmem); > if (net_is_devmem_iov(niov)) > net_devmem_put_net_iov(netmem_to_net_iov(netmem))= ; > return; > } > > put_page(netmem_to_page(netmem)); > } > EXPORT_SYMBOL(put_netmem); > > void net_devmem_put_net_iov(struct net_iov *niov) > { > net_devmem_dmabuf_binding_put(net_devmem_iov_binding(niov)); > } > > Am I looking at an outdated version? for devmem net_iov it always puts > the binding and not niov refs, and it's always does put_page for pages. > And it'd also silently ignore io_uring. And we're also patching early > alloc/init failures in this series, so gauging if it's pp or non-pp > originated struct page might be dangerous and depend on init order. We > don't even need to think about all that if we continue to use put_page, > which is why I think it's a much better option. > Oh, my bad. I was thinking of skb_page_unref, which actually handles all net_iov/page types correctly. You're right, put_netmem doesn't actually do that. In that case reverting to put_page would be better here indeed. --=20 Thanks, Mina