remove_migration_pmd(&pvmw, new);
continue;
}
+#ifdef CONFIG_FINEGRAINED_THP
+ if (PageTransHuge(page) && pte_cont(*pvmw.pte)) {
+ VM_BUG_ON_PAGE(PageHuge(page) || !PageTransCompound(page), page);
+ remove_migration_huge_pte(&pvmw, new);
+ continue;
+ }
+#endif /* CONFIG_FINEGRAINED_THP */
#endif
get_page(new);
page_dup_rmap(new, true);
} else
#endif
-#ifdef CONFIG_FINEGRAINED_THP
- if (PageTransHuge(new)) {
- pte = pte_mkcont(pte_mkhuge(pte));
- arch_set_huge_pte_at(vma->vm_mm, pvmw.address, pvmw.pte, pte, 0);
- if (PageAnon(new))
- page_add_anon_rmap(new, vma, pvmw.address, true);
- else
- page_dup_rmap(new, true);
- } else
-#endif /* CONFIG_FINEGRAINED_THP */
{
set_pte_at(vma->vm_mm, pvmw.address, pvmw.pte, pte);