bool hugetlb_bootmem_page_zones_valid(int nid, struct huge_bootmem_page *m);
 
-int isolate_or_dissolve_huge_page(struct page *page, struct list_head *list);
+int isolate_or_dissolve_huge_folio(struct folio *folio, struct list_head *list);
 int replace_free_hugepage_folios(unsigned long start_pfn, unsigned long end_pfn);
 void wait_for_freed_hugetlb_folios(void);
 struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
        return NULL;
 }
 
-static inline int isolate_or_dissolve_huge_page(struct page *page,
+static inline int isolate_or_dissolve_huge_folio(struct folio *folio,
                                                struct list_head *list)
 {
        return -ENOMEM;
 
                                locked = NULL;
                        }
 
-                       ret = isolate_or_dissolve_huge_page(page, &cc->migratepages);
+                       folio = page_folio(page);
+                       ret = isolate_or_dissolve_huge_folio(folio, &cc->migratepages);
 
                        /*
-                        * Fail isolation in case isolate_or_dissolve_huge_page()
+                        * Fail isolation in case isolate_or_dissolve_huge_folio()
                         * reports an error. In case of -ENOMEM, abort right away.
                         */
                        if (ret < 0) {
                                goto isolate_fail;
                        }
 
-                       if (PageHuge(page)) {
+                       if (folio_test_hugetlb(folio)) {
                                /*
                                 * Hugepage was successfully isolated and placed
                                 * on the cc->migratepages list.
                                 */
-                               folio = page_folio(page);
                                low_pfn += folio_nr_pages(folio) - 1;
                                goto isolate_success_no_list;
                        }
 
        return ret;
 }
 
-int isolate_or_dissolve_huge_page(struct page *page, struct list_head *list)
+int isolate_or_dissolve_huge_folio(struct folio *folio, struct list_head *list)
 {
        struct hstate *h;
-       struct folio *folio = page_folio(page);
        int ret = -EBUSY;
 
        /*