[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8c609741-c2b8-426c-8f83-8a79022b67d7@redhat.com>
Date: Mon, 4 Aug 2025 10:25:52 +0200
From: David Hildenbrand <david@...hat.com>
To: Sudarsan Mahendran <sudarsanm@...gle.com>, linux-kselftest@...r.kernel.org
Cc: Shuah Khan <shuah@...nel.org>, Axel Rasmussen <axelrasmussen@...gle.com>,
linux-mm@...ck.org, Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel@...r.kernel.org, trivial@...nel.org
Subject: Re: [PATCH v2] selftests/mm: pass filename as input param to
VM_PFNMAP tests
On 02.08.25 01:45, Sudarsan Mahendran wrote:
> Enable these tests to be run on other pfnmap'ed memory like
> NVIDIA's EGM.
>
> Add '--' as a separator to pass in file path. This allows
> passing of cmd line arguments to kselftest_harness.
> Use '/dev/mem' as default filename.
>
> Existing test passes:
> pfnmap
> TAP version 13
> 1..6
> # Starting 6 tests from 1 test cases.
> # PASSED: 6 / 6 tests passed.
> # Totals: pass:6 fail:0 xfail:0 xpass:0 skip:0 error:0
>
> Pass params to kselftest_harness:
> pfnmap -r pfnmap:mremap_fixed
> TAP version 13
> 1..1
> # Starting 1 tests from 1 test cases.
> # RUN pfnmap.mremap_fixed ...
> # OK pfnmap.mremap_fixed
> ok 1 pfnmap.mremap_fixed
> # PASSED: 1 / 1 tests passed.
> # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
>
> Pass non-existent file name as input:
> pfnmap -- /dev/blah
> TAP version 13
> 1..6
> # Starting 6 tests from 1 test cases.
> # RUN pfnmap.madvise_disallowed ...
> # SKIP Cannot open '/dev/blah'
>
> Pass non pfnmap'ed file as input:
> pfnmap -r pfnmap.madvise_disallowed -- randfile
> TAP version 13
> 1..1
> # Starting 1 tests from 1 test cases.
> # RUN pfnmap.madvise_disallowed ...
> # SKIP Invalid file: 'randfile'. Not pfnmap'ed
>
> Signed-off-by: Sudarsan Mahendran <sudarsanm@...gle.com>
> ---
>
> v1 -> v2:
> * Add verify_pfnmap func to sanity check the input param
> * mmap with zero offset if filename != '/dev/mem'
>
> ---
> tools/testing/selftests/mm/pfnmap.c | 62 ++++++++++++++++++++++++-----
> 1 file changed, 53 insertions(+), 9 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/pfnmap.c b/tools/testing/selftests/mm/pfnmap.c
> index 866ac023baf5..e078b961c333 100644
> --- a/tools/testing/selftests/mm/pfnmap.c
> +++ b/tools/testing/selftests/mm/pfnmap.c
> @@ -1,6 +1,7 @@
> // SPDX-License-Identifier: GPL-2.0-only
> /*
> - * Basic VM_PFNMAP tests relying on mmap() of '/dev/mem'
> + * Basic VM_PFNMAP tests relying on mmap() of input file provided.
> + * Use '/dev/mem' as default.
> *
> * Copyright 2025, Red Hat, Inc.
> *
> @@ -25,6 +26,7 @@
> #include "vm_util.h"
>
> static sigjmp_buf sigjmp_buf_env;
> +static char *file = "/dev/mem";
>
> static void signal_handler(int sig)
> {
> @@ -98,6 +100,30 @@ static int find_ram_target(off_t *phys_addr,
> return -ENOENT;
> }
>
> +static int verify_pfnmap(void)
You really want to pass in the address, and verify that that very
mapping is a PFNMAP. (not something unrelated, like the vdso or
something odd like that)
We have a helper in vm_util.c that might be useful: __get_smap_entry()
We also have a check_vmflag_io() in there. So likely you want to add a
helper check_vmflag_pfnmap().
Nothing else jumped at me, except that phys_addr might be better called
something like "offset" now.
--
Cheers,
David / dhildenb
Powered by blists - more mailing lists