Commit 62e80f2b authored by Sidhartha Kumar's avatar Sidhartha Kumar Committed by Andrew Morton
Browse files

tools/testing/selftests/vm/gup_test.c: clarify error statement

Print three possible reasons /sys/kernel/debug/gup_test cannot be opened
to help users of this test diagnose failures.

Link: https://lkml.kernel.org/r/20220405214809.3351223-1-sidhartha.kumar@oracle.com


Signed-off-by: default avatarSidhartha Kumar <sidhartha.kumar@oracle.com>
Reviewed-by: default avatarShuah Khan <skhan@linuxfoundation.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 0e5e64c0
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/stat.h>
@@ -9,6 +11,7 @@
#include <pthread.h>
#include <assert.h>
#include "../../../../mm/gup_test.h"
#include "../kselftest.h"

#include "util.h"

@@ -206,8 +209,23 @@ int main(int argc, char **argv)

	gup_fd = open("/sys/kernel/debug/gup_test", O_RDWR);
	if (gup_fd == -1) {
		perror("open");
		exit(1);
		switch (errno) {
		case EACCES:
			if (getuid())
				printf("Please run this test as root\n");
			break;
		case ENOENT:
			if (opendir("/sys/kernel/debug") == NULL) {
				printf("mount debugfs at /sys/kernel/debug\n");
				break;
			}
			printf("check if CONFIG_GUP_TEST is enabled in kernel config\n");
			break;
		default:
			perror("failed to open /sys/kernel/debug/gup_test");
			break;
		}
		exit(KSFT_SKIP);
	}

	p = mmap(NULL, size, PROT_READ | PROT_WRITE, flags, filed, 0);
+24 −9
Original line number Diff line number Diff line
@@ -162,22 +162,32 @@ echo "------------------------------------------------------"
echo "running: gup_test -u # get_user_pages_fast() benchmark"
echo "------------------------------------------------------"
./gup_test -u
if [ $? -ne 0 ]; then
ret_val=$?

if [ $ret_val -eq 0 ]; then
	echo "[PASS]"
elif [ $ret_val -eq $ksft_skip ]; then
	 echo "[SKIP]"
	 exitcode=$ksft_skip
else
	echo "[FAIL]"
	exitcode=1
else
	echo "[PASS]"
fi

echo "------------------------------------------------------"
echo "running: gup_test -a # pin_user_pages_fast() benchmark"
echo "------------------------------------------------------"
./gup_test -a
if [ $? -ne 0 ]; then
ret_val=$?

if [ $ret_val -eq 0 ]; then
	echo "[PASS]"
elif [ $ret_val -eq $ksft_skip ]; then
	 echo "[SKIP]"
	 exitcode=$ksft_skip
else
	echo "[FAIL]"
	exitcode=1
else
	echo "[PASS]"
fi

echo "------------------------------------------------------------"
@@ -185,11 +195,16 @@ echo "# Dump pages 0, 19, and 4096, using pin_user_pages:"
echo "running: gup_test -ct -F 0x1 0 19 0x1000 # dump_page() test"
echo "------------------------------------------------------------"
./gup_test -ct -F 0x1 0 19 0x1000
if [ $? -ne 0 ]; then
ret_val=$?

if [ $ret_val -eq 0 ]; then
	echo "[PASS]"
elif [ $ret_val -eq $ksft_skip ]; then
	 echo "[SKIP]"
	 exitcode=$ksft_skip
else
	echo "[FAIL]"
	exitcode=1
else
	echo "[PASS]"
fi

echo "-------------------"