Re: [PATCH 2/3] pagewalk: separate function pointers from iterator data

From: Jason Gunthorpe
Date: Wed Aug 28 2019 - 11:05:25 EST


On Wed, Aug 28, 2019 at 04:19:54PM +0200, Christoph Hellwig wrote:
> @@ -2546,7 +2542,7 @@ int s390_enable_sie(void)
> mm->context.has_pgste = 1;
> /* split thp mappings and disable thp for future mappings */
> thp_split_mm(mm);
> - zap_zero_pages(mm);
> + walk_page_range(mm, 0, TASK_SIZE, &zap_zero_walk_ops, NULL);
> up_write(&mm->mmap_sem);
> return 0;
> }

[..]

> @@ -1217,7 +1222,8 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
> 0, NULL, mm, 0, -1UL);
> mmu_notifier_invalidate_range_start(&range);
> }
> - walk_page_range(0, mm->highest_vm_end, &clear_refs_walk);
> + walk_page_range(mm, 0, mm->highest_vm_end, &clear_refs_walk_ops,
> + &cp);

Is the difference between TASK_SIZE and 'highest_vm_end' deliberate,
or should we add a 'walk_all_pages'() mini helper for this? I see most
of the users are using one or the other variant.

Otherwise the mechanical transformation looked OK to me

Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxxxx>

Jason