Re: [PATCH v3 20/54] selftests/mm: va_high_addr_switch: use kselftest framework

2026-05-06 Thread Sarthak Sharma



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

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 

> ---
>  .../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();
>  }




Re: [PATCH v3 20/54] selftests/mm: va_high_addr_switch: use kselftest framework

2026-04-30 Thread Luiz Capitulino

On 2026-04-28 16:42, Mike Rapoport wrote:

From: "Mike Rapoport (Microsoft)" 

Convert va_high_addr_switch test to use kselftest framework for
reporting and tracking successful and failing runs.

Signed-off-by: Mike Rapoport (Microsoft) 


Reviewed-by: Luiz Capitulino 


---
  .../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();
  }