Michael Ellerman <m...@ellerman.id.au> 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 <aneesh.ku...@linux.vnet.ibm.com>
> Fixes: 5b2b80714796 ("powerpc/mm: Invalidate subpage_prot() system call on > radix platforms") > Signed-off-by: Michael Ellerman <m...@ellerman.id.au> > --- > 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