Merge tag 'gpio-v5.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux...
[linux-2.6-block.git] / mm / migrate.c
index e9594bc0d4069fff2905855efa1ac532a488632c..3445747e229d0ba8566597973e2b67fab46bfc6d 100644 (file)
@@ -246,8 +246,6 @@ static bool remove_migration_pte(struct page *page, struct vm_area_struct *vma,
                        if (is_device_private_page(new)) {
                                entry = make_device_private_entry(new, pte_write(pte));
                                pte = swp_entry_to_pte(entry);
-                       } else if (is_device_public_page(new)) {
-                               pte = pte_mkdevmap(pte);
                        }
                }
 
@@ -381,7 +379,6 @@ static int expected_page_refs(struct address_space *mapping, struct page *page)
         * ZONE_DEVICE pages.
         */
        expected_count += is_device_private_page(page);
-       expected_count += is_device_public_page(page);
        if (mapping)
                expected_count += hpage_nr_pages(page) + page_has_private(page);
 
@@ -994,10 +991,7 @@ 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
+               if (likely(!is_zone_device_page(newpage)))
                        flush_dcache_page(newpage);
 
        }
@@ -2265,7 +2259,7 @@ again:
                                pfn = 0;
                                goto next;
                        }
-                       page = _vm_normal_page(migrate->vma, addr, pte, true);
+                       page = vm_normal_page(migrate->vma, addr, pte);
                        mpfn = migrate_pfn(pfn) | MIGRATE_PFN_MIGRATE;
                        mpfn |= pte_write(pte) ? MIGRATE_PFN_WRITE : 0;
                }
@@ -2406,16 +2400,7 @@ static bool migrate_vma_check_page(struct page *page)
                 * FIXME proper solution is to rework migration_entry_wait() so
                 * it does not need to take a reference on page.
                 */
-               if (is_device_private_page(page))
-                       return true;
-
-               /*
-                * Only allow device public page to be migrated and account for
-                * the extra reference count imply by ZONE_DEVICE pages.
-                */
-               if (!is_device_public_page(page))
-                       return false;
-               extra++;
+               return is_device_private_page(page);
        }
 
        /* For file back page */
@@ -2665,11 +2650,6 @@ static void migrate_vma_insert_page(struct migrate_vma *migrate,
 
                        swp_entry = make_device_private_entry(page, vma->vm_flags & VM_WRITE);
                        entry = swp_entry_to_pte(swp_entry);
-               } else if (is_device_public_page(page)) {
-                       entry = pte_mkold(mk_pte(page, READ_ONCE(vma->vm_page_prot)));
-                       if (vma->vm_flags & VM_WRITE)
-                               entry = pte_mkwrite(pte_mkdirty(entry));
-                       entry = pte_mkdevmap(entry);
                }
        } else {
                entry = mk_pte(page, vma->vm_page_prot);
@@ -2789,7 +2769,7 @@ static void migrate_vma_pages(struct migrate_vma *migrate)
                                        migrate->src[i] &= ~MIGRATE_PFN_MIGRATE;
                                        continue;
                                }
-                       } else if (!is_device_public_page(newpage)) {
+                       } else {
                                /*
                                 * Other types of ZONE_DEVICE page are not
                                 * supported.