On Fri, Jul 25, 2025 at 10:44 AM Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx> wrote: > > Hm it seems you missed some places: Hehe I did notice that after running the git rebase --exec script David showed me. Already fixed, it will be in the V10! > > mm/khugepaged.c: In function ‘collapse_scan_mm_slot’: > mm/khugepaged.c:2466:43: error: implicit declaration of function ‘hpage_collapse_scan_file’; did you mean ‘collapse_scan_file’? [-Wimplicit-function-declaration] > 2466 | *result = hpage_collapse_scan_file(mm, > | ^~~~~~~~~~~~~~~~~~~~~~~~ > | collapse_scan_file > mm/khugepaged.c:2471:45: error: implicit declaration of function ‘hpage_collapse_test_exit_or_disable’; did you mean ‘collapse_test_exit_or_disable’? [-Wimplicit-function-declaration] > 2471 | if (hpage_collapse_test_exit_or_disable(mm)) > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | collapse_test_exit_or_disable > mm/khugepaged.c:2480:43: error: implicit declaration of function ‘hpage_collapse_scan_pmd’; did you mean ‘collapse_scan_pmd’? [-Wimplicit-function-declaration] > 2480 | *result = hpage_collapse_scan_pmd(mm, vma, > | ^~~~~~~~~~~~~~~~~~~~~~~ > | collapse_scan_pmd > mm/khugepaged.c: At top level: > mm/khugepaged.c:2278:12: error: ‘collapse_scan_file’ defined but not used [-Werror=unused-function] > 2278 | static int collapse_scan_file(struct mm_struct *mm, unsigned long addr, > | ^~~~~~~~~~~~~~~~~~ > mm/khugepaged.c:1271:12: error: ‘collapse_scan_pmd’ defined but not used [-Werror=unused-function] > 1271 | static int collapse_scan_pmd(struct mm_struct *mm, > | ^~~~~~~~~~~~~~~~~ > > Other than this it LGTM, so once you fix this stuff up you can get a tag :) Awesome Thanks! > > On Sun, Jul 13, 2025 at 06:31:54PM -0600, Nico Pache wrote: > > The hpage_collapse functions describe functions used by madvise_collapse > > and khugepaged. remove the unnecessary hpage prefix to shorten the > > function name. > > > > Reviewed-by: Zi Yan <ziy@xxxxxxxxxx> > > Reviewed-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx> > > Signed-off-by: Nico Pache <npache@xxxxxxxxxx> > > --- > > mm/khugepaged.c | 46 +++++++++++++++++++++++----------------------- > > 1 file changed, 23 insertions(+), 23 deletions(-) > > > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > > index a55fb1dcd224..eb0babb51868 100644 > > --- a/mm/khugepaged.c > > +++ b/mm/khugepaged.c > > @@ -402,14 +402,14 @@ void __init khugepaged_destroy(void) > > kmem_cache_destroy(mm_slot_cache); > > } > > > > -static inline int hpage_collapse_test_exit(struct mm_struct *mm) > > +static inline int collapse_test_exit(struct mm_struct *mm) > > { > > return atomic_read(&mm->mm_users) == 0; > > } > > > > -static inline int hpage_collapse_test_exit_or_disable(struct mm_struct *mm) > > +static inline int collapse_test_exit_or_disable(struct mm_struct *mm) > > { > > - return hpage_collapse_test_exit(mm) || > > + return collapse_test_exit(mm) || > > test_bit(MMF_DISABLE_THP, &mm->flags); > > } > > > > @@ -444,7 +444,7 @@ void __khugepaged_enter(struct mm_struct *mm) > > int wakeup; > > > > /* __khugepaged_exit() must not run from under us */ > > - VM_BUG_ON_MM(hpage_collapse_test_exit(mm), mm); > > + VM_BUG_ON_MM(collapse_test_exit(mm), mm); > > if (unlikely(test_and_set_bit(MMF_VM_HUGEPAGE, &mm->flags))) > > return; > > > > @@ -503,7 +503,7 @@ void __khugepaged_exit(struct mm_struct *mm) > > } else if (mm_slot) { > > /* > > * This is required to serialize against > > - * hpage_collapse_test_exit() (which is guaranteed to run > > + * collapse_test_exit() (which is guaranteed to run > > * under mmap sem read mode). Stop here (after we return all > > * pagetables will be destroyed) until khugepaged has finished > > * working on the pagetables under the mmap_lock. > > @@ -838,7 +838,7 @@ struct collapse_control khugepaged_collapse_control = { > > .is_khugepaged = true, > > }; > > > > -static bool hpage_collapse_scan_abort(int nid, struct collapse_control *cc) > > +static bool collapse_scan_abort(int nid, struct collapse_control *cc) > > { > > int i; > > > > @@ -873,7 +873,7 @@ static inline gfp_t alloc_hugepage_khugepaged_gfpmask(void) > > } > > > > #ifdef CONFIG_NUMA > > -static int hpage_collapse_find_target_node(struct collapse_control *cc) > > +static int collapse_find_target_node(struct collapse_control *cc) > > { > > int nid, target_node = 0, max_value = 0; > > > > @@ -892,7 +892,7 @@ static int hpage_collapse_find_target_node(struct collapse_control *cc) > > return target_node; > > } > > #else > > -static int hpage_collapse_find_target_node(struct collapse_control *cc) > > +static int collapse_find_target_node(struct collapse_control *cc) > > { > > return 0; > > } > > @@ -912,7 +912,7 @@ static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address, > > struct vm_area_struct *vma; > > unsigned long tva_flags = cc->is_khugepaged ? TVA_ENFORCE_SYSFS : 0; > > > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) > > + if (unlikely(collapse_test_exit_or_disable(mm))) > > return SCAN_ANY_PROCESS; > > > > *vmap = vma = find_vma(mm, address); > > @@ -985,7 +985,7 @@ static int check_pmd_still_valid(struct mm_struct *mm, > > > > /* > > * Bring missing pages in from swap, to complete THP collapse. > > - * Only done if hpage_collapse_scan_pmd believes it is worthwhile. > > + * Only done if khugepaged_scan_pmd believes it is worthwhile. > > * > > * Called and returns without pte mapped or spinlocks held. > > * Returns result: if not SCAN_SUCCEED, mmap_lock has been released. > > @@ -1071,7 +1071,7 @@ static int alloc_charge_folio(struct folio **foliop, struct mm_struct *mm, > > { > > gfp_t gfp = (cc->is_khugepaged ? alloc_hugepage_khugepaged_gfpmask() : > > GFP_TRANSHUGE); > > - int node = hpage_collapse_find_target_node(cc); > > + int node = collapse_find_target_node(cc); > > struct folio *folio; > > > > folio = __folio_alloc(gfp, HPAGE_PMD_ORDER, node, &cc->alloc_nmask); > > @@ -1257,7 +1257,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address, > > return result; > > } > > > > -static int hpage_collapse_scan_pmd(struct mm_struct *mm, > > +static int collapse_scan_pmd(struct mm_struct *mm, > > struct vm_area_struct *vma, > > unsigned long address, bool *mmap_locked, > > struct collapse_control *cc) > > @@ -1371,7 +1371,7 @@ static int hpage_collapse_scan_pmd(struct mm_struct *mm, > > * hit record. > > */ > > node = folio_nid(folio); > > - if (hpage_collapse_scan_abort(node, cc)) { > > + if (collapse_scan_abort(node, cc)) { > > result = SCAN_SCAN_ABORT; > > goto out_unmap; > > } > > @@ -1440,7 +1440,7 @@ static void collect_mm_slot(struct khugepaged_mm_slot *mm_slot) > > > > lockdep_assert_held(&khugepaged_mm_lock); > > > > - if (hpage_collapse_test_exit(mm)) { > > + if (collapse_test_exit(mm)) { > > /* free mm_slot */ > > hash_del(&slot->hash); > > list_del(&slot->mm_node); > > @@ -1733,7 +1733,7 @@ static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff) > > if (find_pmd_or_thp_or_none(mm, addr, &pmd) != SCAN_SUCCEED) > > continue; > > > > - if (hpage_collapse_test_exit(mm)) > > + if (collapse_test_exit(mm)) > > continue; > > /* > > * When a vma is registered with uffd-wp, we cannot recycle > > @@ -2255,7 +2255,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr, > > return result; > > } > > > > -static int hpage_collapse_scan_file(struct mm_struct *mm, unsigned long addr, > > +static int collapse_scan_file(struct mm_struct *mm, unsigned long addr, > > struct file *file, pgoff_t start, > > struct collapse_control *cc) > > { > > @@ -2312,7 +2312,7 @@ static int hpage_collapse_scan_file(struct mm_struct *mm, unsigned long addr, > > } > > > > node = folio_nid(folio); > > - if (hpage_collapse_scan_abort(node, cc)) { > > + if (collapse_scan_abort(node, cc)) { > > result = SCAN_SCAN_ABORT; > > folio_put(folio); > > break; > > @@ -2362,7 +2362,7 @@ static int hpage_collapse_scan_file(struct mm_struct *mm, unsigned long addr, > > return result; > > } > > > > -static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, > > +static unsigned int collapse_scan_mm_slot(unsigned int pages, int *result, > > struct collapse_control *cc) > > __releases(&khugepaged_mm_lock) > > __acquires(&khugepaged_mm_lock) > > @@ -2400,7 +2400,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, > > goto breakouterloop_mmap_lock; > > > > progress++; > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) > > + if (unlikely(collapse_test_exit_or_disable(mm))) > > goto breakouterloop; > > > > vma_iter_init(&vmi, mm, khugepaged_scan.address); > > @@ -2408,7 +2408,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, > > unsigned long hstart, hend; > > > > cond_resched(); > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) { > > + if (unlikely(collapse_test_exit_or_disable(mm))) { > > progress++; > > break; > > } > > @@ -2430,7 +2430,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, > > bool mmap_locked = true; > > > > cond_resched(); > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) > > + if (unlikely(collapse_test_exit_or_disable(mm))) > > goto breakouterloop; > > > > VM_BUG_ON(khugepaged_scan.address < hstart || > > @@ -2490,7 +2490,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result, > > * Release the current mm_slot if this mm is about to die, or > > * if we scanned all vmas of this mm. > > */ > > - if (hpage_collapse_test_exit(mm) || !vma) { > > + if (collapse_test_exit(mm) || !vma) { > > /* > > * Make sure that if mm_users is reaching zero while > > * khugepaged runs here, khugepaged_exit will find > > @@ -2544,7 +2544,7 @@ static void khugepaged_do_scan(struct collapse_control *cc) > > pass_through_head++; > > if (khugepaged_has_work() && > > pass_through_head < 2) > > - progress += khugepaged_scan_mm_slot(pages - progress, > > + progress += collapse_scan_mm_slot(pages - progress, > > &result, cc); > > else > > progress = pages; > > -- > > 2.50.0 > > >