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 A9497C46467 for ; Tue, 10 Jan 2023 09:30:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4095B8E0002; Tue, 10 Jan 2023 04:30:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 392918E0001; Tue, 10 Jan 2023 04:30:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 259ED8E0002; Tue, 10 Jan 2023 04:30:58 -0500 (EST) 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 133178E0001 for ; Tue, 10 Jan 2023 04:30:58 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id DFD0E1A0C45 for ; Tue, 10 Jan 2023 09:30:57 +0000 (UTC) X-FDA: 80338370154.24.8528CDA Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by imf14.hostedemail.com (Postfix) with ESMTP id 266C7100011 for ; Tue, 10 Jan 2023 09:30:55 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=ShMoAUMI; spf=pass (imf14.hostedemail.com: domain of ilias.apalodimas@linaro.org designates 209.85.208.53 as permitted sender) smtp.mailfrom=ilias.apalodimas@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1673343056; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=P67uA0SiUeIDfY8ouXvVt6RQcCYkSD1w2ur8E1dhIuI=; b=YhGwf1rF49lx+NmcMemQPGQQpnZtRdG5i2NXHv+bw1Ep/Jybtl5aS4fPXppZ7FdlrfS8op /xUNPuulWDujDcSWXikAfh3eTKtiHlKRS+dDxmRseDq6kfX6ql32/MlQ1naCEuumq6Zqik 2Jw0s4gkmbGphyxbNs13xgw3zm1uS/E= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=ShMoAUMI; spf=pass (imf14.hostedemail.com: domain of ilias.apalodimas@linaro.org designates 209.85.208.53 as permitted sender) smtp.mailfrom=ilias.apalodimas@linaro.org; dmarc=pass (policy=none) header.from=linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673343056; a=rsa-sha256; cv=none; b=KVFR++6DNjjGqa8eDBdhFOyhSAFOUOM7JksL5/1IskYKqUW7/RXljX+j5+vtN3q/CRYjx5 1lq7ZVE5T4fbyfdDwPuEkbt2gTGnbz9BmoTox9RQFtrpy7cVdPSMBxfvr2lgXp39POsuuf xEIowyhbCMwnLuYns0ILd03TEI6Igdg= Received: by mail-ed1-f53.google.com with SMTP id j16so16589841edw.11 for ; Tue, 10 Jan 2023 01:30:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=P67uA0SiUeIDfY8ouXvVt6RQcCYkSD1w2ur8E1dhIuI=; b=ShMoAUMIjxZWA2dCxjKq/TtvTz3qRp1tJhRkmNkbk9zV5LDEtGe+NS200n3cyYT1l1 qbNsrZeuLE1E26KlH/Es6tO0vVxbaRNH1qPbl6P7AOlJG0hodFClq+72lnsHbsBPM6fO l2hm1iGjGVfayO2nGfMVwm+Moz0KqNX1X5bQ0qzHoAj/Ex4nu+cE+q0tRP2q5ir3yP/B tyvPzmzbaakJXaVqUfRbI6pJHGVce7rSq489jk1uTmKvGkry4z+a4b6VN+cL+2Mse1Rs mG96YzRec8FiJ0atOW/cDnNkW0thDl6dAdViNPYq85Sh8lJ/efpst5xLXhauSfAWVEcn tAzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=P67uA0SiUeIDfY8ouXvVt6RQcCYkSD1w2ur8E1dhIuI=; b=naPHWkblD6fOp6bdQyzpbQxIXsgtVmG7AjfWvRuv7Ngq2enEQp+AKTZeRw285V0Gch loDg+bPASr8P0BidzX/ZVZIqHHsA/mgSg7HSF05bqrsuq1RM2gvjuXrxMR8mvfoRpsYf W0R48S4fDk3ZoAJqTXZltWLBtrTUyLfQP8Tbkb/SV0UcemOcHFFrTczW6mGLqW9XKCTy V67kDSvr5FRFNyySKAEQkHGY1cYWkVypHzHO1141eAhLs1t3iif0SDtkQ1yONAxNLmKe fQScfJZBrCaGfgkYiRjhyhJYThGwDFyJgAN9974giA2xh2izjmJ3YdRh4Yvwsia3mw+p wrfQ== X-Gm-Message-State: AFqh2krGlCu5rpBSPRgu6xhXhWtyQcXN/j9sK4C4DWDxgzGjQY6rkURQ j4wPfOHj+z0yLIuN2W/DfxA7+LD3VqfdyXFv X-Google-Smtp-Source: AMrXdXu0z2x1OaJZb0djVkNkjbf5cpC4H0wL0cJQ0dXFkCUbufkp3ZmklW7I95BK5+atK98aouZKWA== X-Received: by 2002:a05:6402:381b:b0:497:233d:3ef4 with SMTP id es27-20020a056402381b00b00497233d3ef4mr15664047edb.22.1673343054832; Tue, 10 Jan 2023 01:30:54 -0800 (PST) Received: from hera (ppp079167090036.access.hol.gr. [79.167.90.36]) by smtp.gmail.com with ESMTPSA id t8-20020a05640203c800b0047b252468a4sm4682889edw.78.2023.01.10.01.30.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Jan 2023 01:30:54 -0800 (PST) Date: Tue, 10 Jan 2023 11:30:52 +0200 From: Ilias Apalodimas To: "Matthew Wilcox (Oracle)" Cc: Jesper Dangaard Brouer , netdev@vger.kernel.org, linux-mm@kvack.org, Shakeel Butt Subject: Re: [PATCH v2 05/24] page_pool: Start using netmem in allocation path. Message-ID: References: <20230105214631.3939268-1-willy@infradead.org> <20230105214631.3939268-6-willy@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230105214631.3939268-6-willy@infradead.org> X-Rspamd-Queue-Id: 266C7100011 X-Stat-Signature: hi5hy6za6fn967hdsh7qazhtpk4eh35i X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1673343055-944794 X-HE-Meta: U2FsdGVkX18Xx1QeuPToo9RVYJsVuilwwGod7o1lSdaLOc6RNkeTGy1l7WYOoJzFgRawxjeyZiFtYgHzYmb/5MNPVvuS5A3NXM5RfrpOpas28U4jTnapEQDbJOtsOlmYTtIyLn8g7W2PzT5OLIN0o4hP/uVJKNaFdNAC9MiPKRA6FUKxzwm6CLdtki+ZRb9ddvPBJbxRbV1pWV08zwe99GuZBthqCTcLjfWb7w78sGLzti95VIj+dfllu+XWkOlb1zVBEsv6JTXGV/Qndk3Zu5nHnxC2OSAxbZnbra+d4juIvMRjdKoIFFnH/5cb7MvbK2DOxn++9Q9ByA0Jno1EjC/uwETlwFCBWybFJnLM/p0l++a4aNe/ig7I/PLJVe6vxAQoWshBJJkLOwKIuXpAAkbUibF8/oJX4vDjLVSRX2+lFngLkV4zGye9ntCvF24GkcC9L1/2la2HGcgFAkLx2/2TiEg1iEFQ+JZBSRrfeTxDMDEXb9WhIN+STgJplEvwT7quBFq6npQ1D7T1YLJYrx5GYYqOOzd9AEg/o3n5mTIOzeGom6zA529M8qo6Cr2ASuHMtMG23dnym6id1D6nUf30ZWwUSmuGZnwl4AScfGZltwNEhNiKhImUQFdOiZ1BaXQDCyz4YtGjbH3rYIvVsFQ5RoBjASjdSr2+WfIgz3/NlnucwQK3LvYFmjEWzN962L063L1ujWwd0QRMLaDZGYM3nGcowTdTdpyFMocs5NmCAGNFuJY5f+4SeMlfolVte239MEkJTX5O2MCr5HY2Yp87IqaoZuSxC6iNd8dZ1IGEBj1CwikLdPbemS8szGRlcESGLC9JHdSGPnaHKL/IAFwSbyTn+dDqEmJGrIhA2g+8ghoYmPDzDgMQra2FSDnI53vf2pBN0CoPbNcYt035OSm8jhDJOwadmulCt8DTqU89q9/RqHARAJilov31T4zAJ7eDe2wrKWp8v52Sxsd zwOWqcc8 NhHhx3INCV5IA095K+jFLkS7DXsz+lUS3mfziTOa4ZW5X3rDSzIMstwxzmdb3txUBvmSD4Qweqfd1E6LJk2ftwQp0pVWz25IKZHShFIwlPtue1cuqbRsKcpomcLtb+GlCq7U2 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 Thu, Jan 05, 2023 at 09:46:12PM +0000, Matthew Wilcox (Oracle) wrote: > Convert __page_pool_alloc_page_order() and __page_pool_alloc_pages_slow() > to use netmem internally. This removes a couple of calls > to compound_head() that are hidden inside put_page(). > Convert trace_page_pool_state_hold(), page_pool_dma_map() and > page_pool_set_pp_info() to take a netmem argument. > > Saves 83 bytes of text in __page_pool_alloc_page_order() and 98 in > __page_pool_alloc_pages_slow() for a total of 181 bytes. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > include/trace/events/page_pool.h | 14 +++++------ > net/core/page_pool.c | 42 +++++++++++++++++--------------- > 2 files changed, 29 insertions(+), 27 deletions(-) > > diff --git a/include/trace/events/page_pool.h b/include/trace/events/page_pool.h > index 113aad0c9e5b..d1237a7ce481 100644 > --- a/include/trace/events/page_pool.h > +++ b/include/trace/events/page_pool.h > @@ -67,26 +67,26 @@ TRACE_EVENT(page_pool_state_release, > TRACE_EVENT(page_pool_state_hold, > > TP_PROTO(const struct page_pool *pool, > - const struct page *page, u32 hold), > + const struct netmem *nmem, u32 hold), > > - TP_ARGS(pool, page, hold), > + TP_ARGS(pool, nmem, hold), > > TP_STRUCT__entry( > __field(const struct page_pool *, pool) > - __field(const struct page *, page) > + __field(const struct netmem *, nmem) > __field(u32, hold) > __field(unsigned long, pfn) > ), > > TP_fast_assign( > __entry->pool = pool; > - __entry->page = page; > + __entry->nmem = nmem; > __entry->hold = hold; > - __entry->pfn = page_to_pfn(page); > + __entry->pfn = netmem_pfn(nmem); > ), > > - TP_printk("page_pool=%p page=%p pfn=0x%lx hold=%u", > - __entry->pool, __entry->page, __entry->pfn, __entry->hold) > + TP_printk("page_pool=%p netmem=%p pfn=0x%lx hold=%u", > + __entry->pool, __entry->nmem, __entry->pfn, __entry->hold) > ); > > TRACE_EVENT(page_pool_update_nid, > diff --git a/net/core/page_pool.c b/net/core/page_pool.c > index 437241aba5a7..4e985502c569 100644 > --- a/net/core/page_pool.c > +++ b/net/core/page_pool.c > @@ -304,8 +304,9 @@ static void page_pool_dma_sync_for_device(struct page_pool *pool, > pool->p.dma_dir); > } > > -static bool page_pool_dma_map(struct page_pool *pool, struct page *page) > +static bool page_pool_dma_map(struct page_pool *pool, struct netmem *nmem) > { > + struct page *page = netmem_page(nmem); > dma_addr_t dma; > > /* Setup DMA mapping: use 'struct page' area for storing DMA-addr > @@ -328,12 +329,12 @@ static bool page_pool_dma_map(struct page_pool *pool, struct page *page) > } > > static void page_pool_set_pp_info(struct page_pool *pool, > - struct page *page) > + struct netmem *nmem) > { > - page->pp = pool; > - page->pp_magic |= PP_SIGNATURE; > + nmem->pp = pool; > + nmem->pp_magic |= PP_SIGNATURE; > if (pool->p.init_callback) > - pool->p.init_callback(page, pool->p.init_arg); > + pool->p.init_callback(netmem_page(nmem), pool->p.init_arg); > } > > static void page_pool_clear_pp_info(struct netmem *nmem) > @@ -345,26 +346,26 @@ static void page_pool_clear_pp_info(struct netmem *nmem) > static struct page *__page_pool_alloc_page_order(struct page_pool *pool, > gfp_t gfp) > { > - struct page *page; > + struct netmem *nmem; > > gfp |= __GFP_COMP; > - page = alloc_pages_node(pool->p.nid, gfp, pool->p.order); > - if (unlikely(!page)) > + nmem = page_netmem(alloc_pages_node(pool->p.nid, gfp, pool->p.order)); > + if (unlikely(!nmem)) > return NULL; > > if ((pool->p.flags & PP_FLAG_DMA_MAP) && > - unlikely(!page_pool_dma_map(pool, page))) { > - put_page(page); > + unlikely(!page_pool_dma_map(pool, nmem))) { > + netmem_put(nmem); > return NULL; > } > > alloc_stat_inc(pool, slow_high_order); > - page_pool_set_pp_info(pool, page); > + page_pool_set_pp_info(pool, nmem); > > /* Track how many pages are held 'in-flight' */ > pool->pages_state_hold_cnt++; > - trace_page_pool_state_hold(pool, page, pool->pages_state_hold_cnt); > - return page; > + trace_page_pool_state_hold(pool, nmem, pool->pages_state_hold_cnt); > + return netmem_page(nmem); > } > > /* slow path */ > @@ -398,18 +399,18 @@ static struct page *__page_pool_alloc_pages_slow(struct page_pool *pool, > * page element have not been (possibly) DMA mapped. > */ > for (i = 0; i < nr_pages; i++) { > - page = pool->alloc.cache[i]; > + struct netmem *nmem = page_netmem(pool->alloc.cache[i]); > if ((pp_flags & PP_FLAG_DMA_MAP) && > - unlikely(!page_pool_dma_map(pool, page))) { > - put_page(page); > + unlikely(!page_pool_dma_map(pool, nmem))) { > + netmem_put(nmem); > continue; > } > > - page_pool_set_pp_info(pool, page); > - pool->alloc.cache[pool->alloc.count++] = page; > + page_pool_set_pp_info(pool, nmem); > + pool->alloc.cache[pool->alloc.count++] = netmem_page(nmem); > /* Track how many pages are held 'in-flight' */ > pool->pages_state_hold_cnt++; > - trace_page_pool_state_hold(pool, page, > + trace_page_pool_state_hold(pool, nmem, > pool->pages_state_hold_cnt); > } > > @@ -421,7 +422,8 @@ static struct page *__page_pool_alloc_pages_slow(struct page_pool *pool, > page = NULL; > } > > - /* When page just alloc'ed is should/must have refcnt 1. */ > + /* When page just allocated it should have refcnt 1 (but may have > + * speculative references) */ > return page; > } > > -- > 2.35.1 > Reviewed-by: Ilias Apalodimas