All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] [PATCH] lib/tst_hugepage: TCONF when huge pages are not supported
@ 2020-04-22  7:13 Jan Stancek
  2020-04-22  8:29 ` Li Wang
  2020-04-22 11:40 ` [LTP] [PATCH v2] hugetlb: check for requested huge pages first Jan Stancek
  0 siblings, 2 replies; 6+ messages in thread
From: Jan Stancek @ 2020-04-22  7:13 UTC (permalink / raw)
  To: ltp

/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

End the test with TCONF to avoid TBROK on mmap, set_sys_tune, etc.

Signed-off-by: Jan Stancek <jstancek@redhat.com>
---
 lib/tst_hugepage.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/tst_hugepage.c b/lib/tst_hugepage.c
index 52667a14e8ff..eb66c4fbbc91 100644
--- a/lib/tst_hugepage.c
+++ b/lib/tst_hugepage.c
@@ -18,7 +18,7 @@ unsigned long tst_request_hugepages(unsigned long hpages)
 
 	if (access(PATH_HUGEPAGES, F_OK)) {
 		tst_hugepages = 0;
-		goto out;
+		tst_brk(TCONF, "Huge pages not supported.");
 	}
 
 	if (nr_opt)
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [LTP] [PATCH] lib/tst_hugepage: TCONF when huge pages are not supported
  2020-04-22  7:13 [LTP] [PATCH] lib/tst_hugepage: TCONF when huge pages are not supported Jan Stancek
@ 2020-04-22  8:29 ` Li Wang
  2020-04-22 11:33   ` Jan Stancek
  2020-04-22 11:40 ` [LTP] [PATCH v2] hugetlb: check for requested huge pages first Jan Stancek
  1 sibling, 1 reply; 6+ messages in thread
From: Li Wang @ 2020-04-22  8:29 UTC (permalink / raw)
  To: ltp

Hi Jan,

On Wed, Apr 22, 2020 at 3:13 PM Jan Stancek <jstancek@redhat.com> wrote:

> /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
>
> End the test with TCONF to avoid TBROK on mmap, set_sys_tune, etc.
>
> Signed-off-by: Jan Stancek <jstancek@redhat.com>
> ---
>  lib/tst_hugepage.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/tst_hugepage.c b/lib/tst_hugepage.c
> index 52667a14e8ff..eb66c4fbbc91 100644
> --- a/lib/tst_hugepage.c
> +++ b/lib/tst_hugepage.c
> @@ -18,7 +18,7 @@ unsigned long tst_request_hugepages(unsigned long hpages)
>
>         if (access(PATH_HUGEPAGES, F_OK)) {
>                 tst_hugepages = 0;
> -               goto out;
> +               tst_brk(TCONF, "Huge pages not supported.");
>

We don't do that because hugetlb is not the hard requirement for some tests
(i.e pkey01.c). If we exit with TCONF at an early phase on a non-hugetlb
system the remaining test will be missed too. In a word, the goto out here
is on purpose.


>         }
>
>         if (nr_opt)
> --
> 2.18.1
>
>

-- 
Regards,
Li Wang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linux.it/pipermail/ltp/attachments/20200422/4c25d7a1/attachment.htm>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [LTP] [PATCH] lib/tst_hugepage: TCONF when huge pages are not supported
  2020-04-22  8:29 ` Li Wang
@ 2020-04-22 11:33   ` Jan Stancek
  0 siblings, 0 replies; 6+ messages in thread
From: Jan Stancek @ 2020-04-22 11:33 UTC (permalink / raw)
  To: ltp




----- Original Message -----
> >         if (access(PATH_HUGEPAGES, F_OK)) {
> >                 tst_hugepages = 0;
> > -               goto out;
> > +               tst_brk(TCONF, "Huge pages not supported.");
> >
> 
> We don't do that because hugetlb is not the hard requirement for some tests
> (i.e pkey01.c). If we exit with TCONF at an early phase on a non-hugetlb
> system the remaining test will be missed too. In a word, the goto out here
> is on purpose.

Then it's a bit strange it TBROKs if it can't reserve enough huge pages.

I'll send v2, that's checking tst_hugepages. Almost all tests appear to have the 
check already, it just needs to be moved up a little in setup().


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [LTP] [PATCH v2] hugetlb: check for requested huge pages first
  2020-04-22  7:13 [LTP] [PATCH] lib/tst_hugepage: TCONF when huge pages are not supported Jan Stancek
  2020-04-22  8:29 ` Li Wang
@ 2020-04-22 11:40 ` Jan Stancek
  2020-04-22 11:49   ` Li Wang
  1 sibling, 1 reply; 6+ messages in thread
From: Jan Stancek @ 2020-04-22 11:40 UTC (permalink / raw)
  To: ltp

/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 <jstancek@redhat.com>
---
 testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c   | 6 +++---
 testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c   | 6 +++---
 testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c   | 6 +++---
 testcases/kernel/mem/hugetlb/hugemmap/hugemmap06.c   | 2 +-
 testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c | 3 +++
 testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat05.c | 6 +++---
 6 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c
