]>
git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - tools/testing/selftests/powerpc/mm/hugetlb_vs_thp_test.c
7 /* This must match the huge page & THP size */
8 #define SIZE (16 * 1024 * 1024)
10 static int test_body(void)
15 addr
= (void *)0xa0000000;
17 p
= mmap(addr
, SIZE
, PROT_READ
| PROT_WRITE
,
18 MAP_HUGETLB
| MAP_ANONYMOUS
| MAP_PRIVATE
, -1, 0);
19 if (p
!= MAP_FAILED
) {
21 * Typically the mmap will fail because no huge pages are
22 * allocated on the system. But if there are huge pages
23 * allocated the mmap will succeed. That's fine too, we just
24 * munmap here before continuing.
29 p
= mmap(addr
, SIZE
, PROT_READ
| PROT_WRITE
,
30 MAP_ANONYMOUS
| MAP_PRIVATE
, -1, 0);
31 if (p
== MAP_FAILED
) {
32 printf("Mapping failed @ %p\n", addr
);
38 * Either a user or kernel access is sufficient to trigger the bug.
39 * A kernel access is easier to spot & debug, as it will trigger the
40 * softlockup or RCU stall detectors, and when the system is kicked
41 * into xmon we get a backtrace in the kernel.
46 * For the purposes of this testcase it's preferable to spin in
47 * userspace, so the harness can kill us if we get stuck. That way we
48 * see a test failure rather than a dead system.
57 static int test_main(void)
61 /* 10,000 because it's a "bunch", and completes reasonably quickly */
62 for (i
= 0; i
< 10000; i
++)
71 return test_harness(test_main
, "hugetlb_vs_thp");