* [PATCH v1 1/3] selftests/mm: fix va_high_addr_switch.sh return value
@ 2025-12-07 12:22 Chunyu Hu
2025-12-07 12:22 ` [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh Chunyu Hu
2025-12-08 15:44 ` [PATCH v1 1/3] selftests/mm: fix va_high_addr_switch.sh return value Luiz Capitulino
0 siblings, 2 replies; 6+ messages in thread
From: Chunyu Hu @ 2025-12-07 12:22 UTC (permalink / raw)
To: akpm, david, shuah, linux-mm
Cc: linux-kselftest, linux-kernel, lorenzo.stoakes, Liam.Howlett,
vbabka, rppt, surenb, mhocko, chuhu, Luiz Capitulino
Patch series "Fix va_high_addr_switch.sh test failure - again", v1.
There are two issues exist for the va_high_addr_switch test. One issue is
the test return value is ignored in va_high_addr_switch.sh. The second is
the va_high_addr_switch requires 6 hugepages but it requires 5.
Besides that, the nr_hugepages setup in run_vmtests.sh for arm64 can be
done in va_high_addr_switch.sh too.
This patch: (of 3)
The return value should be return value of va_high_addr_switch, otherwise
a test failure would be silently ignored.
Fixes: d9d957bd7b61 ("selftests/mm: alloc hugepages in va_high_addr_switch test")
CC: Luiz Capitulino <luizcap@redhat.com>
Signed-off-by: Chunyu Hu <chuhu@redhat.com>
---
tools/testing/selftests/mm/va_high_addr_switch.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/testing/selftests/mm/va_high_addr_switch.sh b/tools/testing/selftests/mm/va_high_addr_switch.sh
index a7d4b02b21dd..f89fe078a8e6 100755
--- a/tools/testing/selftests/mm/va_high_addr_switch.sh
+++ b/tools/testing/selftests/mm/va_high_addr_switch.sh
@@ -114,4 +114,6 @@ save_nr_hugepages
# 4 keep_mapped pages, and one for tmp usage
setup_nr_hugepages 5
./va_high_addr_switch --run-hugetlb
+retcode=$?
restore_nr_hugepages
+exit $retcode
--
2.49.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh
2025-12-07 12:22 [PATCH v1 1/3] selftests/mm: fix va_high_addr_switch.sh return value Chunyu Hu
@ 2025-12-07 12:22 ` Chunyu Hu
2025-12-07 12:22 ` [PATCH v1 3/3] selftests/mm: remove arm64 nr_hugepages setup for va_high_addr_switch test Chunyu Hu
2025-12-08 15:47 ` [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh Luiz Capitulino
2025-12-08 15:44 ` [PATCH v1 1/3] selftests/mm: fix va_high_addr_switch.sh return value Luiz Capitulino
1 sibling, 2 replies; 6+ messages in thread
From: Chunyu Hu @ 2025-12-07 12:22 UTC (permalink / raw)
To: akpm, david, shuah, linux-mm
Cc: linux-kselftest, linux-kernel, lorenzo.stoakes, Liam.Howlett,
vbabka, rppt, surenb, mhocko, chuhu, Luiz Capitulino
The va_high_addr_switch test requires 6 hugepages, not 5. If running the
test directly by: ./va_high_addr_switch.sh, the test will hit a mmap 'FAIL'
caused by not enough hugepages:
```
mmap(addr_switch_hint - hugepagesize, 2*hugepagesize, MAP_HUGETLB): 0x7f330f800000 - OK
mmap(addr_switch_hint , 2*hugepagesize, MAP_FIXED | MAP_HUGETLB): 0xffffffffffffffff - FAILED
```
The failure can't be hit if run the tests by running 'run_vmtests.sh -t
hugevm' because the nr_hugepages is set to 128 at the beginning of
run_vmtests.sh and va_high_addr_switch.sh skip the setup of nr_hugepages
because already enough.
CC: Luiz Capitulino <luizcap@redhat.com>
Fixes: d9d957bd7b61 ("selftests/mm: alloc hugepages in va_high_addr_switch test")
Signed-off-by: Chunyu Hu <chuhu@redhat.com>
---
tools/testing/selftests/mm/va_high_addr_switch.sh | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/mm/va_high_addr_switch.sh b/tools/testing/selftests/mm/va_high_addr_switch.sh
index f89fe078a8e6..98f3dfab62c5 100755
--- a/tools/testing/selftests/mm/va_high_addr_switch.sh
+++ b/tools/testing/selftests/mm/va_high_addr_switch.sh
@@ -111,8 +111,10 @@ setup_nr_hugepages()
check_test_requirements
save_nr_hugepages
-# 4 keep_mapped pages, and one for tmp usage
-setup_nr_hugepages 5
+# 5 keep_mapped hugepages are reserved in the first testings, and the last test
+# requires two hugepages, with one verlaped with the last second test, so one
+# extra, totally 6 hugepages
+setup_nr_hugepages 6
./va_high_addr_switch --run-hugetlb
retcode=$?
restore_nr_hugepages
--
2.49.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1 3/3] selftests/mm: remove arm64 nr_hugepages setup for va_high_addr_switch test
2025-12-07 12:22 ` [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh Chunyu Hu
@ 2025-12-07 12:22 ` Chunyu Hu
2025-12-08 15:48 ` Luiz Capitulino
2025-12-08 15:47 ` [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh Luiz Capitulino
1 sibling, 1 reply; 6+ messages in thread
From: Chunyu Hu @ 2025-12-07 12:22 UTC (permalink / raw)
To: akpm, david, shuah, linux-mm
Cc: linux-kselftest, linux-kernel, lorenzo.stoakes, Liam.Howlett,
vbabka, rppt, surenb, mhocko, chuhu, Luiz Capitulino
arm64 and x86_64 has the same nr_hugepages requriement for running the
va_high_addr_switch test. Since commit d9d957bd7b61 ("selftests/mm: alloc
hugepages in va_high_addr_switch test"), the setup can be done in
va_high_addr_switch.sh. So remove the duplicated setup.
CC: Luiz Capitulino <luizcap@redhat.com>
Signed-off-by: Chunyu Hu <chuhu@redhat.com>
---
tools/testing/selftests/mm/run_vmtests.sh | 8 --------
1 file changed, 8 deletions(-)
diff --git a/tools/testing/selftests/mm/run_vmtests.sh b/tools/testing/selftests/mm/run_vmtests.sh
index d9173f2312b7..2dadbfc6e535 100755
--- a/tools/testing/selftests/mm/run_vmtests.sh
+++ b/tools/testing/selftests/mm/run_vmtests.sh
@@ -412,15 +412,7 @@ if [ $VADDR64 -ne 0 ]; then
fi
# va high address boundary switch test
- ARCH_ARM64="arm64"
- prev_nr_hugepages=$(cat /proc/sys/vm/nr_hugepages)
- if [ "$ARCH" == "$ARCH_ARM64" ]; then
- echo 6 > /proc/sys/vm/nr_hugepages
- fi
CATEGORY="hugevm" run_test bash ./va_high_addr_switch.sh
- if [ "$ARCH" == "$ARCH_ARM64" ]; then
- echo $prev_nr_hugepages > /proc/sys/vm/nr_hugepages
- fi
fi # VADDR64
# vmalloc stability smoke test
--
2.49.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1 1/3] selftests/mm: fix va_high_addr_switch.sh return value
2025-12-07 12:22 [PATCH v1 1/3] selftests/mm: fix va_high_addr_switch.sh return value Chunyu Hu
2025-12-07 12:22 ` [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh Chunyu Hu
@ 2025-12-08 15:44 ` Luiz Capitulino
1 sibling, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2025-12-08 15:44 UTC (permalink / raw)
To: Chunyu Hu, akpm, david, shuah, linux-mm
Cc: linux-kselftest, linux-kernel, lorenzo.stoakes, Liam.Howlett,
vbabka, rppt, surenb, mhocko
On 2025-12-07 07:22, Chunyu Hu wrote:
> Patch series "Fix va_high_addr_switch.sh test failure - again", v1.
>
> There are two issues exist for the va_high_addr_switch test. One issue is
> the test return value is ignored in va_high_addr_switch.sh. The second is
> the va_high_addr_switch requires 6 hugepages but it requires 5.
>
> Besides that, the nr_hugepages setup in run_vmtests.sh for arm64 can be
> done in va_high_addr_switch.sh too.
>
> This patch: (of 3)
>
> The return value should be return value of va_high_addr_switch, otherwise
> a test failure would be silently ignored.
>
> Fixes: d9d957bd7b61 ("selftests/mm: alloc hugepages in va_high_addr_switch test")
> CC: Luiz Capitulino <luizcap@redhat.com>
> Signed-off-by: Chunyu Hu <chuhu@redhat.com>
This fix is good, but there are two additional issues that need fixing
(maybe in separate patches):
1. In main() we do:
"""
ret = run_test(testcases, sz_testcases);
if (argc == 2 && !strcmp(argv[1], "--run-hugetlb"))
ret = run_test(hugetlb_testcases, sz_hugetlb_testcases);
"""
The second run_test() overwrites the return code of the first one, so if
the first fails and the second one succeeds, the test will report
success.
2. The following comment in va_high_addr_switch.sh is wrong in two
counts: there's an eligibility check for powerpc64 and the test doesn't
reject other architectures as it runs on arm64 as well.
"""
# The test supports x86_64 and powerpc64. We currently have no useful
# eligibility check for powerpc64, and the test itself will reject other
# architectures.
"""
For this fix:
Reviewed-by: Luiz Capitulino <luizcap@redhat.com>
> ---
> tools/testing/selftests/mm/va_high_addr_switch.sh | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/tools/testing/selftests/mm/va_high_addr_switch.sh b/tools/testing/selftests/mm/va_high_addr_switch.sh
> index a7d4b02b21dd..f89fe078a8e6 100755
> --- a/tools/testing/selftests/mm/va_high_addr_switch.sh
> +++ b/tools/testing/selftests/mm/va_high_addr_switch.sh
> @@ -114,4 +114,6 @@ save_nr_hugepages
> # 4 keep_mapped pages, and one for tmp usage
> setup_nr_hugepages 5
> ./va_high_addr_switch --run-hugetlb
> +retcode=$?
> restore_nr_hugepages
> +exit $retcode
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh
2025-12-07 12:22 ` [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh Chunyu Hu
2025-12-07 12:22 ` [PATCH v1 3/3] selftests/mm: remove arm64 nr_hugepages setup for va_high_addr_switch test Chunyu Hu
@ 2025-12-08 15:47 ` Luiz Capitulino
1 sibling, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2025-12-08 15:47 UTC (permalink / raw)
To: Chunyu Hu, akpm, david, shuah, linux-mm
Cc: linux-kselftest, linux-kernel, lorenzo.stoakes, Liam.Howlett,
vbabka, rppt, surenb, mhocko
On 2025-12-07 07:22, Chunyu Hu wrote:
> The va_high_addr_switch test requires 6 hugepages, not 5. If running the
> test directly by: ./va_high_addr_switch.sh, the test will hit a mmap 'FAIL'
> caused by not enough hugepages:
> ```
> mmap(addr_switch_hint - hugepagesize, 2*hugepagesize, MAP_HUGETLB): 0x7f330f800000 - OK
> mmap(addr_switch_hint , 2*hugepagesize, MAP_FIXED | MAP_HUGETLB): 0xffffffffffffffff - FAILED
> ```
> The failure can't be hit if run the tests by running 'run_vmtests.sh -t
> hugevm' because the nr_hugepages is set to 128 at the beginning of
> run_vmtests.sh and va_high_addr_switch.sh skip the setup of nr_hugepages
> because already enough.
>
> CC: Luiz Capitulino <luizcap@redhat.com>
> Fixes: d9d957bd7b61 ("selftests/mm: alloc hugepages in va_high_addr_switch test")
> Signed-off-by: Chunyu Hu <chuhu@redhat.com>
> ---
> tools/testing/selftests/mm/va_high_addr_switch.sh | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/va_high_addr_switch.sh b/tools/testing/selftests/mm/va_high_addr_switch.sh
> index f89fe078a8e6..98f3dfab62c5 100755
> --- a/tools/testing/selftests/mm/va_high_addr_switch.sh
> +++ b/tools/testing/selftests/mm/va_high_addr_switch.sh
> @@ -111,8 +111,10 @@ setup_nr_hugepages()
>
> check_test_requirements
> save_nr_hugepages
> -# 4 keep_mapped pages, and one for tmp usage
> -setup_nr_hugepages 5
> +# 5 keep_mapped hugepages are reserved in the first testings, and the last test
> +# requires two hugepages, with one verlaped with the last second test, so one
> +# extra, totally 6 hugepages
IMHO, I'd just say "The HugeTLB tests require 6 pages", otherwise the
fix look good to me.
> +setup_nr_hugepages 6
> ./va_high_addr_switch --run-hugetlb
> retcode=$?
> restore_nr_hugepages
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1 3/3] selftests/mm: remove arm64 nr_hugepages setup for va_high_addr_switch test
2025-12-07 12:22 ` [PATCH v1 3/3] selftests/mm: remove arm64 nr_hugepages setup for va_high_addr_switch test Chunyu Hu
@ 2025-12-08 15:48 ` Luiz Capitulino
0 siblings, 0 replies; 6+ messages in thread
From: Luiz Capitulino @ 2025-12-08 15:48 UTC (permalink / raw)
To: Chunyu Hu, akpm, david, shuah, linux-mm
Cc: linux-kselftest, linux-kernel, lorenzo.stoakes, Liam.Howlett,
vbabka, rppt, surenb, mhocko
On 2025-12-07 07:22, Chunyu Hu wrote:
> arm64 and x86_64 has the same nr_hugepages requriement for running the
> va_high_addr_switch test. Since commit d9d957bd7b61 ("selftests/mm: alloc
> hugepages in va_high_addr_switch test"), the setup can be done in
> va_high_addr_switch.sh. So remove the duplicated setup.
>
> CC: Luiz Capitulino <luizcap@redhat.com>
> Signed-off-by: Chunyu Hu <chuhu@redhat.com>
Reviewed-by: Luiz Capitulino <luizcap@redhat.com>
> ---
> tools/testing/selftests/mm/run_vmtests.sh | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/run_vmtests.sh b/tools/testing/selftests/mm/run_vmtests.sh
> index d9173f2312b7..2dadbfc6e535 100755
> --- a/tools/testing/selftests/mm/run_vmtests.sh
> +++ b/tools/testing/selftests/mm/run_vmtests.sh
> @@ -412,15 +412,7 @@ if [ $VADDR64 -ne 0 ]; then
> fi
>
> # va high address boundary switch test
> - ARCH_ARM64="arm64"
> - prev_nr_hugepages=$(cat /proc/sys/vm/nr_hugepages)
> - if [ "$ARCH" == "$ARCH_ARM64" ]; then
> - echo 6 > /proc/sys/vm/nr_hugepages
> - fi
> CATEGORY="hugevm" run_test bash ./va_high_addr_switch.sh
> - if [ "$ARCH" == "$ARCH_ARM64" ]; then
> - echo $prev_nr_hugepages > /proc/sys/vm/nr_hugepages
> - fi
> fi # VADDR64
>
> # vmalloc stability smoke test
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-12-08 15:49 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-12-07 12:22 [PATCH v1 1/3] selftests/mm: fix va_high_addr_switch.sh return value Chunyu Hu
2025-12-07 12:22 ` [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh Chunyu Hu
2025-12-07 12:22 ` [PATCH v1 3/3] selftests/mm: remove arm64 nr_hugepages setup for va_high_addr_switch test Chunyu Hu
2025-12-08 15:48 ` Luiz Capitulino
2025-12-08 15:47 ` [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh Luiz Capitulino
2025-12-08 15:44 ` [PATCH v1 1/3] selftests/mm: fix va_high_addr_switch.sh return value Luiz Capitulino
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox