[09/29] selftests/mm: Reuse pagemap_get_entry() in vm_util.h
Commit Message
Meanwhile drop pagemap_read_vaddr().
Signed-off-by: Peter Xu <peterx@redhat.com>
---
tools/testing/selftests/mm/userfaultfd.c | 31 +++++++-----------------
1 file changed, 9 insertions(+), 22 deletions(-)
Comments
On Thu, Mar 30, 2023 at 9:07 AM Peter Xu <peterx@redhat.com> wrote:
>
> Meanwhile drop pagemap_read_vaddr().
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Axel Rasmussen <axelrasmussen@google.com>
> ---
> tools/testing/selftests/mm/userfaultfd.c | 31 +++++++-----------------
> 1 file changed, 9 insertions(+), 22 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/userfaultfd.c b/tools/testing/selftests/mm/userfaultfd.c
> index 7e841f7e2884..795fbc4d84f8 100644
> --- a/tools/testing/selftests/mm/userfaultfd.c
> +++ b/tools/testing/selftests/mm/userfaultfd.c
> @@ -1399,19 +1399,6 @@ static int pagemap_open(void)
> return fd;
> }
>
> -static uint64_t pagemap_read_vaddr(int fd, void *vaddr)
> -{
> - uint64_t value;
> - int ret;
> -
> - ret = pread(fd, &value, sizeof(uint64_t),
> - ((uint64_t)vaddr >> 12) * sizeof(uint64_t));
> - if (ret != sizeof(uint64_t))
> - err("pread() on pagemap failed");
> -
> - return value;
> -}
> -
> /* This macro let __LINE__ works in err() */
> #define pagemap_check_wp(value, wp) do { \
> if (!!(value & PM_UFFD_WP) != wp) \
> @@ -1427,7 +1414,7 @@ static int pagemap_test_fork(bool present)
> if (!child) {
> /* Open the pagemap fd of the child itself */
> fd = pagemap_open();
> - value = pagemap_read_vaddr(fd, area_dst);
> + value = pagemap_get_entry(fd, area_dst);
> /*
> * After fork() uffd-wp bit should be gone as long as we're
> * without UFFD_FEATURE_EVENT_FORK
> @@ -1446,24 +1433,24 @@ static void userfaultfd_wp_unpopulated_test(int pagemap_fd)
>
> /* Test applying pte marker to anon unpopulated */
> wp_range(uffd, (uint64_t)area_dst, page_size, true);
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, true);
>
> /* Test unprotect on anon pte marker */
> wp_range(uffd, (uint64_t)area_dst, page_size, false);
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
>
> /* Test zap on anon marker */
> wp_range(uffd, (uint64_t)area_dst, page_size, true);
> if (madvise(area_dst, page_size, MADV_DONTNEED))
> err("madvise(MADV_DONTNEED) failed");
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
>
> /* Test fault in after marker removed */
> *area_dst = 1;
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
> /* Drop it to make pte none again */
> if (madvise(area_dst, page_size, MADV_DONTNEED))
> @@ -1522,7 +1509,7 @@ static void userfaultfd_pagemap_test(unsigned int test_pgsize)
> /* Touch the page */
> *area_dst = 1;
> wp_range(uffd, (uint64_t)area_dst, test_pgsize, true);
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, true);
> /* Make sure uffd-wp bit dropped when fork */
> if (pagemap_test_fork(true))
> @@ -1536,7 +1523,7 @@ static void userfaultfd_pagemap_test(unsigned int test_pgsize)
> err("madvise(MADV_PAGEOUT) failed");
>
> /* Uffd-wp should persist even swapped out */
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, true);
> /* Make sure uffd-wp bit dropped when fork */
> if (pagemap_test_fork(false))
> @@ -1544,12 +1531,12 @@ static void userfaultfd_pagemap_test(unsigned int test_pgsize)
>
> /* Unprotect; this tests swap pte modifications */
> wp_range(uffd, (uint64_t)area_dst, page_size, false);
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
>
> /* Fault in the page from disk */
> *area_dst = 2;
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
>
> close(pagemap_fd);
> --
> 2.39.1
>
On 03/30/23 12:07, Peter Xu wrote:
> Meanwhile drop pagemap_read_vaddr().
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
> tools/testing/selftests/mm/userfaultfd.c | 31 +++++++-----------------
> 1 file changed, 9 insertions(+), 22 deletions(-)
Thanks,
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
On 30.03.23 18:07, Peter Xu wrote:
> Meanwhile drop pagemap_read_vaddr().
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
Reviewed-by: David Hildenbrand <david@redhat.com>
On Thu, Mar 30, 2023 at 12:07:11PM -0400, Peter Xu wrote:
> Subject: selftests/mm: Reuse pagemap_get_entry() in vm_util.h
Nit: selftests/mm/uffd:
> Meanwhile drop pagemap_read_vaddr().
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org>
> ---
> tools/testing/selftests/mm/userfaultfd.c | 31 +++++++-----------------
> 1 file changed, 9 insertions(+), 22 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/userfaultfd.c b/tools/testing/selftests/mm/userfaultfd.c
> index 7e841f7e2884..795fbc4d84f8 100644
> --- a/tools/testing/selftests/mm/userfaultfd.c
> +++ b/tools/testing/selftests/mm/userfaultfd.c
> @@ -1399,19 +1399,6 @@ static int pagemap_open(void)
> return fd;
> }
>
> -static uint64_t pagemap_read_vaddr(int fd, void *vaddr)
> -{
> - uint64_t value;
> - int ret;
> -
> - ret = pread(fd, &value, sizeof(uint64_t),
> - ((uint64_t)vaddr >> 12) * sizeof(uint64_t));
> - if (ret != sizeof(uint64_t))
> - err("pread() on pagemap failed");
> -
> - return value;
> -}
> -
> /* This macro let __LINE__ works in err() */
> #define pagemap_check_wp(value, wp) do { \
> if (!!(value & PM_UFFD_WP) != wp) \
> @@ -1427,7 +1414,7 @@ static int pagemap_test_fork(bool present)
> if (!child) {
> /* Open the pagemap fd of the child itself */
> fd = pagemap_open();
> - value = pagemap_read_vaddr(fd, area_dst);
> + value = pagemap_get_entry(fd, area_dst);
> /*
> * After fork() uffd-wp bit should be gone as long as we're
> * without UFFD_FEATURE_EVENT_FORK
> @@ -1446,24 +1433,24 @@ static void userfaultfd_wp_unpopulated_test(int pagemap_fd)
>
> /* Test applying pte marker to anon unpopulated */
> wp_range(uffd, (uint64_t)area_dst, page_size, true);
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, true);
>
> /* Test unprotect on anon pte marker */
> wp_range(uffd, (uint64_t)area_dst, page_size, false);
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
>
> /* Test zap on anon marker */
> wp_range(uffd, (uint64_t)area_dst, page_size, true);
> if (madvise(area_dst, page_size, MADV_DONTNEED))
> err("madvise(MADV_DONTNEED) failed");
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
>
> /* Test fault in after marker removed */
> *area_dst = 1;
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
> /* Drop it to make pte none again */
> if (madvise(area_dst, page_size, MADV_DONTNEED))
> @@ -1522,7 +1509,7 @@ static void userfaultfd_pagemap_test(unsigned int test_pgsize)
> /* Touch the page */
> *area_dst = 1;
> wp_range(uffd, (uint64_t)area_dst, test_pgsize, true);
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, true);
> /* Make sure uffd-wp bit dropped when fork */
> if (pagemap_test_fork(true))
> @@ -1536,7 +1523,7 @@ static void userfaultfd_pagemap_test(unsigned int test_pgsize)
> err("madvise(MADV_PAGEOUT) failed");
>
> /* Uffd-wp should persist even swapped out */
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, true);
> /* Make sure uffd-wp bit dropped when fork */
> if (pagemap_test_fork(false))
> @@ -1544,12 +1531,12 @@ static void userfaultfd_pagemap_test(unsigned int test_pgsize)
>
> /* Unprotect; this tests swap pte modifications */
> wp_range(uffd, (uint64_t)area_dst, page_size, false);
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
>
> /* Fault in the page from disk */
> *area_dst = 2;
> - value = pagemap_read_vaddr(pagemap_fd, area_dst);
> + value = pagemap_get_entry(pagemap_fd, area_dst);
> pagemap_check_wp(value, false);
>
> close(pagemap_fd);
> --
> 2.39.1
>
@@ -1399,19 +1399,6 @@ static int pagemap_open(void)
return fd;
}
-static uint64_t pagemap_read_vaddr(int fd, void *vaddr)
-{
- uint64_t value;
- int ret;
-
- ret = pread(fd, &value, sizeof(uint64_t),
- ((uint64_t)vaddr >> 12) * sizeof(uint64_t));
- if (ret != sizeof(uint64_t))
- err("pread() on pagemap failed");
-
- return value;
-}
-
/* This macro let __LINE__ works in err() */
#define pagemap_check_wp(value, wp) do { \
if (!!(value & PM_UFFD_WP) != wp) \
@@ -1427,7 +1414,7 @@ static int pagemap_test_fork(bool present)
if (!child) {
/* Open the pagemap fd of the child itself */
fd = pagemap_open();
- value = pagemap_read_vaddr(fd, area_dst);
+ value = pagemap_get_entry(fd, area_dst);
/*
* After fork() uffd-wp bit should be gone as long as we're
* without UFFD_FEATURE_EVENT_FORK
@@ -1446,24 +1433,24 @@ static void userfaultfd_wp_unpopulated_test(int pagemap_fd)
/* Test applying pte marker to anon unpopulated */
wp_range(uffd, (uint64_t)area_dst, page_size, true);
- value = pagemap_read_vaddr(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, area_dst);
pagemap_check_wp(value, true);
/* Test unprotect on anon pte marker */
wp_range(uffd, (uint64_t)area_dst, page_size, false);
- value = pagemap_read_vaddr(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, area_dst);
pagemap_check_wp(value, false);
/* Test zap on anon marker */
wp_range(uffd, (uint64_t)area_dst, page_size, true);
if (madvise(area_dst, page_size, MADV_DONTNEED))
err("madvise(MADV_DONTNEED) failed");
- value = pagemap_read_vaddr(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, area_dst);
pagemap_check_wp(value, false);
/* Test fault in after marker removed */
*area_dst = 1;
- value = pagemap_read_vaddr(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, area_dst);
pagemap_check_wp(value, false);
/* Drop it to make pte none again */
if (madvise(area_dst, page_size, MADV_DONTNEED))
@@ -1522,7 +1509,7 @@ static void userfaultfd_pagemap_test(unsigned int test_pgsize)
/* Touch the page */
*area_dst = 1;
wp_range(uffd, (uint64_t)area_dst, test_pgsize, true);
- value = pagemap_read_vaddr(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, area_dst);
pagemap_check_wp(value, true);
/* Make sure uffd-wp bit dropped when fork */
if (pagemap_test_fork(true))
@@ -1536,7 +1523,7 @@ static void userfaultfd_pagemap_test(unsigned int test_pgsize)
err("madvise(MADV_PAGEOUT) failed");
/* Uffd-wp should persist even swapped out */
- value = pagemap_read_vaddr(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, area_dst);
pagemap_check_wp(value, true);
/* Make sure uffd-wp bit dropped when fork */
if (pagemap_test_fork(false))
@@ -1544,12 +1531,12 @@ static void userfaultfd_pagemap_test(unsigned int test_pgsize)
/* Unprotect; this tests swap pte modifications */
wp_range(uffd, (uint64_t)area_dst, page_size, false);
- value = pagemap_read_vaddr(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, area_dst);
pagemap_check_wp(value, false);
/* Fault in the page from disk */
*area_dst = 2;
- value = pagemap_read_vaddr(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, area_dst);
pagemap_check_wp(value, false);
close(pagemap_fd);