}
 
 int hugetlb_setup_ok;
+#define SYSFS_FMT_NR_HUGE_PAGES "/sys/kernel/mm/hugepages/hugepages-%ldkB/nr_hugepages"
 #define GET_NR_HUGE_PAGES 10
 void setup_hugetlbfs(void)
 {
        int err;
        int fd;
-       char buf[] = "123";
+       char buf[256];
+       long hpagesz_kb;
+       long hpagesz_mb;
 
        if (geteuid() != 0) {
                fprintf(stderr, "WARNING: not run as root, can not do hugetlb test\n");
 
        /*
         * Now go make sure that we got the pages and that they
-        * are 2M pages.  Someone might have made 1G the default.
+        * are PMD-level pages. Someone might have made PUD-level
+        * pages the default.
         */
-       fd = open("/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages", O_RDONLY);
+       hpagesz_kb = HPAGE_SIZE / 1024;
+       hpagesz_mb = hpagesz_kb / 1024;
+       sprintf(buf, SYSFS_FMT_NR_HUGE_PAGES, hpagesz_kb);
+       fd = open(buf, O_RDONLY);
        if (fd < 0) {
-               perror("opening sysfs 2M hugetlb config");
+               fprintf(stderr, "opening sysfs %ldM hugetlb config: %s\n",
+                       hpagesz_mb, strerror(errno));
                return;
        }
 
        err = read(fd, buf, sizeof(buf)-1);
        close(fd);
        if (err <= 0) {
-               perror("reading sysfs 2M hugetlb config");
+               fprintf(stderr, "reading sysfs %ldM hugetlb config: %s\n",
+                       hpagesz_mb, strerror(errno));
                return;
        }
 
        if (atoi(buf) != GET_NR_HUGE_PAGES) {
-               fprintf(stderr, "could not confirm 2M pages, got: '%s' expected %d\n",
-                       buf, GET_NR_HUGE_PAGES);
+               fprintf(stderr, "could not confirm %ldM pages, got: '%s' expected %d\n",
+                       hpagesz_mb, buf, GET_NR_HUGE_PAGES);
                return;
        }