|
|
@@ -248,10 +248,8 @@ static bool remove_migration_pte(struct page *page, struct vm_area_struct *vma,
|
|
|
pte = swp_entry_to_pte(entry);
|
|
|
} else if (is_device_public_page(new)) {
|
|
|
pte = pte_mkdevmap(pte);
|
|
|
- flush_dcache_page(new);
|
|
|
}
|
|
|
- } else
|
|
|
- flush_dcache_page(new);
|
|
|
+ }
|
|
|
|
|
|
#ifdef CONFIG_HUGETLB_PAGE
|
|
|
if (PageHuge(new)) {
|
|
|
@@ -983,6 +981,13 @@ static int move_to_new_page(struct page *newpage, struct page *page,
|
|
|
*/
|
|
|
if (!PageMappingFlags(page))
|
|
|
page->mapping = NULL;
|
|
|
+
|
|
|
+ if (unlikely(is_zone_device_page(newpage))) {
|
|
|
+ if (is_device_public_page(newpage))
|
|
|
+ flush_dcache_page(newpage);
|
|
|
+ } else
|
|
|
+ flush_dcache_page(newpage);
|
|
|
+
|
|
|
}
|
|
|
out:
|
|
|
return rc;
|