Skip to content

Commit

Permalink
selftests/powerpc: Skip the subpage_prot tests if the syscall is unav…
Browse files Browse the repository at this point in the history
…ailable

The subpage_prot syscall is only functional when the system is using
the Hash MMU. Since commit 5b2b807 ("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.

Additionally the syscall is not available if the kernel is built with
4K pages, or if CONFIG_PPC_SUBPAGE_PROT=n, in which case it returns
ENOSYS because the syscall is missing entirely.

So check explicitly for ENOENT and ENOSYS and skip if we see either of
those.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
  • Loading branch information
Michael Ellerman committed Mar 2, 2018
1 parent b7abbd5 commit cd4a6f3
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions tools/testing/selftests/powerpc/mm/subpage_prot.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,16 @@ 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 && errno != ENOSYS);
}

int test_anon(void)
{
unsigned long align;
Expand All @@ -145,6 +155,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;
Expand Down Expand Up @@ -180,6 +192,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");
Expand Down

0 comments on commit cd4a6f3

Please sign in to comment.