On Mon, Jun 13, 2022 at 02:35:08PM +0800”, Muchun Song wrote: > We hold an another reference to hugetlb_optimize_vmemmap_key when > making vmemmap_optimize_mode on, because we use static_key to tell > memory_hotplug that memory_hotplug.memmap_on_memory should be > overridden. However, this rule has gone when we have introduced > SECTION_CANNOT_OPTIMIZE_VMEMMAP. Therefore, we could simplify > vmemmap_optimize_mode handling by not holding an another reference > to hugetlb_optimize_vmemmap_key. > > Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> > --- > include/linux/page-flags.h | 6 ++--- > mm/hugetlb_vmemmap.c | 65 +++++----------------------------------------- > 2 files changed, 9 insertions(+), 62 deletions(-) > > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > index b8b992cb201c..da7ccc3b16ad 100644 > --- a/include/linux/page-flags.h > +++ b/include/linux/page-flags.h > @@ -200,8 +200,7 @@ enum pageflags { > #ifndef __GENERATING_BOUNDS_H > > #ifdef CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP > -DECLARE_STATIC_KEY_MAYBE(CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON, > - hugetlb_optimize_vmemmap_key); > +DECLARE_STATIC_KEY_FALSE(hugetlb_optimize_vmemmap_key); > > /* > * If the feature of optimizing vmemmap pages associated with each HugeTLB > @@ -221,8 +220,7 @@ DECLARE_STATIC_KEY_MAYBE(CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON, > */ > static __always_inline const struct page *page_fixed_fake_head(const struct page *page) > { > - if (!static_branch_maybe(CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON, > - &hugetlb_optimize_vmemmap_key)) > + if (!static_branch_unlikely(&hugetlb_optimize_vmemmap_key)) > return page; This also means that we not incur the extra page_fixed_fake_head checks if there are no vmemmap optinmized hugetlb pages. Nice! Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> -- Mike Kravetz