On 8/15/19 10:41 AM, John Hubbard wrote: > On 8/15/19 10:32 AM, Ira Weiny wrote: >> On Thu, Aug 15, 2019 at 03:35:10PM +0200, Jan Kara wrote: >>> On Thu 15-08-19 15:26:22, Jan Kara wrote: >>>> On Wed 14-08-19 20:01:07, John Hubbard wrote: >>>>> On 8/14/19 5:02 PM, John Hubbard wrote: ... >> Ok just to make this clear I threw up my current tree with your patches here: >> >> https://github.com/weiny2/linux-kernel/commits/mmotm-rdmafsdax-b0-v4 >> >> I'm talking about dropping the final patch: >> 05fd2d3afa6b rdma/umem_odp: Use vaddr_pin_pages_remote() in ODP >> >> The other 2 can stay. I split out the *_remote() call. We don't have a user >> but I'll keep it around for a bit. >> >> This tree is still WIP as I work through all the comments. So I've not changed >> names or variable types etc... Just wanted to settle this. >> > > Right. And now that ODP is not a user, I'll take a quick look through my other > call site conversions and see if I can find an easy one, to include here as > the first user of vaddr_pin_pages_remote(). I'll send it your way if that > works out. > OK, there was only process_vm_access.c, plus (sort of) Bharath's sgi-gru patch, maybe eventually [1]. But looking at process_vm_access.c, I think it is one of the patches that is no longer applicable, and I can just drop it entirely...I'd welcome a second opinion on that... So we might be all out of potential users for vaddr_pin_pages_remote()! For quick reference, it looks like this: diff --git a/mm/process_vm_access.c b/mm/process_vm_access.c index 357aa7bef6c0..4d29d54ec93f 100644 --- a/mm/process_vm_access.c +++ b/mm/process_vm_access.c @@ -96,7 +96,7 @@ static int process_vm_rw_single_vec(unsigned long addr, flags |= FOLL_WRITE; while (!rc && nr_pages && iov_iter_count(iter)) { - int pages = min(nr_pages, max_pages_per_loop); + int pinned_pages = min(nr_pages, max_pages_per_loop); int locked = 1; size_t bytes; @@ -106,14 +106,15 @@ static int process_vm_rw_single_vec(unsigned long addr, * current/current->mm */ down_read(&mm->mmap_sem); - pages = get_user_pages_remote(task, mm, pa, pages, flags, - process_pages, NULL, &locked); + pinned_pages = get_user_pages_remote(task, mm, pa, pinned_pages, + flags, process_pages, NULL, + &locked); if (locked) up_read(&mm->mmap_sem); - if (pages <= 0) + if (pinned_pages <= 0) return -EFAULT; - bytes = pages * PAGE_SIZE - start_offset; + bytes = pinned_pages * PAGE_SIZE - start_offset; if (bytes > len) bytes = len; @@ -122,10 +123,9 @@ static int process_vm_rw_single_vec(unsigned long addr, vm_write); len -= bytes; start_offset = 0; - nr_pages -= pages; - pa += pages * PAGE_SIZE; - while (pages) - put_page(process_pages[--pages]); + nr_pages -= pinned_pages; + pa += pinned_pages * PAGE_SIZE; + put_user_pages(process_pages, pinned_pages); } return rc; [1] https://lore.kernel.org/r/1565379497-29266-2-git-send-email-linux.bhar@xxxxxxxxx thanks, -- John Hubbard NVIDIA