On Mon, Dec 22, 2025 at 02:36:18PM -0500, Luiz Capitulino wrote: > On 2025-12-20 23:00, Chunyu Hu wrote: > > When the first test failed, and the hugetlb test passed, the result would > > be pass, but we expect a fail. Fix this issue by returning fail if either > > is not KSFT_PASS. > > > > CC: Luiz Capitulino <[email protected]> > > Signed-off-by: Chunyu Hu <[email protected]> > > --- > > tools/testing/selftests/mm/va_high_addr_switch.c | 10 +++++++--- > > 1 file changed, 7 insertions(+), 3 deletions(-) > > > > diff --git a/tools/testing/selftests/mm/va_high_addr_switch.c > > b/tools/testing/selftests/mm/va_high_addr_switch.c > > index 02f290a69132..51401e081b20 100644 > > --- a/tools/testing/selftests/mm/va_high_addr_switch.c > > +++ b/tools/testing/selftests/mm/va_high_addr_switch.c > > @@ -322,7 +322,7 @@ static int supported_arch(void) > > int main(int argc, char **argv) > > { > > - int ret; > > + int ret, hugetlb_ret = KSFT_PASS; > > if (!supported_arch()) > > return KSFT_SKIP; > > @@ -331,6 +331,10 @@ int main(int argc, char **argv) > > ret = run_test(testcases, sz_testcases); > > if (argc == 2 && !strcmp(argv[1], "--run-hugetlb")) > > - ret = run_test(hugetlb_testcases, sz_hugetlb_testcases); > > Maybe you could just have used: > > ret |= run_test(hugetlb_testcases, sz_hugetlb_testcases);
Good point. I thought the result code is not encoded by bit, but for KSFT_PASS and KSFT_FAIL, and KSFT_SKIP, they are per bit. 85 #define KSFT_PASS 0 86 #define KSFT_FAIL 1 87 #define KSFT_XFAIL 2 88 #define KSFT_XPASS 3 89 #define KSFT_SKIP 4 @Andrew, do you think I need to send a v3 for using the simpified way? if so, send the whole series or the single patch? > > But anyways, as this is just testing code: > > Reviewed-by: Luiz Capitulino <[email protected]> > > > - return ret; > > + hugetlb_ret = run_test(hugetlb_testcases, sz_hugetlb_testcases); > > + > > + if (ret == KSFT_PASS && hugetlb_ret == KSFT_PASS) > > + return KSFT_PASS; > > + else > > + return KSFT_FAIL; > > } >

