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 71422C3DA42 for ; Wed, 10 Jul 2024 16:49:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 045936B0098; Wed, 10 Jul 2024 12:49:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F37736B009D; Wed, 10 Jul 2024 12:49:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E26206B009E; Wed, 10 Jul 2024 12:49:06 -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 C4D6A6B0098 for ; Wed, 10 Jul 2024 12:49:06 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 7545A16013C for ; Wed, 10 Jul 2024 16:49:06 +0000 (UTC) X-FDA: 82324427892.14.6CA0C37 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf12.hostedemail.com (Postfix) with ESMTP id B778940003 for ; Wed, 10 Jul 2024 16:49:04 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=GeE9psM3; spf=pass (imf12.hostedemail.com: domain of kuba@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=kuba@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1720630128; 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=HKM6shgf8W9sE4Xb4zjYe7oKrQWJm3axY8ra6y9a4CM=; b=O8uxnt9LWtQUue0YfS/ol7eOxmZky/aYBfa5Z6MpJ8DBpYHdy5ljtTau34lwr7zVT6Lvzz w/p3KDpbEX13Sg9+DksPx8+c2mOvFd4V+fwBDydWOWLmVtBT6ZC1FHHWf5NBrMGWS42/y8 AVnoYTJZUBq/z/6euNll3kzJx45Avhw= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=GeE9psM3; spf=pass (imf12.hostedemail.com: domain of kuba@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=kuba@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1720630128; a=rsa-sha256; cv=none; b=4xkf4GRwdB1uxXR6dm6HYtnslkxes0rFM2wSrKthD6oJ0Fnde87CI6mWlFP5q1T6h9WiF+ tyZNFJLQbf1WOnknVxYQGfcaTUJhP+kmLr2lzc/uqy/KGR7M4P/FteCu9nJ2NxiH9pNqtL Gf2uB5ZlvBFBu8yow/Q8gcv0gFVZzTI= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 379B661B46; Wed, 10 Jul 2024 16:49:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 24C51C32781; Wed, 10 Jul 2024 16:49:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720630142; bh=eS/RMGP4VxRIFbhmXWkCrFvxioDBvmLiKkBEAODdwGU=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=GeE9psM35dHGvAUo79TtOnu4kq5cY9EUrGF2ghylZhRExsJfxInrnrbzIGYTRdEyP JuNUksWFVoX99WDJK0OYBlsaXy6q6YA4gtH9ruZmomvqVAnZKrQ5V0cyaDEK1nrfmj TYzIOxglnzs0uEzQL7xFLg0IgYd2T3xSZ3m9tEEYvl2XCdOAvnosGa5j4fJc/Yy95m Fc5KKtoP2fmuVTazyDqaAh0RTuL+2gSo3Q0QXNcq8mXWHgnju0cDM5kOaxJGJVc4MU IX9XFPAHEsGhG08l+UfVEIDuPwq1AH3mfKgmvCy5HzZT6Og5qbJjr0Ohj8oZTpGXx8 z5HtdpFuugVEQ== Date: Wed, 10 Jul 2024 09:49:00 -0700 From: Jakub Kicinski To: Mina Almasry Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-alpha@vger.kernel.org, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, sparclinux@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-arch@vger.kernel.org, linux-kselftest@vger.kernel.org, bpf@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, Donald Hunter , "David S. Miller" , Eric Dumazet , Paolo Abeni , Jonathan Corbet , Richard Henderson , Ivan Kokshaysky , Matt Turner , Thomas Bogendoerfer , "James E.J. Bottomley" , Helge Deller , Andreas Larsson , Jesper Dangaard Brouer , Ilias Apalodimas , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Arnd Bergmann , Steffen Klassert , Herbert Xu , David Ahern , Willem de Bruijn , Shuah Khan , Sumit Semwal , "Christian =?UTF-8?B?S8O2bmln?=" , Bagas Sanjaya , Christoph Hellwig , Nikolay Aleksandrov , Taehee Yoo , Pavel Begunkov , David Wei , Jason Gunthorpe , Yunsheng Lin , Shailend Chand , Harshitha Ramamurthy , Shakeel Butt , Jeroen de Borst , Praveen Kaligineedi , linux-mm@kvack.org, Matthew Wilcox Subject: Re: [PATCH net-next v16 05/13] page_pool: devmem support Message-ID: <20240710094900.0f808684@kernel.org> In-Reply-To: <20240710001749.1388631-6-almasrymina@google.com> References: <20240710001749.1388631-1-almasrymina@google.com> <20240710001749.1388631-6-almasrymina@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: B778940003 X-Stat-Signature: n14b3np3fqnx7cd5jti4rok6msiumb7p X-Rspam-User: X-HE-Tag: 1720630144-661304 X-HE-Meta: U2FsdGVkX19MvqhfxDc4+4f49cB68u81JR+3lqFvtgEFZDZqzwRAzgR47VZj5NOqFBeiGa7P/26QWg2qQpZuUpHX4XZ2EGSVdG7YKBx9NFSe7LL89rInaHMoIkfO8A6uvHfD1gXNva/ToO/GPqp6xz1Ft5kBOVWNplJ5dPoy4w2z2QUsNXdRipU+LK5bM8XpXfXSo+hl9B+Y7WKmYMiLWyjIeGiBhER2mooI7mdduPEWOXr9bswNAdh/BfOu2nbdSATCDMc481gnS9MiG+CDHcx1KCqltGUg+XDr13w4oukBSr0vkBOlWseQlmbS4WZZA7ipVeBPX/bWt8sYCGI0GoKlHyq4l9CoqmFQSzwKRDyCPIEZ14aYge5O0bhbrkHbkgB7Q2BLaeOL4DsFLpWZGcv9ty5nj0X2S3nMicBo+Ep7iGrNXDHrIE9CJgi8ltazZ+CNDQsTSzNz6HlrDvqCNiwIjdYCyShx1RAF51sdriJ6rmEyBe3xyHNx/BCXzoc/xSKG/6YEF7QhEZ/kLc2WFrEb+pSAduveNQRyihs1UTcsa95vs8VHlMIb6e+aoz05/bWJaCwjCotjGeYFXJGbEJ0q6mInXxH8uxfDYS/othpqTNangVGZrdGLpiz1HI2isuklMofuA+Zb7tC6sXGJVaMM+bws/QeBxv5ES6b8ZASJBK2rCN6VgyyCrFdeITPpUmYh2ojIP8DN5jQXPzooFmVnfUWXZvJpnKOyWA3otPTFR+mJ7UQzzKncg41rQsDDJXxPDciwZVi57VUNO4NfuSZoTHmJsdjuFNEFAbaGLPiwmS942cb8GlfTBYkiFSIoELKe9r6OgoaO8ahXAIKD6Wo2THOHUY6clNSUfXsGaZ9ZOgEdyOfhFh7a5DXcH7usD3YH4XDMizR9w4lxAAiB+TK7caWaex7KJAI+oe/UvAf1krjdb4h8bWjEqILqgJHp7TzG00qBlWLwmJNPlw8 TmkOBXgC O2/NUM7wB0fVgm/qRA5d+4y9WtIydsA/D19tsCJdfw3Z7U4hjEKwQIqwamQavLBi4Vw123T/NCJIoCe7/CranlUX6CJ/zDIM+4UtB6Q4SAXEXT3SBEe2y3meq/s46p4Km9JrOGs6LUgmZwiyWCUVb52KWK8S6WKQZg2aNX9+dF8WGHVAKzc5MM/kCxwDHZ64fxuFw3O5sQqCcLnCwBHR9cozJy/ucTzpHWYoqam9DNW7EpNg+HVgAr71h4nmId7dj18WTH0FxpsDeUFIRrM1CesstQmlufpQVgZUOiSl02AssM3gF3lmq9gipW77mU7P0o1/Li8UATUbwq3ZL/7S6ZcOtbA== 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 Wed, 10 Jul 2024 00:17:38 +0000 Mina Almasry wrote: > @@ -68,17 +107,103 @@ static inline netmem_ref page_to_netmem(struct page *page) > > static inline int netmem_ref_count(netmem_ref netmem) > { > + /* The non-pp refcount of net_iov is always 1. On net_iov, we only > + * support pp refcounting which uses the pp_ref_count field. > + */ > + if (netmem_is_net_iov(netmem)) > + return 1; > + > return page_ref_count(netmem_to_page(netmem)); > } How can this work if we had to revert the patch which made all of the networking stack take pp-aware refs? Maybe we should add the refcount, and let it be bumped, but WARN() if the net_iov is released with refcount other than 1? Or we need a very solid explanation why the conversion had to be reverted and this is fine. > static inline unsigned long netmem_to_pfn(netmem_ref netmem) > { > + if (netmem_is_net_iov(netmem)) > + return 0; > + > return page_to_pfn(netmem_to_page(netmem)); > } Can we move this out and rename it to netmem_pfn_trace() ? Silently returning 0 is not generally okay, but since it's only for tracing we don't care. > +static inline struct net_iov *__netmem_clear_lsb(netmem_ref netmem) > +{ > + return (struct net_iov *)((__force unsigned long)netmem & ~NET_IOV); > +} > + > +static inline unsigned long netmem_get_pp_magic(netmem_ref netmem) > +{ > + return __netmem_clear_lsb(netmem)->pp_magic; > +} > + > +static inline void netmem_or_pp_magic(netmem_ref netmem, unsigned long pp_magic) > +{ > + __netmem_clear_lsb(netmem)->pp_magic |= pp_magic; > +} > + > +static inline void netmem_clear_pp_magic(netmem_ref netmem) > +{ > + __netmem_clear_lsb(netmem)->pp_magic = 0; > +} > + > +static inline struct page_pool *netmem_get_pp(netmem_ref netmem) > +{ > + return __netmem_clear_lsb(netmem)->pp; > +} > + > +static inline void netmem_set_pp(netmem_ref netmem, struct page_pool *pool) > +{ > + __netmem_clear_lsb(netmem)->pp = pool; > +} Why is all this stuff in the main header? It's really low level. Please put helpers which are only used by the core in a header under net/core/, like net/core/dev.h