mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
selftests/mm: va_high_addr_switch: use kselftest framework
Convert va_high_addr_switch test to use kselftest framework for reporting and tracking successful and failing runs. Link: https://lore.kernel.org/20260511162840.375890-22-rppt@kernel.org Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Reviewed-by: Luiz Capitulino <luizcap@redhat.com> Tested-by: Luiz Capitulino <luizcap@redhat.com> Tested-by: Sarthak Sharma <sarthak.sharma@arm.com> Cc: Baolin Wang <baolin.wang@linux.alibaba.com> Cc: Barry Song <baohua@kernel.org> Cc: David Hildenbrand <david@kernel.org> Cc: Dev Jain <dev.jain@arm.com> Cc: Donet Tom <donettom@linux.ibm.com> Cc: Jason Gunthorpe <jgg@ziepe.ca> Cc: John Hubbard <jhubbard@nvidia.com> Cc: Lance Yang <lance.yang@linux.dev> Cc: Leon Romanovsky <leon@kernel.org> Cc: Liam Howlett <liam@infradead.org> Cc: Li Wang <li.wang@linux.dev> Cc: Lorenzo Stoakes <ljs@kernel.org> Cc: Mark Brown <broonie@kernel.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Nico Pache <npache@redhat.com> Cc: Peter Xu <peterx@redhat.com> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Shuah Khan <shuah@kernel.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@kernel.org> Cc: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
462de7f58c
commit
7b35a64019
|
|
@ -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));
|
||||
|
||||
if (ret == KSFT_PASS && hugetlb_ret == KSFT_PASS)
|
||||
return KSFT_PASS;
|
||||
else
|
||||
return KSFT_FAIL;
|
||||
run_test(testcases, sz_testcases);
|
||||
if (run_hugetlb)
|
||||
run_test(hugetlb_testcases, sz_hugetlb_testcases);
|
||||
|
||||
ksft_finished();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user