diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2019-04-08 13:03:09 +0200 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2019-04-08 13:03:09 +0200 |
commit | 26af34079f1d8299932303cfd2b376b9cf55a35c (patch) | |
tree | f1a9824855fae569aa51c2109a5929715143093d /mm/migrate.c | |
parent | 27157af66324d529b43231c12b5d1e1a3e9fa620 (diff) | |
parent | 79a3aaa7b82e3106be97842dedfd8429248896e6 (diff) |
Merge tag 'v5.1-rc3' into devel
Linux 5.1-rc3
Diffstat (limited to 'mm/migrate.c')
-rw-r--r-- | mm/migrate.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/mm/migrate.c b/mm/migrate.c index ac6f4939bb59..663a5449367a 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -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)) { @@ -995,6 +993,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; |