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 EFF62C5AE59 for ; Thu, 5 Jun 2025 19:40:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 876076B00BC; Thu, 5 Jun 2025 15:40:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 824DE6B00CA; Thu, 5 Jun 2025 15:40:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6ED476B00CB; Thu, 5 Jun 2025 15:40:12 -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 4CD376B00BC for ; Thu, 5 Jun 2025 15:40:12 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id BE1CA16149C for ; Thu, 5 Jun 2025 19:40:11 +0000 (UTC) X-FDA: 83522363022.01.5CB9022 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf05.hostedemail.com (Postfix) with ESMTP id DF70A100003 for ; Thu, 5 Jun 2025 19:40:09 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=yHBIGFlb; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of almasrymina@google.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=almasrymina@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749152409; a=rsa-sha256; cv=none; b=D2pRqwZ7KMc90Klv2IlZRr+4WDZ5VGW/Zo4l1ZFxhZYus35GaRXKD6wYOdAlXVW1sxJrwN Nrn0+lXwktg9H4vWGS8ljYRuUjZOc9Ko37M729k7U2aAxv+OP11qWloyrA3wzPC4BY34d8 VoXhXAHKvKEUKGFt9jNsaXxdY9965P4= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=yHBIGFlb; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf05.hostedemail.com: domain of almasrymina@google.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=almasrymina@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749152409; 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=+gbRXiixoAXfGdGLxJ2oFtFITg4n/f+sldemH0In+WE=; b=ysRtumgfMGtZxmr9OIfg0CHkbAdvEdsG0ufp5f4ap19jl/pOmuIvg9nZK9vjnMWzDYigju rXEP3Pnn54uY5jtwOHhEBl0aISsTjamvS+1yyaLm0GfwygbAx9Df4eOm3Hk4Y4zV97l0wm 2p1gjOysMWDLz0eeMf6dqla6/3eVr+I= Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-235ca5eba8cso36875ad.0 for ; Thu, 05 Jun 2025 12:40:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749152409; x=1749757209; 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=+gbRXiixoAXfGdGLxJ2oFtFITg4n/f+sldemH0In+WE=; b=yHBIGFlb29Qg31iWYcl/uz5UYPJmO+K5dtOaKU/0zl9IoaRJxAn+qkFWzG4bTg64Bw hu79+awdcxGGrkwbw9AUUPDTKEQzZxc4aeYcT4pUrcJZB0vHpWpkjQC9BSTvl/jOrP99 RaMvAWv2pVxaop5mT9lO68stBkyjWRBdqSeoiEHiK+vkgf4JBEaTenGf071seEHepFCm 0zAkkuDRrwMAURv/b4EvUriXDgDLs+e14+mJr/xlnNhAofZMT+4W9SXqNm4G3D2TP8Tw wrCBMdzfRzxtT5l6NI1FpI2PTfJgL7UiXwVO3+fWUCxf5YHaXGVuHTDRNfhenwWhD2by p5CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749152409; x=1749757209; 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=+gbRXiixoAXfGdGLxJ2oFtFITg4n/f+sldemH0In+WE=; b=goT6Uy/Q45c9abCOKJlHb0fvt3OG2UVUmpUeKaizZ3G0GzeKqLwvLm8/BnkQXZKIz4 tqqfnioKVMoTjdn44E4GsEHll9cjm/lrpIUVAH3HfBBg7xrMVqpMzEdtBRl/y4mRqfnc eraD5BdwrOMC2usfegTXz3JKBKEYl0n4X5yGUCBGQtqibVgslS+6YWxNUPy+3imtHwI/ 3HgYe9dQtqDHRgX6MlSaaTgsoJCNuvtmBGwcz2BWSEB90Ip9VqiK+9PuVLJns1fZs4Pi XeZhtk8WXTDNUlcVbW8OrFAeXdiG3yTe2OU5pFfOT4KYFpmNyoYMqi2Iift0TTrzdujs nobA== X-Forwarded-Encrypted: i=1; AJvYcCVR90+mZLi24L7VUkZfR1Pn75sidupfCTH2NFtTwVP0pppzeLwvnjsKk7iZJOe/WPL0qr4nzyaUWQ==@kvack.org X-Gm-Message-State: AOJu0YyPdl/iA4M1WiCpdV+FXJ5Uv5ct5HgGDK7F+RmYzMqv1uFmFNCV OCe3cRMKuBPmMRkbm1AFM4bIsHVzMnSlyILwid8VMNWVYlFr1BhvwHtKF2iTDA8ABDb+4b9AqxY b6KPqr/I+5Mt1gAOcqeL5PSPjZeROct7vnmZqDNC4 X-Gm-Gg: ASbGnctNpx3yCw8UlcLIVUGIOJAB1v/4J3IzzBkzgXx3zZKSIhjZ77rgXENec2IZxSt vHrkwyEtfRO+zgv55CKXLPFxJVbk/02JlNUeCh2t23X7VfBX0/g0GV49MVfWQXvZLN7qh3CSfx+ ZvZicTUOysf/hn2t03CarUn2BiCgOjaa/Am4enoC4PyrnldVIrZotPr6o= X-Google-Smtp-Source: AGHT+IHcTT2o1MKZq8UOcR4hL4bLiIFrmHftqSOGm8UgMZTc0+7X62O4TzoVnuFdqoRLnvK6zwsJrTF6DgwOQtF9S6k= X-Received: by 2002:a17:902:bd01:b0:235:e1d6:5343 with SMTP id d9443c01a7336-23602368069mr378735ad.20.1749152408349; Thu, 05 Jun 2025 12:40:08 -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: <29f2c375-65e3-4d22-8274-552653222f8d@gmail.com> From: Mina Almasry Date: Thu, 5 Jun 2025 12:39:55 -0700 X-Gm-Features: AX0GCFtD68ApdCzrpjOMryrJ8sFch7OmJFbZRp-t7ALE-eD446rw2nCSo1WQWYU 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: rspam08 X-Rspamd-Queue-Id: DF70A100003 X-Stat-Signature: tnf5jep3yizzpwfdn98ymioorfut5h9c X-Rspam-User: X-HE-Tag: 1749152409-720119 X-HE-Meta: U2FsdGVkX1/rK6kxVIFSHgsrFlFKM3sDJq2vkRNY40O1+nFjrQSeJibR5D1l4iwb/Ius4qgEzqEACk3HvAu4XvWIhPJ4dFWjye1RHQ8qX/i5yC4D/bqoTJvA9fD+WWshOEXuQMXUDI71PA5SeT0HBodl7kZEAcreQbwRVsHPAUarWVZygCSipdc5pv+ztey7H8Yl9Oh+6JMD5fU6KaMw0ciWnnZeHAwaaL+DH+glDfvEGgTqIQyWtMRcEoJB5Or/f+S4OK3ZTamN/zo8ET706Yi7StJzBsKrHUDeiuPYqABcE0EEiCuLY+yAyZCD4gm42rmezUfm/bnkje6mkKa9UgH4qUHQiE+ea2nvcDJn6J4JRN67KfGVCJ4TyBB4Fr5MTvav2jS/ppqmhnliTAm5csJK/KNngFvTH+K81OJo1/j8BTbo7O3ma3hDIKC19whdSr5Zxu/Ay70XcWsAkIq1bgfkC7VpajkMKdg7cWGsU8YlRDkV25TYGJ6rjqn7HLS638Mje2G2a/2mAUJwJte9sV3LHaOI6K9EdDrEp+m2JZgJhECJ3nnRB9l1Wv1qFXiiHGLtVllVW1G4GVUt3MFmJ2nZ/UZX1NRe2Lfr1DehGXjAaOBjMGgHVGjpZToPLX6UYcitcYoivRf1/D7so4w9LwSBEPpmgtyqbwaMUopKmEr5YKPdoZNOORB44Fxzha+WvacfojGAZDoAgLLQMaMBWGln/g18OmuD4apfknvou38gVMZnMcjDW4lKlgobIYfZQlcnQpLn7+JCs0i0/1D9GCOgPrn39Hcyeqsfv7e7tf/RIs+/gw0UQCpcSQeIEnEeNtwfQsxxnf0LUrcncA3ECcvYOyN5Cg3X4UWmJUtSpxWFOmkDYKwobC5U78b3qn7zciD8mwlt6NWyIZdLm7otclOkn80rYB4gkFUHtYFLzV75h4reqETtoKG1S1xUWP11/oBD8NlNrdpzvikIHfY Kplp4F/R xsVlNRb1ybFiaA+DXVhpSd2b8NqeCSrw5bMs5RnQLNiaOGT+3jVS7nY7u332w2xT9Fr9xbB2+JGyyDyhPETTGWgFc3M2E/B8yYsCN0ZMhIP3nwUDJAnZDVgVheVCOTBXyvzE9kvBGIeQkz6CFPQOu8vecJsWCnUowu0oEIIrYal36O7REjb2n2fKjwgqTkfY/8856n3Pz2gmZPFMQQlBCJD0VrIOIHxNkcyodZZiUN/4y009O9p4fgvFf5OBMlOYhFnvsDHmO3gHkTEfjHLv5/ABpw/22sncTIESWxwx5eD/7JV+DEZVkkebLSQ+GWkg5rcXvUZQ0TNI+8sKXROfzxWHnmQXlCj5Pai6DWznmm+9Rbz3U1uMmVjVkHd4LNO84uM/QeDdSN1wntLgUq6UcCCMBrznlaHN86LXSURVWmp/neEo= 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 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 *p= ool, netmem_ref netmem, gfp_t g > > return false; > > } > > > > -static struct page *__page_pool_alloc_page_order(struct page_pool *poo= l, > > - gfp_t gfp) > > +static netmem_ref __page_pool_alloc_page_order(struct page_pool *pool, > > + 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_ne= tmem(page), gfp))) { > > - put_page(page); > > - return NULL; > > + if (pool->dma_map && unlikely(!page_pool_dma_map(pool, netmem, gf= p))) { > > + 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). In my estimation using it should be safe to use put_netmem here, but I'm not opposed to reverting to put_page here, since we're sure it's a page in this call path anyway. --=20 Thanks, Mina