On Tue, Feb 04, 2020 at 03:41:16PM -0800, John Hubbard wrote:
Up until now, gup_benchmark supported testing of the following kernel functions:
- get_user_pages(): via the '-U' command line option
- get_user_pages_longterm(): via the '-L' command line option
- get_user_pages_fast(): as the default (no options required)
Add test coverage for the new corresponding pin_*() functions:
- pin_user_pages_fast(): via the '-a' command line option
- pin_user_pages(): via the '-b' command line option
Also, add an option for clarity: '-u' for what is now (still) the default choice: get_user_pages_fast().
Also, for the commands that set FOLL_PIN, verify that the pages really are dma-pinned, via the new is_dma_pinned() routine. Those commands are:
PIN_FAST_BENCHMARK : calls pin_user_pages_fast() PIN_BENCHMARK : calls pin_user_pages()
In between the calls to pin_*() and unpin_user_pages(), check each page: if page_maybe_dma_pinned() returns false, then WARN and return.
Do this outside of the benchmark timestamps, so that it doesn't affect reported times.
Reviewed-by: Ira Weiny ira.weiny@intel.com Signed-off-by: John Hubbard jhubbard@nvidia.com
Acked-by: Kirill A. Shutemov kirill.shutemov@linux.intel.com