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 B9E1CC46467 for ; Wed, 11 Jan 2023 08:25:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 531108E0002; Wed, 11 Jan 2023 03:25:55 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4E1788E0001; Wed, 11 Jan 2023 03:25:55 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3D02A8E0002; Wed, 11 Jan 2023 03:25:55 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 2D1E58E0001 for ; Wed, 11 Jan 2023 03:25:55 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E29C6C060F for ; Wed, 11 Jan 2023 08:25:54 +0000 (UTC) X-FDA: 80341835028.05.A95C2CA Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by imf16.hostedemail.com (Postfix) with ESMTP id 81C48180002 for ; Wed, 11 Jan 2023 08:25:51 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf16.hostedemail.com: domain of linyunsheng@huawei.com designates 45.249.212.188 as permitted sender) smtp.mailfrom=linyunsheng@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1673425552; 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; bh=DauMJM5SlO+YfPg+6qEasrYLLBSSzmGy/jZ0eelNCSw=; b=Sgj/nzwnC430dOzrwlmZ/sgyZoNyHwsx1yi4SX0FMgYJc8YWBgtT//njxzg3sLjYO/CIGC GV8g28KRY6pqtGI5CwCyWegOQkdVcTjASa2bEi3IUjnievzHLUw+kl/3bhrz7rk7llf6DV pQ7rGNnYCYbvkKCuLmXhhNkorQ21cH8= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf16.hostedemail.com: domain of linyunsheng@huawei.com designates 45.249.212.188 as permitted sender) smtp.mailfrom=linyunsheng@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673425552; a=rsa-sha256; cv=none; b=j6CkQAR7XeZgA+3ndYwhxXC+F14scfkPIjHEDI7PoZhe8Oryc9TOT7DdOFylr8yDFl9CGs mZOcbeAbC+DifJVIz//LcR6b/624lqIPrypKVLLzP6Hx4pnIZ7tsxdWM8csLc/HucIV9Y0 CFeU0t1VYFpEcgdU/n+Uv3rPyrB4S6k= Received: from dggpemm500005.china.huawei.com (unknown [172.30.72.53]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4NsLM05dJZzJrBb; Wed, 11 Jan 2023 16:24:28 +0800 (CST) Received: from [10.69.30.204] (10.69.30.204) by dggpemm500005.china.huawei.com (7.185.36.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Wed, 11 Jan 2023 16:25:46 +0800 Subject: Re: [PATCH v3 00/26] Split netmem from struct page To: "Matthew Wilcox (Oracle)" , Jesper Dangaard Brouer , Ilias Apalodimas CC: , , Shakeel Butt References: <20230111042214.907030-1-willy@infradead.org> From: Yunsheng Lin Message-ID: Date: Wed, 11 Jan 2023 16:25:46 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <20230111042214.907030-1-willy@infradead.org> Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.69.30.204] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggpemm500005.china.huawei.com (7.185.36.74) X-CFilter-Loop: Reflected X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 81C48180002 X-Rspam-User: X-Stat-Signature: qqp4qkwd8gk3cjaz1gmdopgdmspsfnce X-HE-Tag: 1673425551-307 X-HE-Meta: U2FsdGVkX19gUguF9Y4GnyWhh+suAFFyt10QtZ7VmEtUgpV6dYgyuAvsXHuk0xZefLYY6oSd5ZxV3AwVAFbiJ8SnRZLqt5X8eebKCClaFn6gWHwWX2syCNKunCIghX97lZLzISm5XvZfhGFk51AgH73q9ORn/SCLHpLVkLzQaCHmMD+MLqXinyGxSTwo3OUzwD6qs5b/xzZTSTiAHjeYWqVkTvf30wssq7C42M0cXTw3sh7wH7ddm7esT4IP3JuI0yIHnqq6vYPpICE7UVY66hUbwn2b15h0bnR4CLukxrmbYV7C4fT3bBjuyPx6nNcYjIUHn1WbrhWCB+BeoXjkSCeyb3l4hHBF6bah40I977gsxDnT1+ICZra6jhtL7bFhhF9AWM+/oFMjQ/MN+iE6CVJTvDe3VWOOVrgePK6LtX9lRExSdZ4tqexIPEXdWFOd5JSYeZYJBzgrQ65DbPmXPim2Hw5aKXJoZie8I6uwM5NzNJH2qBjP7P7rCuOTNG7PhwSXPUKVElDf/j3MIV3GcjXojfpsBqscF84m1GM/xxS0NZqT3CiWh/LrhbDzni95rPqbTIw3UzXp23AMv02Cnxs20KpOgoMzluYKVd5emB8cFIGshD6mvhXd3fo2fGMuGzDgYkIHPD7269re7CvFZPpw2G1lBTtpqmQVnVem9AdFAlJtRF8bplgziqRaCMwcueoiYD0Ao0xDxHc/AOBV8VzGFntW3DopkJIrp6Xdn3O0wdEc4kjgJZ3Et6BuJL8uG2jQ3DYqwLiF48qa/YVcpn9wCrQmr+rUxKh5c+XJMoau+JiUZ/OB/L4/BJmcrmHvVbmVMmr5qI4= 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: On 2023/1/11 12:21, Matthew Wilcox (Oracle) wrote: > The MM subsystem is trying to reduce struct page to a single pointer. > The first step towards that is splitting struct page by its individual > users, as has already been done with folio and slab. This patchset does > that for netmem which is used for page pools. As page pool is only used for rx side in the net stack depending on the driver, a lot more memory for the net stack is from page_frag_alloc_align(), kmem cache, etc. naming it netmem seems a little overkill, perhaps a more specific name for the page pool? such as pp_cache. @Jesper & Ilias Any better idea? And it seem some API may need changing too, as we are not pooling 'pages' now. > > There are some relatively significant reductions in kernel text size > from these changes. They don't appear to affect performance at all, > but it's nice to save a bit of memory. > > v3: > - Rebase to next-20230110 > - Add received Acked-by and Reviewed-by tags (thanks!) > - Mark compat functions in page_pool.h (Ilias) > - Correct a patch title > - Convert hns3 driver (and page_pool_dev_alloc_frag()) > - Make page_pool_recycle_direct() accept a netmem or page pointer > > Matthew Wilcox (Oracle) (26): > netmem: Create new type > netmem: Add utility functions > page_pool: Add netmem_set_dma_addr() and netmem_get_dma_addr() > page_pool: Convert page_pool_release_page() to > page_pool_release_netmem() > page_pool: Start using netmem in allocation path. ^ nit: there is a '.' at the end of patch titile. > page_pool: Convert page_pool_return_page() to > page_pool_return_netmem() > page_pool: Convert __page_pool_put_page() to __page_pool_put_netmem() > page_pool: Convert pp_alloc_cache to contain netmem > page_pool: Convert page_pool_defrag_page() to > page_pool_defrag_netmem() > page_pool: Convert page_pool_put_defragged_page() to netmem > page_pool: Convert page_pool_empty_ring() to use netmem > page_pool: Convert page_pool_alloc_pages() to page_pool_alloc_netmem() > page_pool: Convert page_pool_dma_sync_for_device() to take a netmem > page_pool: Convert page_pool_recycle_in_cache() to netmem > page_pool: Remove __page_pool_put_page() > page_pool: Use netmem in page_pool_drain_frag() > page_pool: Convert page_pool_return_skb_page() to use netmem > page_pool: Allow page_pool_recycle_direct() to take a netmem or a page > page_pool: Convert frag_page to frag_nmem > xdp: Convert to netmem > mm: Remove page pool members from struct page > page_pool: Pass a netmem to init_callback() > net: Add support for netmem in skb_frag > mvneta: Convert to netmem > mlx5: Convert to netmem > hns3: Convert to netmem > > Documentation/networking/page_pool.rst | 5 + > .../net/ethernet/hisilicon/hns3/hns3_enet.c | 16 +- > drivers/net/ethernet/marvell/mvneta.c | 48 +-- > drivers/net/ethernet/mellanox/mlx5/core/en.h | 10 +- > .../net/ethernet/mellanox/mlx5/core/en/txrx.h | 4 +- > .../net/ethernet/mellanox/mlx5/core/en/xdp.c | 24 +- > .../net/ethernet/mellanox/mlx5/core/en/xdp.h | 2 +- > .../net/ethernet/mellanox/mlx5/core/en_main.c | 12 +- > .../net/ethernet/mellanox/mlx5/core/en_rx.c | 130 +++++---- > include/linux/mm_types.h | 22 -- > include/linux/skbuff.h | 11 + > include/net/page_pool.h | 228 ++++++++++++--- > include/trace/events/page_pool.h | 28 +- > net/bpf/test_run.c | 4 +- > net/core/page_pool.c | 274 +++++++++--------- > net/core/xdp.c | 7 +- > 16 files changed, 493 insertions(+), 332 deletions(-) >