mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
When pages are pinned they can be faulted in userland and migrated, and they can be faulted right in kernel without migration. In either case, the pinned pages must end-up being pinnable (not movable). Add a new test to gup_test, to help verify that the gup/pup (get_user_pages() / pin_user_pages()) behavior with respect to pinnable and movable pages is reasonable and correct. Specifically, provide a way to: 1) Verify that only "pinnable" pages are pinned. This is checked automatically for you. 2) Verify that gup/pup performance is reasonable. This requires comparing benchmarks between doing gup/pup on pages that have been pre-faulted in from user space, vs. doing gup/pup on pages that are not faulted in until gup/pup time (via FOLL_TOUCH). This decision is controlled with the new -z command line option. Link: https://lkml.kernel.org/r/20210215161349.246722-15-pasha.tatashin@soleen.com Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com> Reviewed-by: John Hubbard <jhubbard@nvidia.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: David Hildenbrand <david@redhat.com> Cc: David Rientjes <rientjes@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Ira Weiny <ira.weiny@intel.com> Cc: James Morris <jmorris@namei.org> Cc: Jason Gunthorpe <jgg@nvidia.com> Cc: Jason Gunthorpe <jgg@ziepe.ca> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Mel Gorman <mgorman@suse.de> Cc: Michal Hocko <mhocko@kernel.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Mike Kravetz <mike.kravetz@oracle.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sasha Levin <sashal@kernel.org> Cc: Steven Rostedt (VMware) <rostedt@goodmis.org> Cc: Tyler Hicks <tyhicks@linux.microsoft.com> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| charge_reserved_hugetlb.sh | ||
| check_config.sh | ||
| compaction_test.c | ||
| config | ||
| gup_test.c | ||
| hmm-tests.c | ||
| hugepage-mmap.c | ||
| hugepage-shm.c | ||
| hugetlb_reparenting_test.sh | ||
| khugepaged.c | ||
| Makefile | ||
| map_fixed_noreplace.c | ||
| map_hugetlb.c | ||
| map_populate.c | ||
| mlock2-tests.c | ||
| mlock2.h | ||
| mlock-random-test.c | ||
| mremap_dontunmap.c | ||
| mremap_test.c | ||
| on-fault-limit.c | ||
| pkey-helpers.h | ||
| pkey-powerpc.h | ||
| pkey-x86.h | ||
| protection_keys.c | ||
| run_vmtests.sh | ||
| split_huge_page_test.c | ||
| test_hmm.sh | ||
| test_vmalloc.sh | ||
| thuge-gen.c | ||
| transhuge-stress.c | ||
| userfaultfd.c | ||
| va_128TBswitch.c | ||
| virtual_address_range.c | ||
| write_hugetlb_memory.sh | ||
| write_to_hugetlbfs.c | ||