The patch titled Subject: mm-gup-add-foll_longterm-capability-to-gup-fast-v3 has been added to the -mm tree. Its filename is mm-gup-add-foll_longterm-capability-to-gup-fast-v3.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-gup-add-foll_longterm-capability-to-gup-fast-v3.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-gup-add-foll_longterm-capability-to-gup-fast-v3.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Ira Weiny <ira.weiny@xxxxxxxxx> Subject: mm-gup-add-foll_longterm-capability-to-gup-fast-v3 Changes from V2: Add comment on special use case of FOLL_LONGTERM Link: http://lkml.kernel.org/r/20190328084422.29911-5-ira.weiny@xxxxxxxxx Signed-off-by: Ira Weiny <ira.weiny@xxxxxxxxx> Cc: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx> Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> Cc: Borislav Petkov <bp@xxxxxxxxx> Cc: Dan Williams <dan.j.williams@xxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: James Hogan <jhogan@xxxxxxxxxx> Cc: Jason Gunthorpe <jgg@xxxxxxxx> Cc: John Hubbard <jhubbard@xxxxxxxxxx> Cc: "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> Cc: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxxxx> Cc: Mike Marshall <hubcap@xxxxxxxxxxxx> Cc: Paul Mackerras <paulus@xxxxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Cc: Rich Felker <dalias@xxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Yoshinori Sato <ysato@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/gup.c | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) --- a/mm/gup.c~mm-gup-add-foll_longterm-capability-to-gup-fast-v3 +++ a/mm/gup.c @@ -2043,6 +2043,29 @@ int __get_user_pages_fast(unsigned long return nr; } +static int __gup_longterm_unlocked(unsigned long start, int nr_pages, + unsigned int gup_flags, struct page **pages) +{ + int ret; + + /* + * FIXME: FOLL_LONGTERM does not work with + * get_user_pages_unlocked() (see comments in that function) + */ + if (gup_flags & FOLL_LONGTERM) { + down_read(¤t->mm->mmap_sem); + ret = __gup_longterm_locked(current, current->mm, + start, nr_pages, + pages, NULL, gup_flags); + up_read(¤t->mm->mmap_sem); + } else { + ret = get_user_pages_unlocked(start, nr_pages, + pages, gup_flags); + } + + return ret; +} + /** * get_user_pages_fast() - pin user pages in memory * @start: starting user address @@ -2088,20 +2111,8 @@ int get_user_pages_fast(unsigned long st start += nr << PAGE_SHIFT; pages += nr; - if (gup_flags & FOLL_LONGTERM) { - down_read(¤t->mm->mmap_sem); - ret = __gup_longterm_locked(current, current->mm, - start, nr_pages - nr, - pages, NULL, gup_flags); - up_read(¤t->mm->mmap_sem); - } else { - /* - * retain FAULT_FOLL_ALLOW_RETRY optimization if - * possible - */ - ret = get_user_pages_unlocked(start, nr_pages - nr, - pages, gup_flags); - } + ret = __gup_longterm_unlocked(start, nr_pages - nr, + gup_flags, pages); /* Have to be a bit careful with return values */ if (nr > 0) { _ Patches currently in -mm which might be from ira.weiny@xxxxxxxxx are mm-gup-replace-get_user_pages_longterm-with-foll_longterm.patch mm-gup-replace-get_user_pages_longterm-with-foll_longterm-v3.patch mm-gup-change-write-parameter-to-flags-in-fast-walk.patch mm-gup-change-gup-fast-to-use-flags-rather-than-a-write-bool.patch mm-gup-add-foll_longterm-capability-to-gup-fast.patch mm-gup-add-foll_longterm-capability-to-gup-fast-v3.patch ib-hfi1-use-the-new-foll_longterm-flag-to-get_user_pages_fast.patch ib-hfi1-use-the-new-foll_longterm-flag-to-get_user_pages_fast-v3.patch ib-qib-use-the-new-foll_longterm-flag-to-get_user_pages_fast.patch ib-mthca-use-the-new-foll_longterm-flag-to-get_user_pages_fast.patch