]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm: remove unused hugepage for vma_alloc_folio()
authorKefeng Wang <wangkefeng.wang@huawei.com>
Thu, 10 Oct 2024 06:15:56 +0000 (14:15 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 1 Nov 2024 04:29:05 +0000 (21:29 -0700)
The hugepage parameter was deprecated since commit ddc1a5cbc05d
("mempolicy: alloc_pages_mpol() for NUMA policy without vma"), for
PMD-sized THP, it still tries only preferred node if possible in
vma_alloc_folio() by checking the order of the folio allocation.

Link: https://lkml.kernel.org/r/20241010061556.1846751-1-wangkefeng.wang@huawei.com
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Acked-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Reviewed-by: Barry Song <baohua@kernel.org>
Cc: Hugh Dickins <hughd@google.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
12 files changed:
arch/alpha/include/asm/page.h
arch/arm64/mm/fault.c
arch/m68k/include/asm/page_no.h
arch/s390/include/asm/page.h
arch/x86/include/asm/page.h
include/linux/gfp.h
include/linux/highmem.h
mm/huge_memory.c
mm/ksm.c
mm/memory.c
mm/mempolicy.c
mm/userfaultfd.c

index 70419e6be1a354b3b846e958dfc2bb899253f5c9..3dffa2a461d70099c2aac25d0cda02444aa4cb85 100644 (file)
@@ -18,7 +18,7 @@ extern void clear_page(void *page);
 #define clear_user_page(page, vaddr, pg)       clear_page(page)
 
 #define vma_alloc_zeroed_movable_folio(vma, vaddr) \
-       vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr, false)
+       vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr)
 
 extern void copy_page(void * _to, void * _from);
 #define copy_user_page(to, from, vaddr, pg)    copy_page(to, from)
index 8b281cf308b30fe2e6ef60b55d8e4055b7bc881e..d95dca561f7a01c13ebaf3cad2d3da98c52cf5fd 100644 (file)
@@ -983,7 +983,7 @@ struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *vma,
        if (vma->vm_flags & VM_MTE)
                flags |= __GFP_ZEROTAGS;
 
-       return vma_alloc_folio(flags, 0, vma, vaddr, false);
+       return vma_alloc_folio(flags, 0, vma, vaddr);
 }
 
 void tag_clear_highpage(struct page *page)
index af3a10973233cf240470153cfee907b4bef5c5ea..63c0e706084b1ed0466563047bf03215fd6fd890 100644 (file)
@@ -14,7 +14,7 @@ extern unsigned long memory_end;
 #define copy_user_page(to, from, vaddr, pg)    copy_page(to, from)
 
 #define vma_alloc_zeroed_movable_folio(vma, vaddr) \
-       vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr, false)
+       vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr)
 
 #define __pa(vaddr)            ((unsigned long)(vaddr))
 #define __va(paddr)            ((void *)((unsigned long)(paddr)))
index 73e1e03317b433d4a737926706998781a0cc5003..d02058f96bcfd470b1a2b842290293ac8a8941cf 100644 (file)
@@ -74,7 +74,7 @@ static inline void copy_page(void *to, void *from)
 #define copy_user_page(to, from, vaddr, pg)    copy_page(to, from)
 
 #define vma_alloc_zeroed_movable_folio(vma, vaddr) \
-       vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr, false)
+       vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr)
 
 /*
  * These are used to make use of C type-checking..
index 1b93ff80b43bcc229add1859fd5b14deb4e84b5d..c9fe207916f487a5429a89b9e5804204f62a9a8d 100644 (file)
@@ -35,7 +35,7 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
 }
 
 #define vma_alloc_zeroed_movable_folio(vma, vaddr) \
-       vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr, false)
+       vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr)
 
 #ifndef __pa
 #define __pa(x)                __phys_addr((unsigned long)(x))
index a951de920e208991b37fb2d878d9a0e9c550548c..b65724c3427dee764f8fda0994d56b0d263410f1 100644 (file)
@@ -306,7 +306,7 @@ struct folio *folio_alloc_noprof(gfp_t gfp, unsigned int order);
 struct folio *folio_alloc_mpol_noprof(gfp_t gfp, unsigned int order,
                struct mempolicy *mpol, pgoff_t ilx, int nid);
 struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, struct vm_area_struct *vma,
-               unsigned long addr, bool hugepage);
+               unsigned long addr);
 #else
 static inline struct page *alloc_pages_noprof(gfp_t gfp_mask, unsigned int order)
 {
@@ -326,7 +326,7 @@ static inline struct folio *folio_alloc_mpol_noprof(gfp_t gfp, unsigned int orde
 {
        return folio_alloc_noprof(gfp, order);
 }
-#define vma_alloc_folio_noprof(gfp, order, vma, addr, hugepage)                \
+#define vma_alloc_folio_noprof(gfp, order, vma, addr)          \
        folio_alloc_noprof(gfp, order)
 #endif
 
@@ -341,7 +341,7 @@ static inline struct folio *folio_alloc_mpol_noprof(gfp_t gfp, unsigned int orde
 static inline struct page *alloc_page_vma_noprof(gfp_t gfp,
                struct vm_area_struct *vma, unsigned long addr)
 {
-       struct folio *folio = vma_alloc_folio_noprof(gfp, 0, vma, addr, false);
+       struct folio *folio = vma_alloc_folio_noprof(gfp, 0, vma, addr);
 
        return &folio->page;
 }
index 930a591b9b616c64309ab409b3b62b946c627731..bec9bd715acf91cb41988464669635794f9bcfa8 100644 (file)
@@ -226,7 +226,7 @@ struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *vma,
 {
        struct folio *folio;
 
-       folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, vaddr, false);
+       folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, vaddr);
        if (folio)
                clear_user_highpage(&folio->page, vaddr);
 
index d1c0055aa805f68dfc46478c6b0ad28732103c78..afcdcbd48f66c31cd9c3f5036637e18692a2bb9a 100644 (file)
@@ -1146,7 +1146,7 @@ static struct folio *vma_alloc_anon_folio_pmd(struct vm_area_struct *vma,
        const int order = HPAGE_PMD_ORDER;
        struct folio *folio;
 
-       folio = vma_alloc_folio(gfp, order, vma, addr & HPAGE_PMD_MASK, true);
+       folio = vma_alloc_folio(gfp, order, vma, addr & HPAGE_PMD_MASK);
 
        if (unlikely(!folio)) {
                count_vm_event(THP_FAULT_FALLBACK);
index c64c762fbf515d23aa210630f76daf3e83e8ea96..7ac59cde626c971bbe16eb7c5f4e553f9b709b70 100644 (file)
--- a/mm/ksm.c
+++ b/mm/ksm.c
@@ -2971,7 +2971,7 @@ struct folio *ksm_might_need_to_copy(struct folio *folio,
        if (!folio_test_uptodate(folio))
                return folio;           /* let do_swap_page report the error */
 
