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 2719EC54ED0 for ; Fri, 23 May 2025 03:27:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2CDBD6B009F; Thu, 22 May 2025 23:26:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2A5F36B00A1; Thu, 22 May 2025 23:26:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 193966B00A0; Thu, 22 May 2025 23:26:35 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 01DA86B009E for ; Thu, 22 May 2025 23:26:34 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B8A2281249 for ; Fri, 23 May 2025 03:26:34 +0000 (UTC) X-FDA: 83472735108.01.A64DDC3 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf03.hostedemail.com (Postfix) with ESMTP id DB31A20011 for ; Fri, 23 May 2025 03:26:32 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=none; spf=pass (imf03.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747970793; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references; bh=Zhi2MLRTovYPWaB9orUWu9wTMhnsjPC42gyYvAygM60=; b=GCqEho+r72XvU8mID9n8gwikKuwnOo2uD8rOsXyEbBneM8RB0/bpf0lxfm/PiRAMK4z4tz 8kK+EKW5x/Uh7E7diWxJjgshGhFZYv3lvd/QPTwS8tymA8ty5ZCCXfKrb6TFdPN55XjDwG yBYXJRfgUzZL6zRKl17ZTV8Te2DNmnA= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=none; spf=pass (imf03.hostedemail.com: domain of byungchul@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=byungchul@sk.com; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747970793; a=rsa-sha256; cv=none; b=VcoEBE6GmpRVZM0/lvNHTC1c+TT10i5yDZV0uGO3t3pAVE5unvWn7QqMeKtI6v1wHSqgfi /3tZySRWF6Tx3v7sJFPqHdm7rMPmW5KdEQ9d6Txyj75ZfRB1g85g6pxLnLlQjXMg4qO28v RmRvF9BeY+SfDf8FzMUMl0c1CqnZYNY= X-AuditID: a67dfc5b-681ff7000002311f-23-682feadd3b6c From: Byungchul Park To: 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, asml.silence@gmail.com, 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 Subject: [PATCH 18/18] mm, netmem: remove the page pool members in struct page Date: Fri, 23 May 2025 12:26:09 +0900 Message-Id: <20250523032609.16334-19-byungchul@sk.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250523032609.16334-1-byungchul@sk.com> References: <20250523032609.16334-1-byungchul@sk.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzWRSUwTYRiG/TvTmaGhZqwII4poFTUQ2YLmI0HDwcN/MgY1cTlII6OtlMWW PUGrEo0NICphsyQlRqylsVoRWkSUAgWiEWSzgiyp0oMiO0TBuBTl9uR9v++5vAwhaSH9GUVy Gq9KlimllIgUffOu2jP8JUwePjS1FnRmEwU137PgwZhVCDpjHYL5H0M0zLW2U3CvapEAXVce CQvmJQLGHS4aRqvdJDReryfAdbODgoK8ZQKuWA0C6K4rFELx0n0C6jVjNPQ26CgYMf0Wgtte QEJnxUMSRgtjwaH3hcXXEwhazfUCWMyvpOBOj56CT3mjCHpaXCTcvVyIwNzkFMLydx0Vuw3X PvwgwLaKYRrrLen4qSEYa509BLYYb1DYMnubxh8HGincUbZMYpt1ToALrk5SeGZ8kMRTTf0U Ntf2k/iNvpXGc5Yth9mTopgEXqnI4FVhB+JF8icFTkFqi1+Wu3eTBpkkWuTFcGwUZ8jToVVe yHcLPEyxuzin8wfhYR82gptztZNaJGIIdlLIjeuWV47Ws4e46SYTpUUMQ7JBXHVJuCcWs/u4 WeNL+p8zkKt5/GrF4/U3LxpZoDwsYfdyz/sGaY+TY2dorsw2/f9hI9dscJJFSKxHa4xIokjO SJIplFGh8uxkRVbomZQkC/o7bXXuz1NWNNt9xI5YBkm9xVZRmFwilGWos5PsiGMIqY+4zR0q l4gTZNk5vCrltCpdyavtaBNDSv3EkYuZCRL2nCyNT+T5VF612goYL38N0lwovdYZEq1t25h2 LeAXE1DRPDGwFGfIdMTF75gpdzsvK83RBsdAnz3361Hl1YmS4Usvdh576zCdjel1nX8X1et7 8ESIfWypPLNh9y2N99bIIHyxNOlRunRzgxonBt6vGf0cn98jLw5UXOlc98x//3zw9uNcii2n yth1tHJD1XuHlFTLZRHBhEot+wN92pOl1gIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAAzWRa0hTcRyG++9cN1qcTqsORgQr07ScWsYPCjWK/CNk9akIQpcd2vLKZuK6 YSqUw5mWWdqMydByCsspzpWsmNcuULiU5W1hOaLCLl5ILSyNvj0878v75WUJvo4MYrWZOaIu U52upGWkLGlP4Y7RTypNZOM2MNubaGj8mQf337VTYLa1IZieG2ZgqquXBmvtLAHmV0UkzNjn CZjoGWfAXx8goeOqk4Dx6300mIoWCChofyCBzppnFLxuK6WgYr6OAGf+Owa8j8w0jDUtUhDw mEh4Vt1Agr80Hnos62D2xRcEXXanBGZLami42W+h4X2RH0F/5zgJd6+UIrC7fRQs/DTT8Urc 2vBWgl3Vowy2OM7hlgdh2OjrJ7DDVkxjx48bDB4Z7KBx350FErvapyTYVDhJ4+8TQyT+6h6g sfXjNwm2tw6Q+KWlizmy+oRs72kxXZsr6lSxKTJNs8knye5cnxfwbshHTbwRSVmB2yXMlAQk S0xzIYLPN0cssYKLEqbGe0kjkrEEN0kJE+aF5dIaLkn45m6ijYhlSS5YqK+MXNJybrfww/aE +be5SWh8+HR5R/rXl43N0EvMczHC4zdDTBmSWdAKG1JoM3Mz1Nr0mAh9msaQqc2LSM3KcKC/ 59Vf+lXejqa9CR7EsUi5Uh6aodLwlDpXb8jwIIEllAp5dyBCw8tPqw3nRV1Wsu5cuqj3oA0s qVwvTzwmpvDcGXWOmCaK2aLufyphpUH5KPxQVrC+fOcYexL2Sb3QJjv4QRXOHNmzlRqJWVXm n3e4EpJdk9zmlo2VxYmtistZWt5YeNscFBeqOOCMqzjbmFZ/in9e4L949Gl3cfQ1qyEvovDW cPm8dvA3dTgndfuF2JfWugq8GF12vrlKuj/ctMVQ1R1w13523jvOz6wNUZJ6jToqjNDp1X8A 10tm/bgCAAA= X-CFilter-Loop: Reflected X-Rspam-User: X-Stat-Signature: ut63mnfifdhciwcbmgcaxxoc81aqechp X-Rspamd-Queue-Id: DB31A20011 X-Rspamd-Server: rspam11 X-HE-Tag: 1747970792-388142 X-HE-Meta: U2FsdGVkX18zLR7KPBzpaHifnofHbxUWZbZfZNkEEGlzHOj2/0G0ih4/IY3hIajSncRbdLYan8G1OmI59DDx+aRiCuJfH01VGbskrt9rdLz4ogF0yJU6iLk8vkRY5v7oRJP/1P8uJTiSYqpwOzhegqgL+yZmIsp5qXe3+BFSW4Cn/8evfsTKdAeTz4WcTzmV5vvxkhaseO8OILE4T1GztIvLx1MKae+VnoiSHEEkrubFanLfvkp8MXZx35vUeKZEV9dIZrx9LU70mPoRk/4tGzXsW2uKtAo0Z6ek3JYbjLJmT2xcgAIPqWlmoWIylMdD9pQpE4XcFi3mQxCAT5wbXYkdI8ilfaOE7XZzhSp12rF7n51kIP3DUun/kQ9ABlyLuW9Iu6MYicVNmU6lEOeRZdhniA6PskywjBjiZQlnGpvE6lxVaufa6rR7Ak76NlSM6cNKJJE1nOiqjGjnYYMeg3ntpQ+SVHecG0gMku9ZQEsuXAZBdVkngcTpRSB0hkavpn+irfd6Sew0XIb7xx+N7elGQeaQScEaedHGzjzNVD8Ex5glowohWvmigjSsNKJyumrbFkJxy7uh77SBXfC4Fy1lFyAqNwWdXwaL6jc8WIaW0FlaN6kmTMZ83ln8P4KuCKdlsZhd5IQEonMa4Y+no60MeVbs6qdMV/4P9kQAQv4N0p5NdG+G0CUxhQSB8GcXStJdp9mCMdkHBf/5fVDwHpEGnfz6e4ag5jdYpnDCJLE04Sjk6GuT79SCAV71f04FoW8N7k8Vvw2WTh7oox/Qiouti34aHag23gFTpqbJxzY6NKC27aAW/ewILxszeqCnXLBMl+PtRC45d4rVViTqJgzBi7fbNCEIKkFGuZ9bkrNDT4qJ4c51FAuRCLlZwdJsGGwBRuOU0JEz2uiss/aHfSjVzMyId0lszM86hcLUuV0qGOFAZEzPVd8K5CLv6Dp7RSmwHxzSZVdVgZHZqdI QoolA/s+ nfZGI2Krp5+bItw2dAOOlcyBqIShnNPYUAn1RqeqqUtcacazYf2eoWw+F49VPDFtTEIho 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: Now that all the users of the page pool members in struct page have been gone, the members can be removed from struct page. However, since struct netmem_desc might still use the space in struct page, the size of struct netmem_desc should be checked, until struct netmem_desc has its own instance from slab, to avoid conficting with other members within struct page. Remove the page pool members in struct page and add a static checker for the size. Signed-off-by: Byungchul Park --- include/linux/mm_types.h | 11 ----------- include/net/netmem.h | 28 +++++----------------------- 2 files changed, 5 insertions(+), 34 deletions(-) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 873e820e1521..5a7864eb9d76 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -119,17 +119,6 @@ struct page { */ unsigned long private; }; - struct { /* page_pool used by netstack */ - unsigned long _pp_mapping_pad; - /** - * @pp_magic: magic value to avoid recycling non - * page_pool allocated pages. - */ - unsigned long pp_magic; - struct page_pool *pp; - unsigned long dma_addr; - atomic_long_t pp_ref_count; - }; struct { /* Tail pages of compound page */ unsigned long compound_head; /* Bit zero is set */ }; diff --git a/include/net/netmem.h b/include/net/netmem.h index c63a7e20f5f3..257c22398d7a 100644 --- a/include/net/netmem.h +++ b/include/net/netmem.h @@ -77,30 +77,12 @@ struct net_iov_area { unsigned long base_virtual; }; -/* These fields in struct page are used by the page_pool and net stack: - * - * struct { - * unsigned long _pp_mapping_pad; - * unsigned long pp_magic; - * struct page_pool *pp; - * unsigned long dma_addr; - * atomic_long_t pp_ref_count; - * }; - * - * We mirror the page_pool fields here so the page_pool can access these fields - * without worrying whether the underlying fields belong to a page or net_iov. - * - * The non-net stack fields of struct page are private to the mm stack and must - * never be mirrored to net_iov. +/* XXX: The page pool fields in struct page have been removed but they + * might still use the space in struct page. Thus, the size of struct + * netmem_desc should be under control until struct netmem_desc has its + * own instance from slab. */ -#define NET_IOV_ASSERT_OFFSET(pg, iov) \ - static_assert(offsetof(struct page, pg) == \ - offsetof(struct net_iov, iov)) -NET_IOV_ASSERT_OFFSET(pp_magic, pp_magic); -NET_IOV_ASSERT_OFFSET(pp, pp); -NET_IOV_ASSERT_OFFSET(dma_addr, dma_addr); -NET_IOV_ASSERT_OFFSET(pp_ref_count, pp_ref_count); -#undef NET_IOV_ASSERT_OFFSET +static_assert(sizeof(struct netmem_desc) <= offsetof(struct page, _refcount)); static inline struct net_iov_area *net_iov_owner(const struct net_iov *niov) { -- 2.17.1