Thread (15 messages) 15 messages, 3 authors, 2021-02-11

Re: [PATCH v3 1/4] mm/gup: add compound page list iterator

From: Joao Martins <hidden>
Date: 2021-02-11 10:50:36
Also in: linux-mm, lkml

On 2/10/21 11:20 PM, Jason Gunthorpe wrote:
On Fri, Feb 05, 2021 at 08:41:24PM +0000, Joao Martins wrote:
quoted
Add an helper that iterates over head pages in a list of pages. It
essentially counts the tails until the next page to process has a
different head that the current. This is going to be used by
unpin_user_pages() family of functions, to batch the head page refcount
updates once for all passed consecutive tail pages.

Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Joao Martins <redacted>
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
---
 mm/gup.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Thanks!
This can be used for check_and_migrate_cma_pages() too (there is a
series around to change this logic though, not sure if it is landed
yet)
It got unqueued AFAIUI.

It makes sense for most users today except hugetlb pages, which are also
the fastest page pinner today. And unilaterally using this iterator makes
all page types pay the added cost. So either keeping the current loop having
the exception to PageHuge() head pages, or doing it correctly with that
split logic we were talking on the other thread.

	Joao
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help