-       new_folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, addr, false);
+       new_folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, addr);
        if (new_folio &&
            mem_cgroup_charge(new_folio, vma->vm_mm, GFP_KERNEL)) {
                folio_put(new_folio);
index 5e9d6a22eb088ebc20c0a2ce73f0d379870b4db6..c51bc45a70099533afccb982553d6072dca278cc 100644 (file)
@@ -1059,8 +1059,7 @@ static inline struct folio *folio_prealloc(struct mm_struct *src_mm,
        if (need_zero)
                new_folio = vma_alloc_zeroed_movable_folio(vma, addr);
        else
-               new_folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma,
-                                           addr, false);
+               new_folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, addr);
 
        if (!new_folio)
                return NULL;
@@ -4017,8 +4016,7 @@ static struct folio *__alloc_swap_folio(struct vm_fault *vmf)
        struct folio *folio;
        swp_entry_t entry;
 
-       folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma,
-                               vmf->address, false);
+       folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, vmf->address);
        if (!folio)
                return NULL;
 
@@ -4174,7 +4172,7 @@ static struct folio *alloc_swap_folio(struct vm_fault *vmf)
        gfp = vma_thp_gfp_mask(vma);
        while (orders) {
                addr = ALIGN_DOWN(vmf->address, PAGE_SIZE << order);
-               folio = vma_alloc_folio(gfp, order, vma, addr, true);
+               folio = vma_alloc_folio(gfp, order, vma, addr);
                if (folio) {
                        if (!mem_cgroup_swapin_charge_folio(folio, vma->vm_mm,
                                                            gfp, entry))
@@ -4713,7 +4711,7 @@ static struct folio *alloc_anon_folio(struct vm_fault *vmf)
        gfp = vma_thp_gfp_mask(vma);
        while (orders) {
                addr = ALIGN_DOWN(vmf->address, PAGE_SIZE << order);
-               folio = vma_alloc_folio(gfp, order, vma, addr, true);
+               folio = vma_alloc_folio(gfp, order, vma, addr);
                if (folio) {
                        if (mem_cgroup_charge(folio, vma->vm_mm, gfp)) {
                                count_mthp_stat(order, MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE);
index a8aa83a97ad119abf0a1618baea6fa5e24eb0e45..bb37cd1a51d87f994a08c184161ec6afe5084e8f 100644 (file)
@@ -2290,7 +2290,6 @@ struct folio *folio_alloc_mpol_noprof(gfp_t gfp, unsigned int order,
  * @order: Order of the folio.
  * @vma: Pointer to VMA.
  * @addr: Virtual address of the allocation.  Must be inside @vma.
- * @hugepage: Unused (was: For hugepages try only preferred node if possible).
  *
  * Allocate a folio for a specific address in @vma, using the appropriate
  * NUMA policy.  The caller must hold the mmap_lock of the mm_struct of the
@@ -2301,7 +2300,7 @@ struct folio *folio_alloc_mpol_noprof(gfp_t gfp, unsigned int order,
  * Return: The folio on success or NULL if allocation fails.
  */
 struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, struct vm_area_struct *vma,
-               unsigned long addr, bool hugepage)
+               unsigned long addr)
 {
        struct mempolicy *pol;
        pgoff_t ilx;
index 48b87c62fc3dd9376d1cb233fe966784daa2e492..60a0be33766ffd71dd7de01d4b1f8fb71db98893 100644 (file)
@@ -251,7 +251,7 @@ static int mfill_atomic_pte_copy(pmd_t *dst_pmd,
        if (!*foliop) {
                ret = -ENOMEM;
                folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, dst_vma,
-                                       dst_addr, false);
+                                       dst_addr);
                if (!folio)
                        goto out;