extern pid_t task_numa_group_id(struct task_struct *p);
 extern void set_numabalancing_state(bool enabled);
 extern void task_numa_free(struct task_struct *p, bool final);
-extern bool should_numa_migrate_memory(struct task_struct *p, struct page *page,
-                                       int src_nid, int dst_cpu);
+bool should_numa_migrate_memory(struct task_struct *p, struct folio *folio,
+                               int src_nid, int dst_cpu);
 #else
 static inline void task_numa_fault(int last_node, int node, int pages,
                                   int flags)
 {
 }
 static inline bool should_numa_migrate_memory(struct task_struct *p,
-                               struct page *page, int src_nid, int dst_cpu)
+                               struct folio *folio, int src_nid, int dst_cpu)
 {
        return true;
 }
 
  * The smaller the hint page fault latency, the higher the possibility
  * for the page to be hot.
  */
-static int numa_hint_fault_latency(struct page *page)
+static int numa_hint_fault_latency(struct folio *folio)
 {
        int last_time, time;
 
        time = jiffies_to_msecs(jiffies);
-       last_time = xchg_page_access_time(page, time);
+       last_time = xchg_page_access_time(&folio->page, time);
 
        return (time - last_time) & PAGE_ACCESS_TIME_MASK;
 }
        }
 }
 
-bool should_numa_migrate_memory(struct task_struct *p, struct page * page,
+bool should_numa_migrate_memory(struct task_struct *p, struct folio *folio,
                                int src_nid, int dst_cpu)
 {
        struct numa_group *ng = deref_curr_numa_group(p);
                numa_promotion_adjust_threshold(pgdat, rate_limit, def_th);
 
                th = pgdat->nbp_threshold ? : def_th;
-               latency = numa_hint_fault_latency(page);
+               latency = numa_hint_fault_latency(folio);
                if (latency >= th)
                        return false;
 
                return !numa_promotion_rate_limit(pgdat, rate_limit,
-                                                 thp_nr_pages(page));
+                                                 folio_nr_pages(folio));
        }
 
        this_cpupid = cpu_pid_to_cpupid(dst_cpu, current->pid);
-       last_cpupid = page_cpupid_xchg_last(page, this_cpupid);
+       last_cpupid = page_cpupid_xchg_last(&folio->page, this_cpupid);
 
        if (!(sysctl_numa_balancing_mode & NUMA_BALANCING_MEMORY_TIERING) &&
            !node_is_toptier(src_nid) && !cpupid_valid(last_cpupid))
 
        if (pol->flags & MPOL_F_MORON) {
                polnid = thisnid;
 
-               if (!should_numa_migrate_memory(current, &folio->page, curnid,
+               if (!should_numa_migrate_memory(current, folio, curnid,
                                                thiscpu))
                        goto out;
        }