From: David Hildenbrand <david@redhat.com>
To: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>
Cc: Jens Axboe <axboe@kernel.dk>,
io-uring@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 2/9] mm: Call the hugetlb destructor directly
Date: Tue, 15 Aug 2023 09:36:47 +0200 [thread overview]
Message-ID: <2fef37cc-1fd7-e8b1-28c4-becd131f82b7@redhat.com> (raw)
In-Reply-To: <20230815032645.1393700-3-willy@infradead.org>
On 15.08.23 05:26, Matthew Wilcox (Oracle) wrote:
> Indirect calls are expensive, thanks to Spectre. Convert this one to
> a direct call, and pass a folio instead of the head page to save a few
> more instructions.
>
> Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
> ---
> include/linux/hugetlb.h | 3 ++-
> include/linux/mm.h | 6 +-----
> mm/hugetlb.c | 26 ++++++++++++--------------
> mm/page_alloc.c | 8 +++++---
> 4 files changed, 20 insertions(+), 23 deletions(-)
>
> diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
> index 0a393bc02f25..9555859537a3 100644
> --- a/include/linux/hugetlb.h
> +++ b/include/linux/hugetlb.h
> @@ -26,6 +26,8 @@ typedef struct { unsigned long pd; } hugepd_t;
> #define __hugepd(x) ((hugepd_t) { (x) })
> #endif
>
> +void free_huge_page(struct folio *folio);
> +
> #ifdef CONFIG_HUGETLB_PAGE
>
> #include <linux/mempolicy.h>
> @@ -165,7 +167,6 @@ int get_huge_page_for_hwpoison(unsigned long pfn, int flags,
> bool *migratable_cleared);
> void folio_putback_active_hugetlb(struct folio *folio);
> void move_hugetlb_state(struct folio *old_folio, struct folio *new_folio, int reason);
> -void free_huge_page(struct page *page);
> void hugetlb_fix_reserve_counts(struct inode *inode);
> extern struct mutex *hugetlb_fault_mutex_table;
> u32 hugetlb_fault_mutex_hash(struct address_space *mapping, pgoff_t idx);
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 19493d6a2bb8..7fb529dbff31 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -1278,13 +1278,9 @@ typedef void compound_page_dtor(struct page *);
> enum compound_dtor_id {
> NULL_COMPOUND_DTOR,
> COMPOUND_PAGE_DTOR,
> -#ifdef CONFIG_HUGETLB_PAGE
> HUGETLB_PAGE_DTOR,
> -#endif
> -#ifdef CONFIG_TRANSPARENT_HUGEPAGE
> TRANSHUGE_PAGE_DTOR,
> -#endif
> - NR_COMPOUND_DTORS,
> + NR_COMPOUND_DTORS
> };
>
> static inline void folio_set_compound_dtor(struct folio *folio,
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index e327a5a7602c..bc340f5dbbd4 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -1875,13 +1875,12 @@ struct hstate *size_to_hstate(unsigned long size)
> return NULL;
> }
>
> -void free_huge_page(struct page *page)
> +void free_huge_page(struct folio *folio)
free_huge_page" but passing a folio, hm. Maybe something like
"free_hugetlb_folio" would be better.
Apart from that LGTM.
--
Cheers,
David / dhildenb
next prev parent reply other threads:[~2023-08-15 7:38 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-15 3:26 [PATCH 0/9] Remove _folio_dtor and _folio_order Matthew Wilcox (Oracle)
2023-08-15 3:26 ` [PATCH 1/9] io_uring: Stop calling free_compound_page() Matthew Wilcox (Oracle)
2023-08-15 7:33 ` David Hildenbrand
2023-08-15 15:00 ` Jens Axboe
2023-08-15 15:36 ` Matthew Wilcox
2023-08-15 3:26 ` [PATCH 2/9] mm: Call the hugetlb destructor directly Matthew Wilcox (Oracle)
2023-08-15 7:36 ` David Hildenbrand [this message]
2023-08-15 3:26 ` [PATCH 3/9] mm: Call free_transhuge_folio() directly from destroy_large_folio() Matthew Wilcox (Oracle)
2023-08-15 6:13 ` kernel test robot
2023-08-15 7:40 ` David Hildenbrand
2023-08-15 14:06 ` Matthew Wilcox
2023-08-15 8:09 ` kernel test robot
2023-08-15 3:26 ` [PATCH 4/9] mm: Make free_compound_page() static Matthew Wilcox (Oracle)
2023-08-15 7:47 ` David Hildenbrand
2023-08-15 7:48 ` David Hildenbrand
2023-08-15 3:26 ` [PATCH 5/9] mm: Remove free_compound_page() Matthew Wilcox (Oracle)
2023-08-15 7:48 ` David Hildenbrand
2023-08-15 3:26 ` [PATCH 6/9] mm: Remove HUGETLB_PAGE_DTOR Matthew Wilcox (Oracle)
2023-08-15 7:50 ` David Hildenbrand
2023-08-15 3:26 ` [PATCH 7/9] mm: Add deferred_list page flag Matthew Wilcox (Oracle)
2023-08-15 7:54 ` David Hildenbrand
2023-08-15 15:32 ` Matthew Wilcox
2023-08-15 16:40 ` David Hildenbrand
2023-08-15 17:06 ` Matthew Wilcox
2023-08-15 17:27 ` David Hildenbrand
2023-08-15 19:58 ` Matthew Wilcox
2023-08-16 3:14 ` Matthew Wilcox
2023-08-16 10:12 ` David Hildenbrand
2023-08-16 12:05 ` Matthew Wilcox
2023-08-16 12:34 ` David Hildenbrand
2023-08-16 9:55 ` David Hildenbrand
2023-08-15 3:26 ` [PATCH 8/9] mm: Rearrange page flags Matthew Wilcox (Oracle)
2023-08-15 4:30 ` Yosry Ahmed
2023-08-15 19:24 ` Peter Xu
2023-08-15 20:07 ` Matthew Wilcox
2023-08-15 22:31 ` Yosry Ahmed
2023-08-15 23:01 ` Matthew Wilcox
2023-08-15 23:33 ` Yosry Ahmed
2023-08-15 3:26 ` [PATCH 9/9] mm: Free up a word in the first tail page Matthew Wilcox (Oracle)
2023-08-15 7:59 ` David Hildenbrand
2023-08-15 11:39 ` Matthew Wilcox
2023-08-15 19:21 ` Peter Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2fef37cc-1fd7-e8b1-28c4-becd131f82b7@redhat.com \
--to=david@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=io-uring@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.