From 024d3d75d046f2869ee70531883bbad51512e1e1 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 3 Oct 2024 22:34:16 +0200 Subject: [PATCH] Skip test if mmap fails due to `ENOMEM` or `EINVAL` --- tools/testing/selftests/drivers/dma-buf/udmabuf.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/drivers/dma-buf/udmabuf.c b/tools/testing/selftests/drivers/dma-buf/udmabuf.c index 6062723a172e..57fe2768d747 100644 --- a/tools/testing/selftests/drivers/dma-buf/udmabuf.c +++ b/tools/testing/selftests/drivers/dma-buf/udmabuf.c @@ -99,8 +99,14 @@ static void *mmap_fd(int fd, off64_t size) addr = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { - ksft_print_msg("%s: ubuf_fd mmap fail\n", TEST_PREFIX); - exit(KSFT_FAIL); + if (errno == ENOMEM || errno == EINVAL) { + ksft_print_msg("%s: ubuf_fd mmap fail, hugepages probably disabled\n", TEST_PREFIX); + exit(KSFT_SKIP); + } + else { + ksft_print_msg("%s: ubuf_fd mmap fail\n", TEST_PREFIX); + exit(KSFT_FAIL); + } } return addr; @@ -234,6 +240,7 @@ int main(int argc, char *argv[]) close(memfd); /* should work (migration of 2MB size huge pages)*/ + // TODO: Are huge pages enabled? page_size = getpagesize() * 512; /* 2 MB */ size = MEMFD_SIZE * page_size; memfd = create_memfd_with_seals(size, true);