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 2F4F5C83F17 for ; Mon, 14 Jul 2025 19:38:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A1C6B8D0002; Mon, 14 Jul 2025 15:38:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9CD0C8D0001; Mon, 14 Jul 2025 15:38:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8BBB78D0002; Mon, 14 Jul 2025 15:38:05 -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 7848C8D0001 for ; Mon, 14 Jul 2025 15:38:05 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C626BB8063 for ; Mon, 14 Jul 2025 19:38:04 +0000 (UTC) X-FDA: 83663880888.17.37C7D1E Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) by imf30.hostedemail.com (Postfix) with ESMTP id E26B180005 for ; Mon, 14 Jul 2025 19:38:02 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Q9uIZzvL; spf=pass (imf30.hostedemail.com: domain of almasrymina@google.com designates 209.85.214.180 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=1752521883; 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=yry2upj+ByeYrrNjZKRJ8sVD88C6f2FVJf/Y5Atdgbc=; b=Mt3VncWicak7u5sdp6aSa5wGCSYhlx9SRRNunBmaoPw9i0mdtvEYqad6w08QU7UKmreQA2 jxj5slGje6ZwGnArp6vnwY8ncGsBcgpDQgmbl8rl1kZD9ZYV7nHj7sRDiyotLtUUmTs0xG 8jAqmLTBGz5zzjKcwc/lTLjmM3feiIg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752521883; a=rsa-sha256; cv=none; b=GrLcjp23FkgiosiW6hBCVGVAXv2Rc2msIbfzBNepfqD01jI69oYdMf907wKz667nVFUri4 HCRP8qmzM3ZE6U+HTo92CgTtGkecQNdb87XhD8eD+iOQ8eK2TCBkZsO79QiVJ3mqdaNtiD HrPqa08Dbb1hVaBhn4WKo5TfcD46/R8= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Q9uIZzvL; spf=pass (imf30.hostedemail.com: domain of almasrymina@google.com designates 209.85.214.180 as permitted sender) smtp.mailfrom=almasrymina@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2357c61cda7so2625ad.1 for ; Mon, 14 Jul 2025 12:38:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1752521882; x=1753126682; 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=yry2upj+ByeYrrNjZKRJ8sVD88C6f2FVJf/Y5Atdgbc=; b=Q9uIZzvLN4/b6ulsvZ1akuBNi3ECtztSOguKIUeOuisU+Yk0kb7dJ2V8+lDpeqA/4W +qQbnA0+rFH+X1RAkxsREVDxDffGNp8Z3ufpDKdEnSDNvriBTS2/zOBW8C9zALu2F9NZ 0M/a9q1sbgY6ozKhTTuyIkZg74OeHYDtqHaOzxLNhJjZujB06RPiRa8FXnHy8LLqeZT/ NKZ+z4HlDKjK0Mgo+LmfooqeYmyRytKAUUyCkQDwtUod6f8q1K4UIwPWtC2VxA4zL4Bm bn1ZCwybDj1kV6bkc68ZoymEndewCXghaJTpBl7ayBb8vo5mQ1e/9QD2moVNlJ9HqD+m VSzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752521882; x=1753126682; 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=yry2upj+ByeYrrNjZKRJ8sVD88C6f2FVJf/Y5Atdgbc=; b=c+yOwx6TKPyCGWLbWrTlVOUAFMPeLtX7aQfpmp+0foUopyzhN8U2N+8ZsrScwiLtJR NtCrYdqlkqPRYw28/U2zDRaysICGQ4nv37hm0VVqPtVC/TtemgYXn1uMc6hL6kQKG0U4 /m6WyMBH/S91Zac0cfEm2AKzdMJEuchAN88vEI8qgxsRw9D5pbyuDnJ3JKh55jt3q69b WuIsY3LkWo3fpktrNzvbI8hPhnIZQ+xGPfBIecezSfgkJH2VbMaUKl/en0DC4bdxXU+p hXm6Po07ZREPPuOoC25bNLjmdbj5A9m0fSNKI1zfHvVbZeR6DCdYuoB4oMXgL7YH7hHM zBiA== X-Forwarded-Encrypted: i=1; AJvYcCVI4CL4cXQ6xl5C6Ne8+1FXiGRrNebeXg5TZaA8w22ZoR6vp0FgwM4QG7Z668sQ2QephGZsE2GBvA==@kvack.org X-Gm-Message-State: AOJu0YyH5aBYLjINedWpGAXnePw8JnSDG1rGsqklKztfpbfThmMo98DL hHjwQnVzcwCcF+1CfyINT9hQLe43a+5y/0HaAISZpGR/1uldQIVt1/qD0V6cl0v/b4TxhqkP+pQ QKNKVkXpEAQbcPszhthZnoanEckvBNib64/z09BZH X-Gm-Gg: ASbGncvAp1atb1NaF9XzRI2kj2szXxfcyVPt5fpQHpBBen8zF3AmFCWEXRKv7PSuNqK i2zMlBxqZ4eYKRQlF0DiY95jU8jF7K/kREi+U/yKj2vgAsodFRBcR1vUpp6W5t37v2IFh1insoD zZaEmZOnr2JI3wvgfumsOH8NOZIRZXIutNwiFjP/t7zv2d6Wx/UNY+JcYZPmJ702lxw5MA3TMGY zfX+ZRkc5mQOKttvdFalqm0bytOf4uQ81/p1A== X-Google-Smtp-Source: AGHT+IHZoWQ8pLUOjiCQlGlcYIPNmYT9TX3giO0kqF0O3T+xtLnHFh+M02Pq+s3+TLFDvQ9elFBdwtzpJc9HYJVxyEM= X-Received: by 2002:a17:903:2484:b0:234:b2bf:e67e with SMTP id d9443c01a7336-23e1ac4613fmr298445ad.13.1752521881303; Mon, 14 Jul 2025 12:38:01 -0700 (PDT) MIME-Version: 1.0 References: <20250714120047.35901-1-byungchul@sk.com> <20250714120047.35901-3-byungchul@sk.com> In-Reply-To: <20250714120047.35901-3-byungchul@sk.com> From: Mina Almasry Date: Mon, 14 Jul 2025 12:37:48 -0700 X-Gm-Features: Ac12FXwrdXtLbiJlmPY9vk8GjB7CqgoZsH_hsU8OuZVjZ5CbRybhtkUh-Kkp2jg Message-ID: Subject: Re: [PATCH net-next v10 02/12] netmem: use netmem_desc instead of page to access ->pp in __netmem_get_pp() To: Byungchul Park Cc: willy@infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel_team@skhynix.com, ilias.apalodimas@linaro.org, harry.yoo@oracle.com, akpm@linux-foundation.org, andrew+netdev@lunn.ch, asml.silence@gmail.com, toke@redhat.com, david@redhat.com, Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org, surenb@google.com, mhocko@suse.com, linux-rdma@vger.kernel.org, bpf@vger.kernel.org, vishal.moola@gmail.com, hannes@cmpxchg.org, ziy@nvidia.com, jackmanb@google.com, wei.fang@nxp.com, shenwei.wang@nxp.com, xiaoning.wang@nxp.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com, sgoutham@marvell.com, gakula@marvell.com, sbhatta@marvell.com, hkelam@marvell.com, bbhushan2@marvell.com, tariqt@nvidia.com, ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, sdf@fomichev.me, saeedm@nvidia.com, leon@kernel.org, mbloch@nvidia.com, danishanwar@ti.com, rogerq@kernel.org, nbd@nbd.name, lorenzo@kernel.org, ryder.lee@mediatek.com, shayne.chen@mediatek.com, sean.wang@mediatek.com, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com, aleksander.lobakin@intel.com, horms@kernel.org, m-malladi@ti.com, krzysztof.kozlowski@linaro.org, matthias.schiffer@ew.tq-group.com, robh@kernel.org, imx@lists.linux.dev, intel-wired-lan@lists.osuosl.org, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-mediatek@lists.infradead.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: E26B180005 X-Stat-Signature: 5jcr3p8ds4z9xogd8uh1wcgo7a5ojot9 X-Rspam-User: X-HE-Tag: 1752521882-395560 X-HE-Meta: U2FsdGVkX18c/Ax3dVUAPBceqAXb+rtD7CRdqSk07hKKzZsivLJzRcMZWNkgKDp8KlrrQrGCM/FMAqlKQap37IueyoFPq5bVTnW14rDfcr7vc7bOKZqKeMkeyiQrRd1RYprIKhuKR0WLgwEq7Et+TY9geq9Pm6s98GXw7M0NEsYe0Ycui2UVpecgEBMmHDS2mVIxMXDU5IZmy5Pi7xsiWHmKABjCHNShBXOUFfOKbjYar1/Xy0nSf+lYqa4MXCA72yZ5693AyR9ECRhn1mNfgYqHTpnRojDyxsd5YN1JaJri+2QxoPIzxapaaioTQVh6DB9GKYa/pu0HmsKublwkjXUj9dNfUEuP53OiX4eqz7GzCQw+2yTFl9lqRlRlSvINWl77srYHj09kC2SUCIqfGVFpmBQKnfZX3bZJRFuOSxR1fIfVeuM7u/TSAU5Fn7Nk/L+UbK9ypys84fvvBSGNqFYvfkGth1taOp3xTOhrp9wYdCxYi+wa48u2hUPt4whl5IvKI9DOUFei4DohI3IRqs3+rLOS2vZPzYQlJD7Bzs+JC5EHK+ya3MYb+MVZw2Jl6hxfMyNEIKHSdw1Gz3UvpXajVrLK9FEsi32ZP7C/edkGpVbrgE0GmQea6lumAnITzPV4NJik4bBZtkFWutDo87I9q7ljYfLpltkoIzJMM4P6LEEGFlZkAWEPwQKoA++VdgBxI/HdqTiBosiBi/niwMEe6Yf6gSWslvnTTxjtUugKKWD4Ysit1R7bYhRzxxLKyJXnAltvzPPqRc580SfySdWdD60fug5M/qPFPNdOS1qdahtp6haKn+kl8LSWXWk0bA9qcP8EUEJahedDXFmpozskREZ9TMdpORnJbDxAbdyJ7nW/bjeTbrKaG1U25OyCwxfto+dZCaV5S1oLoxxrzs+ZFgVTfBmHb8Ju11TiLC6RRZb20yyMqq6wEL76gzuuIAz0lQGj8iwJzjTF3vf dYK+NyMr P9w/PjPwsK3XlwhC9PasOCjIcC48qt0AP+Cu3KoPabuJMv7Q4c6VxukoFC/Fov9FrM1U7dcbnzAmlBx8oOor4+9HQwbHIh9rM+zxas6XL+yW2inC4lAIJVj39nRgPDUNIX1bEAopCeeDiYwmu3F+3X+m1pxOpPdDY9g0nyO+5QElHgsyo39SLGJX2vEWn99LtWpLfRCq95leGlNorr8yAWph5Ss0KVR8v42MbKWSRtEN9w4HHBjk8LDpdb459y5whmK6FF/fslnsjNY/K6SbZj5j1lxYYOG7tKyAFNvxHuR4q4VVfj7KG7Y5TLhtWAk7jyJPX5j9b/6bY+8cws+fQ+fxeTXGbof5UOpAtrI5dOKbQr6jK6YCZNrQtNs1h2iOmGjeN 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 5:01=E2=80=AFAM Byungchul Park w= rote: > > To eliminate the use of the page pool fields in struct page, the page > pool code should use netmem descriptor and APIs instead. > > However, __netmem_get_pp() still accesses ->pp via struct page. So > change it to use struct netmem_desc instead, since ->pp no longer will > be available in struct page. > > While at it, add a helper, pp_page_to_nmdesc(), that can be used to > extract netmem_desc from page only if it's pp page. For now that > netmem_desc overlays on page, it can be achieved by just casting. > > Signed-off-by: Byungchul Park > --- > include/net/netmem.h | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/include/net/netmem.h b/include/net/netmem.h > index 535cf17b9134..2b8a7b51ac99 100644 > --- a/include/net/netmem.h > +++ b/include/net/netmem.h > @@ -267,6 +267,17 @@ static inline struct net_iov *__netmem_clear_lsb(net= mem_ref netmem) > return (struct net_iov *)((__force unsigned long)netmem & ~NET_IO= V); > } > > +static inline struct netmem_desc *pp_page_to_nmdesc(struct page *page) > +{ > + DEBUG_NET_WARN_ON_ONCE(!page_pool_page_is_pp(page)); > + > + /* XXX: How to extract netmem_desc from page must be changed, > + * once netmem_desc no longer overlays on page and will be > + * allocated through slab. > + */ > + return (struct netmem_desc *)page; > +} > + Same thing. Do not create a generic looking pp_page_to_nmdesc helper which does not check that the page is the correct type. The DEBUG_NET... is not good enough. You don't need to add a generic helper here. There is only one call site. Open code this in the callsite. The one callsite is marked as unsafe, only called by code that knows that the netmem is specifically a pp page. Open code this in the unsafe callsite, instead of creating a generic looking unsafe helper and not even documenting it's unsafe. > /** > * __netmem_get_pp - unsafely get pointer to the &page_pool backing @net= mem > * @netmem: netmem reference to get the pointer from > @@ -280,7 +291,7 @@ static inline struct net_iov *__netmem_clear_lsb(netm= em_ref netmem) > */ > static inline struct page_pool *__netmem_get_pp(netmem_ref netmem) > { > - return __netmem_to_page(netmem)->pp; > + return pp_page_to_nmdesc(__netmem_to_page(netmem))->pp; > } This makes me very sad. Casting from netmem -> page -> nmdesc... Instead, we should be able to go from netmem directly to nmdesc. I would suggest rename __netmem_clear_lsb to netmem_to_nmdesc and have it return netmem_desc instead of net_iov. Then use it here. We could have an unsafe version of netmem_to_nmdesc which converts the netmem to netmem_desc without clearing the lsb and mark it unsafe. --=20 Thanks, Mina