]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/mm: skip uffd-stress test when nr_pages_per_cpu is zero
authorSayali Patil <sayalip@linux.ibm.com>
Thu, 21 May 2026 06:47:51 +0000 (12:17 +0530)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 21 Jun 2026 18:37:34 +0000 (11:37 -0700)
uffd-stress currently fails when the computed nr_pages_per_cpu evaluates
to zero:

nr_pages_per_cpu = bytes / page_size / nr_parallel

This can occur on systems with large hugepage sizes (e.g.  1GB) and a high
number of CPUs, where the total allocated memory is sufficient overall but
not enough to provide at least one page per cpu.

In such cases, the failure is due to insufficient test resources rather
than incorrect kernel behaviour.  Update the test to treat this condition
as a test skip instead of reporting an error.

[sayalip@linux.ibm.com: use ksft_exit_skip() instead of KSFT_SKIP]
Link: https://lore.kernel.org/88202b56-1dc5-43e2-9d1f-a0823a9531f0@linux.ibm.com
Link: https://lore.kernel.org/0707e9a0f1b3dd904c4a069b91db317f9c160faa.1779296493.git.sayalip@linux.ibm.com
Fixes: db0f1c138f18 ("selftests/mm: print some details when uffd-stress gets bad params")
Signed-off-by: Sayali Patil <sayalip@linux.ibm.com>
Acked-by: Zi Yan <ziy@nvidia.com>
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Cc: Dev Jain <dev.jain@arm.com>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
tools/testing/selftests/mm/uffd-stress.c

index 43cc79590136658d90689313dea80f9b06a7e91f..3401dd6028f06d31f28651a0f11cb8882c2ab730 100644 (file)
@@ -489,9 +489,8 @@ int main(int argc, char **argv)
 
        gopts->nr_pages_per_cpu = bytes / gopts->page_size / gopts->nr_parallel;
        if (!gopts->nr_pages_per_cpu) {
-               _err("pages_per_cpu = 0, cannot test (%lu / %lu / %lu)",
-                       bytes, gopts->page_size, gopts->nr_parallel);
-               usage();
+               ksft_exit_skip("pages_per_cpu = 0, cannot test (%zu / %lu / %lu)\n",
+                              bytes, gopts->page_size, gopts->nr_parallel);
        }
 
        bounces = atoi(argv[3]);