From: "Mike Rapoport (Microsoft)" <[email protected]>

hugepage_dio test fails if there are no free huge pages prepared by a
wrapper script.

Add setup of HugeTLB pages to the test and make sure that the original
settings are restored on the test exit.

Signed-off-by: Mike Rapoport (Microsoft) <[email protected]>
---
 tools/testing/selftests/mm/hugetlb_dio.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/tools/testing/selftests/mm/hugetlb_dio.c 
b/tools/testing/selftests/mm/hugetlb_dio.c
index 47019433ddaf..fb4600570e13 100644
--- a/tools/testing/selftests/mm/hugetlb_dio.c
+++ b/tools/testing/selftests/mm/hugetlb_dio.c
@@ -85,8 +85,6 @@ static void run_dio_using_hugetlb(int fd, unsigned int 
start_off,
 
        /* Get the default huge page size */
        h_pagesize = default_huge_page_size();
-       if (!h_pagesize)
-               ksft_exit_fail_msg("Unable to determine huge page size\n");
 
        /* Reset file position since fd is shared across tests */
        if (lseek(fd, 0, SEEK_SET) < 0)
@@ -94,10 +92,6 @@ static void run_dio_using_hugetlb(int fd, unsigned int 
start_off,
 
        /* Get the free huge pages before allocation */
        free_hpage_b = hugetlb_free_default_pages();
-       if (free_hpage_b == 0) {
-               close(fd);
-               ksft_exit_skip("No free hugepage, exiting!\n");
-       }
 
        /* Allocate a hugetlb page */
        orig_buffer = mmap(NULL, h_pagesize, mmap_prot, mmap_flags, -1, 0);
@@ -141,8 +135,8 @@ int main(void)
 
        ksft_print_header();
 
-       /* Check if huge pages are free */
-       if (!hugetlb_free_default_pages())
+       /* request a huge page */
+       if (!hugetlb_setup_default(1))
                ksft_exit_skip("No free hugepage, exiting\n");
 
        fd = open("/tmp", O_TMPFILE | O_RDWR | O_DIRECT, 0664);
-- 
2.53.0


Reply via email to