index 891c42e4613c..d7ea6d87ae85 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c
@@ -77,13 +77,13 @@ static void test_hugemmap(void)
 
 void setup(void)
 {
+	if (tst_hugepages == 0)
+		tst_brk(TCONF, "Not enough hugepages for testing.");
+
 	if (!Hopt)
 		Hopt = tst_get_tmpdir();
 	SAFE_MOUNT("none", Hopt, "hugetlbfs", 0, NULL);
 
-	if (tst_hugepages == 0)
-		tst_brk(TCONF, "No enough hugepages for testing.");
-
 	snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", Hopt, getpid());
 }
 
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
index c0dbb60d659e..85f39c5d5829 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
@@ -124,13 +124,13 @@ static void test_hugemmap(void)
 
 static void setup(void)
 {
+	if (tst_hugepages == 0)
+		tst_brk(TCONF, "Not enough hugepages for testing.");
+
 	if (!Hopt)
 		Hopt = tst_get_tmpdir();
 	SAFE_MOUNT("none", Hopt, "hugetlbfs", 0, NULL);
 
-	if (tst_hugepages == 0)
-		tst_brk(TCONF, "No enough hugepages for testing.");
-
 	snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", Hopt, getpid());
 }
 
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
index 5fcbe27891c6..7c8ed8a78975 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
@@ -95,13 +95,13 @@ static void test_hugemmap(void)
 
 void setup(void)
 {
+	if (tst_hugepages == 0)
+		tst_brk(TCONF, "Not enough hugepages for testing!");
+
 	if (!Hopt)
 		Hopt = tst_get_tmpdir();
 	SAFE_MOUNT("none", Hopt, "hugetlbfs", 0, NULL);
 
-	if (tst_hugepages == 0)
-		tst_brk(TCONF, "No enough hugepages for testing!");
-
 	snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d", Hopt, getpid());
 }
 
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap06.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap06.c
index 93f9af7f3901..ab2ccc40b82d 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap06.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap06.c
@@ -39,9 +39,9 @@ struct mp {
 
 static void setup(void)
 {
-	hpage_size = SAFE_READ_MEMINFO("Hugepagesize:") * 1024;
 	if (tst_hugepages != test.request_hugepages)
 		tst_brk(TCONF, "System RAM is not enough to test.");
+	hpage_size = SAFE_READ_MEMINFO("Hugepagesize:") * 1024;
 }
 
 static void *thr(void *arg)
diff --git a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c
index 0808496711fc..e9bb9fbf7b4b 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c
@@ -74,6 +74,9 @@ static void setup(void)
 {
 	long mem_total, hpage_size, orig_hugepages;
 
+	if (tst_hugepages == 0)
+		tst_brk(TCONF, "Not enough hugepages for testing.");
+
 	orig_hugepages = get_sys_tune("nr_hugepages");
 	mem_total = SAFE_READ_MEMINFO("MemTotal:");
 	SAFE_FILE_SCANF(PATH_SHMMAX, "%ld", &orig_shmmax);
diff --git a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat05.c b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat05.c
index a30e1e3c3d3f..7152e3363acd 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat05.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat05.c
@@ -35,11 +35,11 @@ static long hpage_size;
 
 void setup(void)
 {
+	if (tst_hugepages != test.request_hugepages)
+		tst_brk(TCONF, "Not enough hugepages for testing.");
+
 	page_size = getpagesize();
 	hpage_size = SAFE_READ_MEMINFO("Hugepagesize:") * 1024;
-
-	if (tst_hugepages != test.request_hugepages)
-		tst_brk(TCONF, "No enough hugepages for testing.");
 }
 
 void shm_test(int size)
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [LTP] [PATCH v2] hugetlb: check for requested huge pages first
  2020-04-22 11:40 ` [LTP] [PATCH v2] hugetlb: check for requested huge pages first Jan Stancek
@ 2020-04-22 11:49   ` Li Wang
  2020-04-22 12:31     ` Jan Stancek
  0 siblings, 1 reply; 6+ messages in thread
From: Li Wang @ 2020-04-22 11:49 UTC (permalink / raw)
  To: ltp

On Wed, Apr 22, 2020 at 7:40 PM Jan Stancek <jstancek@redhat.com> wrote:

> /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 <jstancek@redhat.com>
>
Acked-by: Li Wang <liwang@redhat.com>

This is obviously right! ACK.

-- 
Regards,
Li Wang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linux.it/pipermail/ltp/attachments/20200422/4d0a864b/attachment-0001.htm>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [LTP] [PATCH v2] hugetlb: check for requested huge pages first
  2020-04-22 11:49   ` Li Wang
@ 2020-04-22 12:31     ` Jan Stancek
  0 siblings, 0 replies; 6+ messages in thread
From: Jan Stancek @ 2020-04-22 12:31 UTC (permalink / raw)
  To: ltp



----- Original Message -----
> On Wed, Apr 22, 2020 at 7:40 PM Jan Stancek <jstancek@redhat.com> wrote:
> 
> > /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 <jstancek@redhat.com>
> >
> Acked-by: Li Wang <liwang@redhat.com>
> 
> This is obviously right! ACK.

Pushed.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-04-22 12:31 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-22  7:13 [LTP] [PATCH] lib/tst_hugepage: TCONF when huge pages are not supported Jan Stancek
2020-04-22  8:29 ` Li Wang
2020-04-22 11:33   ` Jan Stancek
2020-04-22 11:40 ` [LTP] [PATCH v2] hugetlb: check for requested huge pages first Jan Stancek
2020-04-22 11:49   ` Li Wang
2020-04-22 12:31     ` Jan Stancek

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.