diff options
author | Milosz Wasilewski <milosz.wasilewski@hackbox.linaro.org> | 2015-01-01 23:01:55 +0000 |
---|---|---|
committer | Milosz Wasilewski <milosz.wasilewski@hackbox.linaro.org> | 2015-01-01 23:01:55 +0000 |
commit | 7894328826a10b984b03e1af9e3c3288dd321b67 (patch) | |
tree | 71beba5fd6ef0755ffb6d49e809837df50b0c629 | |
parent | 7cacbced47c26c3c082571e5f18126c51b0d05af (diff) |
Update to commit: b2776bf7149bddd1f4161f14f79520f17fc1d71db2776bf7149bddd1f4161f14f79520f17fc1d71d
from repo: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
branch: master
124 files changed, 1808 insertions, 1366 deletions
@@ -15,8 +15,6 @@ TARGETS += user TARGETS += sysctl TARGETS += firmware TARGETS += ftrace -TARGETS += exec -TARGETS += size TARGETS_HOTPLUG = cpu-hotplug TARGETS_HOTPLUG += memory-hotplug diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..2660d5f --- /dev/null +++ b/README.txt @@ -0,0 +1,61 @@ +Linux Kernel Selftests + +The kernel contains a set of "self tests" under the tools/testing/selftests/ +directory. These are intended to be small unit tests to exercise individual +code paths in the kernel. + +On some systems, hot-plug tests could hang forever waiting for cpu and +memory to be ready to be offlined. A special hot-plug target is created +to run full range of hot-plug tests. In default mode, hot-plug tests run +in safe mode with a limited scope. In limited mode, cpu-hotplug test is +run on a single cpu as opposed to all hotplug capable cpus, and memory +hotplug test is run on 2% of hotplug capable memory instead of 10%. + +Running the selftests (hotplug tests are run in limited mode) +============================================================= + +To build the tests: + + $ make -C tools/testing/selftests + + +To run the tests: + + $ make -C tools/testing/selftests run_tests + +- note that some tests will require root privileges. + +To run only tests targeted for a single subsystem: (including +hotplug targets in limited mode) + + $ make -C tools/testing/selftests TARGETS=cpu-hotplug run_tests + +See the top-level tools/testing/selftests/Makefile for the list of all possible +targets. + +Running the full range hotplug selftests +======================================== + +To build the tests: + + $ make -C tools/testing/selftests hotplug + +To run the tests: + + $ make -C tools/testing/selftests run_hotplug + +- note that some tests will require root privileges. + +Contributing new tests +====================== + +In general, the rules for for selftests are + + * Do as much as you can if you're not root; + + * Don't take too long; + + * Don't break the build on any architecture, and + + * Don't cause the top-level "make run_tests" to fail if your feature is + unconfigured. diff --git a/breakpoints/breakpoint_test.c b/breakpoints/breakpoint_test.c index 120895a..a0743f3 100644 --- a/breakpoints/breakpoint_test.c +++ b/breakpoints/breakpoint_test.c @@ -17,8 +17,6 @@ #include <sys/types.h> #include <sys/wait.h> -#include "../kselftest.h" - /* Breakpoint access modes */ enum { @@ -44,7 +42,7 @@ static void set_breakpoint_addr(void *addr, int n) offsetof(struct user, u_debugreg[n]), addr); if (ret) { perror("Can't set breakpoint addr\n"); - ksft_exit_fail(); + exit(-1); } } @@ -107,7 +105,7 @@ static void toggle_breakpoint(int n, int type, int len, offsetof(struct user, u_debugreg[7]), dr7); if (ret) { perror("Can't set dr7"); - ksft_exit_fail(); + exit(-1); } } @@ -277,7 +275,7 @@ static void check_success(const char *msg) msg2 = "Ok"; if (ptrace(PTRACE_POKEDATA, child_pid, &trapped, 1)) { perror("Can't poke\n"); - ksft_exit_fail(); + exit(-1); } } @@ -392,5 +390,5 @@ int main(int argc, char **argv) wait(NULL); - return ksft_exit_pass(); + return 0; } diff --git a/exec/.gitignore b/exec/.gitignore deleted file mode 100644 index 64073e0..0000000 --- a/exec/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -subdir* -script* -execveat -execveat.symlink -execveat.moved -execveat.path.ephemeral -execveat.ephemeral -execveat.denatured -xxxxxxxx*
\ No newline at end of file diff --git a/exec/Makefile b/exec/Makefile deleted file mode 100644 index 66dfc2c..0000000 --- a/exec/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -CC = $(CROSS_COMPILE)gcc -CFLAGS = -Wall -BINARIES = execveat -DEPS = execveat.symlink execveat.denatured script subdir -all: $(BINARIES) $(DEPS) - -subdir: - mkdir -p $@ -script: - echo '#!/bin/sh' > $@ - echo 'exit $$*' >> $@ - chmod +x $@ -execveat.symlink: execveat - ln -s -f $< $@ -execveat.denatured: execveat - cp $< $@ - chmod -x $@ -%: %.c - $(CC) $(CFLAGS) -o $@ $^ - -run_tests: all - ./execveat - -clean: - rm -rf $(BINARIES) $(DEPS) subdir.moved execveat.moved xxxxx* diff --git a/exec/execveat.c b/exec/execveat.c deleted file mode 100644 index 33a5c06..0000000 --- a/exec/execveat.c +++ /dev/null @@ -1,397 +0,0 @@ -/* - * Copyright (c) 2014 Google, Inc. - * - * Licensed under the terms of the GNU GPL License version 2 - * - * Selftests for execveat(2). - */ - -#define _GNU_SOURCE /* to get O_PATH, AT_EMPTY_PATH */ -#include <sys/sendfile.h> -#include <sys/stat.h> -#include <sys/syscall.h> -#include <sys/types.h> -#include <sys/wait.h> -#include <errno.h> -#include <fcntl.h> -#include <limits.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -static char longpath[2 * PATH_MAX] = ""; -static char *envp[] = { "IN_TEST=yes", NULL, NULL }; -static char *argv[] = { "execveat", "99", NULL }; - -static int execveat_(int fd, const char *path, char **argv, char **envp, - int flags) -{ -#ifdef __NR_execveat - return syscall(__NR_execveat, fd, path, argv, envp, flags); -#else - errno = -ENOSYS; - return -1; -#endif -} - -#define check_execveat_fail(fd, path, flags, errno) \ - _check_execveat_fail(fd, path, flags, errno, #errno) -static int _check_execveat_fail(int fd, const char *path, int flags, - int expected_errno, const char *errno_str) -{ - int rc; - - errno = 0; - printf("Check failure of execveat(%d, '%s', %d) with %s... ", - fd, path?:"(null)", flags, errno_str); - rc = execveat_(fd, path, argv, envp, flags); - - if (rc > 0) { - printf("[FAIL] (unexpected success from execveat(2))\n"); - return 1; - } - if (errno != expected_errno) { - printf("[FAIL] (expected errno %d (%s) not %d (%s)\n", - expected_errno, strerror(expected_errno), - errno, strerror(errno)); - return 1; - } - printf("[OK]\n"); - return 0; -} - -static int check_execveat_invoked_rc(int fd, const char *path, int flags, - int expected_rc) -{ - int status; - int rc; - pid_t child; - int pathlen = path ? strlen(path) : 0; - - if (pathlen > 40) - printf("Check success of execveat(%d, '%.20s...%s', %d)... ", - fd, path, (path + pathlen - 20), flags); - else - printf("Check success of execveat(%d, '%s', %d)... ", - fd, path?:"(null)", flags); - child = fork(); - if (child < 0) { - printf("[FAIL] (fork() failed)\n"); - return 1; - } - if (child == 0) { - /* Child: do execveat(). */ - rc = execveat_(fd, path, argv, envp, flags); - printf("[FAIL]: execveat() failed, rc=%d errno=%d (%s)\n", - rc, errno, strerror(errno)); - exit(1); /* should not reach here */ - } - /* Parent: wait for & check child's exit status. */ - rc = waitpid(child, &status, 0); - if (rc != child) { - printf("[FAIL] (waitpid(%d,...) returned %d)\n", child, rc); - return 1; - } - if (!WIFEXITED(status)) { - printf("[FAIL] (child %d did not exit cleanly, status=%08x)\n", - child, status); - return 1; - } - if (WEXITSTATUS(status) != expected_rc) { - printf("[FAIL] (child %d exited with %d not %d)\n", - child, WEXITSTATUS(status), expected_rc); - return 1; - } - printf("[OK]\n"); - return 0; -} - -static int check_execveat(int fd, const char *path, int flags) -{ - return check_execveat_invoked_rc(fd, path, flags, 99); -} - -static char *concat(const char *left, const char *right) -{ - char *result = malloc(strlen(left) + strlen(right) + 1); - - strcpy(result, left); - strcat(result, right); - return result; -} - -static int open_or_die(const char *filename, int flags) -{ - int fd = open(filename, flags); - - if (fd < 0) { - printf("Failed to open '%s'; " - "check prerequisites are available\n", filename); - exit(1); - } - return fd; -} - -static void exe_cp(const char *src, const char *dest) -{ - int in_fd = open_or_die(src, O_RDONLY); - int out_fd = open(dest, O_RDWR|O_CREAT|O_TRUNC, 0755); - struct stat info; - - fstat(in_fd, &info); - sendfile(out_fd, in_fd, NULL, info.st_size); - close(in_fd); - close(out_fd); -} - -#define XX_DIR_LEN 200 -static int check_execveat_pathmax(int dot_dfd, const char *src, int is_script) -{ - int fail = 0; - int ii, count, len; - char longname[XX_DIR_LEN + 1]; - int fd; - - if (*longpath == '\0') { - /* Create a filename close to PATH_MAX in length */ - memset(longname, 'x', XX_DIR_LEN - 1); - longname[XX_DIR_LEN - 1] = '/'; - longname[XX_DIR_LEN] = '\0'; - count = (PATH_MAX - 3) / XX_DIR_LEN; - for (ii = 0; ii < count; ii++) { - strcat(longpath, longname); - mkdir(longpath, 0755); - } - len = (PATH_MAX - 3) - (count * XX_DIR_LEN); - if (len <= 0) - len = 1; - memset(longname, 'y', len); - longname[len] = '\0'; - strcat(longpath, longname); - } - exe_cp(src, longpath); - - /* - * Execute as a pre-opened file descriptor, which works whether this is - * a script or not (because the interpreter sees a filename like - * "/dev/fd/20"). - */ - fd = open(longpath, O_RDONLY); - if (fd > 0) { - printf("Invoke copy of '%s' via filename of length %lu:\n", - src, strlen(longpath)); - fail += check_execveat(fd, "", AT_EMPTY_PATH); - } else { - printf("Failed to open length %lu filename, errno=%d (%s)\n", - strlen(longpath), errno, strerror(errno)); - fail++; - } - - /* - * Execute as a long pathname relative to ".". If this is a script, - * the interpreter will launch but fail to open the script because its - * name ("/dev/fd/5/xxx....") is bigger than PATH_MAX. - */ - if (is_script) - fail += check_execveat_invoked_rc(dot_dfd, longpath, 0, 127); - else - fail += check_execveat(dot_dfd, longpath, 0); - - return fail; -} - -static int run_tests(void) -{ - int fail = 0; - char *fullname = realpath("execveat", NULL); - char *fullname_script = realpath("script", NULL); - char *fullname_symlink = concat(fullname, ".symlink"); - int subdir_dfd = open_or_die("subdir", O_DIRECTORY|O_RDONLY); - int subdir_dfd_ephemeral = open_or_die("subdir.ephemeral", - O_DIRECTORY|O_RDONLY); - int dot_dfd = open_or_die(".", O_DIRECTORY|O_RDONLY); - int dot_dfd_path = open_or_die(".", O_DIRECTORY|O_RDONLY|O_PATH); - int dot_dfd_cloexec = open_or_die(".", O_DIRECTORY|O_RDONLY|O_CLOEXEC); - int fd = open_or_die("execveat", O_RDONLY); - int fd_path = open_or_die("execveat", O_RDONLY|O_PATH); - int fd_symlink = open_or_die("execveat.symlink", O_RDONLY); - int fd_denatured = open_or_die("execveat.denatured", O_RDONLY); - int fd_denatured_path = open_or_die("execveat.denatured", - O_RDONLY|O_PATH); - int fd_script = open_or_die("script", O_RDONLY); - int fd_ephemeral = open_or_die("execveat.ephemeral", O_RDONLY); - int fd_ephemeral_path = open_or_die("execveat.path.ephemeral", - O_RDONLY|O_PATH); - int fd_script_ephemeral = open_or_die("script.ephemeral", O_RDONLY); - int fd_cloexec = open_or_die("execveat", O_RDONLY|O_CLOEXEC); - int fd_script_cloexec = open_or_die("script", O_RDONLY|O_CLOEXEC); - - /* Change file position to confirm it doesn't affect anything */ - lseek(fd, 10, SEEK_SET); - - /* Normal executable file: */ - /* dfd + path */ - fail += check_execveat(subdir_dfd, "../execveat", 0); - fail += check_execveat(dot_dfd, "execveat", 0); - fail += check_execveat(dot_dfd_path, "execveat", 0); - /* absolute path */ - fail += check_execveat(AT_FDCWD, fullname, 0); - /* absolute path with nonsense dfd */ - fail += check_execveat(99, fullname, 0); - /* fd + no path */ - fail += check_execveat(fd, "", AT_EMPTY_PATH); - /* O_CLOEXEC fd + no path */ - fail += check_execveat(fd_cloexec, "", AT_EMPTY_PATH); - /* O_PATH fd */ - fail += check_execveat(fd_path, "", AT_EMPTY_PATH); - - /* Mess with executable file that's already open: */ - /* fd + no path to a file that's been renamed */ - rename("execveat.ephemeral", "execveat.moved"); - fail += check_execveat(fd_ephemeral, "", AT_EMPTY_PATH); - /* fd + no path to a file that's been deleted */ - unlink("execveat.moved"); /* remove the file now fd open */ - fail += check_execveat(fd_ephemeral, "", AT_EMPTY_PATH); - - /* Mess with executable file that's already open with O_PATH */ - /* fd + no path to a file that's been deleted */ - unlink("execveat.path.ephemeral"); - fail += check_execveat(fd_ephemeral_path, "", AT_EMPTY_PATH); - - /* Invalid argument failures */ - fail += check_execveat_fail(fd, "", 0, ENOENT); - fail += check_execveat_fail(fd, NULL, AT_EMPTY_PATH, EFAULT); - - /* Symlink to executable file: */ - /* dfd + path */ - fail += check_execveat(dot_dfd, "execveat.symlink", 0); - fail += check_execveat(dot_dfd_path, "execveat.symlink", 0); - /* absolute path */ - fail += check_execveat(AT_FDCWD, fullname_symlink, 0); - /* fd + no path, even with AT_SYMLINK_NOFOLLOW (already followed) */ - fail += check_execveat(fd_symlink, "", AT_EMPTY_PATH); - fail += check_execveat(fd_symlink, "", - AT_EMPTY_PATH|AT_SYMLINK_NOFOLLOW); - - /* Symlink fails when AT_SYMLINK_NOFOLLOW set: */ - /* dfd + path */ - fail += check_execveat_fail(dot_dfd, "execveat.symlink", - AT_SYMLINK_NOFOLLOW, ELOOP); - fail += check_execveat_fail(dot_dfd_path, "execveat.symlink", - AT_SYMLINK_NOFOLLOW, ELOOP); - /* absolute path */ - fail += check_execveat_fail(AT_FDCWD, fullname_symlink, - AT_SYMLINK_NOFOLLOW, ELOOP); - - /* Shell script wrapping executable file: */ - /* dfd + path */ - fail += check_execveat(subdir_dfd, "../script", 0); - fail += check_execveat(dot_dfd, "script", 0); - fail += check_execveat(dot_dfd_path, "script", 0); - /* absolute path */ - fail += check_execveat(AT_FDCWD, fullname_script, 0); - /* fd + no path */ - fail += check_execveat(fd_script, "", AT_EMPTY_PATH); - fail += check_execveat(fd_script, "", - AT_EMPTY_PATH|AT_SYMLINK_NOFOLLOW); - /* O_CLOEXEC fd fails for a script (as script file inaccessible) */ - fail += check_execveat_fail(fd_script_cloexec, "", AT_EMPTY_PATH, - ENOENT); - fail += check_execveat_fail(dot_dfd_cloexec, "script", 0, ENOENT); - - /* Mess with script file that's already open: */ - /* fd + no path to a file that's been renamed */ - rename("script.ephemeral", "script.moved"); - fail += check_execveat(fd_script_ephemeral, "", AT_EMPTY_PATH); - /* fd + no path to a file that's been deleted */ - unlink("script.moved"); /* remove the file while fd open */ - fail += check_execveat(fd_script_ephemeral, "", AT_EMPTY_PATH); - - /* Rename a subdirectory in the path: */ - rename("subdir.ephemeral", "subdir.moved"); - fail += check_execveat(subdir_dfd_ephemeral, "../script", 0); - fail += check_execveat(subdir_dfd_ephemeral, "script", 0); - /* Remove the subdir and its contents */ - unlink("subdir.moved/script"); - unlink("subdir.moved"); - /* Shell loads via deleted subdir OK because name starts with .. */ - fail += check_execveat(subdir_dfd_ephemeral, "../script", 0); - fail += check_execveat_fail(subdir_dfd_ephemeral, "script", 0, ENOENT); - - /* Flag values other than AT_SYMLINK_NOFOLLOW => EINVAL */ - fail += check_execveat_fail(dot_dfd, "execveat", 0xFFFF, EINVAL); - /* Invalid path => ENOENT */ - fail += check_execveat_fail(dot_dfd, "no-such-file", 0, ENOENT); - fail += check_execveat_fail(dot_dfd_path, "no-such-file", 0, ENOENT); - fail += check_execveat_fail(AT_FDCWD, "no-such-file", 0, ENOENT); - /* Attempt to execute directory => EACCES */ - fail += check_execveat_fail(dot_dfd, "", AT_EMPTY_PATH, EACCES); - /* Attempt to execute non-executable => EACCES */ - fail += check_execveat_fail(dot_dfd, "Makefile", 0, EACCES); - fail += check_execveat_fail(fd_denatured, "", AT_EMPTY_PATH, EACCES); - fail += check_execveat_fail(fd_denatured_path, "", AT_EMPTY_PATH, - EACCES); - /* Attempt to execute nonsense FD => EBADF */ - fail += check_execveat_fail(99, "", AT_EMPTY_PATH, EBADF); - fail += check_execveat_fail(99, "execveat", 0, EBADF); - /* Attempt to execute relative to non-directory => ENOTDIR */ - fail += check_execveat_fail(fd, "execveat", 0, ENOTDIR); - - fail += check_execveat_pathmax(dot_dfd, "execveat", 0); - fail += check_execveat_pathmax(dot_dfd, "script", 1); - return fail; -} - -static void prerequisites(void) -{ - int fd; - const char *script = "#!/bin/sh\nexit $*\n"; - - /* Create ephemeral copies of files */ - exe_cp("execveat", "execveat.ephemeral"); - exe_cp("execveat", "execveat.path.ephemeral"); - exe_cp("script", "script.ephemeral"); - mkdir("subdir.ephemeral", 0755); - - fd = open("subdir.ephemeral/script", O_RDWR|O_CREAT|O_TRUNC, 0755); - write(fd, script, strlen(script)); - close(fd); -} - -int main(int argc, char **argv) -{ - int ii; - int rc; - const char *verbose = getenv("VERBOSE"); - - if (argc >= 2) { - /* If we are invoked with an argument, don't run tests. */ - const char *in_test = getenv("IN_TEST"); - - if (verbose) { - printf(" invoked with:"); - for (ii = 0; ii < argc; ii++) - printf(" [%d]='%s'", ii, argv[ii]); - printf("\n"); - } - - /* Check expected environment transferred. */ - if (!in_test || strcmp(in_test, "yes") != 0) { - printf("[FAIL] (no IN_TEST=yes in env)\n"); - return 1; - } - - /* Use the final argument as an exit code. */ - rc = atoi(argv[argc - 1]); - fflush(stdout); - } else { - prerequisites(); - if (verbose) - envp[1] = "VERBOSE=1"; - rc = run_tests(); - if (rc > 0) - printf("%d tests failed\n", rc); - } - return rc; -} diff --git a/ftrace/ftracetest b/ftrace/ftracetest index da48812..5152476 100755 --- a/ftrace/ftracetest +++ b/ftrace/ftracetest @@ -13,7 +13,6 @@ echo "Usage: ftracetest [options] [testcase(s)] [testcase-directory(s)]" echo " Options:" echo " -h|--help Show help message" echo " -k|--keep Keep passed test logs" -echo " -v|--verbose Show all stdout messages in testcases" echo " -d|--debug Debug mode (trace all shell commands)" exit $1 } @@ -38,7 +37,7 @@ abspath() { } find_testcases() { #directory - echo `find $1 -name \*.tc | sort` + echo `find $1 -name \*.tc` } parse_opts() { # opts @@ -54,10 +53,6 @@ parse_opts() { # opts KEEP_LOG=1 shift 1 ;; - --verbose|-v) - VERBOSE=1 - shift 1 - ;; --debug|-d) DEBUG=1 shift 1 @@ -95,7 +90,6 @@ TEST_CASES=`find_testcases $TEST_DIR` LOG_DIR=$TOP_DIR/logs/`date +%Y%m%d-%H%M%S`/ KEEP_LOG=0 DEBUG=0 -VERBOSE=0 # Parse command-line options parse_opts $* @@ -141,12 +135,15 @@ TOTAL_RESULT=0 CASENO=0 testcase() { # testfile CASENO=$((CASENO+1)) - desc=`grep "^#[ \t]*description:" $1 | cut -f2 -d:` - prlog -n "[$CASENO]$desc" + prlog -n "[$CASENO]"`grep "^#[ \t]*description:" $1 | cut -f2 -d:` } -eval_result() { # sigval - case $1 in +eval_result() { # retval sigval + local retval=$2 + if [ $2 -eq 0 ]; then + test $1 -ne 0 && retval=$FAIL + fi + case $retval in $PASS) prlog " [PASS]" PASSED_CASES="$PASSED_CASES $CASENO" @@ -190,9 +187,6 @@ SIG_RESULT= SIG_BASE=36 # Use realtime signals SIG_PID=$$ -SIG_FAIL=$((SIG_BASE + FAIL)) -trap 'SIG_RESULT=$FAIL' $SIG_FAIL - SIG_UNRESOLVED=$((SIG_BASE + UNRESOLVED)) exit_unresolved () { kill -s $SIG_UNRESOLVED $SIG_PID @@ -221,25 +215,17 @@ exit_xfail () { } trap 'SIG_RESULT=$XFAIL' $SIG_XFAIL -__run_test() { # testfile - # setup PID and PPID, $$ is not updated. - (cd $TRACING_DIR; read PID _ < /proc/self/stat ; set -e; set -x; . $1) - [ $? -ne 0 ] && kill -s $SIG_FAIL $SIG_PID -} - # Run one test case run_test() { # testfile local testname=`basename $1` - local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX` + local testlog=`mktemp --tmpdir=$LOG_DIR ${testname}-XXXXXX.log` testcase $1 echo "execute: "$1 > $testlog SIG_RESULT=0 - if [ $VERBOSE -ne 0 ]; then - __run_test $1 2>> $testlog | tee -a $testlog - else - __run_test $1 >> $testlog 2>&1 - fi - eval_result $SIG_RESULT + # setup PID and PPID, $$ is not updated. + (cd $TRACING_DIR; read PID _ < /proc/self/stat ; + set -e; set -x; . $1) >> $testlog 2>&1 + eval_result $? $SIG_RESULT if [ $? -eq 0 ]; then # Remove test log if the test was done as it was expected. [ $KEEP_LOG -eq 0 ] && rm $testlog @@ -249,9 +235,6 @@ run_test() { # testfile fi } -# load in the helper functions -. $TEST_DIR/functions - # Main loop for t in $TEST_CASES; do run_test $t diff --git a/ftrace/test.d/00basic/basic4.tc b/ftrace/test.d/00basic/basic4.tc deleted file mode 100644 index fd9c49a..0000000 --- a/ftrace/test.d/00basic/basic4.tc +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -# description: Basic event tracing check -test -f available_events -a -f set_event -a -d events -# check scheduler events are available -grep -q sched available_events && exit 0 || exit -1
\ No newline at end of file diff --git a/ftrace/test.d/event/event-enable.tc b/ftrace/test.d/event/event-enable.tc deleted file mode 100644 index 668616d..0000000 --- a/ftrace/test.d/event/event-enable.tc +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# description: event tracing - enable/disable with event level files - -do_reset() { - echo > set_event - clear_trace -} - -fail() { #msg - do_reset - echo $1 - exit -1 -} - -if [ ! -f set_event -o ! -d events/sched ]; then - echo "event tracing is not supported" - exit_unsupported -fi - -reset_tracer -do_reset - -echo 'sched:sched_switch' > set_event -usleep 1 - -count=`cat trace | grep sched_switch | wc -l` -if [ $count -eq 0 ]; then - fail "sched_switch events are not recorded" -fi - -do_reset - -echo 1 > events/sched/sched_switch/enable -usleep 1 - -count=`cat trace | grep sched_switch | wc -l` -if [ $count -eq 0 ]; then - fail "sched_switch events are not recorded" -fi - -do_reset - -echo 0 > events/sched/sched_switch/enable -usleep 1 - -count=`cat trace | grep sched_switch | wc -l` -if [ $count -ne 0 ]; then - fail "sched_switch events should not be recorded" -fi - -do_reset - -exit 0 diff --git a/ftrace/test.d/event/subsystem-enable.tc b/ftrace/test.d/event/subsystem-enable.tc deleted file mode 100644 index 655c415..0000000 --- a/ftrace/test.d/event/subsystem-enable.tc +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# description: event tracing - enable/disable with subsystem level files - -do_reset() { - echo > set_event - clear_trace -} - -fail() { #msg - do_reset - echo $1 - exit -1 -} - -if [ ! -f set_event -o ! -d events/sched ]; then - echo "event tracing is not supported" - exit_unsupported -fi - -reset_tracer -do_reset - -echo 'sched:*' > set_event -usleep 1 - -count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l` -if [ $count -lt 3 ]; then - fail "at least fork, exec and exit events should be recorded" -fi - -do_reset - -echo 1 > events/sched/enable -usleep 1 - -count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l` -if [ $count -lt 3 ]; then - fail "at least fork, exec and exit events should be recorded" -fi - -do_reset - -echo 0 > events/sched/enable -usleep 1 - -count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l` -if [ $count -ne 0 ]; then - fail "any of scheduler events should not be recorded" -fi - -do_reset - -exit 0 diff --git a/ftrace/test.d/event/toplevel-enable.tc b/ftrace/test.d/event/toplevel-enable.tc deleted file mode 100644 index 4808457..0000000 --- a/ftrace/test.d/event/toplevel-enable.tc +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh -# description: event tracing - enable/disable with top level files - -do_reset() { - echo > set_event - clear_trace -} - -fail() { #msg - do_reset - echo $1 - exit -1 -} - -if [ ! -f available_events -o ! -f set_event -o ! -d events ]; then - echo "event tracing is not supported" - exit_unsupported -fi - -reset_tracer -do_reset - -echo '*:*' > set_event -count=`cat trace | grep -v ^# | wc -l` -if [ $count -eq 0 ]; then - fail "none of events are recorded" -fi - -do_reset - -echo 1 > events/enable -count=`cat trace | grep -v ^# | wc -l` -if [ $count -eq 0 ]; then - fail "none of events are recorded" -fi - -do_reset - -echo 0 > events/enable -count=`cat trace | grep -v ^# | wc -l` -if [ $count -ne 0 ]; then - fail "any of events should not be recorded" -fi - -do_reset - -exit 0 diff --git a/ftrace/test.d/ftrace/fgraph-filter-stack.tc b/ftrace/test.d/ftrace/fgraph-filter-stack.tc deleted file mode 100644 index c15e018..0000000 --- a/ftrace/test.d/ftrace/fgraph-filter-stack.tc +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/sh -# description: ftrace - function graph filters with stack tracer - -# Make sure that function graph filtering works, and is not -# affected by other tracers enabled (like stack tracer) - -if ! grep -q function_graph available_tracers; then - echo "no function graph tracer configured" - exit_unsupported -fi - -if [ ! -f set_ftrace_filter ]; then - echo "set_ftrace_filter not found? Is dynamic ftrace not set?" - exit_unsupported -fi - -do_reset() { - reset_tracer - echo 0 > /proc/sys/kernel/stack_tracer_enabled - enable_tracing - clear_trace - echo > set_ftrace_filter -} - -fail() { # msg - do_reset - echo $1 - exit -1 -} - -disable_tracing -clear_trace; - -# filter something, schedule is always good -if ! echo "schedule" > set_ftrace_filter; then - # test for powerpc 64 - if ! echo ".schedule" > set_ftrace_filter; then - fail "can not enable schedule filter" - fi -fi - -echo function_graph > current_tracer - -if [ ! -f stack_trace ]; then - echo "Stack tracer not configured" - do_reset - exit_unsupported; -fi - -echo "Now testing with stack tracer" - -echo 1 > /proc/sys/kernel/stack_tracer_enabled - -disable_tracing -clear_trace -enable_tracing -sleep 1 - -count=`cat trace | grep '()' | grep -v schedule | wc -l` - -if [ $count -ne 0 ]; then - fail "Graph filtering not working with stack tracer?" -fi - -# Make sure we did find something -count=`cat trace | grep 'schedule()' | wc -l` -if [ $count -eq 0 ]; then - fail "No schedule traces found?" -fi - -echo 0 > /proc/sys/kernel/stack_tracer_enabled -clear_trace -sleep 1 - - -count=`cat trace | grep '()' | grep -v schedule | wc -l` - -if [ $count -ne 0 ]; then - fail "Graph filtering not working after stack tracer disabled?" -fi - -count=`cat trace | grep 'schedule()' | wc -l` -if [ $count -eq 0 ]; then - fail "No schedule traces found?" -fi - -do_reset - -exit 0 diff --git a/ftrace/test.d/ftrace/fgraph-filter.tc b/ftrace/test.d/ftrace/fgraph-filter.tc deleted file mode 100644 index 6af5f63..0000000 --- a/ftrace/test.d/ftrace/fgraph-filter.tc +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# description: ftrace - function graph filters - -# Make sure that function graph filtering works - -if ! grep -q function_graph available_tracers; then - echo "no function graph tracer configured" - exit_unsupported -fi - -do_reset() { - reset_tracer - enable_tracing - clear_trace -} - -fail() { # msg - do_reset - echo $1 - exit -1 -} - -disable_tracing -clear_trace - -# filter something, schedule is always good -if ! echo "schedule" > set_ftrace_filter; then - # test for powerpc 64 - if ! echo ".schedule" > set_ftrace_filter; then - fail "can not enable schedule filter" - fi -fi - -echo function_graph > current_tracer -enable_tracing -sleep 1 -# search for functions (has "()" on the line), and make sure -# that only the schedule function was found -count=`cat trace | grep '()' | grep -v schedule | wc -l` -if [ $count -ne 0 ]; then - fail "Graph filtering not working by itself?" -fi - -# Make sure we did find something -count=`cat trace | grep 'schedule()' | wc -l` -if [ $count -eq 0 ]; then - fail "No schedule traces found?" -fi - -do_reset - -exit 0 diff --git a/ftrace/test.d/ftrace/func_profiler.tc b/ftrace/test.d/ftrace/func_profiler.tc deleted file mode 100644 index 2e719cb..0000000 --- a/ftrace/test.d/ftrace/func_profiler.tc +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/sh -# description: ftrace - function profiler with function tracing - -# There was a bug after a rewrite of the ftrace infrastructure that -# caused the function_profiler not to be able to run with the function -# tracer, because the function_profiler used the function_graph tracer -# and it was assumed the two could not run simultaneously. -# -# There was another related bug where the solution to the first bug -# broke the way filtering of the function tracer worked. -# -# This test triggers those bugs on those kernels. -# -# We need function_graph and profiling to to run this test -if ! grep -q function_graph available_tracers; then - echo "no function graph tracer configured" - exit_unsupported; -fi - -if [ ! -f set_ftrace_filter ]; then - echo "set_ftrace_filter not found? Is dynamic ftrace not set?" - exit_unsupported -fi - -if [ ! -f function_profile_enabled ]; then - echo "function_profile_enabled not found, function profiling enabled?" - exit_unsupported -fi - -fail() { # mesg - reset_tracer - echo > set_ftrace_filter - echo $1 - exit -1 -} - -echo "Testing function tracer with profiler:" -echo "enable function tracer" -echo function > current_tracer -echo "enable profiler" -echo 1 > function_profile_enabled - -sleep 1 - -echo "Now filter on just schedule" -echo '*schedule' > set_ftrace_filter -clear_trace - -echo "Now disable function profiler" -echo 0 > function_profile_enabled - -sleep 1 - -# make sure only schedule functions exist - -echo "testing if only schedule is being traced" -if grep -v -e '^#' -e 'schedule' trace; then - fail "more than schedule was found" -fi - -echo "Make sure schedule was traced" -if ! grep -e 'schedule' trace > /dev/null; then - cat trace - fail "can not find schedule in trace" -fi - -echo > set_ftrace_filter -clear_trace - -sleep 1 - -echo "make sure something other than scheduler is being traced" -if ! grep -v -e '^#' -e 'schedule' trace > /dev/null; then - cat trace - fail "no other functions besides schedule was found" -fi - -reset_tracer - -exit 0 diff --git a/ftrace/test.d/functions b/ftrace/test.d/functions deleted file mode 100644 index 5d8cd06..0000000 --- a/ftrace/test.d/functions +++ /dev/null @@ -1,16 +0,0 @@ - -clear_trace() { # reset trace output - echo > trace -} - -disable_tracing() { # stop trace recording - echo 0 > tracing_on -} - -enable_tracing() { # start trace recording - echo 1 > tracing_on -} - -reset_tracer() { # reset the current tracer - echo nop > current_tracer -} diff --git a/ftrace/test.d/kprobe/add_and_remove.tc b/ftrace/test.d/kprobe/add_and_remove.tc index a5a4262..1b8b665 100644 --- a/ftrace/test.d/kprobe/add_and_remove.tc +++ b/ftrace/test.d/kprobe/add_and_remove.tc @@ -9,4 +9,3 @@ echo p:myevent do_fork > kprobe_events grep myevent kprobe_events test -d events/kprobes/myevent echo > kprobe_events -clear_trace diff --git a/ftrace/test.d/kprobe/busy_check.tc b/ftrace/test.d/kprobe/busy_check.tc index d8c7bb6..b55c840 100644 --- a/ftrace/test.d/kprobe/busy_check.tc +++ b/ftrace/test.d/kprobe/busy_check.tc @@ -11,4 +11,3 @@ echo 1 > events/kprobes/myevent/enable echo > kprobe_events && exit 1 # this must fail echo 0 > events/kprobes/myevent/enable echo > kprobe_events # this must succeed -clear_trace diff --git a/ftrace/test.d/kprobe/kprobe_args.tc b/ftrace/test.d/kprobe/kprobe_args.tc index c45ee27..a603d3f 100644 --- a/ftrace/test.d/kprobe/kprobe_args.tc +++ b/ftrace/test.d/kprobe/kprobe_args.tc @@ -12,6 +12,5 @@ echo 1 > events/kprobes/testprobe/enable ( echo "forked") echo 0 > events/kprobes/testprobe/enable echo "-:testprobe" >> kprobe_events -clear_trace test -d events/kprobes/testprobe && exit 1 || exit 0 diff --git a/ftrace/test.d/kprobe/kprobe_ftrace.tc b/ftrace/test.d/kprobe/kprobe_ftrace.tc deleted file mode 100644 index ab41d2b..0000000 --- a/ftrace/test.d/kprobe/kprobe_ftrace.tc +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh -# description: Kprobe dynamic event with function tracer - -[ -f kprobe_events ] || exit_unsupported # this is configurable -grep function available_tracers || exit_unsupported # this is configurable - -# prepare -echo nop > current_tracer -echo do_fork > set_ftrace_filter -echo 0 > events/enable -echo > kprobe_events -echo 'p:testprobe do_fork' > kprobe_events - -# kprobe on / ftrace off -echo 1 > events/kprobes/testprobe/enable -echo > trace -( echo "forked") -grep testprobe trace -! grep 'do_fork <-' trace - -# kprobe on / ftrace on -echo function > current_tracer -echo > trace -( echo "forked") -grep testprobe trace -grep 'do_fork <-' trace - -# kprobe off / ftrace on -echo 0 > events/kprobes/testprobe/enable -echo > trace -( echo "forked") -! grep testprobe trace -grep 'do_fork <-' trace - -# kprobe on / ftrace on -echo 1 > events/kprobes/testprobe/enable -echo function > current_tracer -echo > trace -( echo "forked") -grep testprobe trace -grep 'do_fork <-' trace - -# kprobe on / ftrace off -echo nop > current_tracer -echo > trace -( echo "forked") -grep testprobe trace -! grep 'do_fork <-' trace - -# cleanup -echo nop > current_tracer -echo > set_ftrace_filter -echo 0 > events/kprobes/testprobe/enable -echo > kprobe_events -echo > trace diff --git a/ftrace/test.d/kprobe/kretprobe_args.tc b/ftrace/test.d/kprobe/kretprobe_args.tc index 3171798..283c29e 100644 --- a/ftrace/test.d/kprobe/kretprobe_args.tc +++ b/ftrace/test.d/kprobe/kretprobe_args.tc @@ -12,5 +12,4 @@ echo 1 > events/kprobes/testprobe2/enable ( echo "forked") echo 0 > events/kprobes/testprobe2/enable echo '-:testprobe2' >> kprobe_events -clear_trace test -d events/kprobes/testprobe2 && exit 1 || exit 0 diff --git a/ipc/msgque.c b/ipc/msgque.c index 1b2ce33..552f081 100644 --- a/ipc/msgque.c +++ b/ipc/msgque.c @@ -5,8 +5,6 @@ #include <linux/msg.h> #include <fcntl.h> -#include "../kselftest.h" - #define MAX_MSG_SIZE 32 struct msg1 { @@ -197,58 +195,58 @@ int main(int argc, char **argv) if (getuid() != 0) { printf("Please run the test as root - Exiting.\n"); - return ksft_exit_fail(); + exit(1); } msgque.key = ftok(argv[0], 822155650); if (msgque.key == -1) { - printf("Can't make key: %d\n", -errno); - return ksft_exit_fail(); + printf("Can't make key\n"); + return -errno; } msgque.msq_id = msgget(msgque.key, IPC_CREAT | IPC_EXCL | 0666); if (msgque.msq_id == -1) { err = -errno; - printf("Can't create queue: %d\n", err); + printf("Can't create queue\n"); goto err_out; } err = fill_msgque(&msgque); if (err) { - printf("Failed to fill queue: %d\n", err); + printf("Failed to fill queue\n"); goto err_destroy; } err = dump_queue(&msgque); if (err) { - printf("Failed to dump queue: %d\n", err); + printf("Failed to dump queue\n"); goto err_destroy; } err = check_and_destroy_queue(&msgque); if (err) { - printf("Failed to check and destroy queue: %d\n", err); + printf("Failed to check and destroy queue\n"); goto err_out; } err = restore_queue(&msgque); if (err) { - printf("Failed to restore queue: %d\n", err); + printf("Failed to restore queue\n"); goto err_destroy; } err = check_and_destroy_queue(&msgque); if (err) { - printf("Failed to test queue: %d\n", err); + printf("Failed to test queue\n"); goto err_out; } - return ksft_exit_pass(); + return 0; err_destroy: if (msgctl(msgque.msq_id, IPC_RMID, 0)) { printf("Failed to destroy queue: %d\n", -errno); - return ksft_exit_fail(); + return -errno; } err_out: - return ksft_exit_fail(); + return err; } diff --git a/kcmp/Makefile b/kcmp/Makefile index ff0eefd..8aabd82 100644 --- a/kcmp/Makefile +++ b/kcmp/Makefile @@ -1,7 +1,25 @@ -CC := $(CROSS_COMPILE)$(CC) +uname_M := $(shell uname -m 2>/dev/null || echo not) +ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/i386/) +ifeq ($(ARCH),i386) + ARCH := x86 + CFLAGS := -DCONFIG_X86_32 -D__i386__ +endif +ifeq ($(ARCH),x86_64) + ARCH := x86 + CFLAGS := -DCONFIG_X86_64 -D__x86_64__ +endif + +CFLAGS += -I../../../../arch/x86/include/generated/ +CFLAGS += -I../../../../include/ CFLAGS += -I../../../../usr/include/ +CFLAGS += -I../../../../arch/x86/include/ -all: kcmp_test +all: +ifeq ($(ARCH),x86) + gcc $(CFLAGS) kcmp_test.c -o kcmp_test +else + echo "Not an x86 target, can't build kcmp selftest" +endif run_tests: all @./kcmp_test || echo "kcmp_test: [FAIL]" diff --git a/kcmp/kcmp_test.c b/kcmp/kcmp_test.c index a5a4da8..dbba408 100644 --- a/kcmp/kcmp_test.c +++ b/kcmp/kcmp_test.c @@ -17,8 +17,6 @@ #include <sys/stat.h> #include <sys/wait.h> -#include "../kselftest.h" - static long sys_kcmp(int pid1, int pid2, int type, int fd1, int fd2) { return syscall(__NR_kcmp, pid1, pid2, type, fd1, fd2); @@ -36,13 +34,13 @@ int main(int argc, char **argv) if (fd1 < 0) { perror("Can't create file"); - ksft_exit_fail(); + exit(1); } pid2 = fork(); if (pid2 < 0) { perror("fork failed"); - ksft_exit_fail(); + exit(1); } if (!pid2) { @@ -52,7 +50,7 @@ int main(int argc, char **argv) fd2 = open(kpath, O_RDWR, 0644); if (fd2 < 0) { perror("Can't open file"); - ksft_exit_fail(); + exit(1); } /* An example of output and arguments */ @@ -76,34 +74,23 @@ int main(int argc, char **argv) if (ret) { printf("FAIL: 0 expected but %d returned (%s)\n", ret, strerror(errno)); - ksft_inc_fail_cnt(); ret = -1; - } else { + } else printf("PASS: 0 returned as expected\n"); - ksft_inc_pass_cnt(); - } /* Compare with self */ ret = sys_kcmp(pid1, pid1, KCMP_VM, 0, 0); if (ret) { printf("FAIL: 0 expected but %d returned (%s)\n", ret, strerror(errno)); - ksft_inc_fail_cnt(); ret = -1; - } else { + } else printf("PASS: 0 returned as expected\n"); - ksft_inc_pass_cnt(); - } - - ksft_print_cnts(); - if (ret) - ksft_exit_fail(); - else - ksft_exit_pass(); + exit(ret); } waitpid(pid2, &status, P_ALL); - return ksft_exit_pass(); + return 0; } diff --git a/kselftest.h b/kselftest.h deleted file mode 100644 index 572c888..0000000 --- a/kselftest.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * kselftest.h: kselftest framework return codes to include from - * selftests. - * - * Copyright (c) 2014 Shuah Khan <shuahkh@osg.samsung.com> - * Copyright (c) 2014 Samsung Electronics Co., Ltd. - * - * This file is released under the GPLv2. - */ -#ifndef __KSELFTEST_H -#define __KSELFTEST_H - -#include <stdlib.h> -#include <unistd.h> - -/* counters */ -struct ksft_count { - unsigned int ksft_pass; - unsigned int ksft_fail; - unsigned int ksft_xfail; - unsigned int ksft_xpass; - unsigned int ksft_xskip; -}; - -static struct ksft_count ksft_cnt; - -static inline void ksft_inc_pass_cnt(void) { ksft_cnt.ksft_pass++; } -static inline void ksft_inc_fail_cnt(void) { ksft_cnt.ksft_fail++; } -static inline void ksft_inc_xfail_cnt(void) { ksft_cnt.ksft_xfail++; } -static inline void ksft_inc_xpass_cnt(void) { ksft_cnt.ksft_xpass++; } -static inline void ksft_inc_xskip_cnt(void) { ksft_cnt.ksft_xskip++; } - -static inline void ksft_print_cnts(void) -{ - printf("Pass: %d Fail: %d Xfail: %d Xpass: %d, Xskip: %d\n", - ksft_cnt.ksft_pass, ksft_cnt.ksft_fail, - ksft_cnt.ksft_xfail, ksft_cnt.ksft_xpass, - ksft_cnt.ksft_xskip); -} - -static inline int ksft_exit_pass(void) -{ - exit(0); -} -static inline int ksft_exit_fail(void) -{ - exit(1); -} -static inline int ksft_exit_xfail(void) -{ - exit(2); -} -static inline int ksft_exit_xpass(void) -{ - exit(3); -} -static inline int ksft_exit_skip(void) -{ - exit(4); -} - -#endif /* __KSELFTEST_H */ diff --git a/mount/unprivileged-remount-test.c b/mount/unprivileged-remount-test.c index 5177850..1b3ff2f 100644 --- a/mount/unprivileged-remount-test.c +++ b/mount/unprivileged-remount-test.c @@ -6,8 +6,6 @@ #include <sys/types.h> #include <sys/mount.h> #include <sys/wait.h> -#include <sys/vfs.h> -#include <sys/statvfs.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> @@ -34,14 +32,11 @@ # define CLONE_NEWPID 0x20000000 #endif -#ifndef MS_REC -# define MS_REC 16384 -#endif #ifndef MS_RELATIME -# define MS_RELATIME (1 << 21) +#define MS_RELATIME (1 << 21) #endif #ifndef MS_STRICTATIME -# define MS_STRICTATIME (1 << 24) +#define MS_STRICTATIME (1 << 24) #endif static void die(char *fmt, ...) @@ -53,14 +48,17 @@ static void die(char *fmt, ...) exit(EXIT_FAILURE); } -static void vmaybe_write_file(bool enoent_ok, char *filename, char *fmt, va_list ap) +static void write_file(char *filename, char *fmt, ...) { char buf[4096]; int fd; ssize_t written; int buf_len; + va_list ap; + va_start(ap, fmt); buf_len = vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); if (buf_len < 0) { die("vsnprintf failed: %s\n", strerror(errno)); @@ -71,8 +69,6 @@ static void vmaybe_write_file(bool enoent_ok, char *filename, char *fmt, va_list fd = open(filename, O_WRONLY); if (fd < 0) { - if ((errno == ENOENT) && enoent_ok) - return; die("open of %s failed: %s\n", filename, strerror(errno)); } @@ -91,65 +87,6 @@ static void vmaybe_write_file(bool enoent_ok, char *filename, char *fmt, va_list } } -static void maybe_write_file(char *filename, char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - vmaybe_write_file(true, filename, fmt, ap); - va_end(ap); - -} - -static void write_file(char *filename, char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - vmaybe_write_file(false, filename, fmt, ap); - va_end(ap); - -} - -static int read_mnt_flags(const char *path) -{ - int ret; - struct statvfs stat; - int mnt_flags; - - ret = statvfs(path, &stat); - if (ret != 0) { - die("statvfs of %s failed: %s\n", - path, strerror(errno)); - } - if (stat.f_flag & ~(ST_RDONLY | ST_NOSUID | ST_NODEV | \ - ST_NOEXEC | ST_NOATIME | ST_NODIRATIME | ST_RELATIME | \ - ST_SYNCHRONOUS | ST_MANDLOCK)) { - die("Unrecognized mount flags\n"); - } - mnt_flags = 0; - if (stat.f_flag & ST_RDONLY) - mnt_flags |= MS_RDONLY; - if (stat.f_flag & ST_NOSUID) - mnt_flags |= MS_NOSUID; - if (stat.f_flag & ST_NODEV) - mnt_flags |= MS_NODEV; - if (stat.f_flag & ST_NOEXEC) - mnt_flags |= MS_NOEXEC; - if (stat.f_flag & ST_NOATIME) - mnt_flags |= MS_NOATIME; - if (stat.f_flag & ST_NODIRATIME) - mnt_flags |= MS_NODIRATIME; - if (stat.f_flag & ST_RELATIME) - mnt_flags |= MS_RELATIME; - if (stat.f_flag & ST_SYNCHRONOUS) - mnt_flags |= MS_SYNCHRONOUS; - if (stat.f_flag & ST_MANDLOCK) - mnt_flags |= ST_MANDLOCK; - - return mnt_flags; -} - static void create_and_enter_userns(void) { uid_t uid; @@ -163,10 +100,13 @@ static void create_and_enter_userns(void) strerror(errno)); } - maybe_write_file("/proc/self/setgroups", "deny"); write_file("/proc/self/uid_map", "0 %d 1", uid); write_file("/proc/self/gid_map", "0 %d 1", gid); + if (setgroups(0, NULL) != 0) { + die("setgroups failed: %s\n", + strerror(errno)); + } if (setgid(0) != 0) { die ("setgid(0) failed %s\n", strerror(errno)); @@ -178,8 +118,7 @@ static void create_and_enter_userns(void) } static -bool test_unpriv_remount(const char *fstype, const char *mount_options, - int mount_flags, int remount_flags, int invalid_flags) +bool test_unpriv_remount(int mount_flags, int remount_flags, int invalid_flags) { pid_t child; @@ -212,11 +151,9 @@ bool test_unpriv_remount(const char *fstype, const char *mount_options, strerror(errno)); } - if (mount("testing", "/tmp", fstype, mount_flags, mount_options) != 0) { - die("mount of %s with options '%s' on /tmp failed: %s\n", - fstype, - mount_options? mount_options : "", - strerror(errno)); + if (mount("testing", "/tmp", "ramfs", mount_flags, NULL) != 0) { + die("mount of /tmp failed: %s\n", + strerror(errno)); } create_and_enter_userns(); @@ -244,127 +181,62 @@ bool test_unpriv_remount(const char *fstype, const char *mount_options, static bool test_unpriv_remount_simple(int mount_flags) { - return test_unpriv_remount("ramfs", NULL, mount_flags, mount_flags, 0); + return test_unpriv_remount(mount_flags, mount_flags, 0); } static bool test_unpriv_remount_atime(int mount_flags, int invalid_flags) { - return test_unpriv_remount("ramfs", NULL, mount_flags, mount_flags, - invalid_flags); -} - -static bool test_priv_mount_unpriv_remount(void) -{ - pid_t child; - int ret; - const char *orig_path = "/dev"; - const char *dest_path = "/tmp"; - int orig_mnt_flags, remount_mnt_flags; - - child = fork(); - if (child == -1) { - die("fork failed: %s\n", - strerror(errno)); - } - if (child != 0) { /* parent */ - pid_t pid; - int status; - pid = waitpid(child, &status, 0); - if (pid == -1) { - die("waitpid failed: %s\n", - strerror(errno)); - } - if (pid != child) { - die("waited for %d got %d\n", - child, pid); - } - if (!WIFEXITED(status)) { - die("child did not terminate cleanly\n"); - } - return WEXITSTATUS(status) == EXIT_SUCCESS ? true : false; - } - - orig_mnt_flags = read_mnt_flags(orig_path); - - create_and_enter_userns(); - ret = unshare(CLONE_NEWNS); - if (ret != 0) { - die("unshare(CLONE_NEWNS) failed: %s\n", - strerror(errno)); - } - - ret = mount(orig_path, dest_path, "bind", MS_BIND | MS_REC, NULL); - if (ret != 0) { - die("recursive bind mount of %s onto %s failed: %s\n", - orig_path, dest_path, strerror(errno)); - } - - ret = mount(dest_path, dest_path, "none", - MS_REMOUNT | MS_BIND | orig_mnt_flags , NULL); - if (ret != 0) { - /* system("cat /proc/self/mounts"); */ - die("remount of /tmp failed: %s\n", - strerror(errno)); - } - - remount_mnt_flags = read_mnt_flags(dest_path); - if (orig_mnt_flags != remount_mnt_flags) { - die("Mount flags unexpectedly changed during remount of %s originally mounted on %s\n", - dest_path, orig_path); - } - exit(EXIT_SUCCESS); + return test_unpriv_remount(mount_flags, mount_flags, invalid_flags); } int main(int argc, char **argv) { - if (!test_unpriv_remount_simple(MS_RDONLY)) { + if (!test_unpriv_remount_simple(MS_RDONLY|MS_NODEV)) { die("MS_RDONLY malfunctions\n"); } - if (!test_unpriv_remount("devpts", "newinstance", MS_NODEV, MS_NODEV, 0)) { + if (!test_unpriv_remount_simple(MS_NODEV)) { die("MS_NODEV malfunctions\n"); } - if (!test_unpriv_remount_simple(MS_NOSUID)) { + if (!test_unpriv_remount_simple(MS_NOSUID|MS_NODEV)) { die("MS_NOSUID malfunctions\n"); } - if (!test_unpriv_remount_simple(MS_NOEXEC)) { + if (!test_unpriv_remount_simple(MS_NOEXEC|MS_NODEV)) { die("MS_NOEXEC malfunctions\n"); } - if (!test_unpriv_remount_atime(MS_RELATIME, - MS_NOATIME)) + if (!test_unpriv_remount_atime(MS_RELATIME|MS_NODEV, + MS_NOATIME|MS_NODEV)) { die("MS_RELATIME malfunctions\n"); } - if (!test_unpriv_remount_atime(MS_STRICTATIME, - MS_NOATIME)) + if (!test_unpriv_remount_atime(MS_STRICTATIME|MS_NODEV, + MS_NOATIME|MS_NODEV)) { die("MS_STRICTATIME malfunctions\n"); } - if (!test_unpriv_remount_atime(MS_NOATIME, - MS_STRICTATIME)) + if (!test_unpriv_remount_atime(MS_NOATIME|MS_NODEV, + MS_STRICTATIME|MS_NODEV)) { - die("MS_NOATIME malfunctions\n"); + die("MS_RELATIME malfunctions\n"); } - if (!test_unpriv_remount_atime(MS_RELATIME|MS_NODIRATIME, - MS_NOATIME)) + if (!test_unpriv_remount_atime(MS_RELATIME|MS_NODIRATIME|MS_NODEV, + MS_NOATIME|MS_NODEV)) { - die("MS_RELATIME|MS_NODIRATIME malfunctions\n"); + die("MS_RELATIME malfunctions\n"); } - if (!test_unpriv_remount_atime(MS_STRICTATIME|MS_NODIRATIME, - MS_NOATIME)) + if (!test_unpriv_remount_atime(MS_STRICTATIME|MS_NODIRATIME|MS_NODEV, + MS_NOATIME|MS_NODEV)) { - die("MS_STRICTATIME|MS_NODIRATIME malfunctions\n"); + die("MS_RELATIME malfunctions\n"); } - if (!test_unpriv_remount_atime(MS_NOATIME|MS_NODIRATIME, - MS_STRICTATIME)) + if (!test_unpriv_remount_atime(MS_NOATIME|MS_NODIRATIME|MS_NODEV, + MS_STRICTATIME|MS_NODEV)) { - die("MS_NOATIME|MS_DIRATIME malfunctions\n"); + die("MS_RELATIME malfunctions\n"); } - if (!test_unpriv_remount("ramfs", NULL, MS_STRICTATIME, 0, MS_NOATIME)) + if (!test_unpriv_remount(MS_STRICTATIME|MS_NODEV, MS_NODEV, + MS_NOATIME|MS_NODEV)) { die("Default atime malfunctions\n"); } - if (!test_priv_mount_unpriv_remount()) { - die("Mount flags unexpectedly changed after remount\n"); - } return EXIT_SUCCESS; } diff --git a/net/Makefile b/net/Makefile index 62f22cc..c7493b8 100644 --- a/net/Makefile +++ b/net/Makefile @@ -14,6 +14,12 @@ all: $(NET_PROGS) run_tests: all @/bin/sh ./run_netsocktests || echo "sockettests: [FAIL]" @/bin/sh ./run_afpackettests || echo "afpackettests: [FAIL]" - ./test_bpf.sh + @if /sbin/modprobe test_bpf ; then \ + /sbin/rmmod test_bpf; \ + echo "test_bpf: ok"; \ + else \ + echo "test_bpf: [FAIL]"; \ + exit 1; \ + fi clean: $(RM) $(NET_PROGS) diff --git a/net/test_bpf.sh b/net/test_bpf.sh deleted file mode 100755 index 8b29796..0000000 --- a/net/test_bpf.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# Runs bpf test using test_bpf kernel module - -if /sbin/modprobe -q test_bpf ; then - /sbin/modprobe -q -r test_bpf; - echo "test_bpf: ok"; -else - echo "test_bpf: [FAIL]"; - exit 1; -fi diff --git a/rcutorture/bin/kvm-test-1-run.sh b/rcutorture/bin/kvm-test-1-run.sh index 8ca9f21..f6b2b47 100755 --- a/rcutorture/bin/kvm-test-1-run.sh +++ b/rcutorture/bin/kvm-test-1-run.sh @@ -45,7 +45,7 @@ trap 'rm -rf $T' 0 touch $T . $KVM/bin/functions.sh -. $CONFIGFRAG/ver_functions.sh +. $KVPATH/ver_functions.sh config_template=${1} config_dir=`echo $config_template | sed -e 's,/[^/]*$,,'` @@ -168,8 +168,8 @@ then touch $resdir/buildonly exit 0 fi -echo $QEMU $qemu_args -m 512 -kernel $resdir/bzImage -append \"$qemu_append $boot_args\" > $resdir/qemu-cmd -( $QEMU $qemu_args -m 512 -kernel $resdir/bzImage -append "$qemu_append $boot_args"; echo $? > $resdir/qemu-retval ) & +echo $QEMU $qemu_args -m 512 -kernel $builddir/$BOOT_IMAGE -append \"$qemu_append $boot_args\" > $resdir/qemu-cmd +( $QEMU $qemu_args -m 512 -kernel $builddir/$BOOT_IMAGE -append "$qemu_append $boot_args"; echo $? > $resdir/qemu-retval ) & qemu_pid=$! commandcompleted=0 echo Monitoring qemu job at pid $qemu_pid diff --git a/rcutorture/bin/kvm.sh b/rcutorture/bin/kvm.sh index 368d64a..e527dc9 100755 --- a/rcutorture/bin/kvm.sh +++ b/rcutorture/bin/kvm.sh @@ -47,6 +47,7 @@ resdir="" configs="" cpus=0 ds=`date +%Y.%m.%d-%H:%M:%S` +kversion="" . functions.sh @@ -63,6 +64,7 @@ usage () { echo " --duration minutes" echo " --interactive" echo " --kmake-arg kernel-make-arguments" + echo " --kversion vN.NN" echo " --mac nn:nn:nn:nn:nn:nn" echo " --no-initrd" echo " --qemu-args qemu-system-..." @@ -126,6 +128,11 @@ do TORTURE_KMAKE_ARG="$2" shift ;; + --kversion) + checkarg --kversion "(kernel version)" $# "$2" '^v[0-9.]*$' '^error' + kversion=$2 + shift + ;; --mac) checkarg --mac "(MAC address)" $# "$2" '^\([0-9a-fA-F]\{2\}:\)\{5\}[0-9a-fA-F]\{2\}$' error TORTURE_QEMU_MAC=$2 @@ -163,10 +170,11 @@ do done CONFIGFRAG=${KVM}/configs/${TORTURE_SUITE}; export CONFIGFRAG +KVPATH=${CONFIGFRAG}/$kversion; export KVPATH if test -z "$configs" then - configs="`cat $CONFIGFRAG/CFLIST`" + configs="`cat $CONFIGFRAG/$kversion/CFLIST`" fi if test -z "$resdir" @@ -178,10 +186,10 @@ fi touch $T/cfgcpu for CF in $configs do - if test -f "$CONFIGFRAG/$CF" + if test -f "$CONFIGFRAG/$kversion/$CF" then - cpu_count=`configNR_CPUS.sh $CONFIGFRAG/$CF` - cpu_count=`configfrag_boot_cpus "$TORTURE_BOOTARGS" "$CONFIGFRAG/$CF" "$cpu_count"` + cpu_count=`configNR_CPUS.sh $CONFIGFRAG/$kversion/$CF` + cpu_count=`configfrag_boot_cpus "$TORTURE_BOOTARGS" "$CONFIGFRAG/$kversion/$CF" "$cpu_count"` echo $CF $cpu_count >> $T/cfgcpu else echo "The --configs file $CF does not exist, terminating." @@ -244,6 +252,7 @@ END { cat << ___EOF___ > $T/script CONFIGFRAG="$CONFIGFRAG"; export CONFIGFRAG KVM="$KVM"; export KVM +KVPATH="$KVPATH"; export KVPATH PATH="$PATH"; export PATH TORTURE_BOOT_IMAGE="$TORTURE_BOOT_IMAGE"; export TORTURE_BOOT_IMAGE TORTURE_BUILDONLY="$TORTURE_BUILDONLY"; export TORTURE_BUILDONLY @@ -276,7 +285,7 @@ then fi ___EOF___ awk < $T/cfgcpu.pack \ - -v CONFIGDIR="$CONFIGFRAG/" \ + -v CONFIGDIR="$CONFIGFRAG/$kversion/" \ -v KVM="$KVM" \ -v ncpus=$cpus \ -v rd=$resdir/$ds/ \ diff --git a/rcutorture/configs/rcu/TINY02 b/rcutorture/configs/rcu/TINY02 index 36e41df..f4feaee 100644 --- a/rcutorture/configs/rcu/TINY02 +++ b/rcutorture/configs/rcu/TINY02 @@ -7,8 +7,6 @@ CONFIG_HZ_PERIODIC=y CONFIG_NO_HZ_IDLE=n CONFIG_NO_HZ_FULL=n CONFIG_RCU_TRACE=y -CONFIG_PROVE_LOCKING=y -CONFIG_PROVE_RCU=y CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_DEBUG_OBJECTS_RCU_HEAD=n CONFIG_PREEMPT_COUNT=y diff --git a/rcutorture/configs/rcu/TINY02.boot b/rcutorture/configs/rcu/TINY02.boot deleted file mode 100644 index 0f08027..0000000 --- a/rcutorture/configs/rcu/TINY02.boot +++ /dev/null @@ -1,2 +0,0 @@ -rcupdate.rcu_self_test=1 -rcupdate.rcu_self_test_bh=1 diff --git a/rcutorture/configs/rcu/TREE01 b/rcutorture/configs/rcu/TREE01 index f8a10a7..38e3895 100644 --- a/rcutorture/configs/rcu/TREE01 +++ b/rcutorture/configs/rcu/TREE01 @@ -2,7 +2,7 @@ CONFIG_SMP=y CONFIG_PREEMPT_NONE=n CONFIG_PREEMPT_VOLUNTARY=n CONFIG_PREEMPT=y -#CHECK#CONFIG_PREEMPT_RCU=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y CONFIG_HZ_PERIODIC=n CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_FULL=n @@ -14,5 +14,6 @@ CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_ZERO=y CONFIG_DEBUG_LOCK_ALLOC=n CONFIG_RCU_CPU_STALL_INFO=n +CONFIG_RCU_CPU_STALL_VERBOSE=n CONFIG_RCU_BOOST=n CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/TREE02 b/rcutorture/configs/rcu/TREE02 index 629122f..ea119ba 100644 --- a/rcutorture/configs/rcu/TREE02 +++ b/rcutorture/configs/rcu/TREE02 @@ -3,7 +3,7 @@ CONFIG_NR_CPUS=8 CONFIG_PREEMPT_NONE=n CONFIG_PREEMPT_VOLUNTARY=n CONFIG_PREEMPT=y -#CHECK#CONFIG_PREEMPT_RCU=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y CONFIG_HZ_PERIODIC=n CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_FULL=n @@ -19,5 +19,6 @@ CONFIG_RCU_NOCB_CPU=n CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=n CONFIG_RCU_CPU_STALL_INFO=n +CONFIG_RCU_CPU_STALL_VERBOSE=y CONFIG_RCU_BOOST=n CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/TREE02-T b/rcutorture/configs/rcu/TREE02-T index a25de47..19cf948 100644 --- a/rcutorture/configs/rcu/TREE02-T +++ b/rcutorture/configs/rcu/TREE02-T @@ -3,7 +3,7 @@ CONFIG_NR_CPUS=8 CONFIG_PREEMPT_NONE=n CONFIG_PREEMPT_VOLUNTARY=n CONFIG_PREEMPT=y -#CHECK#CONFIG_PREEMPT_RCU=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y CONFIG_HZ_PERIODIC=n CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_FULL=n @@ -19,5 +19,6 @@ CONFIG_RCU_NOCB_CPU=n CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=n CONFIG_RCU_CPU_STALL_INFO=n +CONFIG_RCU_CPU_STALL_VERBOSE=y CONFIG_RCU_BOOST=n CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/TREE03 b/rcutorture/configs/rcu/TREE03 index 53f24e0..f4567fb 100644 --- a/rcutorture/configs/rcu/TREE03 +++ b/rcutorture/configs/rcu/TREE03 @@ -3,7 +3,7 @@ CONFIG_NR_CPUS=8 CONFIG_PREEMPT_NONE=n CONFIG_PREEMPT_VOLUNTARY=n CONFIG_PREEMPT=y -#CHECK#CONFIG_PREEMPT_RCU=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y CONFIG_HZ_PERIODIC=y CONFIG_NO_HZ_IDLE=n CONFIG_NO_HZ_FULL=n @@ -15,6 +15,7 @@ CONFIG_RCU_FANOUT_EXACT=n CONFIG_RCU_NOCB_CPU=n CONFIG_DEBUG_LOCK_ALLOC=n CONFIG_RCU_CPU_STALL_INFO=n +CONFIG_RCU_CPU_STALL_VERBOSE=n CONFIG_RCU_BOOST=y -CONFIG_RCU_KTHREAD_PRIO=2 +CONFIG_RCU_BOOST_PRIO=2 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/TREE04 b/rcutorture/configs/rcu/TREE04 index 0f84db3..0a262fb 100644 --- a/rcutorture/configs/rcu/TREE04 +++ b/rcutorture/configs/rcu/TREE04 @@ -19,4 +19,5 @@ CONFIG_RCU_FANOUT_EXACT=n CONFIG_RCU_NOCB_CPU=n CONFIG_DEBUG_LOCK_ALLOC=n CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_RCU_CPU_STALL_VERBOSE=y CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/TREE05 b/rcutorture/configs/rcu/TREE05 index 212e3bf..3a06b97 100644 --- a/rcutorture/configs/rcu/TREE05 +++ b/rcutorture/configs/rcu/TREE05 @@ -19,4 +19,5 @@ CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y CONFIG_PROVE_RCU=y CONFIG_RCU_CPU_STALL_INFO=n +CONFIG_RCU_CPU_STALL_VERBOSE=n CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/TREE05.boot b/rcutorture/configs/rcu/TREE05.boot index 15b3e1a..3b42b8b 100644 --- a/rcutorture/configs/rcu/TREE05.boot +++ b/rcutorture/configs/rcu/TREE05.boot @@ -1,2 +1 @@ rcutorture.torture_type=sched -rcupdate.rcu_self_test_sched=1 diff --git a/rcutorture/configs/rcu/TREE06 b/rcutorture/configs/rcu/TREE06 index 7eee63b..8f084cc 100644 --- a/rcutorture/configs/rcu/TREE06 +++ b/rcutorture/configs/rcu/TREE06 @@ -20,4 +20,5 @@ CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y CONFIG_PROVE_RCU=y CONFIG_RCU_CPU_STALL_INFO=n +CONFIG_RCU_CPU_STALL_VERBOSE=n CONFIG_DEBUG_OBJECTS_RCU_HEAD=y diff --git a/rcutorture/configs/rcu/TREE06.boot b/rcutorture/configs/rcu/TREE06.boot deleted file mode 100644 index da9a03a..0000000 --- a/rcutorture/configs/rcu/TREE06.boot +++ /dev/null @@ -1,3 +0,0 @@ -rcupdate.rcu_self_test=1 -rcupdate.rcu_self_test_bh=1 -rcupdate.rcu_self_test_sched=1 diff --git a/rcutorture/configs/rcu/TREE07 b/rcutorture/configs/rcu/TREE07 index 92a97fa..8f10176 100644 --- a/rcutorture/configs/rcu/TREE07 +++ b/rcutorture/configs/rcu/TREE07 @@ -19,4 +19,5 @@ CONFIG_RCU_FANOUT_EXACT=n CONFIG_RCU_NOCB_CPU=n CONFIG_DEBUG_LOCK_ALLOC=n CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_RCU_CPU_STALL_VERBOSE=n CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/TREE08 b/rcutorture/configs/rcu/TREE08 index 5812027..69a2e25 100644 --- a/rcutorture/configs/rcu/TREE08 +++ b/rcutorture/configs/rcu/TREE08 @@ -3,7 +3,7 @@ CONFIG_NR_CPUS=16 CONFIG_PREEMPT_NONE=n CONFIG_PREEMPT_VOLUNTARY=n CONFIG_PREEMPT=y -#CHECK#CONFIG_PREEMPT_RCU=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y CONFIG_HZ_PERIODIC=n CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_FULL=n @@ -18,8 +18,7 @@ CONFIG_RCU_FANOUT_LEAF=2 CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_ALL=y CONFIG_DEBUG_LOCK_ALLOC=n -CONFIG_PROVE_LOCKING=y -CONFIG_PROVE_RCU=y CONFIG_RCU_CPU_STALL_INFO=n +CONFIG_RCU_CPU_STALL_VERBOSE=n CONFIG_RCU_BOOST=n CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/TREE08-T b/rcutorture/configs/rcu/TREE08-T index 3eaecca..a0f32fb 100644 --- a/rcutorture/configs/rcu/TREE08-T +++ b/rcutorture/configs/rcu/TREE08-T @@ -3,7 +3,7 @@ CONFIG_NR_CPUS=16 CONFIG_PREEMPT_NONE=n CONFIG_PREEMPT_VOLUNTARY=n CONFIG_PREEMPT=y -#CHECK#CONFIG_PREEMPT_RCU=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y CONFIG_HZ_PERIODIC=n CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_FULL=n @@ -19,5 +19,6 @@ CONFIG_RCU_NOCB_CPU=y CONFIG_RCU_NOCB_CPU_ALL=y CONFIG_DEBUG_LOCK_ALLOC=n CONFIG_RCU_CPU_STALL_INFO=n +CONFIG_RCU_CPU_STALL_VERBOSE=n CONFIG_RCU_BOOST=n CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/TREE08.boot b/rcutorture/configs/rcu/TREE08.boot index 2561daf..3b42b8b 100644 --- a/rcutorture/configs/rcu/TREE08.boot +++ b/rcutorture/configs/rcu/TREE08.boot @@ -1,3 +1 @@ rcutorture.torture_type=sched -rcupdate.rcu_self_test=1 -rcupdate.rcu_self_test_sched=1 diff --git a/rcutorture/configs/rcu/TREE09 b/rcutorture/configs/rcu/TREE09 index 6076b36..b7a62a5 100644 --- a/rcutorture/configs/rcu/TREE09 +++ b/rcutorture/configs/rcu/TREE09 @@ -3,7 +3,7 @@ CONFIG_NR_CPUS=1 CONFIG_PREEMPT_NONE=n CONFIG_PREEMPT_VOLUNTARY=n CONFIG_PREEMPT=y -#CHECK#CONFIG_PREEMPT_RCU=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y CONFIG_HZ_PERIODIC=n CONFIG_NO_HZ_IDLE=y CONFIG_NO_HZ_FULL=n @@ -14,5 +14,6 @@ CONFIG_HIBERNATION=n CONFIG_RCU_NOCB_CPU=n CONFIG_DEBUG_LOCK_ALLOC=n CONFIG_RCU_CPU_STALL_INFO=n +CONFIG_RCU_CPU_STALL_VERBOSE=n CONFIG_RCU_BOOST=n CONFIG_DEBUG_OBJECTS_RCU_HEAD=n diff --git a/rcutorture/configs/rcu/v0.0/CFLIST b/rcutorture/configs/rcu/v0.0/CFLIST new file mode 100644 index 0000000..1822394 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/CFLIST @@ -0,0 +1,14 @@ +P1-S-T-NH-SD-SMP-HP +P2-2-t-nh-sd-SMP-hp +P3-3-T-nh-SD-SMP-hp +P4-A-t-NH-sd-SMP-HP +P5-U-T-NH-sd-SMP-hp +N1-S-T-NH-SD-SMP-HP +N2-2-t-nh-sd-SMP-hp +N3-3-T-nh-SD-SMP-hp +N4-A-t-NH-sd-SMP-HP +N5-U-T-NH-sd-SMP-hp +PT1-nh +PT2-NH +NT1-nh +NT3-NH diff --git a/rcutorture/configs/rcu/v0.0/N1-S-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v0.0/N1-S-T-NH-SD-SMP-HP new file mode 100644 index 0000000..d3ef873 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/N1-S-T-NH-SD-SMP-HP @@ -0,0 +1,18 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=8 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/N2-2-t-nh-sd-SMP-hp b/rcutorture/configs/rcu/v0.0/N2-2-t-nh-sd-SMP-hp new file mode 100644 index 0000000..02e4185 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/N2-2-t-nh-sd-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=4 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/N3-3-T-nh-SD-SMP-hp b/rcutorture/configs/rcu/v0.0/N3-3-T-nh-SD-SMP-hp new file mode 100644 index 0000000..b3100f6 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/N3-3-T-nh-SD-SMP-hp @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/N4-A-t-NH-sd-SMP-HP b/rcutorture/configs/rcu/v0.0/N4-A-t-NH-sd-SMP-HP new file mode 100644 index 0000000..c56b445 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/N4-A-t-NH-sd-SMP-HP @@ -0,0 +1,18 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/N5-U-T-NH-sd-SMP-hp b/rcutorture/configs/rcu/v0.0/N5-U-T-NH-sd-SMP-hp new file mode 100644 index 0000000..90d924f --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/N5-U-T-NH-sd-SMP-hp @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=y +CONFIG_DEBUG_KERNEL=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=y +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/NT1-nh b/rcutorture/configs/rcu/v0.0/NT1-nh new file mode 100644 index 0000000..023f312 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/NT1-nh @@ -0,0 +1,23 @@ +#CHECK#CONFIG_TINY_RCU=y +CONFIG_RCU_TRACE=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=n +# +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/NT3-NH b/rcutorture/configs/rcu/v0.0/NT3-NH new file mode 100644 index 0000000..6fd0235 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/NT3-NH @@ -0,0 +1,20 @@ +#CHECK#CONFIG_TINY_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=y +# +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/P1-S-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v0.0/P1-S-T-NH-SD-SMP-HP new file mode 100644 index 0000000..f72402d --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/P1-S-T-NH-SD-SMP-HP @@ -0,0 +1,19 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=8 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/P2-2-t-nh-sd-SMP-hp b/rcutorture/configs/rcu/v0.0/P2-2-t-nh-sd-SMP-hp new file mode 100644 index 0000000..0f3b667 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/P2-2-t-nh-sd-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=4 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/P3-3-T-nh-SD-SMP-hp b/rcutorture/configs/rcu/v0.0/P3-3-T-nh-SD-SMP-hp new file mode 100644 index 0000000..b035e14 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/P3-3-T-nh-SD-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/P4-A-t-NH-sd-SMP-HP b/rcutorture/configs/rcu/v0.0/P4-A-t-NH-sd-SMP-HP new file mode 100644 index 0000000..3ccf6a9 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/P4-A-t-NH-sd-SMP-HP @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_RT_MUTEXES=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/P5-U-T-NH-sd-SMP-hp b/rcutorture/configs/rcu/v0.0/P5-U-T-NH-sd-SMP-hp new file mode 100644 index 0000000..a55c008 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/P5-U-T-NH-sd-SMP-hp @@ -0,0 +1,27 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=y +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_OBJECTS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +CONFIG_RT_MUTEXES=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/PT1-nh b/rcutorture/configs/rcu/v0.0/PT1-nh new file mode 100644 index 0000000..e3361c3 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/PT1-nh @@ -0,0 +1,23 @@ +CONFIG_TINY_PREEMPT_RCU=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_RCU_TRACE=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=n +# +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/PT2-NH b/rcutorture/configs/rcu/v0.0/PT2-NH new file mode 100644 index 0000000..64abfc3 --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/PT2-NH @@ -0,0 +1,22 @@ +CONFIG_TINY_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=y +# +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v0.0/ver_functions.sh b/rcutorture/configs/rcu/v0.0/ver_functions.sh new file mode 100644 index 0000000..5ace37a --- /dev/null +++ b/rcutorture/configs/rcu/v0.0/ver_functions.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# +# Kernel-version-dependent shell functions for the rest of the scripts. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, you can access it online at +# http://www.gnu.org/licenses/gpl-2.0.html. +# +# Copyright (C) IBM Corporation, 2013 +# +# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com> + +# per_version_boot_params bootparam-string config-file seconds +# +# Adds per-version torture-module parameters to kernels supporting them. +# Which old kernels do not. +per_version_boot_params () { + echo rcutorture.stat_interval=15 \ + rcutorture.shutdown_secs=$3 \ + rcutorture.rcutorture_runnable=1 \ + rcutorture.test_no_idle_hz=1 \ + rcutorture.verbose=1 +} diff --git a/rcutorture/configs/rcu/v3.12/CFLIST b/rcutorture/configs/rcu/v3.12/CFLIST new file mode 100644 index 0000000..da4cbc6 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/CFLIST @@ -0,0 +1,17 @@ +sysidleY.2013.06.19a +sysidleN.2013.06.19a +P1-S-T-NH-SD-SMP-HP +P2-2-t-nh-sd-SMP-hp +P3-3-T-nh-SD-SMP-hp +P4-A-t-NH-sd-SMP-HP +P5-U-T-NH-sd-SMP-hp +P6---t-nh-SD-smp-hp +N1-S-T-NH-SD-SMP-HP +N2-2-t-nh-sd-SMP-hp +N3-3-T-nh-SD-SMP-hp +N4-A-t-NH-sd-SMP-HP +N5-U-T-NH-sd-SMP-hp +PT1-nh +PT2-NH +NT1-nh +NT3-NH diff --git a/rcutorture/configs/rcu/v3.12/N1-S-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v3.12/N1-S-T-NH-SD-SMP-HP new file mode 100644 index 0000000..d81e11d --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/N1-S-T-NH-SD-SMP-HP @@ -0,0 +1,19 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_FAST_NO_HZ=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=8 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/N2-2-t-nh-sd-SMP-hp b/rcutorture/configs/rcu/v3.12/N2-2-t-nh-sd-SMP-hp new file mode 100644 index 0000000..02e4185 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/N2-2-t-nh-sd-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=4 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/N3-3-T-nh-SD-SMP-hp b/rcutorture/configs/rcu/v3.12/N3-3-T-nh-SD-SMP-hp new file mode 100644 index 0000000..b3100f6 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/N3-3-T-nh-SD-SMP-hp @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/N4-A-t-NH-sd-SMP-HP b/rcutorture/configs/rcu/v3.12/N4-A-t-NH-sd-SMP-HP new file mode 100644 index 0000000..c56b445 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/N4-A-t-NH-sd-SMP-HP @@ -0,0 +1,18 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/N5-U-T-NH-sd-SMP-hp b/rcutorture/configs/rcu/v3.12/N5-U-T-NH-sd-SMP-hp new file mode 100644 index 0000000..90d924f --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/N5-U-T-NH-sd-SMP-hp @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=y +CONFIG_DEBUG_KERNEL=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=y +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/N6---t-nh-SD-smp-hp b/rcutorture/configs/rcu/v3.12/N6---t-nh-SD-smp-hp new file mode 100644 index 0000000..0ccc36d --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/N6---t-nh-SD-smp-hp @@ -0,0 +1,19 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_NR_CPUS=1 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/N7-4-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v3.12/N7-4-T-NH-SD-SMP-HP new file mode 100644 index 0000000..3f640cf --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/N7-4-T-NH-SD-SMP-HP @@ -0,0 +1,26 @@ +CONFIG_RCU_TRACE=y +CONFIG_DEBUG_KERNEL=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=16 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_RCU_NOCB_CPU=y +CONFIG_RCU_NOCB_CPU_NONE=y +CONFIG_RCU_NOCB_CPU_ZERO=n +CONFIG_RCU_NOCB_CPU_ALL=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/N8-2-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v3.12/N8-2-T-NH-SD-SMP-HP new file mode 100644 index 0000000..285da2d --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/N8-2-T-NH-SD-SMP-HP @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=y +CONFIG_DEBUG_KERNEL=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=14 +CONFIG_NR_CPUS=16 +CONFIG_RCU_FANOUT_EXACT=y +CONFIG_HOTPLUG_CPU=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/NT1-nh b/rcutorture/configs/rcu/v3.12/NT1-nh new file mode 100644 index 0000000..023f312 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/NT1-nh @@ -0,0 +1,23 @@ +#CHECK#CONFIG_TINY_RCU=y +CONFIG_RCU_TRACE=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=n +# +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/NT3-NH b/rcutorture/configs/rcu/v3.12/NT3-NH new file mode 100644 index 0000000..6fd0235 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/NT3-NH @@ -0,0 +1,20 @@ +#CHECK#CONFIG_TINY_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=y +# +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P1-S-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v3.12/P1-S-T-NH-SD-SMP-HP new file mode 100644 index 0000000..9647c44 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P1-S-T-NH-SD-SMP-HP @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_RCU_FAST_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=8 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P2-2-t-nh-sd-SMP-hp b/rcutorture/configs/rcu/v3.12/P2-2-t-nh-sd-SMP-hp new file mode 100644 index 0000000..0f3b667 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P2-2-t-nh-sd-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=4 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P3-3-T-nh-SD-SMP-hp b/rcutorture/configs/rcu/v3.12/P3-3-T-nh-SD-SMP-hp new file mode 100644 index 0000000..b035e14 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P3-3-T-nh-SD-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P4-A-t-NH-sd-SMP-HP b/rcutorture/configs/rcu/v3.12/P4-A-t-NH-sd-SMP-HP new file mode 100644 index 0000000..3ccf6a9 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P4-A-t-NH-sd-SMP-HP @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_RT_MUTEXES=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P5-U-T-NH-sd-SMP-hp b/rcutorture/configs/rcu/v3.12/P5-U-T-NH-sd-SMP-hp new file mode 100644 index 0000000..a55c008 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P5-U-T-NH-sd-SMP-hp @@ -0,0 +1,27 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=y +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_OBJECTS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +CONFIG_RT_MUTEXES=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P6---t-nh-SD-smp-hp b/rcutorture/configs/rcu/v3.12/P6---t-nh-SD-smp-hp new file mode 100644 index 0000000..f4c9175 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P6---t-nh-SD-smp-hp @@ -0,0 +1,18 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=n +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP new file mode 100644 index 0000000..77a8c5b --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP @@ -0,0 +1,30 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=16 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_RCU_NOCB_CPU=y +CONFIG_RCU_NOCB_CPU_NONE=n +CONFIG_RCU_NOCB_CPU_ZERO=n +CONFIG_RCU_NOCB_CPU_ALL=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_OBJECTS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_SLUB=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP-all b/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP-all new file mode 100644 index 0000000..0eecebc --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP-all @@ -0,0 +1,30 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=16 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_RCU_NOCB_CPU=y +CONFIG_RCU_NOCB_CPU_NONE=y +CONFIG_RCU_NOCB_CPU_ZERO=n +CONFIG_RCU_NOCB_CPU_ALL=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_OBJECTS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_SLUB=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP-none b/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP-none new file mode 100644 index 0000000..0eecebc --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP-none @@ -0,0 +1,30 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=16 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_RCU_NOCB_CPU=y +CONFIG_RCU_NOCB_CPU_NONE=y +CONFIG_RCU_NOCB_CPU_ZERO=n +CONFIG_RCU_NOCB_CPU_ALL=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_OBJECTS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_SLUB=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-hp b/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-hp new file mode 100644 index 0000000..588bc70 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-hp @@ -0,0 +1,30 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=16 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_RCU_NOCB_CPU=y +CONFIG_RCU_NOCB_CPU_NONE=n +CONFIG_RCU_NOCB_CPU_ZERO=y +CONFIG_RCU_NOCB_CPU_ALL=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_OBJECTS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_SLUB=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/PT1-nh b/rcutorture/configs/rcu/v3.12/PT1-nh new file mode 100644 index 0000000..e3361c3 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/PT1-nh @@ -0,0 +1,23 @@ +CONFIG_TINY_PREEMPT_RCU=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_RCU_TRACE=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=n +# +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.12/PT2-NH b/rcutorture/configs/rcu/v3.12/PT2-NH new file mode 100644 index 0000000..64abfc3 --- /dev/null +++ b/rcutorture/configs/rcu/v3.12/PT2-NH @@ -0,0 +1,22 @@ +CONFIG_TINY_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=y +# +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/CFLIST b/rcutorture/configs/rcu/v3.3/CFLIST new file mode 100644 index 0000000..1822394 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/CFLIST @@ -0,0 +1,14 @@ +P1-S-T-NH-SD-SMP-HP +P2-2-t-nh-sd-SMP-hp +P3-3-T-nh-SD-SMP-hp +P4-A-t-NH-sd-SMP-HP +P5-U-T-NH-sd-SMP-hp +N1-S-T-NH-SD-SMP-HP +N2-2-t-nh-sd-SMP-hp +N3-3-T-nh-SD-SMP-hp +N4-A-t-NH-sd-SMP-HP +N5-U-T-NH-sd-SMP-hp +PT1-nh +PT2-NH +NT1-nh +NT3-NH diff --git a/rcutorture/configs/rcu/v3.3/N1-S-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v3.3/N1-S-T-NH-SD-SMP-HP new file mode 100644 index 0000000..d81e11d --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/N1-S-T-NH-SD-SMP-HP @@ -0,0 +1,19 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_FAST_NO_HZ=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=8 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/N2-2-t-nh-sd-SMP-hp b/rcutorture/configs/rcu/v3.3/N2-2-t-nh-sd-SMP-hp new file mode 100644 index 0000000..02e4185 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/N2-2-t-nh-sd-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=4 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/N3-3-T-nh-SD-SMP-hp b/rcutorture/configs/rcu/v3.3/N3-3-T-nh-SD-SMP-hp new file mode 100644 index 0000000..b3100f6 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/N3-3-T-nh-SD-SMP-hp @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/N4-A-t-NH-sd-SMP-HP b/rcutorture/configs/rcu/v3.3/N4-A-t-NH-sd-SMP-HP new file mode 100644 index 0000000..c56b445 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/N4-A-t-NH-sd-SMP-HP @@ -0,0 +1,18 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/N5-U-T-NH-sd-SMP-hp b/rcutorture/configs/rcu/v3.3/N5-U-T-NH-sd-SMP-hp new file mode 100644 index 0000000..90d924f --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/N5-U-T-NH-sd-SMP-hp @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=y +CONFIG_DEBUG_KERNEL=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=y +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/NT1-nh b/rcutorture/configs/rcu/v3.3/NT1-nh new file mode 100644 index 0000000..023f312 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/NT1-nh @@ -0,0 +1,23 @@ +#CHECK#CONFIG_TINY_RCU=y +CONFIG_RCU_TRACE=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=n +# +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/NT3-NH b/rcutorture/configs/rcu/v3.3/NT3-NH new file mode 100644 index 0000000..6fd0235 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/NT3-NH @@ -0,0 +1,20 @@ +#CHECK#CONFIG_TINY_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=y +# +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/P1-S-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v3.3/P1-S-T-NH-SD-SMP-HP new file mode 100644 index 0000000..9647c44 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/P1-S-T-NH-SD-SMP-HP @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_RCU_FAST_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=8 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/P2-2-t-nh-sd-SMP-hp b/rcutorture/configs/rcu/v3.3/P2-2-t-nh-sd-SMP-hp new file mode 100644 index 0000000..0f3b667 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/P2-2-t-nh-sd-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=4 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/P3-3-T-nh-SD-SMP-hp b/rcutorture/configs/rcu/v3.3/P3-3-T-nh-SD-SMP-hp new file mode 100644 index 0000000..b035e14 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/P3-3-T-nh-SD-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/P4-A-t-NH-sd-SMP-HP b/rcutorture/configs/rcu/v3.3/P4-A-t-NH-sd-SMP-HP new file mode 100644 index 0000000..3ccf6a9 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/P4-A-t-NH-sd-SMP-HP @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_RT_MUTEXES=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/P5-U-T-NH-sd-SMP-hp b/rcutorture/configs/rcu/v3.3/P5-U-T-NH-sd-SMP-hp new file mode 100644 index 0000000..a55c008 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/P5-U-T-NH-sd-SMP-hp @@ -0,0 +1,27 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=y +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_OBJECTS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +CONFIG_RT_MUTEXES=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/PT1-nh b/rcutorture/configs/rcu/v3.3/PT1-nh new file mode 100644 index 0000000..e3361c3 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/PT1-nh @@ -0,0 +1,23 @@ +CONFIG_TINY_PREEMPT_RCU=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_RCU_TRACE=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=n +# +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/PT2-NH b/rcutorture/configs/rcu/v3.3/PT2-NH new file mode 100644 index 0000000..64abfc3 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/PT2-NH @@ -0,0 +1,22 @@ +CONFIG_TINY_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=y +# +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.3/ver_functions.sh b/rcutorture/configs/rcu/v3.3/ver_functions.sh new file mode 100644 index 0000000..bae5569 --- /dev/null +++ b/rcutorture/configs/rcu/v3.3/ver_functions.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# +# Kernel-version-dependent shell functions for the rest of the scripts. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, you can access it online at +# http://www.gnu.org/licenses/gpl-2.0.html. +# +# Copyright (C) IBM Corporation, 2013 +# +# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com> + +# rcutorture_param_onoff bootparam-string config-file +# +# Adds onoff rcutorture module parameters to kernels having it. +rcutorture_param_onoff () { + if ! bootparam_hotplug_cpu "$1" && configfrag_hotplug_cpu "$2" + then + echo CPU-hotplug kernel, adding rcutorture onoff. 1>&2 + echo rcutorture.onoff_interval=3 rcutorture.onoff_holdoff=30 + fi +} + +# per_version_boot_params bootparam-string config-file seconds +# +# Adds per-version torture-module parameters to kernels supporting them. +per_version_boot_params () { + echo $1 `rcutorture_param_onoff "$1" "$2"` \ + rcutorture.stat_interval=15 \ + rcutorture.shutdown_secs=$3 \ + rcutorture.rcutorture_runnable=1 \ + rcutorture.test_no_idle_hz=1 \ + rcutorture.verbose=1 +} diff --git a/rcutorture/configs/rcu/v3.5/CFLIST b/rcutorture/configs/rcu/v3.5/CFLIST new file mode 100644 index 0000000..1822394 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/CFLIST @@ -0,0 +1,14 @@ +P1-S-T-NH-SD-SMP-HP +P2-2-t-nh-sd-SMP-hp +P3-3-T-nh-SD-SMP-hp +P4-A-t-NH-sd-SMP-HP +P5-U-T-NH-sd-SMP-hp +N1-S-T-NH-SD-SMP-HP +N2-2-t-nh-sd-SMP-hp +N3-3-T-nh-SD-SMP-hp +N4-A-t-NH-sd-SMP-HP +N5-U-T-NH-sd-SMP-hp +PT1-nh +PT2-NH +NT1-nh +NT3-NH diff --git a/rcutorture/configs/rcu/v3.5/N1-S-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v3.5/N1-S-T-NH-SD-SMP-HP new file mode 100644 index 0000000..d81e11d --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/N1-S-T-NH-SD-SMP-HP @@ -0,0 +1,19 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_FAST_NO_HZ=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=8 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/N2-2-t-nh-sd-SMP-hp b/rcutorture/configs/rcu/v3.5/N2-2-t-nh-sd-SMP-hp new file mode 100644 index 0000000..02e4185 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/N2-2-t-nh-sd-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=4 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/N3-3-T-nh-SD-SMP-hp b/rcutorture/configs/rcu/v3.5/N3-3-T-nh-SD-SMP-hp new file mode 100644 index 0000000..b3100f6 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/N3-3-T-nh-SD-SMP-hp @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/N4-A-t-NH-sd-SMP-HP b/rcutorture/configs/rcu/v3.5/N4-A-t-NH-sd-SMP-HP new file mode 100644 index 0000000..c56b445 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/N4-A-t-NH-sd-SMP-HP @@ -0,0 +1,18 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/N5-U-T-NH-sd-SMP-hp b/rcutorture/configs/rcu/v3.5/N5-U-T-NH-sd-SMP-hp new file mode 100644 index 0000000..90d924f --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/N5-U-T-NH-sd-SMP-hp @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=y +CONFIG_DEBUG_KERNEL=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=y +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +#CHECK#CONFIG_TREE_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/NT1-nh b/rcutorture/configs/rcu/v3.5/NT1-nh new file mode 100644 index 0000000..023f312 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/NT1-nh @@ -0,0 +1,23 @@ +#CHECK#CONFIG_TINY_RCU=y +CONFIG_RCU_TRACE=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=n +# +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/NT3-NH b/rcutorture/configs/rcu/v3.5/NT3-NH new file mode 100644 index 0000000..6fd0235 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/NT3-NH @@ -0,0 +1,20 @@ +#CHECK#CONFIG_TINY_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=y +# +CONFIG_PREEMPT_NONE=y +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=n +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/P1-S-T-NH-SD-SMP-HP b/rcutorture/configs/rcu/v3.5/P1-S-T-NH-SD-SMP-HP new file mode 100644 index 0000000..9647c44 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/P1-S-T-NH-SD-SMP-HP @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_RCU_FAST_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=8 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/P2-2-t-nh-sd-SMP-hp b/rcutorture/configs/rcu/v3.5/P2-2-t-nh-sd-SMP-hp new file mode 100644 index 0000000..0f3b667 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/P2-2-t-nh-sd-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=4 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/P3-3-T-nh-SD-SMP-hp b/rcutorture/configs/rcu/v3.5/P3-3-T-nh-SD-SMP-hp new file mode 100644 index 0000000..b035e14 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/P3-3-T-nh-SD-SMP-hp @@ -0,0 +1,20 @@ +CONFIG_RCU_TRACE=y +CONFIG_NO_HZ=n +CONFIG_SMP=y +CONFIG_RCU_FANOUT=2 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/P4-A-t-NH-sd-SMP-HP b/rcutorture/configs/rcu/v3.5/P4-A-t-NH-sd-SMP-HP new file mode 100644 index 0000000..3ccf6a9 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/P4-A-t-NH-sd-SMP-HP @@ -0,0 +1,22 @@ +CONFIG_RCU_TRACE=n +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=n +CONFIG_HOTPLUG_CPU=y +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_RT_MUTEXES=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/P5-U-T-NH-sd-SMP-hp b/rcutorture/configs/rcu/v3.5/P5-U-T-NH-sd-SMP-hp new file mode 100644 index 0000000..a55c008 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/P5-U-T-NH-sd-SMP-hp @@ -0,0 +1,27 @@ +CONFIG_RCU_TRACE=y +CONFIG_RCU_CPU_STALL_INFO=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_RCU_FANOUT=6 +CONFIG_NR_CPUS=8 +CONFIG_RCU_FANOUT_EXACT=y +CONFIG_HOTPLUG_CPU=n +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +#CHECK#CONFIG_TREE_PREEMPT_RCU=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_OBJECTS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y +CONFIG_RT_MUTEXES=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/PT1-nh b/rcutorture/configs/rcu/v3.5/PT1-nh new file mode 100644 index 0000000..e3361c3 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/PT1-nh @@ -0,0 +1,23 @@ +CONFIG_TINY_PREEMPT_RCU=y +CONFIG_RCU_BOOST=y +CONFIG_RCU_BOOST_PRIO=2 +CONFIG_RCU_TRACE=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=n +# +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/PT2-NH b/rcutorture/configs/rcu/v3.5/PT2-NH new file mode 100644 index 0000000..64abfc3 --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/PT2-NH @@ -0,0 +1,22 @@ +CONFIG_TINY_PREEMPT_RCU=y +CONFIG_RCU_TORTURE_TEST=m +CONFIG_MODULE_UNLOAD=y +CONFIG_SUSPEND=n +CONFIG_HIBERNATION=n +# +CONFIG_SMP=n +# +CONFIG_HOTPLUG_CPU=n +# +CONFIG_NO_HZ=y +# +CONFIG_PREEMPT_NONE=n +CONFIG_PREEMPT_VOLUNTARY=n +CONFIG_PREEMPT=y +CONFIG_PROVE_LOCKING=y +CONFIG_PROVE_RCU=y +CONFIG_SYSFS_DEPRECATED_V2=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_PRINTK_TIME=y + diff --git a/rcutorture/configs/rcu/v3.5/ver_functions.sh b/rcutorture/configs/rcu/v3.5/ver_functions.sh new file mode 100644 index 0000000..8977d8d --- /dev/null +++ b/rcutorture/configs/rcu/v3.5/ver_functions.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# +# Kernel-version-dependent shell functions for the rest of the scripts. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, you can access it online at +# http://www.gnu.org/licenses/gpl-2.0.html. +# +# Copyright (C) IBM Corporation, 2013 +# +# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com> + +# rcutorture_param_n_barrier_cbs bootparam-string +# +# Adds n_barrier_cbs rcutorture module parameter to kernels having it. +rcutorture_param_n_barrier_cbs () { + if echo $1 | grep -q "rcutorture\.n_barrier_cbs" + then + : + else + echo rcutorture.n_barrier_cbs=4 + fi +} + +# rcutorture_param_onoff bootparam-string config-file +# +# Adds onoff rcutorture module parameters to kernels having it. +rcutorture_param_onoff () { + if ! bootparam_hotplug_cpu "$1" && configfrag_hotplug_cpu "$2" + then + echo CPU-hotplug kernel, adding rcutorture onoff. 1>&2 + echo rcutorture.onoff_interval=3 rcutorture.onoff_holdoff=30 + fi +} + +# per_version_boot_params bootparam-string config-file seconds +# +# Adds per-version torture-module parameters to kernels supporting them. +per_version_boot_params () { + echo $1 `rcutorture_param_onoff "$1" "$2"` \ + `rcutorture_param_n_barrier_cbs "$1"` \ + rcutorture.stat_interval=15 \ + rcutorture.shutdown_secs=$3 \ + rcutorture.rcutorture_runnable=1 \ + rcutorture.test_no_idle_hz=1 \ + rcutorture.verbose=1 +} diff --git a/rcutorture/doc/TINY_RCU.txt b/rcutorture/doc/TINY_RCU.txt index 9ef33a7..28db67b 100644 --- a/rcutorture/doc/TINY_RCU.txt +++ b/rcutorture/doc/TINY_RCU.txt @@ -34,7 +34,7 @@ CONFIG_PREEMPT CONFIG_PREEMPT_RCU CONFIG_SMP CONFIG_TINY_RCU -CONFIG_PREEMPT_RCU +CONFIG_TREE_PREEMPT_RCU CONFIG_TREE_RCU All forced by CONFIG_TINY_RCU. diff --git a/rcutorture/doc/TREE_RCU-kconfig.txt b/rcutorture/doc/TREE_RCU-kconfig.txt index ec03c88..3e588db 100644 --- a/rcutorture/doc/TREE_RCU-kconfig.txt +++ b/rcutorture/doc/TREE_RCU-kconfig.txt @@ -1,5 +1,5 @@ This document gives a brief rationale for the TREE_RCU-related test -cases, a group that includes PREEMPT_RCU. +cases, a group that includes TREE_PREEMPT_RCU. Kconfig Parameters: @@ -14,9 +14,10 @@ CONFIG_NO_HZ_FULL_SYSIDLE -- Do one. CONFIG_PREEMPT -- Do half. (First three and #8.) CONFIG_PROVE_LOCKING -- Do all but two, covering CONFIG_PROVE_RCU and not. CONFIG_PROVE_RCU -- Do all but one under CONFIG_PROVE_LOCKING. -CONFIG_RCU_BOOST -- one of PREEMPT_RCU. -CONFIG_RCU_KTHREAD_PRIO -- set to 2 for _BOOST testing. -CONFIG_RCU_CPU_STALL_INFO -- Do one. +CONFIG_RCU_BOOST -- one of TREE_PREEMPT_RCU. +CONFIG_RCU_BOOST_PRIO -- set to 2 for _BOOST testing. +CONFIG_RCU_CPU_STALL_INFO -- do one with and without _VERBOSE. +CONFIG_RCU_CPU_STALL_VERBOSE -- do one with and without _INFO. CONFIG_RCU_FANOUT -- Cover hierarchy as currently, but overlap with others. CONFIG_RCU_FANOUT_EXACT -- Do one. CONFIG_RCU_FANOUT_LEAF -- Do one non-default. @@ -26,7 +27,7 @@ CONFIG_RCU_NOCB_CPU_ALL -- Do one. CONFIG_RCU_NOCB_CPU_NONE -- Do one. CONFIG_RCU_NOCB_CPU_ZERO -- Do one. CONFIG_RCU_TRACE -- Do half. -CONFIG_SMP -- Need one !SMP for PREEMPT_RCU. +CONFIG_SMP -- Need one !SMP for TREE_PREEMPT_RCU. RCU-bh: Do one with PREEMPT and one with !PREEMPT. RCU-sched: Do one with PREEMPT but not BOOST. @@ -76,7 +77,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT CONFIG_RCU_STALL_COMMON - Implied by TREE_RCU and PREEMPT_RCU. + Implied by TREE_RCU and TREE_PREEMPT_RCU. CONFIG_RCU_TORTURE_TEST CONFIG_RCU_TORTURE_TEST_RUNNABLE @@ -87,7 +88,7 @@ CONFIG_RCU_USER_QS Redundant with CONFIG_NO_HZ_FULL. -CONFIG_PREEMPT_RCU +CONFIG_TREE_PREEMPT_RCU CONFIG_TREE_RCU These are controlled by CONFIG_PREEMPT. diff --git a/size/.gitignore b/size/.gitignore deleted file mode 100644 index 189b781..0000000 --- a/size/.gitignore +++ /dev/null @@ -1 +0,0 @@ -get_size diff --git a/size/Makefile b/size/Makefile deleted file mode 100644 index 04dc25e..0000000 --- a/size/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -CC = $(CROSS_COMPILE)gcc - -all: get_size - -get_size: get_size.c - $(CC) -static -ffreestanding -nostartfiles -s $< -o $@ - -run_tests: all - ./get_size - -clean: - $(RM) get_size diff --git a/size/get_size.c b/size/get_size.c deleted file mode 100644 index 2d1af7c..0000000 --- a/size/get_size.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2014 Sony Mobile Communications Inc. - * - * Licensed under the terms of the GNU GPL License version 2 - * - * Selftest for runtime system size - * - * Prints the amount of RAM that the currently running system is using. - * - * This program tries to be as small as possible itself, to - * avoid perturbing the system memory utilization with its - * own execution. It also attempts to have as few dependencies - * on kernel features as possible. - * - * It should be statically linked, with startup libs avoided. - * It uses no library calls, and only the following 3 syscalls: - * sysinfo(), write(), and _exit() - * - * For output, it avoids printf (which in some C libraries - * has large external dependencies) by implementing it's own - * number output and print routines, and using __builtin_strlen() - */ - -#include <sys/sysinfo.h> -#include <unistd.h> - -#define STDOUT_FILENO 1 - -static int print(const char *s) -{ - return write(STDOUT_FILENO, s, __builtin_strlen(s)); -} - -static inline char *num_to_str(unsigned long num, char *buf, int len) -{ - unsigned int digit; - - /* put digits in buffer from back to front */ - buf += len - 1; - *buf = 0; - do { - digit = num % 10; - *(--buf) = digit + '0'; - num /= 10; - } while (num > 0); - - return buf; -} - -static int print_num(unsigned long num) -{ - char num_buf[30]; - - return print(num_to_str(num, num_buf, sizeof(num_buf))); -} - -static int print_k_value(const char *s, unsigned long num, unsigned long units) -{ - unsigned long long temp; - int ccode; - - print(s); - - temp = num; - temp = (temp * units)/1024; - num = temp; - ccode = print_num(num); - print("\n"); - return ccode; -} - -/* this program has no main(), as startup libraries are not used */ -void _start(void) -{ - int ccode; - struct sysinfo info; - unsigned long used; - - print("Testing system size.\n"); - print("1..1\n"); - - ccode = sysinfo(&info); - if (ccode < 0) { - print("not ok 1 get runtime memory use\n"); - print("# could not get sysinfo\n"); - _exit(ccode); - } - /* ignore cache complexities for now */ - used = info.totalram - info.freeram - info.bufferram; - print_k_value("ok 1 get runtime memory use # size = ", used, - info.mem_unit); - - print("# System runtime memory report (units in Kilobytes):\n"); - print_k_value("# Total: ", info.totalram, info.mem_unit); - print_k_value("# Free: ", info.freeram, info.mem_unit); - print_k_value("# Buffer: ", info.bufferram, info.mem_unit); - print_k_value("# In use: ", used, info.mem_unit); - - _exit(0); -} diff --git a/timers/posix_timers.c b/timers/posix_timers.c index f87d970..41bd855 100644 --- a/timers/posix_timers.c +++ b/timers/posix_timers.c @@ -15,8 +15,6 @@ #include <time.h> #include <pthread.h> -#include "../kselftest.h" - #define DELAY 2 #define USECS_PER_SEC 1000000 @@ -196,16 +194,16 @@ int main(int argc, char **argv) printf("based timers if other threads run on the CPU...\n"); if (check_itimer(ITIMER_VIRTUAL) < 0) - return ksft_exit_fail(); + return -1; if (check_itimer(ITIMER_PROF) < 0) - return ksft_exit_fail(); + return -1; if (check_itimer(ITIMER_REAL) < 0) - return ksft_exit_fail(); + return -1; if (check_timer_create(CLOCK_THREAD_CPUTIME_ID) < 0) - return ksft_exit_fail(); + return -1; /* * It's unfortunately hard to reliably test a timer expiration @@ -217,7 +215,7 @@ int main(int argc, char **argv) * find a better solution. */ if (check_timer_create(CLOCK_PROCESS_CPUTIME_ID) < 0) - return ksft_exit_fail(); + return -1; - return ksft_exit_pass(); + return 0; } diff --git a/user/Makefile b/user/Makefile index 12c9d15..396255b 100644 --- a/user/Makefile +++ b/user/Makefile @@ -4,4 +4,10 @@ all: run_tests: all - ./test_user_copy.sh + @if /sbin/modprobe test_user_copy ; then \ + rmmod test_user_copy; \ + echo "user_copy: ok"; \ + else \ + echo "user_copy: [FAIL]"; \ + exit 1; \ + fi diff --git a/user/test_user_copy.sh b/user/test_user_copy.sh deleted file mode 100755 index 350107f..0000000 --- a/user/test_user_copy.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# Runs copy_to/from_user infrastructure using test_user_copy kernel module - -if /sbin/modprobe -q test_user_copy; then - /sbin/modprobe -q -r test_user_copy - echo "user_copy: ok" -else - echo "user_copy: [FAIL]" - exit 1 -fi |