generic: 5.15: replace ramips AR8033 fiber patch with 5.18 patches
[openwrt/openwrt.git] / target / linux / generic / backport-5.15 / 020-v6.1-05-mm-multi-gen-LRU-groundwork.patch
index 5c143f3cfabdbd422b764e034bcc43f424e44c7c..237bd84875dbc25f76218e6522c5be03093aa0ba 100644 (file)
@@ -124,11 +124,9 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
  mm/vmscan.c                       |  75 +++++++++++++
  16 files changed, 425 insertions(+), 14 deletions(-)
 
-diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
-index d6b5339c56e2..4ec08f7c3e75 100644
 --- a/fs/fuse/dev.c
 +++ b/fs/fuse/dev.c
-@@ -785,7 +785,8 @@ static int fuse_check_page(struct page *page)
+@@ -785,7 +785,8 @@ static int fuse_check_page(struct page *
               1 << PG_active |
               1 << PG_workingset |
               1 << PG_reclaim |
@@ -138,11 +136,9 @@ index d6b5339c56e2..4ec08f7c3e75 100644
                dump_page(page, "fuse: trying to steal weird page");
                return 1;
        }
-diff --git a/include/linux/mm.h b/include/linux/mm.h
-index e4e1817bb3b8..699068f39aa0 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -1093,6 +1093,8 @@ vm_fault_t finish_mkwrite_fault(struct vm_fault *vmf);
+@@ -1093,6 +1093,8 @@ vm_fault_t finish_mkwrite_fault(struct v
  #define ZONES_PGOFF           (NODES_PGOFF - ZONES_WIDTH)
  #define LAST_CPUPID_PGOFF     (ZONES_PGOFF - LAST_CPUPID_WIDTH)
  #define KASAN_TAG_PGOFF               (LAST_CPUPID_PGOFF - KASAN_TAG_WIDTH)
@@ -151,11 +147,9 @@ index e4e1817bb3b8..699068f39aa0 100644
  
  /*
   * Define the bit shifts to access each section.  For non-existent
-diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h
-index a822d6b690a5..65320d2b8f60 100644
 --- a/include/linux/mm_inline.h
 +++ b/include/linux/mm_inline.h
-@@ -26,10 +26,13 @@ static inline int page_is_file_lru(struct page *page)
+@@ -26,10 +26,13 @@ static inline int page_is_file_lru(struc
  
  static __always_inline void __update_lru_size(struct lruvec *lruvec,
                                enum lru_list lru, enum zone_type zid,
@@ -170,7 +164,7 @@ index a822d6b690a5..65320d2b8f60 100644
        __mod_lruvec_state(lruvec, NR_LRU_BASE + lru, nr_pages);
        __mod_zone_page_state(&pgdat->node_zones[zid],
                                NR_ZONE_LRU_BASE + lru, nr_pages);
-@@ -86,11 +89,177 @@ static __always_inline enum lru_list page_lru(struct page *page)
+@@ -86,11 +89,177 @@ static __always_inline enum lru_list pag
        return lru;
  }
  
@@ -348,7 +342,7 @@ index a822d6b690a5..65320d2b8f60 100644
        update_lru_size(lruvec, lru, page_zonenum(page), thp_nr_pages(page));
        list_add(&page->lru, &lruvec->lists[lru]);
  }
-@@ -100,6 +269,9 @@ static __always_inline void add_page_to_lru_list_tail(struct page *page,
+@@ -100,6 +269,9 @@ static __always_inline void add_page_to_
  {
        enum lru_list lru = page_lru(page);
  
@@ -358,7 +352,7 @@ index a822d6b690a5..65320d2b8f60 100644
        update_lru_size(lruvec, lru, page_zonenum(page), thp_nr_pages(page));
        list_add_tail(&page->lru, &lruvec->lists[lru]);
  }
-@@ -107,6 +279,9 @@ static __always_inline void add_page_to_lru_list_tail(struct page *page,
+@@ -107,6 +279,9 @@ static __always_inline void add_page_to_
  static __always_inline void del_page_from_lru_list(struct page *page,
                                struct lruvec *lruvec)
  {
@@ -368,8 +362,6 @@ index a822d6b690a5..65320d2b8f60 100644
        list_del(&page->lru);
        update_lru_size(lruvec, page_lru(page), page_zonenum(page),
                        -thp_nr_pages(page));
-diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
-index 6ba100216530..0c39f72184d0 100644
 --- a/include/linux/mmzone.h
 +++ b/include/linux/mmzone.h
 @@ -294,6 +294,102 @@ enum lruvec_flags {
@@ -486,8 +478,6 @@ index 6ba100216530..0c39f72184d0 100644
  #ifdef CONFIG_MEMCG
        struct pglist_data *pgdat;
  #endif
-diff --git a/include/linux/page-flags-layout.h b/include/linux/page-flags-layout.h
-index ef1e3e736e14..240905407a18 100644
 --- a/include/linux/page-flags-layout.h
 +++ b/include/linux/page-flags-layout.h
 @@ -55,7 +55,8 @@
@@ -526,11 +516,9 @@ index ef1e3e736e14..240905407a18 100644
 +
  #endif
  #endif /* _LINUX_PAGE_FLAGS_LAYOUT */
-diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
-index fbfd3fad48f2..a7d7ff4c621d 100644
 --- a/include/linux/page-flags.h
 +++ b/include/linux/page-flags.h
-@@ -845,7 +845,7 @@ static inline void ClearPageSlabPfmemalloc(struct page *page)
+@@ -845,7 +845,7 @@ static inline void ClearPageSlabPfmemall
         1UL << PG_private      | 1UL << PG_private_2   |       \
         1UL << PG_writeback    | 1UL << PG_reserved    |       \
         1UL << PG_slab         | 1UL << PG_active      |       \
@@ -539,7 +527,7 @@ index fbfd3fad48f2..a7d7ff4c621d 100644
  
  /*
   * Flags checked when a page is prepped for return by the page allocator.
-@@ -856,7 +856,7 @@ static inline void ClearPageSlabPfmemalloc(struct page *page)
+@@ -856,7 +856,7 @@ static inline void ClearPageSlabPfmemall
   * alloc-free cycle to prevent from reusing the page.
   */
  #define PAGE_FLAGS_CHECK_AT_PREP      \
@@ -548,8 +536,6 @@ index fbfd3fad48f2..a7d7ff4c621d 100644
  
  #define PAGE_FLAGS_PRIVATE                            \
        (1UL << PG_private | 1UL << PG_private_2)
-diff --git a/include/linux/sched.h b/include/linux/sched.h
-index e418935f8db6..545f6b1ccd50 100644
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
 @@ -911,6 +911,10 @@ struct task_struct {
@@ -563,8 +549,6 @@ index e418935f8db6..545f6b1ccd50 100644
  #ifdef CONFIG_COMPAT_BRK
        unsigned                        brk_randomized:1;
  #endif
-diff --git a/kernel/bounds.c b/kernel/bounds.c
-index 9795d75b09b2..5ee60777d8e4 100644
 --- a/kernel/bounds.c
 +++ b/kernel/bounds.c
 @@ -22,6 +22,11 @@ int main(void)
@@ -579,8 +563,6 @@ index 9795d75b09b2..5ee60777d8e4 100644
        /* End of constants */
  
        return 0;
-diff --git a/mm/Kconfig b/mm/Kconfig
-index c048dea7e342..0eeb27397884 100644
 --- a/mm/Kconfig
 +++ b/mm/Kconfig
 @@ -897,6 +897,14 @@ config IO_MAPPING
@@ -598,11 +580,9 @@ index c048dea7e342..0eeb27397884 100644
  source "mm/damon/Kconfig"
  
  endmenu
-diff --git a/mm/huge_memory.c b/mm/huge_memory.c
-index 98ff57c8eda6..f260ef82f03a 100644
 --- a/mm/huge_memory.c
 +++ b/mm/huge_memory.c
-@@ -2366,7 +2366,8 @@ static void __split_huge_page_tail(struct page *head, int tail,
+@@ -2366,7 +2366,8 @@ static void __split_huge_page_tail(struc
  #ifdef CONFIG_64BIT
                         (1L << PG_arch_2) |
  #endif
@@ -612,11 +592,9 @@ index 98ff57c8eda6..f260ef82f03a 100644
  
        /* ->mapping in first tail page is compound_mapcount */
        VM_BUG_ON_PAGE(tail > 2 && page_tail->mapping != TAIL_MAPPING,
-diff --git a/mm/memcontrol.c b/mm/memcontrol.c
-index b68b2fe639fd..8b634dc72e7f 100644
 --- a/mm/memcontrol.c
 +++ b/mm/memcontrol.c
-@@ -5178,6 +5178,7 @@ static void __mem_cgroup_free(struct mem_cgroup *memcg)
+@@ -5178,6 +5178,7 @@ static void __mem_cgroup_free(struct mem
  
  static void mem_cgroup_free(struct mem_cgroup *memcg)
  {
@@ -624,7 +602,7 @@ index b68b2fe639fd..8b634dc72e7f 100644
        memcg_wb_domain_exit(memcg);
        __mem_cgroup_free(memcg);
  }
-@@ -5241,6 +5242,7 @@ static struct mem_cgroup *mem_cgroup_alloc(void)
+@@ -5241,6 +5242,7 @@ static struct mem_cgroup *mem_cgroup_all
        memcg->deferred_split_queue.split_queue_len = 0;
  #endif
        idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
@@ -632,11 +610,9 @@ index b68b2fe639fd..8b634dc72e7f 100644
        return memcg;
  fail:
        mem_cgroup_id_remove(memcg);
-diff --git a/mm/memory.c b/mm/memory.c
-index 392b7326a2d2..7d5be951de9e 100644
 --- a/mm/memory.c
 +++ b/mm/memory.c
-@@ -4778,6 +4778,27 @@ static inline void mm_account_fault(struct pt_regs *regs,
+@@ -4792,6 +4792,27 @@ static inline void mm_account_fault(stru
                perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, regs, address);
  }
  
@@ -664,7 +640,7 @@ index 392b7326a2d2..7d5be951de9e 100644
  /*
   * By the time we get here, we already hold the mm semaphore
   *
-@@ -4809,11 +4830,15 @@ vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
+@@ -4823,11 +4844,15 @@ vm_fault_t handle_mm_fault(struct vm_are
        if (flags & FAULT_FLAG_USER)
                mem_cgroup_enter_user_fault();
  
@@ -680,11 +656,9 @@ index 392b7326a2d2..7d5be951de9e 100644
        if (flags & FAULT_FLAG_USER) {
                mem_cgroup_exit_user_fault();
                /*
-diff --git a/mm/mm_init.c b/mm/mm_init.c
-index 9ddaf0e1b0ab..0d7b2bd2454a 100644
 --- a/mm/mm_init.c
 +++ b/mm/mm_init.c
-@@ -65,14 +65,16 @@ void __init mminit_verify_pageflags_layout(void)
+@@ -65,14 +65,16 @@ void __init mminit_verify_pageflags_layo
  
        shift = 8 * sizeof(unsigned long);
        width = shift - SECTIONS_WIDTH - NODES_WIDTH - ZONES_WIDTH
@@ -703,8 +677,6 @@ index 9ddaf0e1b0ab..0d7b2bd2454a 100644
                NR_PAGEFLAGS);
        mminit_dprintk(MMINIT_TRACE, "pageflags_layout_shifts",
                "Section %d Node %d Zone %d Lastcpupid %d Kasantag %d\n",
-diff --git a/mm/mmzone.c b/mm/mmzone.c
-index eb89d6e018e2..2ec0d7793424 100644
 --- a/mm/mmzone.c
 +++ b/mm/mmzone.c
 @@ -81,6 +81,8 @@ void lruvec_init(struct lruvec *lruvec)
@@ -716,8 +688,6 @@ index eb89d6e018e2..2ec0d7793424 100644
  }
  
  #if defined(CONFIG_NUMA_BALANCING) && !defined(LAST_CPUPID_NOT_IN_PAGE_FLAGS)
-diff --git a/mm/swap.c b/mm/swap.c
-index af3cad4e5378..0bdc96661fb6 100644
 --- a/mm/swap.c
 +++ b/mm/swap.c
 @@ -446,6 +446,11 @@ void lru_cache_add(struct page *page)
@@ -732,7 +702,7 @@ index af3cad4e5378..0bdc96661fb6 100644
        get_page(page);
        local_lock(&lru_pvecs.lock);
        pvec = this_cpu_ptr(&lru_pvecs.lru_add);
-@@ -547,7 +552,7 @@ static void lru_deactivate_file_fn(struct page *page, struct lruvec *lruvec)
+@@ -547,7 +552,7 @@ static void lru_deactivate_file_fn(struc
  
  static void lru_deactivate_fn(struct page *page, struct lruvec *lruvec)
  {
@@ -741,7 +711,7 @@ index af3cad4e5378..0bdc96661fb6 100644
                int nr_pages = thp_nr_pages(page);
  
                del_page_from_lru_list(page, lruvec);
-@@ -661,7 +666,8 @@ void deactivate_file_page(struct page *page)
+@@ -661,7 +666,8 @@ void deactivate_file_page(struct page *p
   */
  void deactivate_page(struct page *page)
  {
@@ -751,11 +721,9 @@ index af3cad4e5378..0bdc96661fb6 100644
                struct pagevec *pvec;
  
                local_lock(&lru_pvecs.lock);
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index dc5f0381513f..41826fe17eb3 100644
 --- a/mm/vmscan.c
 +++ b/mm/vmscan.c
-@@ -2821,6 +2821,81 @@ static bool can_age_anon_pages(struct pglist_data *pgdat,
+@@ -2821,6 +2821,81 @@ static bool can_age_anon_pages(struct pg
        return can_demote(pgdat->node_id, sc);
  }
  
@@ -837,6 +805,3 @@ index dc5f0381513f..41826fe17eb3 100644
  static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
  {
        unsigned long nr[NR_LRU_LISTS];
--- 
-2.40.0
-