summaryrefslogtreecommitdiff
path: root/powerpc/mm/hugetlb_vs_thp_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'powerpc/mm/hugetlb_vs_thp_test.c')
-rw-r--r--powerpc/mm/hugetlb_vs_thp_test.c72
1 files changed, 0 insertions, 72 deletions
diff --git a/powerpc/mm/hugetlb_vs_thp_test.c b/powerpc/mm/hugetlb_vs_thp_test.c
deleted file mode 100644
index 3d8e5b0..0000000
--- a/powerpc/mm/hugetlb_vs_thp_test.c
+++ /dev/null
@@ -1,72 +0,0 @@
-#include <stdio.h>
-#include <sys/mman.h>
-#include <unistd.h>
-
-#include "utils.h"
-
-/* This must match the huge page & THP size */
-#define SIZE (16 * 1024 * 1024)
-
-static int test_body(void)
-{
- void *addr;
- char *p;
-
- addr = (void *)0xa0000000;
-
- p = mmap(addr, SIZE, PROT_READ | PROT_WRITE,
- MAP_HUGETLB | MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
- if (p != MAP_FAILED) {
- /*
- * Typically the mmap will fail because no huge pages are
- * allocated on the system. But if there are huge pages
- * allocated the mmap will succeed. That's fine too, we just
- * munmap here before continuing.
- */
- munmap(addr, SIZE);
- }
-
- p = mmap(addr, SIZE, PROT_READ | PROT_WRITE,
- MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
- if (p == MAP_FAILED) {
- printf("Mapping failed @ %p\n", addr);
- perror("mmap");
- return 1;
- }
-
- /*
- * Either a user or kernel access is sufficient to trigger the bug.
- * A kernel access is easier to spot & debug, as it will trigger the
- * softlockup or RCU stall detectors, and when the system is kicked
- * into xmon we get a backtrace in the kernel.
- *
- * A good option is:
- * getcwd(p, SIZE);
- *
- * For the purposes of this testcase it's preferable to spin in
- * userspace, so the harness can kill us if we get stuck. That way we
- * see a test failure rather than a dead system.
- */
- *p = 0xf;
-
- munmap(addr, SIZE);
-
- return 0;
-}
-
-static int test_main(void)
-{
- int i;
-
- /* 10,000 because it's a "bunch", and completes reasonably quickly */
- for (i = 0; i < 10000; i++)
- if (test_body())
- return 1;
-
- return 0;
-}
-
-int main(void)
-{
- return test_harness(test_main, "hugetlb_vs_thp");
-}