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 8D708C5B543 for ; Thu, 5 Jun 2025 10:25:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EEA6A6B0099; Thu, 5 Jun 2025 06:25:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E9AEF6B009A; Thu, 5 Jun 2025 06:25:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D89DE6B009D; Thu, 5 Jun 2025 06:25:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id B760C6B0099 for ; Thu, 5 Jun 2025 06:25:44 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 5843516034E for ; Thu, 5 Jun 2025 10:25:44 +0000 (UTC) X-FDA: 83520965808.05.48B4964 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by imf03.hostedemail.com (Postfix) with ESMTP id 53CD120005 for ; Thu, 5 Jun 2025 10:25:42 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VT21kGSz; spf=pass (imf03.hostedemail.com: domain of asml.silence@gmail.com designates 209.85.218.44 as permitted sender) smtp.mailfrom=asml.silence@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749119142; 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=itRQPWabF7d6IdaAkp4MBncmkvXPAe8HLLkNyEpU2ug=; b=dnHHzKxx6qewf32WuwsbO21R9BnFtP+SvaYTRF2bwsHseth5FqWW0HPcRBmZJ9CsRiugxT kyekmPTB2E4U4sLiyQOJdUnLsDyAOB9PGVnYsSu5C7Z65XlFwpWbc3/E2/bfFN/8hciNTx KY4FpA32+OVzmdc0jo7XMv1wJqqxf9g= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VT21kGSz; spf=pass (imf03.hostedemail.com: domain of asml.silence@gmail.com designates 209.85.218.44 as permitted sender) smtp.mailfrom=asml.silence@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749119142; a=rsa-sha256; cv=none; b=mLYVpxvsPUlU6x717wLiPLE+rQjprdH3tKrFhwXqPKJssQxS24upCiN1M3g9Rj0FBul0Xk bRbdHEln7yIv3JsQT/XzCaeQpSgpk5/8cLAhxymQ1qDKWNoeRYAXnx+Ih2195IqYwJ9QRo CbXXuXAjSSl4s1cC/YyPxQ7EmzO2p0s= Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-ad574992fcaso132714066b.1 for ; Thu, 05 Jun 2025 03:25:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749119141; x=1749723941; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=itRQPWabF7d6IdaAkp4MBncmkvXPAe8HLLkNyEpU2ug=; b=VT21kGSzhbiV9u+xGaNB3+azTpLQTZn/CcPNl8tMzZ4a+GXtpkeQcaVCncFJq5vtFp iieeywFNeSIlv9zqaBmah6k6xzPLMLlGLQPLGv7+O6pbdYwWxIVgovPk2786JIdS2+HT Agi2nXyh+6PHnMAwHuxynlidpa+d4ylSJ3bAsdC5NR9GKm3ZBCxd/JTjq3XmXcBa2olg P1PqIUyxAH0JEMJeprxU0JZRLGp3gYREiFTIudtJEeVCQdURQp7Emut3cdfQZqZljD1z n83gWyEXIgK3/L+Bu5qpvIMqv/nQ/Al8EscgBGzZQZZaRLesQ8CoO2FGtWQIQGwQMxTY kpNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749119141; x=1749723941; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=itRQPWabF7d6IdaAkp4MBncmkvXPAe8HLLkNyEpU2ug=; b=IIcR/hU2tGqXmb31Xq9TG7YiIZPZ9VdDWhvr4z4tp3J1AyXrkik+4StCGSJJBgCUQM V9sw01QEnjpUkcpiVB6Nfe6fCeTjzwE6yyLzaNhHOkw7daFZUaN6wqiZ4TXz7VQXOhuY 5XySE5wBsHi1p8I375b1hTrO++GTArutw/K89UZir/rVz6DZPMdXADGhUveBuoCQBB3m dR2n+x0Ncqf4QbM7BY9ovsmBWpoIeRK4mSt2FxcFyujVkeH7CmSxmt1Sz/sFRGRYdw5T k5rPzcKrmYTSMG3h6ZDMKVEgYG+K3/u2sRLGXxH4Bbg1lo/sdsxUEgTciY6/wSVQMq2n Kheg== X-Forwarded-Encrypted: i=1; AJvYcCVuB8bq/0Vi1VgX8k2KO4UHCz0flcGLF1p+FkPNCoXkn7I4MXZ5mgc9Ur10DHXDbEvDLqxTsmSM2w==@kvack.org X-Gm-Message-State: AOJu0YwtaqZbB/orLJUD4tC0c12g4iWBciT50ZJYaORa643saYlvA51C r2PQg0/+qjmIaV05dQ7bxk21HZEmnvAzCijw5TV/AwcOOcY/OpxyOyt+ X-Gm-Gg: ASbGncuVNXG/Th13huws5Q0Bz7e058wtnb+dHGdtCXbDlHYg9E+KpxTYeYEDujBDb5s I/fv3yJemMk0sAsHkAHZJRkNL2cpAakLhSzVBhE6NqoHkjqsqZw5t+b527ulYF9LFKGc40Ku4QC pDaNhZbqh4akbm4SA9NKxQ0AoNw9qEy/1BCeiU/gS0lnuKKTgYa6CjLhopquTJKotcEl56NMTPA 3mund+xCwk5RKVI+PwkTl0YfGOsAu/UKFu/HRznTnyuO3XLJm4qIJAekrOZAhzvzZd8xshKz2yF E3dlGD197JCoGIn0l6GYDRUWIgPAozkSIeStcSxO/ADx0coJhaVTM2y5ZGyRaLh3sHHwWzBlVsI = X-Google-Smtp-Source: AGHT+IEJVIeyPovY+XNoaWDAFKnxn+Gk0ei3Mrur69LBv34N0LN+wxmIwZL7D5wIY9s978A9r9fmyA== X-Received: by 2002:a17:906:f58c:b0:ad8:93a3:299c with SMTP id a640c23a62f3a-addf8c96579mr614742266b.10.1749119140426; Thu, 05 Jun 2025 03:25:40 -0700 (PDT) Received: from ?IPV6:2620:10d:c096:325::22f? ([2620:10d:c092:600::1:d66f]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adb31ea3504sm1104621366b.172.2025.06.05.03.25.38 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Jun 2025 03:25:39 -0700 (PDT) Message-ID: <29f2c375-65e3-4d22-8274-552653222f8d@gmail.com> Date: Thu, 5 Jun 2025 11:26:59 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC v4 03/18] page_pool: use netmem alloc/put APIs in __page_pool_alloc_page_order() To: Byungchul Park , willy@infradead.org, netdev@vger.kernel.org Cc: 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 References: <20250604025246.61616-1-byungchul@sk.com> <20250604025246.61616-4-byungchul@sk.com> Content-Language: en-US From: Pavel Begunkov In-Reply-To: <20250604025246.61616-4-byungchul@sk.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 53CD120005 X-Stat-Signature: 4idqguybzdk8nctbd3pys96xatrik7nt X-Rspam-User: X-HE-Tag: 1749119142-716738 X-HE-Meta: U2FsdGVkX1+YjTjpyoCU8YU4CjE1QKQGcVfHqXCL1p2jC3ia+Z1bsYLw3RNNiwOomAlSO9OJh9KcJoEmve5VX2Dm+6duTp99X/KvIPOvdBfGoqxppjbjuq56ca3UK20N1HALrGf/gyJqRIvkluP9CU2nnVvknuxzSRtkKETZPhy+WTj6sHErx7bs6CJWCxRYJh5drzhxsHXlz0rI79vr43xiiL4APP6SHKr4EltOX4kVga12RHHF2yqMH6PydS7QNzt5jaZoZtOI5jd+Qm9RuVdIT16h1lH4d4glFWHCOFPwzsQY7QAHshRZS3xK1kMNkIz06khALbjaV3MBBMlcIQr1tcZOisSK0p3Af7x/xffwgWDqCg1UGo1abox/FqEx+5L0xVIoMAB4twyhQva0D6x/WySY0V1T2DW4+Tj1OUubGllFuNF1pGxXEh/gpcBlXhOdg83IkfBgL1IpbkudbbBes309ByXnYtE7ecbp4u1ZYDz2JaGQsN/9wQq0WtamWHSl/qNaRNeXEH17JKqla10ZzYgT5B9AsfY2CNnm26GTo951eOzxJHpz4zS6XdxE9ZUZyge8pGZEPqcw+WpnRrdOSpiZT3wIa9dwlvttsmzYB84cxw1wrOhxmLCgo7d8IFAHYteO3+y7DBV4zxdbFBrMz8pEGZFEU9S/68q3AEeTcZ1v6m7+8BipidTHbRarlSB1FkQEKdaRNl0OEbGH3Wh4IHUjhnWicKNJj6OXip84E6FaYyRNOtMnPnTxqNeMJUHAPhxHYlgmAHCz4My0a2LwuDlfMmYqUm4m5IApSANcSPiWQVNz/3ZHjCNHS2Q8tc/aZx5kzUGLvqRdWkxNKWHV7GvFX/4kM478iOsnUllc5p16b96iEQ3t/npmlvUItnit8R5QsKgLCtkdzNZ5GNJ3ABSQ/F6cgydXCEKTjN59i6Aoy6lsyLrpIipb4UW7Imjj2ANkA8nEuBZ/m6k 3jWgFvKQ +iaELXW1I/jFrleMVhlUnzj+rtuqkeGbRM6+hwMhrG1IKhCVEDZ6xiuy4qQy+WQiOtYC7WOm8Tn2eKDPnf5Itts2YZ5k4otPv/gKHIUbiU/eqzIFNgX3xeIsDNM1aIDZbnAIcxOcZDbvzFdUMSYJF5Ar6CepP30Gp2iFFpu6OqY4O+77yMzCeEoc2ZL9EbfO8Jygodyh9+bhYnLR5PDmjxFt6NWSkfWzr2F3w5oXkILYH2U11z41m1OwfP8cFtZSSRSRBAZaLjk55kqJoNdIV44F80Hbc7IVMAgFkOVdLE9EcxIFbrVQl3N8+ywPpZtDA4GzaVh49N7+5Frl6jupv2veWxaYeE7c44Gbpmz45wjj2GoPyALLbPlGnucVg8WhW7csb2XO9voz+2iEY6fnuhJUxWmnjixuSgJq9LqLiqXyad18qfMOsSCGymXhbxCHf1/ktiy0CGqEh7ZOpKkT9RdPXt3//zBRg3YMFqenNaS37bZOBGGniB3e+2PcMldIf2tzdPZez2nkZosHjMgzqJ58ckhrXRaeKZf3IMzxzCZzSoivOF7spYwkO2BENVPQYFi+uyjntBwH7m3MnPScuPLmJ5IzU4nwoencA7H0n33htalCzBnmEpl/dVbttFC+WwHPytbVUUHuEoB3vaQOuAnMRB4+U4b/QSpLGM/Kk7/u+91gMSkuEdIfHoQ== 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 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 *pool, > - 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 |= __GFP_COMP; > - page = alloc_pages_node(pool->p.nid, gfp, pool->p.order); > - if (unlikely(!page)) > - return NULL; > + netmem = 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. The second problem is that you pass it page_pool_dma_map(), which works only with struct page and not net_iov, and so it just unconditionally casts it back to struct page. Which, to be fair, a pre-existent issue. This function deals with pages, can we just use pages instead and cast to netmem when needed? Sth like in this pseudo code: netmem_ref __page_pool_alloc_page_order() { struct page *p = alloc_pages_order(); netmem = page_to_netmem(p); if (!page_pool_dma_map(netmem)) { put_page(p); return 0; } return netmem; } -- Pavel Begunkov