* [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; 7+ 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] 7+ 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; 7+ 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] 7+ 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; 7+ 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] 7+ 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; 7+ 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] 7+ 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 2025-12-09 14:47 ` Chunyu Hu 1 sibling, 1 reply; 7+ 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] 7+ messages in thread
* Re: [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh 2025-12-08 15:47 ` [PATCH v1 2/3] selftests/mm: allocate 6 hugepages in va_high_addr_switch.sh Luiz Capitulino @ 2025-12-09 14:47 ` Chunyu Hu 0 siblings, 0 replies; 7+ messages in thread From: Chunyu Hu @ 2025-12-09 14:47 UTC (permalink / raw) To: Luiz Capitulino Cc: akpm, david, shuah, linux-mm, linux-kselftest, linux-kernel, lorenzo.stoakes, Liam.Howlett, vbabka, rppt, surenb, mhocko On Mon, Dec 08, 2025 at 10:47:19AM -0500, Luiz Capitulino wrote: > 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. Thank you for the review. Let me update a v2 to shorten this comment as your suggested. And change the title to 'require 6 hugepages in va_high_addr_switch hugetlb test. > > > +setup_nr_hugepages 6 > > ./va_high_addr_switch --run-hugetlb > > retcode=$? > > restore_nr_hugepages > ^ permalink raw reply [flat|nested] 7+ 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; 7+ 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] 7+ messages in thread
end of thread, other threads:[~2025-12-09 14:48 UTC | newest] Thread overview: 7+ 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-09 14:47 ` Chunyu Hu 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