Skip test if mmap fails due to ENOMEM or EINVAL

This commit is contained in:
Steffo 2024-10-03 22:34:16 +02:00
parent 38cde27f74
commit 024d3d75d0
Signed by: steffo
GPG key ID: 5ADA3868646C3FC0

View file

@ -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); addr = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
if (addr == MAP_FAILED) { if (addr == MAP_FAILED) {
ksft_print_msg("%s: ubuf_fd mmap fail\n", TEST_PREFIX); if (errno == ENOMEM || errno == EINVAL) {
exit(KSFT_FAIL); 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; return addr;
@ -234,6 +240,7 @@ int main(int argc, char *argv[])
close(memfd); close(memfd);
/* should work (migration of 2MB size huge pages)*/ /* should work (migration of 2MB size huge pages)*/
// TODO: Are huge pages enabled?
page_size = getpagesize() * 512; /* 2 MB */ page_size = getpagesize() * 512; /* 2 MB */
size = MEMFD_SIZE * page_size; size = MEMFD_SIZE * page_size;
memfd = create_memfd_with_seals(size, true); memfd = create_memfd_with_seals(size, true);