summaryrefslogtreecommitdiffstats
path: root/mm/migrate.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/migrate.c')
-rw-r--r--mm/migrate.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/mm/migrate.c b/mm/migrate.c
index c9c73a35aca7..9f4ed4e985c1 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -2320,6 +2320,11 @@ next:
2320 return 0; 2320 return 0;
2321} 2321}
2322 2322
2323static const struct mm_walk_ops migrate_vma_walk_ops = {
2324 .pmd_entry = migrate_vma_collect_pmd,
2325 .pte_hole = migrate_vma_collect_hole,
2326};
2327
2323/* 2328/*
2324 * migrate_vma_collect() - collect pages over a range of virtual addresses 2329 * migrate_vma_collect() - collect pages over a range of virtual addresses
2325 * @migrate: migrate struct containing all migration information 2330 * @migrate: migrate struct containing all migration information
@@ -2331,21 +2336,15 @@ next:
2331static void migrate_vma_collect(struct migrate_vma *migrate) 2336static void migrate_vma_collect(struct migrate_vma *migrate)
2332{ 2337{
2333 struct mmu_notifier_range range; 2338 struct mmu_notifier_range range;
2334 struct mm_walk mm_walk = {
2335 .pmd_entry = migrate_vma_collect_pmd,
2336 .pte_hole = migrate_vma_collect_hole,
2337 .vma = migrate->vma,
2338 .mm = migrate->vma->vm_mm,
2339 .private = migrate,
2340 };
2341 2339
2342 mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, NULL, mm_walk.mm, 2340 mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, NULL,
2343 migrate->start, 2341 migrate->vma->vm_mm, migrate->start, migrate->end);
2344 migrate->end);
2345 mmu_notifier_invalidate_range_start(&range); 2342 mmu_notifier_invalidate_range_start(&range);
2346 walk_page_range(migrate->start, migrate->end, &mm_walk);
2347 mmu_notifier_invalidate_range_end(&range);
2348 2343
2344 walk_page_range(migrate->vma->vm_mm, migrate->start, migrate->end,
2345 &migrate_vma_walk_ops, migrate);
2346
2347 mmu_notifier_invalidate_range_end(&range);
2349 migrate->end = migrate->start + (migrate->npages << PAGE_SHIFT); 2348 migrate->end = migrate->start + (migrate->npages << PAGE_SHIFT);
2350} 2349}
2351 2350