On 4/29/26 2:12 AM, Mike Rapoport wrote:
> From: "Mike Rapoport (Microsoft)" <[email protected]>
> 
> Convert va_high_addr_switch test to use kselftest framework for
> reporting and tracking successful and failing runs.
> 
> Signed-off-by: Mike Rapoport (Microsoft) <[email protected]>

I have run this test before and after applying the patch. It correctly
converts the test output into KTAP format with no change in results.

Tested-by: Sarthak Sharma <[email protected]>

> ---
>  .../selftests/mm/va_high_addr_switch.c        | 41 +++++++++----------
>  1 file changed, 20 insertions(+), 21 deletions(-)
> 
> diff --git a/tools/testing/selftests/mm/va_high_addr_switch.c 
> b/tools/testing/selftests/mm/va_high_addr_switch.c
> index 51401e081b20..5d38735ea60e 100644
> --- a/tools/testing/selftests/mm/va_high_addr_switch.c
> +++ b/tools/testing/selftests/mm/va_high_addr_switch.c
> @@ -257,40 +257,35 @@ void testcases_init(void)
>       switch_hint = addr_switch_hint;
>  }
>  
> -static int run_test(struct testcase *test, int count)
> +static void run_test(struct testcase *test, int count)
>  {
>       void *p;
> -     int i, ret = KSFT_PASS;
> +     int i;
>  
>       for (i = 0; i < count; i++) {
>               struct testcase *t = test + i;
>  
>               p = mmap(t->addr, t->size, PROT_READ | PROT_WRITE, t->flags, 
> -1, 0);
> -
> -             printf("%s: %p - ", t->msg, p);
> -
>               if (p == MAP_FAILED) {
> -                     printf("FAILED\n");
> -                     ret = KSFT_FAIL;
> +                     ksft_perror("MAP_FAILED");
> +                     ksft_test_result_fail("%s\n", t->msg);
>                       continue;
>               }
>  
>               if (t->low_addr_required && p >= (void *)(switch_hint)) {
> -                     printf("FAILED\n");
> -                     ret = KSFT_FAIL;
> +                     ksft_print_msg("%p not below switch hint\n", p);
> +                     ksft_test_result_fail("%s\n", t->msg);
>               } else {
>                       /*
>                        * Do a dereference of the address returned so that we 
> catch
>                        * bugs in page fault handling
>                        */
>                       memset(p, 0, t->size);
> -                     printf("OK\n");
> +                     ksft_test_result_pass("%s\n", t->msg);
>               }
>               if (!t->keep_mapped)
>                       munmap(p, t->size);
>       }
> -
> -     return ret;
>  }
>  
>  #ifdef __aarch64__
> @@ -322,19 +317,23 @@ static int supported_arch(void)
>  
>  int main(int argc, char **argv)
>  {
> -     int ret, hugetlb_ret = KSFT_PASS;
> +     bool run_hugetlb = false;
> +
> +     ksft_print_header();
>  
>       if (!supported_arch())
> -             return KSFT_SKIP;
> +             ksft_exit_skip("Architecture not supported\n");
> +
> +     if (argc == 2 && !strcmp(argv[1], "--run-hugetlb"))
> +             run_hugetlb = true;
>  
>       testcases_init();
>  
> -     ret = run_test(testcases, sz_testcases);
> -     if (argc == 2 && !strcmp(argv[1], "--run-hugetlb"))
> -             hugetlb_ret = run_test(hugetlb_testcases, sz_hugetlb_testcases);
> +     ksft_set_plan(sz_testcases + (run_hugetlb ? sz_hugetlb_testcases : 0));
> +
> +     run_test(testcases, sz_testcases);
> +     if (run_hugetlb)
> +             run_test(hugetlb_testcases, sz_hugetlb_testcases);
>  
> -     if (ret == KSFT_PASS && hugetlb_ret == KSFT_PASS)
> -             return KSFT_PASS;
> -     else
> -             return KSFT_FAIL;
> +     ksft_finished();
>  }


Reply via email to