mm/hugetlb/migration: use set_huge_pte_at instead of set_pte_at
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Thu, 6 Jul 2017 22:38:41 +0000 (15:38 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 6 Jul 2017 23:24:33 +0000 (16:24 -0700)
Patch series "HugeTLB migration support for PPC64", v2.

This patch (of 9):

The right interface to use to set a hugetlb pte entry is set_huge_pte_at.
Use that instead of set_pte_at.

Link: http://lkml.kernel.org/r/1494926612-23928-2-git-send-email-aneesh.kumar@linux.vnet.ibm.com
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Mike Kravetz <kravetz@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/migrate.c

index 89a0a1707f4c67deb77dc466cb6f5c2ecfe19051..051cc1555d36e34f4734a7e54faac1a6c2fe144c 100644 (file)
@@ -227,25 +227,26 @@ static bool remove_migration_pte(struct page *page, struct vm_area_struct *vma,
                if (is_write_migration_entry(entry))
                        pte = maybe_mkwrite(pte, vma);
 
+               flush_dcache_page(new);
 #ifdef CONFIG_HUGETLB_PAGE
                if (PageHuge(new)) {
                        pte = pte_mkhuge(pte);
                        pte = arch_make_huge_pte(pte, vma, new, 0);
-               }
-#endif
-               flush_dcache_page(new);
-               set_pte_at(vma->vm_mm, pvmw.address, pvmw.pte, pte);
-
-               if (PageHuge(new)) {
+                       set_huge_pte_at(vma->vm_mm, pvmw.address, pvmw.pte, pte);
                        if (PageAnon(new))
                                hugepage_add_anon_rmap(new, vma, pvmw.address);
                        else
                                page_dup_rmap(new, true);
-               } else if (PageAnon(new))
-                       page_add_anon_rmap(new, vma, pvmw.address, false);
-               else
-                       page_add_file_rmap(new, false);
+               } else
+#endif
+               {
+                       set_pte_at(vma->vm_mm, pvmw.address, pvmw.pte, pte);
 
+                       if (PageAnon(new))
+                               page_add_anon_rmap(new, vma, pvmw.address, false);
+                       else
+                               page_add_file_rmap(new, false);
+               }
                if (vma->vm_flags & VM_LOCKED && !PageTransCompound(new))
                        mlock_vma_page(new);