Subject: Re: [PATCH] selftests/powerpc: Skip the subpage_prot tests if the syscall is disabled

From: "Aneesh Kumar K.V" <[email-masked]>
Date: Mon, 26 Feb 2018 10:03:20 +0530

Michael Ellerman <[email-masked]> writes:

> The subpage_prot syscall is only functional when the system is using
> the Hash MMU. Since commit 5b2b80714796 ("powerpc/mm: Invalidate
> subpage_prot() system call on radix platforms") it returns ENOENT when
> the Radix MMU is active. Currently this just makes the test fail.
>
> Instead check explicitly for ENOENT and skip if we see that.
>
Reviewed-by: Aneesh Kumar K.V <[email-masked]>

> Fixes: 5b2b80714796 ("powerpc/mm: Invalidate subpage_prot() system call on radix platforms")
> Signed-off-by: Michael Ellerman <[email-masked]>
> ---
>  tools/testing/selftests/powerpc/mm/subpage_prot.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/tools/testing/selftests/powerpc/mm/subpage_prot.c b/tools/testing/selftests/powerpc/mm/subpage_prot.c
> index 35ade7406dcd..81570680e7ea 100644
> --- a/tools/testing/selftests/powerpc/mm/subpage_prot.c
> +++ b/tools/testing/selftests/powerpc/mm/subpage_prot.c
> @@ -135,6 +135,15 @@ static int run_test(void *addr, unsigned long size)
>  	return 0;
>  }
>
> +static int syscall_available(void)
> +{
> +	int rc;
> +
> +	errno = 0;
> +	rc = syscall(__NR_subpage_prot, 0, 0, 0);
> +	return rc == 0 || errno != ENOENT;
> +}
> +
>  int test_anon(void)
>  {
>  	unsigned long align;
> @@ -145,6 +154,8 @@ int test_anon(void)
>  	void *mallocblock;
>  	unsigned long mallocsize;
>
> +	SKIP_IF(!syscall_available());
> +
>  	if (getpagesize() != 0x10000) {
>  		fprintf(stderr, "Kernel page size must be 64K!\n");
>  		return 1;
> @@ -180,6 +191,8 @@ int test_file(void)
>  	off_t filesize;
>  	int fd;
>
> +	SKIP_IF(!syscall_available());
> +
>  	fd = open(file_name, O_RDWR);
>  	if (fd == -1) {
>  		perror("failed to open file");
> -- 
> 2.14.1