Skip to content

Commit ed90cb6

Browse files
committed
hugetlb: check for requested huge pages first
/sys/kernel/mm/hugepages is not present when there are no supported hugepage sizes. This is common for ppc64le KVM guests, when hypervisor does not enable hugepages. Guest will boot with: hugetlbfs: disabling because there are no supported hugepage sizes # cat /proc/filesystems | grep huge; echo $? 1 Move the check up in setup to check it as first thing to avoid running into TBROK on mount or set_sys_tune when hugetlbfs is not available: safe_macros.c:766: BROK: hugemmap01.c:82: mount(none, /mnt/testarea/ltp-07Kg6lCOmm/Ai9D0M, hugetlbfs, 0, (nil)) failed: ENODEV (19) safe_macros.c:766: BROK: hugemmap02.c:129: mount(none, /mnt/testarea/ltp-07Kg6lCOmm/Cxf7A6, hugetlbfs, 0, (nil)) failed: ENODEV (19) safe_macros.c:766: BROK: hugemmap04.c:100: mount(none, /mnt/testarea/ltp-07Kg6lCOmm/kS60Mk, hugetlbfs, 0, (nil)) failed: ENODEV (19) safe_file_ops.c:219: BROK: Expected 1 conversions got 0 at hugemmap06.c:42 safe_file_ops.c:155: BROK: The FILE '/proc/sys/vm/nr_hugepages' ended prematurely at mem.c:836 safe_file_ops.c:219: BROK: Expected 1 conversions got 0 at hugeshmat05.c:39 Signed-off-by: Jan Stancek <[email protected]> Acked-by: Li Wang <[email protected]>
1 parent 99fd2a1 commit ed90cb6

File tree

6 files changed

+16
-13
lines changed

6 files changed

+16
-13
lines changed

testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,13 @@ static void test_hugemmap(void)
7777

7878
void setup(void)
7979
{
80+
if (tst_hugepages == 0)
81+
tst_brk(TCONF, "Not enough hugepages for testing.");
82+
8083
if (!Hopt)
8184
Hopt = tst_get_tmpdir();
8285
SAFE_MOUNT("none", Hopt, "hugetlbfs", 0, NULL);
8386

84-
if (tst_hugepages == 0)
85-
tst_brk(TCONF, "No enough hugepages for testing.");
86-
8787
snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", Hopt, getpid());
8888
}
8989

testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,13 @@ static void test_hugemmap(void)
124124

125125
static void setup(void)
126126
{
127+
if (tst_hugepages == 0)
128+
tst_brk(TCONF, "Not enough hugepages for testing.");
129+
127130
if (!Hopt)
128131
Hopt = tst_get_tmpdir();
129132
SAFE_MOUNT("none", Hopt, "hugetlbfs", 0, NULL);
130133

131-
if (tst_hugepages == 0)
132-
tst_brk(TCONF, "No enough hugepages for testing.");
133-
134134
snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", Hopt, getpid());
135135
}
136136

testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ static void test_hugemmap(void)
9595

9696
void setup(void)
9797
{
98+
if (tst_hugepages == 0)
99+
tst_brk(TCONF, "Not enough hugepages for testing!");
100+
98101
if (!Hopt)
99102
Hopt = tst_get_tmpdir();
100103
SAFE_MOUNT("none", Hopt, "hugetlbfs", 0, NULL);
101104

102-
if (tst_hugepages == 0)
103-
tst_brk(TCONF, "No enough hugepages for testing!");
104-
105105
snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", Hopt, getpid());
106106
}
107107

testcases/kernel/mem/hugetlb/hugemmap/hugemmap06.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ struct mp {
3939

4040
static void setup(void)
4141
{
42-
hpage_size = SAFE_READ_MEMINFO("Hugepagesize:") * 1024;
4342
if (tst_hugepages != test.request_hugepages)
4443
tst_brk(TCONF, "System RAM is not enough to test.");
44+
hpage_size = SAFE_READ_MEMINFO("Hugepagesize:") * 1024;
4545
}
4646

4747
static void *thr(void *arg)

testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ static void setup(void)
7474
{
7575
long mem_total, hpage_size, orig_hugepages;
7676

77+
if (tst_hugepages == 0)
78+
tst_brk(TCONF, "Not enough hugepages for testing.");
79+
7780
orig_hugepages = get_sys_tune("nr_hugepages");
7881
mem_total = SAFE_READ_MEMINFO("MemTotal:");
7982
SAFE_FILE_SCANF(PATH_SHMMAX, "%ld", &orig_shmmax);

testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat05.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ static long hpage_size;
3535

3636
void setup(void)
3737
{
38+
if (tst_hugepages != test.request_hugepages)
39+
tst_brk(TCONF, "Not enough hugepages for testing.");
40+
3841
page_size = getpagesize();
3942
hpage_size = SAFE_READ_MEMINFO("Hugepagesize:") * 1024;
40-
41-
if (tst_hugepages != test.request_hugepages)
42-
tst_brk(TCONF, "No enough hugepages for testing.");
4343
}
4444

4545
void shm_test(int size)

0 commit comments

Comments
 (0)