selftests/mm: use PM_* macros in vm_utils.h
authorPeter Xu <peterx@redhat.com>
Wed, 12 Apr 2023 16:42:27 +0000 (12:42 -0400)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 18 Apr 2023 23:30:03 +0000 (16:30 -0700)
We've got the macros in uffd-stress.c, move it over and use it in
vm_util.h.

Link: https://lkml.kernel.org/r/20230412164227.328145-1-peterx@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Axel Rasmussen <axelrasmussen@google.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org>
Cc: Dmitry Safonov <0x7f454c46@gmail.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Zach O'Keefe <zokeefe@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/mm/userfaultfd.c
tools/testing/selftests/mm/vm_util.c
tools/testing/selftests/mm/vm_util.h

index 4cc80a0..7e841f7 100644 (file)
@@ -1389,14 +1389,6 @@ static int userfaultfd_minor_test(void)
        return stats.missing_faults != 0 || stats.minor_faults != nr_pages;
 }
 
-#define BIT_ULL(nr)                   (1ULL << (nr))
-#define PM_SOFT_DIRTY                 BIT_ULL(55)
-#define PM_MMAP_EXCLUSIVE             BIT_ULL(56)
-#define PM_UFFD_WP                    BIT_ULL(57)
-#define PM_FILE                       BIT_ULL(61)
-#define PM_SWAP                       BIT_ULL(62)
-#define PM_PRESENT                    BIT_ULL(63)
-
 static int pagemap_open(void)
 {
        int fd = open("/proc/self/pagemap", O_RDONLY);
index 7ffad87..54d227d 100644 (file)
@@ -25,25 +25,17 @@ uint64_t pagemap_get_entry(int fd, char *start)
 
 bool pagemap_is_softdirty(int fd, char *start)
 {
-       uint64_t entry = pagemap_get_entry(fd, start);
-
-       // Check if dirty bit (55th bit) is set
-       return entry & 0x0080000000000000ull;
+       return pagemap_get_entry(fd, start) & PM_SOFT_DIRTY;
 }
 
 bool pagemap_is_swapped(int fd, char *start)
 {
-       uint64_t entry = pagemap_get_entry(fd, start);
-
-       return entry & 0x4000000000000000ull;
+       return pagemap_get_entry(fd, start) & PM_SWAP;
 }
 
 bool pagemap_is_populated(int fd, char *start)
 {
-       uint64_t entry = pagemap_get_entry(fd, start);
-
-       /* Present or swapped. */
-       return entry & 0xc000000000000000ull;
+       return pagemap_get_entry(fd, start) & (PM_PRESENT | PM_SWAP);
 }
 
 unsigned long pagemap_get_pfn(int fd, char *start)
@@ -51,7 +43,7 @@ unsigned long pagemap_get_pfn(int fd, char *start)
        uint64_t entry = pagemap_get_entry(fd, start);
 
        /* If present (63th bit), PFN is at bit 0 -- 54. */
-       if (entry & 0x8000000000000000ull)
+       if (entry & PM_PRESENT)
                return entry & 0x007fffffffffffffull;
        return -1ul;
 }
index d7163ff..d9faddd 100644 (file)
@@ -6,6 +6,14 @@
 #include <string.h> /* ffsl() */
 #include <unistd.h> /* _SC_PAGESIZE */
 
+#define BIT_ULL(nr)                   (1ULL << (nr))
+#define PM_SOFT_DIRTY                 BIT_ULL(55)
+#define PM_MMAP_EXCLUSIVE             BIT_ULL(56)
+#define PM_UFFD_WP                    BIT_ULL(57)
+#define PM_FILE                       BIT_ULL(61)
+#define PM_SWAP                       BIT_ULL(62)
+#define PM_PRESENT                    BIT_ULL(63)
+
 extern unsigned int __page_size;
 extern unsigned int __page_shift;