mm/khugepaged: rename hpage_collapse_* to collapse_*
The hpage_collapse functions describe functions used by madvise_collapse and khugepaged. remove the unnecessary hpage prefix to shorten the function name. Link: https://lkml.kernel.org/r/20260325114022.444081-5-npache@redhat.com Signed-off-by: Nico Pache <npache@redhat.com> Reviewed-by: Dev Jain <dev.jain@arm.com> Reviewed-by: Wei Yang <richard.weiyang@gmail.com> Reviewed-by: Lance Yang <lance.yang@linux.dev> Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com> Reviewed-by: Zi Yan <ziy@nvidia.com> Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Acked-by: David Hildenbrand (Arm) <david@kernel.org> Cc: Alistair Popple <apopple@nvidia.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Barry Song <baohua@kernel.org> Cc: Brendan Jackman <jackmanb@google.com> Cc: Byungchul Park <byungchul@sk.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: David Rientjes <rientjes@google.com> Cc: Gregory Price <gourry@gourry.net> Cc: "Huang, Ying" <ying.huang@linux.alibaba.com> Cc: Hugh Dickins <hughd@google.com> Cc: Jan Kara <jack@suse.cz> Cc: Jann Horn <jannh@google.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Joshua Hahn <joshua.hahnjy@gmail.com> Cc: Kefeng Wang <wangkefeng.wang@huawei.com> Cc: Lorenzo Stoakes (Oracle) <ljs@kernel.org> Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Matthew Brost <matthew.brost@intel.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Rapoport <rppt@kernel.org> Cc: Nanyong Sun <sunnanyong@huawei.com> Cc: Pedro Falcato <pfalcato@suse.de> Cc: Peter Xu <peterx@redhat.com> Cc: Rafael Aquini <raquini@redhat.com> Cc: Rakie Kim <rakie.kim@sk.com> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Shivank Garg <shivankg@amd.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Takashi Iwai (SUSE) <tiwai@suse.de> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com> Cc: Usama Arif <usamaarif642@gmail.com> Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Will Deacon <will@kernel.org> Cc: Yang Shi <yang@os.amperecomputing.com> Cc: Zach O'Keefe <zokeefe@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
36da8a88fd
commit
ff7e03a871
2 changed files with 30 additions and 32 deletions
|
|
@ -395,14 +395,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) ||
|
||||
mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm);
|
||||
}
|
||||
|
||||
|
|
@ -436,7 +436,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(mm_flags_test_and_set(MMF_VM_HUGEPAGE, mm)))
|
||||
return;
|
||||
|
||||
|
|
@ -490,7 +490,7 @@ void __khugepaged_exit(struct mm_struct *mm)
|
|||
} else if (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.
|
||||
|
|
@ -589,7 +589,7 @@ static enum scan_result __collapse_huge_page_isolate(struct vm_area_struct *vma,
|
|||
goto out;
|
||||
}
|
||||
|
||||
/* See hpage_collapse_scan_pmd(). */
|
||||
/* See collapse_scan_pmd(). */
|
||||
if (folio_maybe_mapped_shared(folio)) {
|
||||
++shared;
|
||||
if (cc->is_khugepaged &&
|
||||
|
|
@ -840,7 +840,7 @@ static 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;
|
||||
|
||||
|
|
@ -875,7 +875,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;
|
||||
|
||||
|
|
@ -894,7 +894,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;
|
||||
}
|
||||
|
|
@ -913,7 +913,7 @@ static enum scan_result hugepage_vma_revalidate(struct mm_struct *mm, unsigned l
|
|||
enum tva_type type = cc->is_khugepaged ? TVA_KHUGEPAGED :
|
||||
TVA_FORCED_COLLAPSE;
|
||||
|
||||
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);
|
||||
|
|
@ -984,7 +984,7 @@ static enum scan_result 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.
|
||||
|
|
@ -1070,7 +1070,7 @@ static enum scan_result alloc_charge_folio(struct folio **foliop, struct mm_stru
|
|||
{
|
||||
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);
|
||||
|
|
@ -1248,7 +1248,7 @@ out_nolock:
|
|||
return result;
|
||||
}
|
||||
|
||||
static enum scan_result hpage_collapse_scan_pmd(struct mm_struct *mm,
|
||||
static enum scan_result collapse_scan_pmd(struct mm_struct *mm,
|
||||
struct vm_area_struct *vma, unsigned long start_addr,
|
||||
bool *mmap_locked, struct collapse_control *cc)
|
||||
{
|
||||
|
|
@ -1373,7 +1373,7 @@ static enum scan_result 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;
|
||||
}
|
||||
|
|
@ -1439,7 +1439,7 @@ static void collect_mm_slot(struct mm_slot *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);
|
||||
|
|
@ -1794,7 +1794,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;
|
||||
|
||||
if (!file_backed_vma_is_retractable(vma))
|
||||
|
|
@ -2310,7 +2310,7 @@ out:
|
|||
return result;
|
||||
}
|
||||
|
||||
static enum scan_result hpage_collapse_scan_file(struct mm_struct *mm,
|
||||
static enum scan_result collapse_scan_file(struct mm_struct *mm,
|
||||
unsigned long addr, struct file *file, pgoff_t start,
|
||||
struct collapse_control *cc)
|
||||
{
|
||||
|
|
@ -2363,7 +2363,7 @@ static enum scan_result hpage_collapse_scan_file(struct mm_struct *mm,
|
|||
}
|
||||
|
||||
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;
|
||||
|
|
@ -2417,7 +2417,7 @@ static enum scan_result hpage_collapse_scan_file(struct mm_struct *mm,
|
|||
return result;
|
||||
}
|
||||
|
||||
static void khugepaged_scan_mm_slot(unsigned int progress_max,
|
||||
static void collapse_scan_mm_slot(unsigned int progress_max,
|
||||
enum scan_result *result, struct collapse_control *cc)
|
||||
__releases(&khugepaged_mm_lock)
|
||||
__acquires(&khugepaged_mm_lock)
|
||||
|
|
@ -2451,7 +2451,7 @@ static void khugepaged_scan_mm_slot(unsigned int progress_max,
|
|||
goto breakouterloop_mmap_lock;
|
||||
|
||||
cc->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);
|
||||
|
|
@ -2459,7 +2459,7 @@ static void khugepaged_scan_mm_slot(unsigned int progress_max,
|
|||
unsigned long hstart, hend;
|
||||
|
||||
cond_resched();
|
||||
if (unlikely(hpage_collapse_test_exit_or_disable(mm))) {
|
||||
if (unlikely(collapse_test_exit_or_disable(mm))) {
|
||||
cc->progress++;
|
||||
break;
|
||||
}
|
||||
|
|
@ -2481,7 +2481,7 @@ static void khugepaged_scan_mm_slot(unsigned int progress_max,
|
|||
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 ||
|
||||
|
|
@ -2494,12 +2494,12 @@ static void khugepaged_scan_mm_slot(unsigned int progress_max,
|
|||
|
||||
mmap_read_unlock(mm);
|
||||
mmap_locked = false;
|
||||
*result = hpage_collapse_scan_file(mm,
|
||||
*result = collapse_scan_file(mm,
|
||||
khugepaged_scan.address, file, pgoff, cc);
|
||||
fput(file);
|
||||
if (*result == SCAN_PTE_MAPPED_HUGEPAGE) {
|
||||
mmap_read_lock(mm);
|
||||
if (hpage_collapse_test_exit_or_disable(mm))
|
||||
if (collapse_test_exit_or_disable(mm))
|
||||
goto breakouterloop;
|
||||
*result = try_collapse_pte_mapped_thp(mm,
|
||||
khugepaged_scan.address, false);
|
||||
|
|
@ -2508,7 +2508,7 @@ static void khugepaged_scan_mm_slot(unsigned int progress_max,
|
|||
mmap_read_unlock(mm);
|
||||
}
|
||||
} else {
|
||||
*result = hpage_collapse_scan_pmd(mm, vma,
|
||||
*result = collapse_scan_pmd(mm, vma,
|
||||
khugepaged_scan.address, &mmap_locked, cc);
|
||||
}
|
||||
|
||||
|
|
@ -2540,7 +2540,7 @@ breakouterloop_mmap_lock:
|
|||
* Release the current mm_slot if this mm is about to die, or
|
||||
* if we scanned all vmas of this mm, or THP got disabled.
|
||||
*/
|
||||
if (hpage_collapse_test_exit_or_disable(mm) || !vma) {
|
||||
if (collapse_test_exit_or_disable(mm) || !vma) {
|
||||
/*
|
||||
* Make sure that if mm_users is reaching zero while
|
||||
* khugepaged runs here, khugepaged_exit will find
|
||||
|
|
@ -2593,7 +2593,7 @@ static void khugepaged_do_scan(struct collapse_control *cc)
|
|||
pass_through_head++;
|
||||
if (khugepaged_has_work() &&
|
||||
pass_through_head < 2)
|
||||
khugepaged_scan_mm_slot(progress_max, &result, cc);
|
||||
collapse_scan_mm_slot(progress_max, &result, cc);
|
||||
else
|
||||
cc->progress = progress_max;
|
||||
spin_unlock(&khugepaged_mm_lock);
|
||||
|
|
@ -2838,8 +2838,7 @@ retry:
|
|||
mmap_read_unlock(mm);
|
||||
mmap_locked = false;
|
||||
*lock_dropped = true;
|
||||
result = hpage_collapse_scan_file(mm, addr, file, pgoff,
|
||||
cc);
|
||||
result = collapse_scan_file(mm, addr, file, pgoff, cc);
|
||||
|
||||
if (result == SCAN_PAGE_DIRTY_OR_WRITEBACK && !triggered_wb &&
|
||||
mapping_can_writeback(file->f_mapping)) {
|
||||
|
|
@ -2853,8 +2852,7 @@ retry:
|
|||
}
|
||||
fput(file);
|
||||
} else {
|
||||
result = hpage_collapse_scan_pmd(mm, vma, addr,
|
||||
&mmap_locked, cc);
|
||||
result = collapse_scan_pmd(mm, vma, addr, &mmap_locked, cc);
|
||||
}
|
||||
if (!mmap_locked)
|
||||
*lock_dropped = true;
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ static int move_ptes(struct pagetable_move_control *pmc,
|
|||
goto out;
|
||||
}
|
||||
/*
|
||||
* Now new_pte is none, so hpage_collapse_scan_file() path can not find
|
||||
* Now new_pte is none, so collapse_scan_file() path can not find
|
||||
* this by traversing file->f_mapping, so there is no concurrency with
|
||||
* retract_page_tables(). In addition, we already hold the exclusive
|
||||
* mmap_lock, so this new_pte page is stable, so there is no need to get
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue