aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-10-28 15:58:42 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-10-28 15:58:42 -0400
commitf8cab69be0a8a756a7409f6d2bd1e6e96ce46482 (patch)
tree8186251e5d4a0d8b8afe9a398c2dc9eb85eccf45
parentdad4f140edaa3f6bb452b6913d41af1ffd672e45 (diff)
parentf73581f8d9a367459f36e6a4ef0065997ab14c75 (diff)
Merge tag 'linux-kselftest-4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
Pull kselftest updates from Shuah Khan: "This Kselftest update for Linux 4.20-rc1 consists of: - Improvements to ftrace test suite from Masami Hiramatsu. - Color coded ftrace PASS / FAIL results from Steven Rostedt (VMware) to improve readability of reports. - watchdog Fixes and enhancement to add gettimeout and get|set pretimeout options from Jerry Hoemann. - Several fixes to warnings and spelling etc" * tag 'linux-kselftest-4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (40 commits) selftests/ftrace: Strip escape sequences for log file selftests/ftrace: Use colored output when available selftests: fix warning: "_GNU_SOURCE" redefined selftests: kvm: Fix -Wformat warnings selftests/ftrace: Add color to the PASS / FAIL results kvm: selftests: fix spelling mistake "Insufficent" -> "Insufficient" selftests: gpio: Fix OUTPUT directory in Makefile selftests: gpio: restructure Makefile selftests: watchdog: Fix ioctl SET* error paths to take oneshot exit path selftests: watchdog: Add gettimeout and get|set pretimeout selftests: watchdog: Fix error message. selftests: watchdog: fix message when /dev/watchdog open fails selftests/ftrace: Add ftrace cpumask testcase selftests/ftrace: Add wakeup_rt tracer testcase selftests/ftrace: Add wakeup tracer testcase selftests/ftrace: Add stacktrace ftrace filter command testcase selftests/ftrace: Add trace_pipe testcase selftests/ftrace: Add function filter on module testcase selftests/ftrace: Add max stack tracer testcase selftests/ftrace: Add function profiling stat testcase ...
-rw-r--r--tools/testing/selftests/ftrace/config6
-rwxr-xr-xtools/testing/selftests/ftrace/ftracetest72
-rw-r--r--tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc22
-rw-r--r--tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc16
-rw-r--r--tools/testing/selftests/ftrace/test.d/event/event-enable.tc10
-rw-r--r--tools/testing/selftests/ftrace/test.d/event/event-pid.tc8
-rw-r--r--tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc10
-rw-r--r--tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc10
-rw-r--r--tools/testing/selftests/ftrace/test.d/event/trace_printk.tc27
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc4
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc9
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc10
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc42
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc3
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc24
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc22
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc4
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc13
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc39
-rw-r--r--tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc11
-rw-r--r--tools/testing/selftests/ftrace/test.d/functions11
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc3
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc3
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc8
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_comm.tc17
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_string.tc5
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc39
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc8
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc52
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc5
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc9
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc36
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc9
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc4
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc5
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc4
-rw-r--r--tools/testing/selftests/ftrace/test.d/kprobe/profile.tc15
-rw-r--r--tools/testing/selftests/ftrace/test.d/template1
-rw-r--r--tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc25
-rw-r--r--tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc25
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc15
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc15
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-multi-actions-accept.tc14
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc16
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc16
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc16
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc14
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc16
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc11
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc16
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc12
-rw-r--r--tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc12
-rw-r--r--tools/testing/selftests/gpio/Makefile32
-rw-r--r--tools/testing/selftests/kvm/dirty_log_test.c4
-rw-r--r--tools/testing/selftests/kvm/lib/kvm_util.c2
-rw-r--r--tools/testing/selftests/proc/fd-001-lookup.c2
-rw-r--r--tools/testing/selftests/proc/fd-003-kthread.c2
-rw-r--r--tools/testing/selftests/watchdog/watchdog-test.c61
67 files changed, 564 insertions, 466 deletions
diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config
index 07db5ab09cc7..c2c8de4fafff 100644
--- a/tools/testing/selftests/ftrace/config
+++ b/tools/testing/selftests/ftrace/config
@@ -4,6 +4,12 @@ CONFIG_FUNCTION_PROFILER=y
4CONFIG_TRACER_SNAPSHOT=y 4CONFIG_TRACER_SNAPSHOT=y
5CONFIG_STACK_TRACER=y 5CONFIG_STACK_TRACER=y
6CONFIG_HIST_TRIGGERS=y 6CONFIG_HIST_TRIGGERS=y
7CONFIG_SCHED_TRACER=y
7CONFIG_PREEMPT_TRACER=y 8CONFIG_PREEMPT_TRACER=y
8CONFIG_IRQSOFF_TRACER=y 9CONFIG_IRQSOFF_TRACER=y
9CONFIG_PREEMPTIRQ_DELAY_TEST=m 10CONFIG_PREEMPTIRQ_DELAY_TEST=m
11CONFIG_MODULES=y
12CONFIG_MODULE_UNLOAD=y
13CONFIG_SAMPLES=y
14CONFIG_SAMPLE_TRACE_PRINTK=m
15CONFIG_KALLSYMS_ALL=y
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest
index f9a9d424c980..75244db70331 100755
--- a/tools/testing/selftests/ftrace/ftracetest
+++ b/tools/testing/selftests/ftrace/ftracetest
@@ -60,15 +60,29 @@ parse_opts() { # opts
60 shift 1 60 shift 1
61 ;; 61 ;;
62 --verbose|-v|-vv|-vvv) 62 --verbose|-v|-vv|-vvv)
63 if [ $VERBOSE -eq -1 ]; then
64 usage "--console can not use with --verbose"
65 fi
63 VERBOSE=$((VERBOSE + 1)) 66 VERBOSE=$((VERBOSE + 1))
64 [ $1 = '-vv' ] && VERBOSE=$((VERBOSE + 1)) 67 [ $1 = '-vv' ] && VERBOSE=$((VERBOSE + 1))
65 [ $1 = '-vvv' ] && VERBOSE=$((VERBOSE + 2)) 68 [ $1 = '-vvv' ] && VERBOSE=$((VERBOSE + 2))
66 shift 1 69 shift 1
67 ;; 70 ;;
71 --console)
72 if [ $VERBOSE -ne 0 ]; then
73 usage "--console can not use with --verbose"
74 fi
75 VERBOSE=-1
76 shift 1
77 ;;
68 --debug|-d) 78 --debug|-d)
69 DEBUG=1 79 DEBUG=1
70 shift 1 80 shift 1
71 ;; 81 ;;
82 --stop-fail)
83 STOP_FAILURE=1
84 shift 1
85 ;;
72 --fail-unsupported) 86 --fail-unsupported)
73 UNSUPPORTED_RESULT=1 87 UNSUPPORTED_RESULT=1
74 shift 1 88 shift 1
@@ -117,6 +131,7 @@ KEEP_LOG=0
117DEBUG=0 131DEBUG=0
118VERBOSE=0 132VERBOSE=0
119UNSUPPORTED_RESULT=0 133UNSUPPORTED_RESULT=0
134STOP_FAILURE=0
120# Parse command-line options 135# Parse command-line options
121parse_opts $* 136parse_opts $*
122 137
@@ -137,11 +152,33 @@ else
137 date > $LOG_FILE 152 date > $LOG_FILE
138fi 153fi
139 154
155# Define text colors
156# Check available colors on the terminal, if any
157ncolors=`tput colors 2>/dev/null`
158color_reset=
159color_red=
160color_green=
161color_blue=
162# If stdout exists and number of colors is eight or more, use them
163if [ -t 1 -a "$ncolors" -a "$ncolors" -ge 8 ]; then
164 color_reset="\e[0m"
165 color_red="\e[31m"
166 color_green="\e[32m"
167 color_blue="\e[34m"
168fi
169
170strip_esc() {
171 # busybox sed implementation doesn't accept "\x1B", so use [:cntrl:] instead.
172 sed -E "s/[[:cntrl:]]\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
173}
174
140prlog() { # messages 175prlog() { # messages
141 [ -z "$LOG_FILE" ] && echo "$@" || echo "$@" | tee -a $LOG_FILE 176 echo -e "$@"
177 [ "$LOG_FILE" ] && echo -e "$@" | strip_esc >> $LOG_FILE
142} 178}
143catlog() { #file 179catlog() { #file
144 [ -z "$LOG_FILE" ] && cat $1 || cat $1 | tee -a $LOG_FILE 180 cat $1
181 [ "$LOG_FILE" ] && cat $1 | strip_esc >> $LOG_FILE
145} 182}
146prlog "=== Ftrace unit tests ===" 183prlog "=== Ftrace unit tests ==="
147 184
@@ -180,37 +217,37 @@ test_on_instance() { # testfile
180eval_result() { # sigval 217eval_result() { # sigval
181 case $1 in 218 case $1 in
182 $PASS) 219 $PASS)
183 prlog " [PASS]" 220 prlog " [${color_green}PASS${color_reset}]"
184 PASSED_CASES="$PASSED_CASES $CASENO" 221 PASSED_CASES="$PASSED_CASES $CASENO"
185 return 0 222 return 0
186 ;; 223 ;;
187 $FAIL) 224 $FAIL)
188 prlog " [FAIL]" 225 prlog " [${color_red}FAIL${color_reset}]"
189 FAILED_CASES="$FAILED_CASES $CASENO" 226 FAILED_CASES="$FAILED_CASES $CASENO"
190 return 1 # this is a bug. 227 return 1 # this is a bug.
191 ;; 228 ;;
192 $UNRESOLVED) 229 $UNRESOLVED)
193 prlog " [UNRESOLVED]" 230 prlog " [${color_blue}UNRESOLVED${color_reset}]"
194 UNRESOLVED_CASES="$UNRESOLVED_CASES $CASENO" 231 UNRESOLVED_CASES="$UNRESOLVED_CASES $CASENO"
195 return 1 # this is a kind of bug.. something happened. 232 return 1 # this is a kind of bug.. something happened.
196 ;; 233 ;;
197 $UNTESTED) 234 $UNTESTED)
198 prlog " [UNTESTED]" 235 prlog " [${color_blue}UNTESTED${color_reset}]"
199 UNTESTED_CASES="$UNTESTED_CASES $CASENO" 236 UNTESTED_CASES="$UNTESTED_CASES $CASENO"
200 return 0 237 return 0
201 ;; 238 ;;
202 $UNSUPPORTED) 239 $UNSUPPORTED)
203 prlog " [UNSUPPORTED]" 240 prlog " [${color_blue}UNSUPPORTED${color_reset}]"
204 UNSUPPORTED_CASES="$UNSUPPORTED_CASES $CASENO" 241 UNSUPPORTED_CASES="$UNSUPPORTED_CASES $CASENO"
205 return $UNSUPPORTED_RESULT # depends on use case 242 return $UNSUPPORTED_RESULT # depends on use case
206 ;; 243 ;;
207 $XFAIL) 244 $XFAIL)
208 prlog " [XFAIL]" 245 prlog " [${color_red}XFAIL${color_reset}]"
209 XFAILED_CASES="$XFAILED_CASES $CASENO" 246 XFAILED_CASES="$XFAILED_CASES $CASENO"
210 return 0 247 return 0
211 ;; 248 ;;
212 *) 249 *)
213 prlog " [UNDEFINED]" 250 prlog " [${color_blue}UNDEFINED${color_reset}]"
214 UNDEFINED_CASES="$UNDEFINED_CASES $CASENO" 251 UNDEFINED_CASES="$UNDEFINED_CASES $CASENO"
215 return 1 # this must be a test bug 252 return 1 # this must be a test bug
216 ;; 253 ;;
@@ -269,16 +306,18 @@ __run_test() { # testfile
269# Run one test case 306# Run one test case
270run_test() { # testfile 307run_test() { # testfile
271 local testname=`basename $1` 308 local testname=`basename $1`
309 testcase $1
272 if [ ! -z "$LOG_FILE" ] ; then 310 if [ ! -z "$LOG_FILE" ] ; then
273 local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX` 311 local testlog=`mktemp $LOG_DIR/${CASENO}-${testname}-log.XXXXXX`
274 else 312 else
275 local testlog=/proc/self/fd/1 313 local testlog=/proc/self/fd/1
276 fi 314 fi
277 export TMPDIR=`mktemp -d /tmp/ftracetest-dir.XXXXXX` 315 export TMPDIR=`mktemp -d /tmp/ftracetest-dir.XXXXXX`
278 testcase $1
279 echo "execute$INSTANCE: "$1 > $testlog 316 echo "execute$INSTANCE: "$1 > $testlog
280 SIG_RESULT=0 317 SIG_RESULT=0
281 if [ -z "$LOG_FILE" ]; then 318 if [ $VERBOSE -eq -1 ]; then
319 __run_test $1
320 elif [ -z "$LOG_FILE" ]; then
282 __run_test $1 2>&1 321 __run_test $1 2>&1
283 elif [ $VERBOSE -ge 3 ]; then 322 elif [ $VERBOSE -ge 3 ]; then
284 __run_test $1 | tee -a $testlog 2>&1 323 __run_test $1 | tee -a $testlog 2>&1
@@ -304,6 +343,10 @@ run_test() { # testfile
304# Main loop 343# Main loop
305for t in $TEST_CASES; do 344for t in $TEST_CASES; do
306 run_test $t 345 run_test $t
346 if [ $STOP_FAILURE -ne 0 -a $TOTAL_RESULT -ne 0 ]; then
347 echo "A failure detected. Stop test."
348 exit 1
349 fi
307done 350done
308 351
309# Test on instance loop 352# Test on instance loop
@@ -315,7 +358,12 @@ for t in $TEST_CASES; do
315 run_test $t 358 run_test $t
316 rmdir $TRACING_DIR 359 rmdir $TRACING_DIR
317 TRACING_DIR=$SAVED_TRACING_DIR 360 TRACING_DIR=$SAVED_TRACING_DIR
361 if [ $STOP_FAILURE -ne 0 -a $TOTAL_RESULT -ne 0 ]; then
362 echo "A failure detected. Stop test."
363 exit 1
364 fi
318done 365done
366(cd $TRACING_DIR; initialize_ftrace) # for cleanup
319 367
320prlog "" 368prlog ""
321prlog "# of passed: " `echo $PASSED_CASES | wc -w` 369prlog "# of passed: " `echo $PASSED_CASES | wc -w`
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc
new file mode 100644
index 000000000000..ab70f0077c35
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/00basic/ringbuffer_size.tc
@@ -0,0 +1,22 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Change the ringbuffer size
4# flags: instance
5
6rb_size_test() {
7ORIG=`cat buffer_size_kb`
8
9expr $ORIG / 2 > buffer_size_kb
10
11expr $ORIG \* 2 > buffer_size_kb
12
13echo $ORIG > buffer_size_kb
14}
15
16rb_size_test
17
18: "If per-cpu buffer is supported, imbalance it"
19if [ -d per_cpu/cpu0 ]; then
20 cd per_cpu/cpu0
21 rb_size_test
22fi
diff --git a/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc b/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc
new file mode 100644
index 000000000000..5058fbcfd90f
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/00basic/trace_pipe.tc
@@ -0,0 +1,16 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: trace_pipe and trace_marker
4# flags: instance
5
6[ ! -f trace_marker ] && exit_unsupported
7
8echo "test input 1" > trace_marker
9
10: "trace interface never consume the ring buffer"
11grep -q "test input 1" trace
12grep -q "test input 1" trace
13
14: "trace interface never consume the ring buffer"
15head -n 1 trace_pipe | grep -q "test input 1"
16! grep -q "test input 1" trace
diff --git a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc
index 9daf034186f5..dfb0d5122f7b 100644
--- a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc
+++ b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc
@@ -9,23 +9,15 @@ do_reset() {
9} 9}
10 10
11fail() { #msg 11fail() { #msg
12 do_reset
13 echo $1 12 echo $1
14 exit_fail 13 exit_fail
15} 14}
16 15
17yield() {
18 ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
19}
20
21if [ ! -f set_event -o ! -d events/sched ]; then 16if [ ! -f set_event -o ! -d events/sched ]; then
22 echo "event tracing is not supported" 17 echo "event tracing is not supported"
23 exit_unsupported 18 exit_unsupported
24fi 19fi
25 20
26reset_tracer
27do_reset
28
29echo 'sched:sched_switch' > set_event 21echo 'sched:sched_switch' > set_event
30 22
31yield 23yield
@@ -57,6 +49,4 @@ if [ $count -ne 0 ]; then
57 fail "sched_switch events should not be recorded" 49 fail "sched_switch events should not be recorded"
58fi 50fi
59 51
60do_reset
61
62exit 0 52exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc
index 132478b305c2..f9cb214220b1 100644
--- a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc
+++ b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc
@@ -16,10 +16,6 @@ fail() { #msg
16 exit_fail 16 exit_fail
17} 17}
18 18
19yield() {
20 ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
21}
22
23if [ ! -f set_event -o ! -d events/sched ]; then 19if [ ! -f set_event -o ! -d events/sched ]; then
24 echo "event tracing is not supported" 20 echo "event tracing is not supported"
25 exit_unsupported 21 exit_unsupported
@@ -30,8 +26,7 @@ if [ ! -f set_event_pid ]; then
30 exit_unsupported 26 exit_unsupported
31fi 27fi
32 28
33reset_tracer 29echo 0 > options/event-fork
34do_reset
35 30
36echo 1 > events/sched/sched_switch/enable 31echo 1 > events/sched/sched_switch/enable
37 32
@@ -47,6 +42,7 @@ do_reset
47read mypid rest < /proc/self/stat 42read mypid rest < /proc/self/stat
48 43
49echo $mypid > set_event_pid 44echo $mypid > set_event_pid
45grep -q $mypid set_event_pid
50echo 'sched:sched_switch' > set_event 46echo 'sched:sched_switch' > set_event
51 47
52yield 48yield
diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
index 6a37a8642ee6..83a8c571e93a 100644
--- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
+++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc
@@ -9,23 +9,15 @@ do_reset() {
9} 9}
10 10
11fail() { #msg 11fail() { #msg
12 do_reset
13 echo $1 12 echo $1
14 exit_fail 13 exit_fail
15} 14}
16 15
17yield() {
18 ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
19}
20
21if [ ! -f set_event -o ! -d events/sched ]; then 16if [ ! -f set_event -o ! -d events/sched ]; then
22 echo "event tracing is not supported" 17 echo "event tracing is not supported"
23 exit_unsupported 18 exit_unsupported
24fi 19fi
25 20
26reset_tracer
27do_reset
28
29echo 'sched:*' > set_event 21echo 'sched:*' > set_event
30 22
31yield 23yield
@@ -57,6 +49,4 @@ if [ $count -ne 0 ]; then
57 fail "any of scheduler events should not be recorded" 49 fail "any of scheduler events should not be recorded"
58fi 50fi
59 51
60do_reset
61
62exit 0 52exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
index 4e9b6e2c0219..84d7bda08d2a 100644
--- a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
+++ b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
@@ -8,23 +8,15 @@ do_reset() {
8} 8}
9 9
10fail() { #msg 10fail() { #msg
11 do_reset
12 echo $1 11 echo $1
13 exit_fail 12 exit_fail
14} 13}
15 14
16yield() {
17 ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
18}
19
20if [ ! -f available_events -o ! -f set_event -o ! -d events ]; then 15if [ ! -f available_events -o ! -f set_event -o ! -d events ]; then
21 echo "event tracing is not supported" 16 echo "event tracing is not supported"
22 exit_unsupported 17 exit_unsupported
23fi 18fi
24 19
25reset_tracer
26do_reset
27
28echo '*:*' > set_event 20echo '*:*' > set_event
29 21
30yield 22yield
@@ -60,6 +52,4 @@ if [ $count -ne 0 ]; then
60 fail "any of events should not be recorded" 52 fail "any of events should not be recorded"
61fi 53fi
62 54
63do_reset
64
65exit 0 55exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc b/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc
new file mode 100644
index 000000000000..b02550b42be9
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/event/trace_printk.tc
@@ -0,0 +1,27 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Test trace_printk from module
4
5rmmod trace-printk ||:
6if ! modprobe trace-printk ; then
7 echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK=m"
8 exit_unresolved;
9fi
10
11echo "Waiting for irq work"
12sleep 1
13
14grep -q ": This .* trace_bputs" trace
15grep -q ": This .* trace_puts" trace
16grep -q ": This .* trace_bprintk" trace
17grep -q ": This .* trace_printk" trace
18
19grep -q ": (irq) .* trace_bputs" trace
20grep -q ": (irq) .* trace_puts" trace
21grep -q ": (irq) .* trace_bprintk" trace
22grep -q ": (irq) .* trace_printk" trace
23
24grep -q "This is a %s that will use trace_bprintk" printk_formats
25grep -q "(irq) This is a static string that will use trace_bputs" printk_formats
26
27rmmod trace-printk ||:
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc b/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc
index 1aec99d108eb..aefab0c66d54 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter-stack.tc
@@ -16,13 +16,9 @@ if [ ! -f set_ftrace_filter ]; then
16fi 16fi
17 17
18do_reset() { 18do_reset() {
19 reset_tracer
20 if [ -e /proc/sys/kernel/stack_tracer_enabled ]; then 19 if [ -e /proc/sys/kernel/stack_tracer_enabled ]; then
21 echo 0 > /proc/sys/kernel/stack_tracer_enabled 20 echo 0 > /proc/sys/kernel/stack_tracer_enabled
22 fi 21 fi
23 enable_tracing
24 clear_trace
25 echo > set_ftrace_filter
26} 22}
27 23
28fail() { # msg 24fail() { # msg
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc b/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc
index 9f8d27ca39cf..c8a5209f2119 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/fgraph-filter.tc
@@ -9,14 +9,7 @@ if ! grep -q function_graph available_tracers; then
9 exit_unsupported 9 exit_unsupported
10fi 10fi
11 11
12do_reset() {
13 reset_tracer
14 enable_tracing
15 clear_trace
16}
17
18fail() { # msg 12fail() { # msg
19 do_reset
20 echo $1 13 echo $1
21 exit_fail 14 exit_fail
22} 15}
@@ -48,6 +41,4 @@ if [ $count -eq 0 ]; then
48 fail "No schedule traces found?" 41 fail "No schedule traces found?"
49fi 42fi
50 43
51do_reset
52
53exit 0 44exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc
index 524ce24b3c22..64cfcc75e3c1 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-pid.tc
@@ -35,12 +35,6 @@ if [ $do_function_fork -eq 1 ]; then
35fi 35fi
36 36
37do_reset() { 37do_reset() {
38 reset_tracer
39 clear_trace
40 enable_tracing
41 echo > set_ftrace_filter
42 echo > set_ftrace_pid
43
44 if [ $do_function_fork -eq 0 ]; then 38 if [ $do_function_fork -eq 0 ]; then
45 return 39 return
46 fi 40 fi
@@ -54,10 +48,6 @@ fail() { # msg
54 exit_fail 48 exit_fail
55} 49}
56 50
57yield() {
58 ping localhost -c 1 || sleep .001 || usleep 1 || sleep 1
59}
60
61do_test() { 51do_test() {
62 disable_tracing 52 disable_tracing
63 53
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc
new file mode 100644
index 000000000000..bf72e783d014
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-stacktrace.tc
@@ -0,0 +1,12 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL2.0
3# description: ftrace - stacktrace filter command
4# flags: instance
5
6echo _do_fork:stacktrace >> set_ftrace_filter
7
8grep -q "_do_fork:stacktrace:unlimited" set_ftrace_filter
9
10(echo "forked"; sleep 1)
11
12grep -q "<stack trace>" trace
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc
new file mode 100644
index 000000000000..0e6810743576
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_cpumask.tc
@@ -0,0 +1,42 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL2.0
3# description: ftrace - function trace with cpumask
4
5if ! which nproc ; then
6 nproc() {
7 ls -d /sys/devices/system/cpu/cpu[0-9]* | wc -l
8 }
9fi
10
11NP=`nproc`
12
13if [ $NP -eq 1 ] ;then
14 echo "We can not test cpumask on UP environment"
15 exit_unresolved
16fi
17
18ORIG_CPUMASK=`cat tracing_cpumask`
19
20do_reset() {
21 echo $ORIG_CPUMASK > tracing_cpumask
22}
23
24echo 0 > tracing_on
25echo > trace
26: "Bitmask only record on CPU1"
27echo 2 > tracing_cpumask
28MASK=0x`cat tracing_cpumask`
29test `printf "%d" $MASK` -eq 2 || do_reset
30
31echo function > current_tracer
32echo 1 > tracing_on
33(echo "forked")
34echo 0 > tracing_on
35
36: "Check CPU1 events are recorded"
37grep -q -e "\[001\]" trace || do_reset
38
39: "There should be No other cpu events"
40! grep -qv -e "\[001\]" -e "^#" trace || do_reset
41
42do_reset
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
index 6fed4cf2db81..ca2ffd7957f9 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
@@ -25,15 +25,12 @@ do_reset() {
25} 25}
26 26
27fail() { # mesg 27fail() { # mesg
28 do_reset
29 echo $1 28 echo $1
30 exit_fail 29 exit_fail
31} 30}
32 31
33SLEEP_TIME=".1" 32SLEEP_TIME=".1"
34 33
35do_reset
36
37echo "Testing function probes with events:" 34echo "Testing function probes with events:"
38 35
39EVENT="sched:sched_switch" 36EVENT="sched:sched_switch"
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc
new file mode 100644
index 000000000000..9330c873f9fe
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_mod_trace.tc
@@ -0,0 +1,24 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: ftrace - function trace on module
4
5[ ! -f set_ftrace_filter ] && exit_unsupported
6
7: "mod: allows to filter a non exist function"
8echo 'non_exist_func:mod:non_exist_module' > set_ftrace_filter
9grep -q "non_exist_func" set_ftrace_filter
10
11: "mod: on exist module"
12echo '*:mod:trace_printk' > set_ftrace_filter
13if ! modprobe trace-printk ; then
14 echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK=
15m"
16 exit_unresolved;
17fi
18
19: "Wildcard should be resolved after loading module"
20grep -q "trace_printk_irq_work" set_ftrace_filter
21
22: "After removing the filter becomes empty"
23rmmod trace_printk
24test `cat set_ftrace_filter | wc -l` -eq 0
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc
new file mode 100644
index 000000000000..0d501058aa75
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_profile_stat.tc
@@ -0,0 +1,22 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: ftrace - function profiling
4
5[ ! -f function_profile_enabled ] && exit_unsupported
6
7: "Enable function profile"
8echo 1 > function_profile_enabled
9
10: "Profile must be updated"
11cp trace_stat/function0 $TMPDIR/
12( echo "forked"; sleep 1 )
13: "diff returns 0 if there is no difference"
14! diff trace_stat/function0 $TMPDIR/function0
15
16echo 0 > function_profile_enabled
17
18: "Profile must NOT be updated"
19cp trace_stat/function0 $TMPDIR/
20( echo "forked"; sleep 1 )
21: "diff returns 0 if there is no difference"
22diff trace_stat/function0 $TMPDIR/function0
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc
index b2d5a8febfe8..dfbae637c60c 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_profiler.tc
@@ -29,8 +29,6 @@ if [ ! -f function_profile_enabled ]; then
29fi 29fi
30 30
31fail() { # mesg 31fail() { # mesg
32 reset_tracer
33 echo > set_ftrace_filter
34 echo $1 32 echo $1
35 exit_fail 33 exit_fail
36} 34}
@@ -76,6 +74,4 @@ if ! grep -v -e '^#' -e 'schedule' trace > /dev/null; then
76 fail "no other functions besides schedule was found" 74 fail "no other functions besides schedule was found"
77fi 75fi
78 76
79reset_tracer
80
81exit 0 77exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc
index 68e7a48f5828..51f6e6146bd9 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc
@@ -15,22 +15,11 @@ if [ ! -f set_ftrace_filter ]; then
15 exit_unsupported 15 exit_unsupported
16fi 16fi
17 17
18do_reset() {
19 reset_tracer
20 reset_ftrace_filter
21 disable_events
22 clear_trace
23 enable_tracing
24}
25
26fail() { # mesg 18fail() { # mesg
27 do_reset
28 echo $1 19 echo $1
29 exit_fail 20 exit_fail
30} 21}
31 22
32do_reset
33
34FILTER=set_ftrace_filter 23FILTER=set_ftrace_filter
35FUNC1="schedule" 24FUNC1="schedule"
36FUNC2="do_softirq" 25FUNC2="do_softirq"
@@ -165,6 +154,4 @@ test_actual
165rm $TMPDIR/expected 154rm $TMPDIR/expected
166rm $TMPDIR/actual 155rm $TMPDIR/actual
167 156
168do_reset
169
170exit 0 157exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc
new file mode 100644
index 000000000000..b414f0e3c646
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc
@@ -0,0 +1,39 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: ftrace - Max stack tracer
4# Test the basic function of max-stack usage tracing
5
6if [ ! -f stack_trace ]; then
7 echo "Max stack tracer is not supported - please make CONFIG_STACK_TRACER=y"
8 exit_unsupported
9fi
10
11echo > stack_trace_filter
12echo 0 > stack_max_size
13echo 1 > /proc/sys/kernel/stack_tracer_enabled
14
15: "Fork and wait for the first entry become !lock"
16timeout=10
17while [ $timeout -ne 0 ]; do
18 ( echo "forked" )
19 FL=`grep " 0)" stack_trace`
20 echo $FL | grep -q "lock" || break;
21 timeout=$((timeout - 1))
22done
23echo 0 > /proc/sys/kernel/stack_tracer_enabled
24
25echo '*lock*' > stack_trace_filter
26test `cat stack_trace_filter | wc -l` -eq `grep lock stack_trace_filter | wc -l`
27
28echo 0 > stack_max_size
29echo 1 > /proc/sys/kernel/stack_tracer_enabled
30
31: "Fork and always the first entry including lock"
32timeout=10
33while [ $timeout -ne 0 ]; do
34 ( echo "forked" )
35 FL=`grep " 0)" stack_trace`
36 echo $FL | grep -q "lock"
37 timeout=$((timeout - 1))
38done
39echo 0 > /proc/sys/kernel/stack_tracer_enabled
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc
index f6d9ac73268a..0c04282d33dd 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc
@@ -16,24 +16,13 @@ if [ ! -f set_ftrace_filter ]; then
16 exit_unsupported 16 exit_unsupported
17fi 17fi
18 18
19do_reset() {
20 reset_ftrace_filter
21 reset_tracer
22 disable_events
23 clear_trace
24 enable_tracing
25}
26
27fail() { # mesg 19fail() { # mesg
28 do_reset
29 echo $1 20 echo $1
30 exit_fail 21 exit_fail
31} 22}
32 23
33SLEEP_TIME=".1" 24SLEEP_TIME=".1"
34 25
35do_reset
36
37echo "Testing function probes with enabling disabling tracing:" 26echo "Testing function probes with enabling disabling tracing:"
38 27
39cnt_trace() { 28cnt_trace() {
diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testing/selftests/ftrace/test.d/functions
index e4645d5e3126..7b96e80e6b8a 100644
--- a/tools/testing/selftests/ftrace/test.d/functions
+++ b/tools/testing/selftests/ftrace/test.d/functions
@@ -89,12 +89,23 @@ initialize_ftrace() { # Reset ftrace to initial-state
89 reset_tracer 89 reset_tracer
90 reset_trigger 90 reset_trigger
91 reset_events_filter 91 reset_events_filter
92 reset_ftrace_filter
92 disable_events 93 disable_events
93 echo > set_event_pid # event tracer is always on 94 echo > set_event_pid # event tracer is always on
95 echo > set_ftrace_pid
94 [ -f set_ftrace_filter ] && echo | tee set_ftrace_* 96 [ -f set_ftrace_filter ] && echo | tee set_ftrace_*
95 [ -f set_graph_function ] && echo | tee set_graph_* 97 [ -f set_graph_function ] && echo | tee set_graph_*
96 [ -f stack_trace_filter ] && echo > stack_trace_filter 98 [ -f stack_trace_filter ] && echo > stack_trace_filter
97 [ -f kprobe_events ] && echo > kprobe_events 99 [ -f kprobe_events ] && echo > kprobe_events
98 [ -f uprobe_events ] && echo > uprobe_events 100 [ -f uprobe_events ] && echo > uprobe_events
101 [ -f synthetic_events ] && echo > synthetic_events
102 [ -f snapshot ] && echo 0 > snapshot
103 clear_trace
99 enable_tracing 104 enable_tracing
100} 105}
106
107LOCALHOST=127.0.0.1
108
109yield() {
110 ping $LOCALHOST -c 1 || sleep .001 || usleep 1 || sleep 1
111}
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc b/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc
index 4604d2103c89..bb1eb5a7c64e 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/add_and_remove.tc
@@ -4,10 +4,7 @@
4 4
5[ -f kprobe_events ] || exit_unsupported # this is configurable 5[ -f kprobe_events ] || exit_unsupported # this is configurable
6 6
7echo 0 > events/enable
8echo > kprobe_events
9echo p:myevent _do_fork > kprobe_events 7echo p:myevent _do_fork > kprobe_events
10grep myevent kprobe_events 8grep myevent kprobe_events
11test -d events/kprobes/myevent 9test -d events/kprobes/myevent
12echo > kprobe_events 10echo > kprobe_events
13clear_trace
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc b/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc
index bbc443a9190c..442c1a8c5edf 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/busy_check.tc
@@ -4,12 +4,9 @@
4 4
5[ -f kprobe_events ] || exit_unsupported 5[ -f kprobe_events ] || exit_unsupported
6 6
7echo 0 > events/enable
8echo > kprobe_events
9echo p:myevent _do_fork > kprobe_events 7echo p:myevent _do_fork > kprobe_events
10test -d events/kprobes/myevent 8test -d events/kprobes/myevent
11echo 1 > events/kprobes/myevent/enable 9echo 1 > events/kprobes/myevent/enable
12echo > kprobe_events && exit_fail # this must fail 10echo > kprobe_events && exit_fail # this must fail
13echo 0 > events/kprobes/myevent/enable 11echo 0 > events/kprobes/myevent/enable
14echo > kprobe_events # this must succeed 12echo > kprobe_events # this must succeed
15clear_trace
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc
index 8b43c6804fc3..bcdecf80a8f1 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args.tc
@@ -4,13 +4,15 @@
4 4
5[ -f kprobe_events ] || exit_unsupported # this is configurable 5[ -f kprobe_events ] || exit_unsupported # this is configurable
6 6
7echo 0 > events/enable
8echo > kprobe_events
9echo 'p:testprobe _do_fork $stack $stack0 +0($stack)' > kprobe_events 7echo 'p:testprobe _do_fork $stack $stack0 +0($stack)' > kprobe_events
10grep testprobe kprobe_events 8grep testprobe kprobe_events | grep -q 'arg1=\$stack arg2=\$stack0 arg3=+0(\$stack)'
11test -d events/kprobes/testprobe 9test -d events/kprobes/testprobe
10
12echo 1 > events/kprobes/testprobe/enable 11echo 1 > events/kprobes/testprobe/enable
13( echo "forked") 12( echo "forked")
13grep testprobe trace | grep '_do_fork' | \
14 grep -q 'arg1=0x[[:xdigit:]]* arg2=0x[[:xdigit:]]* arg3=0x[[:xdigit:]]*$'
15
14echo 0 > events/kprobes/testprobe/enable 16echo 0 > events/kprobes/testprobe/enable
15echo "-:testprobe" >> kprobe_events 17echo "-:testprobe" >> kprobe_events
16clear_trace 18clear_trace
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_comm.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_comm.tc
new file mode 100644
index 000000000000..15c1f70fcaf9
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_comm.tc
@@ -0,0 +1,17 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Kprobe event with comm arguments
4
5[ -f kprobe_events ] || exit_unsupported # this is configurable
6
7grep -A1 "fetcharg:" README | grep -q "\$comm" || exit_unsupported # this is too old
8
9echo 'p:testprobe _do_fork comm=$comm ' > kprobe_events
10grep testprobe kprobe_events | grep -q 'comm=$comm'
11test -d events/kprobes/testprobe
12
13echo 1 > events/kprobes/testprobe/enable
14( echo "forked")
15grep testprobe trace | grep -q 'comm=".*"'
16
17exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_string.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_string.tc
index 1ad70cdaf442..46e7744f8358 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_string.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_string.tc
@@ -4,9 +4,6 @@
4 4
5[ -f kprobe_events ] || exit_unsupported # this is configurable 5[ -f kprobe_events ] || exit_unsupported # this is configurable
6 6
7echo 0 > events/enable
8echo > kprobe_events
9
10case `uname -m` in 7case `uname -m` in
11x86_64) 8x86_64)
12 ARG1=%di 9 ARG1=%di
@@ -44,5 +41,3 @@ echo 1 > events/kprobes/testprobe/enable
44echo "p:test _do_fork" >> kprobe_events 41echo "p:test _do_fork" >> kprobe_events
45grep -qe "testprobe.* arg1=\"test\" arg2=\"test\"" trace 42grep -qe "testprobe.* arg1=\"test\" arg2=\"test\"" trace
46 43
47echo 0 > events/enable
48echo > kprobe_events
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc
new file mode 100644
index 000000000000..2b6dd33f9076
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_symbol.tc
@@ -0,0 +1,39 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Kprobe event symbol argument
4
5[ -f kprobe_events ] || exit_unsupported # this is configurable
6
7SYMBOL="linux_proc_banner"
8
9if [ ! -f /proc/kallsyms ]; then
10 echo "Can not check the target symbol - please enable CONFIG_KALLSYMS"
11 exit_unresolved
12elif ! grep "$SYMBOL\$" /proc/kallsyms; then
13 echo "Linux banner is not exported - please enable CONFIG_KALLSYMS_ALL"
14 exit_unresolved
15fi
16
17: "Test get basic types symbol argument"
18echo "p:testprobe_u _do_fork arg1=@linux_proc_banner:u64 arg2=@linux_proc_banner:u32 arg3=@linux_proc_banner:u16 arg4=@linux_proc_banner:u8" > kprobe_events
19echo "p:testprobe_s _do_fork arg1=@linux_proc_banner:s64 arg2=@linux_proc_banner:s32 arg3=@linux_proc_banner:s16 arg4=@linux_proc_banner:s8" >> kprobe_events
20if grep -q "x8/16/32/64" README; then
21 echo "p:testprobe_x _do_fork arg1=@linux_proc_banner:x64 arg2=@linux_proc_banner:x32 arg3=@linux_proc_banner:x16 arg4=@linux_proc_banner:x8" >> kprobe_events
22fi
23echo "p:testprobe_bf _do_fork arg1=@linux_proc_banner:b8@4/32" >> kprobe_events
24echo 1 > events/kprobes/enable
25(echo "forked")
26echo 0 > events/kprobes/enable
27grep "testprobe_[usx]:.* arg1=.* arg2=.* arg3=.* arg4=.*" trace
28grep "testprobe_bf:.* arg1=.*" trace
29
30: "Test get string symbol argument"
31echo "p:testprobe_str _do_fork arg1=@linux_proc_banner:string" > kprobe_events
32echo 1 > events/kprobes/enable
33(echo "forked")
34echo 0 > events/kprobes/enable
35RESULT=`grep "testprobe_str" trace | sed -e 's/.* arg1=\(.*\)/\1/'`
36
37RESULT=`echo $RESULT | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
38ORIG=`cat /proc/version | sed -e 's/.* \((.*)\) \((.*)\) .*/\1 \2/'`
39test "$RESULT" = "$ORIG"
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc
index d026ff4e562f..6f0f19953193 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_syntax.tc
@@ -6,9 +6,6 @@
6 6
7grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue 7grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue
8 8
9echo 0 > events/enable
10echo > kprobe_events
11
12PROBEFUNC="vfs_read" 9PROBEFUNC="vfs_read"
13GOODREG= 10GOODREG=
14BADREG= 11BADREG=
@@ -78,8 +75,11 @@ test_badarg "\$stackp" "\$stack0+10" "\$stack1-10"
78echo "r ${PROBEFUNC} \$retval" > kprobe_events 75echo "r ${PROBEFUNC} \$retval" > kprobe_events
79! echo "p ${PROBEFUNC} \$retval" > kprobe_events 76! echo "p ${PROBEFUNC} \$retval" > kprobe_events
80 77
78# $comm was introduced in 4.8, older kernels reject it.
79if grep -A1 "fetcharg:" README | grep -q '\$comm' ; then
81: "Comm access" 80: "Comm access"
82test_goodarg "\$comm" 81test_goodarg "\$comm"
82fi
83 83
84: "Indirect memory access" 84: "Indirect memory access"
85test_goodarg "+0(${GOODREG})" "-0(${GOODREG})" "+10(\$stack)" \ 85test_goodarg "+0(${GOODREG})" "-0(${GOODREG})" "+10(\$stack)" \
@@ -100,5 +100,3 @@ test_badarg "${GOODREG}::${GOODTYPE}" "${GOODREG}:${BADTYPE}" \
100 100
101test_goodarg "\$comm:string" "+0(\$stack):string" 101test_goodarg "\$comm:string" "+0(\$stack):string"
102test_badarg "\$comm:x64" "\$stack:string" "${GOODREG}:string" 102test_badarg "\$comm:x64" "\$stack:string" "${GOODREG}:string"
103
104echo > kprobe_events
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc
index 2a1755bfc290..1bcb67dcae26 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_type.tc
@@ -6,33 +6,45 @@
6 6
7grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue 7grep "x8/16/32/64" README > /dev/null || exit_unsupported # version issue
8 8
9echo 0 > events/enable 9gen_event() { # Bitsize
10echo > kprobe_events 10 echo "p:testprobe _do_fork \$stack0:s$1 \$stack0:u$1 \$stack0:x$1 \$stack0:b4@4/$1"
11enable_tracing 11}
12
13echo 'p:testprobe _do_fork $stack0:s32 $stack0:u32 $stack0:x32 $stack0:b8@4/32' > kprobe_events
14grep testprobe kprobe_events
15test -d events/kprobes/testprobe
16
17echo 1 > events/kprobes/testprobe/enable
18( echo "forked")
19echo 0 > events/kprobes/testprobe/enable
20ARGS=`tail -n 1 trace | sed -e 's/.* arg1=\(.*\) arg2=\(.*\) arg3=\(.*\) arg4=\(.*\)/\1 \2 \3 \4/'`
21 12
22check_types() { 13check_types() { # s-type u-type x-type bf-type width
23 X1=`printf "%x" $1 | tail -c 8` 14 test $# -eq 5
15 CW=$5
16 CW=$((CW / 4))
17 X1=`printf "%x" $1 | tail -c ${CW}`
24 X2=`printf "%x" $2` 18 X2=`printf "%x" $2`
25 X3=`printf "%x" $3` 19 X3=`printf "%x" $3`
26 test $X1 = $X2 20 test $X1 = $X2
27 test $X2 = $X3 21 test $X2 = $X3
28 test 0x$X3 = $3 22 test 0x$X3 = $3
29 23
30 B4=`printf "%02x" $4` 24 B4=`printf "%1x" $4`
31 B3=`echo -n $X3 | tail -c 3 | head -c 2` 25 B3=`printf "%03x" 0x$X3 | tail -c 2 | head -c 1`
32 test $B3 = $B4 26 test $B3 = $B4
33} 27}
34check_types $ARGS
35 28
36echo "-:testprobe" >> kprobe_events 29for width in 64 32 16 8; do
37clear_trace 30 : "Add new event with basic types"
38test -d events/kprobes/testprobe && exit_fail || exit_pass 31 gen_event $width > kprobe_events
32 grep testprobe kprobe_events
33 test -d events/kprobes/testprobe
34
35 : "Trace the event"
36 echo 1 > events/kprobes/testprobe/enable
37 ( echo "forked")
38 echo 0 > events/kprobes/testprobe/enable
39
40 : "Confirm the arguments is recorded in given types correctly"
41 ARGS=`grep "testprobe" trace | sed -e 's/.* arg1=\(.*\) arg2=\(.*\) arg3=\(.*\) arg4=\(.*\)/\1 \2 \3 \4/'`
42 check_types $ARGS $width
43
44 : "Clear event for next loop"
45 echo "-:testprobe" >> kprobe_events
46 clear_trace
47
48done
49
50exit_pass
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc
index 2724a1068cb1..3fb70e01b1fe 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_eventname.tc
@@ -4,9 +4,6 @@
4 4
5[ -f kprobe_events ] || exit_unsupported # this is configurable 5[ -f kprobe_events ] || exit_unsupported # this is configurable
6 6
7disable_events
8echo > kprobe_events
9
10:;: "Add an event on function without name" ;: 7:;: "Add an event on function without name" ;:
11 8
12FUNC=`grep " [tT] .*vfs_read$" /proc/kallsyms | tail -n 1 | cut -f 3 -d " "` 9FUNC=`grep " [tT] .*vfs_read$" /proc/kallsyms | tail -n 1 | cut -f 3 -d " "`
@@ -33,5 +30,3 @@ echo "p $FUNC" > kprobe_events
33EVENT=`grep $FUNC kprobe_events | cut -f 1 -d " " | cut -f 2 -d:` 30EVENT=`grep $FUNC kprobe_events | cut -f 1 -d " " | cut -f 2 -d:`
34[ "x" != "x$EVENT" ] || exit_failure 31[ "x" != "x$EVENT" ] || exit_failure
35test -d events/$EVENT || exit_failure 32test -d events/$EVENT || exit_failure
36
37echo > kprobe_events
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc
index cc4cac0e60f2..492426e95e09 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc
@@ -8,8 +8,6 @@ grep function available_tracers || exit_unsupported # this is configurable
8# prepare 8# prepare
9echo nop > current_tracer 9echo nop > current_tracer
10echo _do_fork > set_ftrace_filter 10echo _do_fork > set_ftrace_filter
11echo 0 > events/enable
12echo > kprobe_events
13echo 'p:testprobe _do_fork' > kprobe_events 11echo 'p:testprobe _do_fork' > kprobe_events
14 12
15# kprobe on / ftrace off 13# kprobe on / ftrace off
@@ -47,10 +45,3 @@ echo > trace
47( echo "forked") 45( echo "forked")
48grep testprobe trace 46grep testprobe trace
49! grep '_do_fork <-' trace 47! grep '_do_fork <-' trace
50
51# cleanup
52echo nop > current_tracer
53echo > set_ftrace_filter
54echo 0 > events/kprobes/testprobe/enable
55echo > kprobe_events
56echo > trace
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc
index 1e9f75f7a30f..d861bd776c5e 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_module.tc
@@ -4,14 +4,18 @@
4 4
5[ -f kprobe_events ] || exit_unsupported # this is configurable 5[ -f kprobe_events ] || exit_unsupported # this is configurable
6 6
7disable_events 7rmmod trace-printk ||:
8echo > kprobe_events 8if ! modprobe trace-printk ; then
9 echo "No trace-printk sample module - please make CONFIG_SAMPLE_TRACE_PRINTK=
10m"
11 exit_unresolved;
12fi
13
14MOD=trace_printk
15FUNC=trace_printk_irq_work
9 16
10:;: "Add an event on a module function without specifying event name" ;: 17:;: "Add an event on a module function without specifying event name" ;:
11 18
12MOD=`lsmod | head -n 2 | tail -n 1 | cut -f1 -d" "`
13FUNC=`grep -m 1 ".* t .*\\[$MOD\\]" /proc/kallsyms | xargs | cut -f3 -d" "`
14[ "x" != "x$MOD" -a "y" != "y$FUNC" ] || exit_unresolved
15echo "p $MOD:$FUNC" > kprobe_events 19echo "p $MOD:$FUNC" > kprobe_events
16PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"` 20PROBE_NAME=`echo $MOD:$FUNC | tr ".:" "_"`
17test -d events/kprobes/p_${PROBE_NAME}_0 || exit_failure 21test -d events/kprobes/p_${PROBE_NAME}_0 || exit_failure
@@ -26,4 +30,24 @@ test -d events/kprobes/event1 || exit_failure
26echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events 30echo "p:kprobes1/event1 $MOD:$FUNC" > kprobe_events
27test -d events/kprobes1/event1 || exit_failure 31test -d events/kprobes1/event1 || exit_failure
28 32
29echo > kprobe_events 33:;: "Remove target module, but event still be there" ;:
34if ! rmmod trace-printk ; then
35 echo "Failed to unload module - please enable CONFIG_MODULE_UNLOAD"
36 exit_unresolved;
37fi
38test -d events/kprobes1/event1
39
40:;: "Check posibility to defining events on unloaded module";:
41echo "p:event2 $MOD:$FUNC" >> kprobe_events
42
43:;: "Target is gone, but we can prepare for next time";:
44echo 1 > events/kprobes1/event1/enable
45
46:;: "Load module again, which means the event1 should be recorded";:
47modprobe trace-printk
48grep "event1:" trace
49
50:;: "Remove the module again and check the event is not locked"
51rmmod trace-printk
52echo 0 > events/kprobes1/event1/enable
53echo "-:kprobes1/event1" >> kprobe_events
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc
index 321954683aaa..ac9ab4a12e53 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_args.tc
@@ -4,13 +4,16 @@
4 4
5[ -f kprobe_events ] || exit_unsupported # this is configurable 5[ -f kprobe_events ] || exit_unsupported # this is configurable
6 6
7echo 0 > events/enable 7# Add new kretprobe event
8echo > kprobe_events
9echo 'r:testprobe2 _do_fork $retval' > kprobe_events 8echo 'r:testprobe2 _do_fork $retval' > kprobe_events
10grep testprobe2 kprobe_events 9grep testprobe2 kprobe_events | grep -q 'arg1=\$retval'
11test -d events/kprobes/testprobe2 10test -d events/kprobes/testprobe2
11
12echo 1 > events/kprobes/testprobe2/enable 12echo 1 > events/kprobes/testprobe2/enable
13( echo "forked") 13( echo "forked")
14
15cat trace | grep testprobe2 | grep -q '<- _do_fork'
16
14echo 0 > events/kprobes/testprobe2/enable 17echo 0 > events/kprobes/testprobe2/enable
15echo '-:testprobe2' >> kprobe_events 18echo '-:testprobe2' >> kprobe_events
16clear_trace 19clear_trace
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc
index 7c0290684c43..8e05b178519a 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc
@@ -5,8 +5,6 @@
5[ -f kprobe_events ] || exit_unsupported # this is configurable 5[ -f kprobe_events ] || exit_unsupported # this is configurable
6grep -q 'r\[maxactive\]' README || exit_unsupported # this is older version 6grep -q 'r\[maxactive\]' README || exit_unsupported # this is older version
7 7
8echo > kprobe_events
9
10# Test if we successfully reject unknown messages 8# Test if we successfully reject unknown messages
11if echo 'a:myprobeaccept inet_csk_accept' > kprobe_events; then false; else true; fi 9if echo 'a:myprobeaccept inet_csk_accept' > kprobe_events; then false; else true; fi
12 10
@@ -37,5 +35,3 @@ echo > kprobe_events
37echo 'r10 inet_csk_accept' > kprobe_events 35echo 'r10 inet_csk_accept' > kprobe_events
38grep inet_csk_accept kprobe_events 36grep inet_csk_accept kprobe_events
39echo > kprobe_events 37echo > kprobe_events
40
41clear_trace
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc b/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc
index ce361b9d62cf..5862eee91e1d 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc
@@ -12,11 +12,6 @@ case `uname -m` in
12 *) OFFS=0;; 12 *) OFFS=0;;
13esac 13esac
14 14
15if [ -d events/kprobes ]; then
16 echo 0 > events/kprobes/enable
17 echo > kprobe_events
18fi
19
20N=0 15N=0
21echo "Setup up kprobes on first available 256 text symbols" 16echo "Setup up kprobes on first available 256 text symbols"
22grep -i " t " /proc/kallsyms | cut -f3 -d" " | grep -v .*\\..* | \ 17grep -i " t " /proc/kallsyms | cut -f3 -d" " | grep -v .*\\..* | \
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc b/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc
index 519d2763f5d2..a902aa0aaabc 100644
--- a/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/probepoint.tc
@@ -30,8 +30,6 @@ if [ `printf "%x" -1 | wc -c` != 9 ]; then
30 UINT_TEST=yes 30 UINT_TEST=yes
31fi 31fi
32 32
33echo 0 > events/enable
34echo > kprobe_events
35echo "p:testprobe ${TARGET_FUNC}" > kprobe_events 33echo "p:testprobe ${TARGET_FUNC}" > kprobe_events
36echo "p:testprobe ${TARGET}" > kprobe_events 34echo "p:testprobe ${TARGET}" > kprobe_events
37echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events 35echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events
@@ -39,5 +37,3 @@ echo "p:testprobe ${TARGET_FUNC}${NEXT}" > kprobe_events
39if [ "${UINT_TEST}" = yes ]; then 37if [ "${UINT_TEST}" = yes ]; then
40! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events 38! echo "p:testprobe ${TARGET_FUNC}${OVERFLOW}" > kprobe_events
41fi 39fi
42echo > kprobe_events
43clear_trace
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/profile.tc b/tools/testing/selftests/ftrace/test.d/kprobe/profile.tc
new file mode 100644
index 000000000000..0384b525cdee
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/kprobe/profile.tc
@@ -0,0 +1,15 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: Kprobe dynamic event - adding and removing
4
5[ -f kprobe_events ] || exit_unsupported # this is configurable
6
7! grep -q 'myevent' kprobe_profile
8echo p:myevent _do_fork > kprobe_events
9grep -q 'myevent[[:space:]]*0[[:space:]]*0$' kprobe_profile
10echo 1 > events/kprobes/myevent/enable
11( echo "forked" )
12grep -q 'myevent[[:space:]]*[[:digit:]]*[[:space:]]*0$' kprobe_profile
13echo 0 > events/kprobes/myevent/enable
14echo > kprobe_events
15! grep -q 'myevent' kprobe_profile
diff --git a/tools/testing/selftests/ftrace/test.d/template b/tools/testing/selftests/ftrace/test.d/template
index 5c39ceb18a0d..799da7e0b3c9 100644
--- a/tools/testing/selftests/ftrace/test.d/template
+++ b/tools/testing/selftests/ftrace/test.d/template
@@ -1,4 +1,5 @@
1#!/bin/sh 1#!/bin/sh
2# SPDX-License-Identifier: GPL2.0
2# description: %HERE DESCRIBE WHAT THIS DOES% 3# description: %HERE DESCRIBE WHAT THIS DOES%
3# you have to add ".tc" extention for your testcase file 4# you have to add ".tc" extention for your testcase file
4# Note that all tests are run with "errexit" option. 5# Note that all tests are run with "errexit" option.
diff --git a/tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc b/tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc
new file mode 100644
index 000000000000..e3005fa785f0
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/tracer/wakeup.tc
@@ -0,0 +1,25 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL2.0
3# description: Test wakeup tracer
4
5if ! which chrt ; then
6 echo "chrt is not found. This test requires nice command."
7 exit_unresolved
8fi
9
10if ! grep -wq "wakeup" available_tracers ; then
11 echo "wakeup tracer is not supported"
12 exit_unsupported
13fi
14
15echo wakeup > current_tracer
16echo 1 > tracing_on
17echo 0 > tracing_max_latency
18
19: "Wakeup higher priority task"
20chrt -f 5 sleep 1
21
22echo 0 > tracing_on
23grep '+ \[[[:digit:]]*\]' trace
24grep '==> \[[[:digit:]]*\]' trace
25
diff --git a/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc b/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc
new file mode 100644
index 000000000000..f99b5178e00a
--- /dev/null
+++ b/tools/testing/selftests/ftrace/test.d/tracer/wakeup_rt.tc
@@ -0,0 +1,25 @@
1#!/bin/sh
2# SPDX-License-Identifier: GPL2.0
3# description: Test wakeup RT tracer
4
5if ! which chrt ; then
6 echo "chrt is not found. This test requires chrt command."
7 exit_unresolved
8fi
9
10if ! grep -wq "wakeup_rt" available_tracers ; then
11 echo "wakeup_rt tracer is not supported"
12 exit_unsupported
13fi
14
15echo wakeup_rt > current_tracer
16echo 1 > tracing_on
17echo 0 > tracing_max_latency
18
19: "Wakeup a realtime task"
20chrt -f 5 sleep 1
21
22echo 0 > tracing_on
23grep "+ \[[[:digit:]]*\]" trace
24grep "==> \[[[:digit:]]*\]" trace
25
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc
index 2aabab363cfb..401104344593 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-extended-error-support.tc
@@ -2,14 +2,7 @@
2# description: event trigger - test extended error support 2# description: event trigger - test extended error support
3 3
4 4
5do_reset() {
6 reset_trigger
7 echo > set_event
8 clear_trace
9}
10
11fail() { #msg 5fail() { #msg
12 do_reset
13 echo $1 6 echo $1
14 exit_fail 7 exit_fail
15} 8}
@@ -24,9 +17,6 @@ if [ ! -f synthetic_events ]; then
24 exit_unsupported 17 exit_unsupported
25fi 18fi
26 19
27reset_tracer
28do_reset
29
30echo "Test extended error support" 20echo "Test extended error support"
31echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger 21echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger
32! echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_wakeup/trigger 2> /dev/null 22! echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_wakeup/trigger 2> /dev/null
@@ -34,6 +24,4 @@ if ! grep -q "ERROR:" events/sched/sched_wakeup/hist; then
34 fail "Failed to generate extended error in histogram" 24 fail "Failed to generate extended error in histogram"
35fi 25fi
36 26
37do_reset
38
39exit 0 27exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc
index 7fd5b4a8f060..f59b2a9a1f22 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-field-variable-support.tc
@@ -1,14 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2# description: event trigger - test field variable support 2# description: event trigger - test field variable support
3 3
4do_reset() {
5 reset_trigger
6 echo > set_event
7 clear_trace
8}
9
10fail() { #msg 4fail() { #msg
11 do_reset
12 echo $1 5 echo $1
13 exit_fail 6 exit_fail
14} 7}
@@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then
23 exit_unsupported 16 exit_unsupported
24fi 17fi
25 18
26clear_synthetic_events
27reset_tracer
28do_reset
29
30echo "Test field variable support" 19echo "Test field variable support"
31 20
32echo 'wakeup_latency u64 lat; pid_t pid; int prio; char comm[16]' > synthetic_events 21echo 'wakeup_latency u64 lat; pid_t pid; int prio; char comm[16]' > synthetic_events
@@ -34,7 +23,7 @@ echo 'hist:keys=comm:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/
34echo 'hist:keys=next_comm:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,sched.sched_waking.prio,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger 23echo 'hist:keys=next_comm:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_waking).wakeup_latency($wakeup_lat,next_pid,sched.sched_waking.prio,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger
35echo 'hist:keys=pid,prio,comm:vals=lat:sort=pid,prio' > events/synthetic/wakeup_latency/trigger 24echo 'hist:keys=pid,prio,comm:vals=lat:sort=pid,prio' > events/synthetic/wakeup_latency/trigger
36 25
37ping localhost -c 3 26ping $LOCALHOST -c 3
38if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then 27if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then
39 fail "Failed to create inter-event histogram" 28 fail "Failed to create inter-event histogram"
40fi 29fi
@@ -49,6 +38,4 @@ if grep -q "synthetic_prio=prio" events/sched/sched_waking/hist; then
49 fail "Failed to remove histogram with field variable" 38 fail "Failed to remove histogram with field variable"
50fi 39fi
51 40
52do_reset
53
54exit 0 41exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc
index c93dbe38b5df..524d9ce361e2 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-inter-event-combined-hist.tc
@@ -1,14 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2# description: event trigger - test inter-event combined histogram trigger 2# description: event trigger - test inter-event combined histogram trigger
3 3
4do_reset() {
5 reset_trigger
6 echo > set_event
7 clear_trace
8}
9
10fail() { #msg 4fail() { #msg
11 do_reset
12 echo $1 5 echo $1
13 exit_fail 6 exit_fail
14} 7}
@@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then
23 exit_unsupported 16 exit_unsupported
24fi 17fi
25 18
26reset_tracer
27do_reset
28clear_synthetic_events
29
30echo "Test create synthetic event" 19echo "Test create synthetic event"
31 20
32echo 'waking_latency u64 lat pid_t pid' > synthetic_events 21echo 'waking_latency u64 lat pid_t pid' > synthetic_events
@@ -48,11 +37,9 @@ echo 'waking+wakeup_latency u64 lat; pid_t pid' >> synthetic_events
48echo 'hist:keys=pid,lat:sort=pid,lat:ww_lat=$waking_lat+$wakeup_lat:onmatch(synthetic.wakeup_latency).waking+wakeup_latency($ww_lat,pid)' >> events/synthetic/wakeup_latency/trigger 37echo 'hist:keys=pid,lat:sort=pid,lat:ww_lat=$waking_lat+$wakeup_lat:onmatch(synthetic.wakeup_latency).waking+wakeup_latency($ww_lat,pid)' >> events/synthetic/wakeup_latency/trigger
49echo 'hist:keys=pid,lat:sort=pid,lat' >> events/synthetic/waking+wakeup_latency/trigger 38echo 'hist:keys=pid,lat:sort=pid,lat' >> events/synthetic/waking+wakeup_latency/trigger
50 39
51ping localhost -c 3 40ping $LOCALHOST -c 3
52if ! grep -q "pid:" events/synthetic/waking+wakeup_latency/hist; then 41if ! grep -q "pid:" events/synthetic/waking+wakeup_latency/hist; then
53 fail "Failed to create combined histogram" 42 fail "Failed to create combined histogram"
54fi 43fi
55 44
56do_reset
57
58exit 0 45exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-multi-actions-accept.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-multi-actions-accept.tc
index c193dce611a2..4ddc546771b5 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-multi-actions-accept.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-multi-actions-accept.tc
@@ -1,15 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2# description: event trigger - test multiple actions on hist trigger 2# description: event trigger - test multiple actions on hist trigger
3 3
4
5do_reset() {
6 reset_trigger
7 echo > set_event
8 clear_trace
9}
10
11fail() { #msg 4fail() { #msg
12 do_reset
13 echo $1 5 echo $1
14 exit_fail 6 exit_fail
15} 7}
@@ -24,10 +16,6 @@ if [ ! -f synthetic_events ]; then
24 exit_unsupported 16 exit_unsupported
25fi 17fi
26 18
27clear_synthetic_events
28reset_tracer
29do_reset
30
31echo "Test multiple actions on hist trigger" 19echo "Test multiple actions on hist trigger"
32echo 'wakeup_latency u64 lat; pid_t pid' >> synthetic_events 20echo 'wakeup_latency u64 lat; pid_t pid' >> synthetic_events
33TRIGGER1=events/sched/sched_wakeup/trigger 21TRIGGER1=events/sched/sched_wakeup/trigger
@@ -39,6 +27,4 @@ echo 'hist:keys=next_pid:onmatch(sched.sched_wakeup).wakeup_latency(sched.sched_
39echo 'hist:keys=next_pid:onmatch(sched.sched_wakeup).wakeup_latency(sched.sched_switch.$wakeup_lat,prev_pid) if next_comm=="cyclictest"' >> $TRIGGER2 27echo 'hist:keys=next_pid:onmatch(sched.sched_wakeup).wakeup_latency(sched.sched_switch.$wakeup_lat,prev_pid) if next_comm=="cyclictest"' >> $TRIGGER2
40echo 'hist:keys=next_pid if next_comm=="cyclictest"' >> $TRIGGER2 28echo 'hist:keys=next_pid if next_comm=="cyclictest"' >> $TRIGGER2
41 29
42do_reset
43
44exit 0 30exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc
index e84e7d048566..39fb65b0cd9f 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-action-hist.tc
@@ -1,14 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2# description: event trigger - test inter-event histogram trigger onmatch action 2# description: event trigger - test inter-event histogram trigger onmatch action
3 3
4do_reset() {
5 reset_trigger
6 echo > set_event
7 clear_trace
8}
9
10fail() { #msg 4fail() { #msg
11 do_reset
12 echo $1 5 echo $1
13 exit_fail 6 exit_fail
14} 7}
@@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then
23 exit_unsupported 16 exit_unsupported
24fi 17fi
25 18
26clear_synthetic_events
27reset_tracer
28do_reset
29
30echo "Test create synthetic event" 19echo "Test create synthetic event"
31 20
32echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events 21echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events
@@ -40,11 +29,10 @@ echo "Test histogram variables,simple expression support and onmatch action"
40echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger 29echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger
41echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger 30echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm) if next_comm=="ping"' > events/sched/sched_switch/trigger
42echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger 31echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger
43ping localhost -c 5 32
33ping $LOCALHOST -c 5
44if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then 34if ! grep -q "ping" events/synthetic/wakeup_latency/hist; then
45 fail "Failed to create onmatch action inter-event histogram" 35 fail "Failed to create onmatch action inter-event histogram"
46fi 36fi
47 37
48do_reset
49
50exit 0 38exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc
index 7907d8aacde3..81ab3939c96a 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmatch-onmax-action-hist.tc
@@ -1,14 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2# description: event trigger - test inter-event histogram trigger onmatch-onmax action 2# description: event trigger - test inter-event histogram trigger onmatch-onmax action
3 3
4do_reset() {
5 reset_trigger
6 echo > set_event
7 clear_trace
8}
9
10fail() { #msg 4fail() { #msg
11 do_reset
12 echo $1 5 echo $1
13 exit_fail 6 exit_fail
14} 7}
@@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then
23 exit_unsupported 16 exit_unsupported
24fi 17fi
25 18
26clear_synthetic_events
27reset_tracer
28do_reset
29
30echo "Test create synthetic event" 19echo "Test create synthetic event"
31 20
32echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events 21echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events
@@ -40,11 +29,10 @@ echo "Test histogram variables,simple expression support and onmatch-onmax actio
40echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger 29echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' > events/sched/sched_wakeup/trigger
41echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm):onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger 30echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmatch(sched.sched_wakeup).wakeup_latency($wakeup_lat,next_pid,next_comm):onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger
42echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger 31echo 'hist:keys=comm,pid,lat:wakeup_lat=lat:sort=lat' > events/synthetic/wakeup_latency/trigger
43ping localhost -c 5 32
33ping $LOCALHOST -c 5
44if [ ! grep -q "ping" events/synthetic/wakeup_latency/hist -o ! grep -q "max:" events/sched/sched_switch/hist]; then 34if [ ! grep -q "ping" events/synthetic/wakeup_latency/hist -o ! grep -q "max:" events/sched/sched_switch/hist]; then
45 fail "Failed to create onmatch-onmax action inter-event histogram" 35 fail "Failed to create onmatch-onmax action inter-event histogram"
46fi 36fi
47 37
48do_reset
49
50exit 0 38exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc
index 38b7ed6242b2..1180ab5f0845 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-onmax-action-hist.tc
@@ -1,14 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2# description: event trigger - test inter-event histogram trigger onmax action 2# description: event trigger - test inter-event histogram trigger onmax action
3 3
4do_reset() {
5 reset_trigger
6 echo > set_event
7 clear_trace
8}
9
10fail() { #msg 4fail() { #msg
11 do_reset
12 echo $1 5 echo $1
13 exit_fail 6 exit_fail
14} 7}
@@ -23,10 +16,6 @@ if [ ! -f synthetic_events ]; then
23 exit_unsupported 16 exit_unsupported
24fi 17fi
25 18
26clear_synthetic_events
27reset_tracer
28do_reset
29
30echo "Test create synthetic event" 19echo "Test create synthetic event"
31 20
32echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events 21echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events
@@ -38,11 +27,10 @@ echo "Test onmax action"
38 27
39echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_waking/trigger 28echo 'hist:keys=pid:ts0=common_timestamp.usecs if comm=="ping"' >> events/sched/sched_waking/trigger
40echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger 29echo 'hist:keys=next_pid:wakeup_lat=common_timestamp.usecs-$ts0:onmax($wakeup_lat).save(next_comm,prev_pid,prev_prio,prev_comm) if next_comm=="ping"' >> events/sched/sched_switch/trigger
41ping localhost -c 3 30
31ping $LOCALHOST -c 3
42if ! grep -q "max:" events/sched/sched_switch/hist; then 32if ! grep -q "max:" events/sched/sched_switch/hist; then
43 fail "Failed to create onmax action inter-event histogram" 33 fail "Failed to create onmax action inter-event histogram"
44fi 34fi
45 35
46do_reset
47
48exit 0 36exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc
index cef11377dcbd..8d647fb572dd 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc
@@ -1,13 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2# description: event trigger - test synthetic event create remove 2# description: event trigger - test synthetic event create remove
3do_reset() {
4 reset_trigger
5 echo > set_event
6 clear_trace
7}
8 3
9fail() { #msg 4fail() { #msg
10 do_reset
11 echo $1 5 echo $1
12 exit_fail 6 exit_fail
13} 7}
@@ -22,10 +16,6 @@ if [ ! -f synthetic_events ]; then
22 exit_unsupported 16 exit_unsupported
23fi 17fi
24 18
25clear_synthetic_events
26reset_tracer
27do_reset
28
29echo "Test create synthetic event" 19echo "Test create synthetic event"
30 20
31echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events 21echo 'wakeup_latency u64 lat pid_t pid char comm[16]' > synthetic_events
@@ -49,6 +39,4 @@ if [ -d events/synthetic/wakeup_latency ]; then
49 fail "Failed to delete wakeup_latency synthetic event" 39 fail "Failed to delete wakeup_latency synthetic event"
50fi 40fi
51 41
52do_reset
53
54exit 0 42exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc
index 28cc355a3a7b..eddb51e1fbf7 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc
@@ -3,14 +3,7 @@
3# description: event trigger - test event enable/disable trigger 3# description: event trigger - test event enable/disable trigger
4# flags: instance 4# flags: instance
5 5
6do_reset() {
7 reset_trigger
8 echo > set_event
9 clear_trace
10}
11
12fail() { #msg 6fail() { #msg
13 do_reset
14 echo $1 7 echo $1
15 exit_fail 8 exit_fail
16} 9}
@@ -25,9 +18,6 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then
25 exit_unsupported 18 exit_unsupported
26fi 19fi
27 20
28reset_tracer
29do_reset
30
31FEATURE=`grep enable_event events/sched/sched_process_fork/trigger` 21FEATURE=`grep enable_event events/sched/sched_process_fork/trigger`
32if [ -z "$FEATURE" ]; then 22if [ -z "$FEATURE" ]; then
33 echo "event enable/disable trigger is not supported" 23 echo "event enable/disable trigger is not supported"
@@ -61,6 +51,4 @@ echo 'enable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger
61! echo 'enable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger 51! echo 'enable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger
62! echo 'disable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger 52! echo 'disable_event:sched:sched_switch' > events/sched/sched_process_fork/trigger
63 53
64do_reset
65
66exit 0 54exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc
index a48e23eb8a8b..2dcc2296ebdd 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc
@@ -3,14 +3,7 @@
3# description: event trigger - test trigger filter 3# description: event trigger - test trigger filter
4# flags: instance 4# flags: instance
5 5
6do_reset() {
7 reset_trigger
8 echo > set_event
9 clear_trace
10}
11
12fail() { #msg 6fail() { #msg
13 do_reset
14 echo $1 7 echo $1
15 exit_fail 8 exit_fail
16} 9}
@@ -25,9 +18,6 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then
25 exit_unsupported 18 exit_unsupported
26fi 19fi
27 20
28reset_tracer
29do_reset
30
31echo "Test trigger filter" 21echo "Test trigger filter"
32echo 1 > tracing_on 22echo 1 > tracing_on
33echo 'traceoff if child_pid == 0' > events/sched/sched_process_fork/trigger 23echo 'traceoff if child_pid == 0' > events/sched/sched_process_fork/trigger
@@ -54,8 +44,4 @@ echo '!traceoff' > events/sched/sched_process_fork/trigger
54echo 'traceoff if parent_pid >= 0 || child_pid >= 0' > events/sched/sched_process_fork/trigger 44echo 'traceoff if parent_pid >= 0 || child_pid >= 0' > events/sched/sched_process_fork/trigger
55echo '!traceoff' > events/sched/sched_process_fork/trigger 45echo '!traceoff' > events/sched/sched_process_fork/trigger
56 46
57
58
59do_reset
60
61exit 0 47exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc
index 8da80efc44d8..fab4431639d3 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc
@@ -3,14 +3,7 @@
3# description: event trigger - test histogram modifiers 3# description: event trigger - test histogram modifiers
4# flags: instance 4# flags: instance
5 5
6do_reset() {
7 reset_trigger
8 echo > set_event
9 clear_trace
10}
11
12fail() { #msg 6fail() { #msg
13 do_reset
14 echo $1 7 echo $1
15 exit_fail 8 exit_fail
16} 9}
@@ -30,9 +23,6 @@ if [ ! -f events/sched/sched_process_fork/hist ]; then
30 exit_unsupported 23 exit_unsupported
31fi 24fi
32 25
33reset_tracer
34do_reset
35
36echo "Test histogram with execname modifier" 26echo "Test histogram with execname modifier"
37 27
38echo 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger 28echo 'hist:keys=common_pid.execname' > events/sched/sched_process_fork/trigger
@@ -71,6 +61,4 @@ for i in `seq 1 10` ; do ( echo "forked" > /dev/null); done
71grep 'bytes_req: ~ 2^[0-9]*' events/kmem/kmalloc/hist > /dev/null || \ 61grep 'bytes_req: ~ 2^[0-9]*' events/kmem/kmalloc/hist > /dev/null || \
72 fail "log2 modifier on kmem/kmalloc did not work" 62 fail "log2 modifier on kmem/kmalloc did not work"
73 63
74do_reset
75
76exit 0 64exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc
index 449fe9ff91a2..177e8d4c4744 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc
@@ -3,14 +3,7 @@
3# description: event trigger - test histogram trigger 3# description: event trigger - test histogram trigger
4# flags: instance 4# flags: instance
5 5
6do_reset() {
7 reset_trigger
8 echo > set_event
9 clear_trace
10}
11
12fail() { #msg 6fail() { #msg
13 do_reset
14 echo $1 7 echo $1
15 exit_fail 8 exit_fail
16} 9}
@@ -30,9 +23,6 @@ if [ ! -f events/sched/sched_process_fork/hist ]; then
30 exit_unsupported 23 exit_unsupported
31fi 24fi
32 25
33reset_tracer
34do_reset
35
36echo "Test histogram basic tigger" 26echo "Test histogram basic tigger"
37 27
38echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger 28echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger
@@ -79,6 +69,4 @@ check_inc `grep -o "child_pid:[[:space:]]*[[:digit:]]*" \
79 events/sched/sched_process_fork/hist | cut -d: -f2 ` || 69 events/sched/sched_process_fork/hist | cut -d: -f2 ` ||
80 fail "sort param on sched_process_fork did not work" 70 fail "sort param on sched_process_fork did not work"
81 71
82do_reset
83
84exit 0 72exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc
index c5ef8b9d02b3..18fdaab9f570 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc
@@ -3,14 +3,7 @@
3# description: event trigger - test multiple histogram triggers 3# description: event trigger - test multiple histogram triggers
4# flags: instance 4# flags: instance
5 5
6do_reset() {
7 reset_trigger
8 echo > set_event
9 clear_trace
10}
11
12fail() { #msg 6fail() { #msg
13 do_reset
14 echo $1 7 echo $1
15 exit_fail 8 exit_fail
16} 9}
@@ -30,11 +23,6 @@ if [ ! -f events/sched/sched_process_fork/hist ]; then
30 exit_unsupported 23 exit_unsupported
31fi 24fi
32 25
33reset_tracer
34do_reset
35
36reset_trigger
37
38echo "Test histogram multiple tiggers" 26echo "Test histogram multiple tiggers"
39 27
40echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger 28echo 'hist:keys=parent_pid:vals=child_pid' > events/sched/sched_process_fork/trigger
@@ -67,8 +55,4 @@ grep test_hist events/sched/sched_process_exit/hist > /dev/null || \
67diffs=`diff events/sched/sched_process_exit/hist events/sched/sched_process_fork/hist | wc -l` 55diffs=`diff events/sched/sched_process_exit/hist events/sched/sched_process_fork/hist | wc -l`
68test $diffs -eq 0 || fail "Same name histograms are not same" 56test $diffs -eq 0 || fail "Same name histograms are not same"
69 57
70reset_trigger
71
72do_reset
73
74exit 0 58exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc
index ed38f0050d77..7717c0a09686 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-snapshot.tc
@@ -2,14 +2,7 @@
2# SPDX-License-Identifier: GPL-2.0 2# SPDX-License-Identifier: GPL-2.0
3# description: event trigger - test snapshot-trigger 3# description: event trigger - test snapshot-trigger
4 4
5do_reset() {
6 reset_trigger
7 echo > set_event
8 clear_trace
9}
10
11fail() { #msg 5fail() { #msg
12 do_reset
13 echo $1 6 echo $1
14 exit_fail 7 exit_fail
15} 8}
@@ -29,9 +22,6 @@ if [ ! -f snapshot ]; then
29 exit_unsupported 22 exit_unsupported
30fi 23fi
31 24
32reset_tracer
33do_reset
34
35FEATURE=`grep snapshot events/sched/sched_process_fork/trigger` 25FEATURE=`grep snapshot events/sched/sched_process_fork/trigger`
36if [ -z "$FEATURE" ]; then 26if [ -z "$FEATURE" ]; then
37 echo "snapshot trigger is not supported" 27 echo "snapshot trigger is not supported"
@@ -57,6 +47,4 @@ echo "Test snapshot semantic errors"
57echo "snapshot" > events/sched/sched_process_fork/trigger 47echo "snapshot" > events/sched/sched_process_fork/trigger
58! echo "snapshot" > events/sched/sched_process_fork/trigger 48! echo "snapshot" > events/sched/sched_process_fork/trigger
59 49
60do_reset
61
62exit 0 50exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc
index 3121d795a868..398c05c4d2a7 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-stacktrace.tc
@@ -2,14 +2,7 @@
2# SPDX-License-Identifier: GPL-2.0 2# SPDX-License-Identifier: GPL-2.0
3# description: event trigger - test stacktrace-trigger 3# description: event trigger - test stacktrace-trigger
4 4
5do_reset() {
6 reset_trigger
7 echo > set_event
8 clear_trace
9}
10
11fail() { #msg 5fail() { #msg
12 do_reset
13 echo $1 6 echo $1
14 exit_fail 7 exit_fail
15} 8}
@@ -24,9 +17,6 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then
24 exit_unsupported 17 exit_unsupported
25fi 18fi
26 19
27reset_tracer
28do_reset
29
30FEATURE=`grep stacktrace events/sched/sched_process_fork/trigger` 20FEATURE=`grep stacktrace events/sched/sched_process_fork/trigger`
31if [ -z "$FEATURE" ]; then 21if [ -z "$FEATURE" ]; then
32 echo "stacktrace trigger is not supported" 22 echo "stacktrace trigger is not supported"
@@ -49,6 +39,4 @@ echo "Test stacktrace semantic errors"
49echo "stacktrace" > events/sched/sched_process_fork/trigger 39echo "stacktrace" > events/sched/sched_process_fork/trigger
50! echo "stacktrace" > events/sched/sched_process_fork/trigger 40! echo "stacktrace" > events/sched/sched_process_fork/trigger
51 41
52do_reset
53
54exit 0 42exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
index 2acbfe2c0c0c..ab6bedb25736 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-hist.tc
@@ -3,14 +3,7 @@
3# description: trace_marker trigger - test histogram trigger 3# description: trace_marker trigger - test histogram trigger
4# flags: instance 4# flags: instance
5 5
6do_reset() {
7 reset_trigger
8 echo > set_event
9 clear_trace
10}
11
12fail() { #msg 6fail() { #msg
13 do_reset
14 echo $1 7 echo $1
15 exit_fail 8 exit_fail
16} 9}
@@ -35,8 +28,6 @@ if [ ! -f events/ftrace/print/hist ]; then
35 exit_unsupported 28 exit_unsupported
36fi 29fi
37 30
38do_reset
39
40echo "Test histogram trace_marker tigger" 31echo "Test histogram trace_marker tigger"
41 32
42echo 'hist:keys=common_pid' > events/ftrace/print/trigger 33echo 'hist:keys=common_pid' > events/ftrace/print/trigger
@@ -44,6 +35,4 @@ for i in `seq 1 10` ; do echo "hello" > trace_marker; done
44grep 'hitcount: *10$' events/ftrace/print/hist > /dev/null || \ 35grep 'hitcount: *10$' events/ftrace/print/hist > /dev/null || \
45 fail "hist trigger did not trigger correct times on trace_marker" 36 fail "hist trigger did not trigger correct times on trace_marker"
46 37
47do_reset
48
49exit 0 38exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc
index 6748e8cb42d0..df246e505af7 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-snapshot.tc
@@ -3,15 +3,7 @@
3# description: trace_marker trigger - test snapshot trigger 3# description: trace_marker trigger - test snapshot trigger
4# flags: instance 4# flags: instance
5 5
6do_reset() {
7 reset_trigger
8 echo > set_event
9 echo 0 > snapshot
10 clear_trace
11}
12
13fail() { #msg 6fail() { #msg
14 do_reset
15 echo $1 7 echo $1
16 exit_fail 8 exit_fail
17} 9}
@@ -47,15 +39,13 @@ test_trace() {
47 fi 39 fi
48 echo "testing $line for >$x<" 40 echo "testing $line for >$x<"
49 match=`echo $line | sed -e "s/>$x<//"` 41 match=`echo $line | sed -e "s/>$x<//"`
50 if [ "$line" == "$match" ]; then 42 if [ "$line" = "$match" ]; then
51 fail "$line does not have >$x< in it" 43 fail "$line does not have >$x< in it"
52 fi 44 fi
53 let x=$x+2 45 x=$((x+2))
54 done 46 done
55} 47}
56 48
57do_reset
58
59echo "Test snapshot trace_marker tigger" 49echo "Test snapshot trace_marker tigger"
60 50
61echo 'snapshot' > events/ftrace/print/trigger 51echo 'snapshot' > events/ftrace/print/trigger
@@ -69,6 +59,4 @@ for i in `seq 1 10` ; do echo "hello >$i<" > trace_marker; done
69test_trace trace 1 59test_trace trace 1
70test_trace snapshot 2 60test_trace snapshot 2
71 61
72do_reset
73
74exit 0 62exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
index 0a69c5d1cda8..18b4d1c2807e 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic-kernel.tc
@@ -3,15 +3,7 @@
3# description: trace_marker trigger - test histogram with synthetic event against kernel event 3# description: trace_marker trigger - test histogram with synthetic event against kernel event
4# flags: 4# flags:
5 5
6do_reset() {
7 reset_trigger
8 echo > set_event
9 echo > synthetic_events
10 clear_trace
11}
12
13fail() { #msg 6fail() { #msg
14 do_reset
15 echo $1 7 echo $1
16 exit_fail 8 exit_fail
17} 9}
@@ -46,8 +38,6 @@ if [ ! -f events/ftrace/print/hist ]; then
46 exit_unsupported 38 exit_unsupported
47fi 39fi
48 40
49do_reset
50
51echo "Test histogram kernel event to trace_marker latency histogram trigger" 41echo "Test histogram kernel event to trace_marker latency histogram trigger"
52 42
53echo 'latency u64 lat' > synthetic_events 43echo 'latency u64 lat' > synthetic_events
@@ -63,6 +53,4 @@ grep 'hitcount: *1$' events/ftrace/print/hist > /dev/null || \
63grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \ 53grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \
64 fail "hist trigger did not trigger " 54 fail "hist trigger did not trigger "
65 55
66do_reset
67
68exit 0 56exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
index 3666dd6ab02a..dd262d6d0db6 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-trace-marker-synthetic.tc
@@ -3,15 +3,7 @@
3# description: trace_marker trigger - test histogram with synthetic event 3# description: trace_marker trigger - test histogram with synthetic event
4# flags: 4# flags:
5 5
6do_reset() {
7 reset_trigger
8 echo > set_event
9 echo > synthetic_events
10 clear_trace
11}
12
13fail() { #msg 6fail() { #msg
14 do_reset
15 echo $1 7 echo $1
16 exit_fail 8 exit_fail
17} 9}
@@ -41,8 +33,6 @@ if [ ! -f events/ftrace/print/hist ]; then
41 exit_unsupported 33 exit_unsupported
42fi 34fi
43 35
44do_reset
45
46echo "Test histogram trace_marker to trace_marker latency histogram trigger" 36echo "Test histogram trace_marker to trace_marker latency histogram trigger"
47 37
48echo 'latency u64 lat' > synthetic_events 38echo 'latency u64 lat' > synthetic_events
@@ -61,6 +51,4 @@ fi
61grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \ 51grep 'hitcount: *1$' events/synthetic/latency/hist > /dev/null || \
62 fail "hist trigger did not trigger " 52 fail "hist trigger did not trigger "
63 53
64do_reset
65
66exit 0 54exit 0
diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc
index c59d9eb546da..d5d2dcbc9cab 100644
--- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc
+++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-traceonoff.tc
@@ -2,14 +2,7 @@
2# SPDX-License-Identifier: GPL-2.0 2# SPDX-License-Identifier: GPL-2.0
3# description: event trigger - test traceon/off trigger 3# description: event trigger - test traceon/off trigger
4 4
5do_reset() {
6 reset_trigger
7 echo > set_event
8 clear_trace
9}
10
11fail() { #msg 5fail() { #msg
12 do_reset
13 echo $1 6 echo $1
14 exit_fail 7 exit_fail
15} 8}
@@ -24,9 +17,6 @@ if [ ! -f events/sched/sched_process_fork/trigger ]; then
24 exit_unsupported 17 exit_unsupported
25fi 18fi
26 19
27reset_tracer
28do_reset
29
30echo "Test traceoff trigger" 20echo "Test traceoff trigger"
31echo 1 > tracing_on 21echo 1 > tracing_on
32echo 'traceoff' > events/sched/sched_process_fork/trigger 22echo 'traceoff' > events/sched/sched_process_fork/trigger
@@ -54,6 +44,4 @@ echo 'traceon' > events/sched/sched_process_fork/trigger
54! echo 'traceon' > events/sched/sched_process_fork/trigger 44! echo 'traceon' > events/sched/sched_process_fork/trigger
55! echo 'traceoff' > events/sched/sched_process_fork/trigger 45! echo 'traceoff' > events/sched/sched_process_fork/trigger
56 46
57do_reset
58
59exit 0 47exit 0
diff --git a/tools/testing/selftests/gpio/Makefile b/tools/testing/selftests/gpio/Makefile
index 4665cdbf1a8d..46648427d537 100644
--- a/tools/testing/selftests/gpio/Makefile
+++ b/tools/testing/selftests/gpio/Makefile
@@ -1,28 +1,26 @@
1# SPDX-License-Identifier: GPL-2.0 1# SPDX-License-Identifier: GPL-2.0
2 2
3CFLAGS += -O2 -g -std=gnu99 -Wall -I../../../../usr/include/
4LDLIBS += -lmount -I/usr/include/libmount
5
3TEST_PROGS := gpio-mockup.sh 6TEST_PROGS := gpio-mockup.sh
4TEST_FILES := gpio-mockup-sysfs.sh $(BINARIES) 7TEST_FILES := gpio-mockup-sysfs.sh
5BINARIES := gpio-mockup-chardev 8TEST_PROGS_EXTENDED := gpio-mockup-chardev
6EXTRA_PROGS := ../gpiogpio-event-mon ../gpiogpio-hammer ../gpiolsgpio 9
7EXTRA_DIRS := ../gpioinclude/ 10GPIODIR := $(realpath ../../../gpio)
8EXTRA_OBJS := ../gpiogpio-event-mon-in.o ../gpiogpio-event-mon.o 11GPIOOBJ := gpio-utils.o
9EXTRA_OBJS += ../gpiogpio-hammer-in.o ../gpiogpio-utils.o ../gpiolsgpio-in.o
10EXTRA_OBJS += ../gpiolsgpio.o
11 12
12include ../lib.mk 13include ../lib.mk
13 14
14all: $(BINARIES) 15all: $(TEST_PROGS_EXTENDED)
15 16
16override define CLEAN 17override define CLEAN
17 $(RM) $(BINARIES) $(EXTRA_PROGS) $(EXTRA_OBJS) 18 $(RM) $(TEST_PROGS_EXTENDED)
18 $(RM) -r $(EXTRA_DIRS) 19 $(MAKE) -C $(GPIODIR) OUTPUT=$(GPIODIR)/ clean
19endef 20endef
20 21
21CFLAGS += -O2 -g -std=gnu99 -Wall -I../../../../usr/include/ 22$(TEST_PROGS_EXTENDED):| khdr
22LDLIBS += -lmount -I/usr/include/libmount 23$(TEST_PROGS_EXTENDED): $(GPIODIR)/$(GPIOOBJ)
23
24$(BINARIES):| khdr
25$(BINARIES): ../../../gpio/gpio-utils.o
26 24
27../../../gpio/gpio-utils.o: 25$(GPIODIR)/$(GPIOOBJ):
28 make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C ../../../gpio 26 $(MAKE) OUTPUT=$(GPIODIR)/ -C $(GPIODIR)
diff --git a/tools/testing/selftests/kvm/dirty_log_test.c b/tools/testing/selftests/kvm/dirty_log_test.c
index d59820cc2d39..aeff95a91b15 100644
--- a/tools/testing/selftests/kvm/dirty_log_test.c
+++ b/tools/testing/selftests/kvm/dirty_log_test.c
@@ -33,10 +33,10 @@
33#define TEST_PAGES_PER_LOOP 1024 33#define TEST_PAGES_PER_LOOP 1024
34 34
35/* How many host loops to run (one KVM_GET_DIRTY_LOG for each loop) */ 35/* How many host loops to run (one KVM_GET_DIRTY_LOG for each loop) */
36#define TEST_HOST_LOOP_N 32 36#define TEST_HOST_LOOP_N 32UL
37 37
38/* Interval for each host loop (ms) */ 38/* Interval for each host loop (ms) */
39#define TEST_HOST_LOOP_INTERVAL 10 39#define TEST_HOST_LOOP_INTERVAL 10UL
40 40
41/* 41/*
42 * Guest/Host shared variables. Ensure addr_gva2hva() and/or 42 * Guest/Host shared variables. Ensure addr_gva2hva() and/or
diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c
index 8c06da4f03db..1b41e71283d5 100644
--- a/tools/testing/selftests/kvm/lib/kvm_util.c
+++ b/tools/testing/selftests/kvm/lib/kvm_util.c
@@ -128,7 +128,7 @@ struct kvm_vm *vm_create(enum vm_guest_mode mode, uint64_t phy_pages, int perm)
128 int kvm_fd; 128 int kvm_fd;
129 129
130 vm = calloc(1, sizeof(*vm)); 130 vm = calloc(1, sizeof(*vm));
131 TEST_ASSERT(vm != NULL, "Insufficent Memory"); 131 TEST_ASSERT(vm != NULL, "Insufficient Memory");
132 132
133 vm->mode = mode; 133 vm->mode = mode;
134 vm_open(vm, perm); 134 vm_open(vm, perm);
diff --git a/tools/testing/selftests/proc/fd-001-lookup.c b/tools/testing/selftests/proc/fd-001-lookup.c
index a2010dfb2110..60d7948e7124 100644
--- a/tools/testing/selftests/proc/fd-001-lookup.c
+++ b/tools/testing/selftests/proc/fd-001-lookup.c
@@ -14,7 +14,7 @@
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */ 15 */
16// Test /proc/*/fd lookup. 16// Test /proc/*/fd lookup.
17#define _GNU_SOURCE 17
18#undef NDEBUG 18#undef NDEBUG
19#include <assert.h> 19#include <assert.h>
20#include <dirent.h> 20#include <dirent.h>
diff --git a/tools/testing/selftests/proc/fd-003-kthread.c b/tools/testing/selftests/proc/fd-003-kthread.c
index 1d659d55368c..dc591f97b63d 100644
--- a/tools/testing/selftests/proc/fd-003-kthread.c
+++ b/tools/testing/selftests/proc/fd-003-kthread.c
@@ -14,7 +14,7 @@
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */ 15 */
16// Test that /proc/$KERNEL_THREAD/fd/ is empty. 16// Test that /proc/$KERNEL_THREAD/fd/ is empty.
17#define _GNU_SOURCE 17
18#undef NDEBUG 18#undef NDEBUG
19#include <sys/syscall.h> 19#include <sys/syscall.h>
20#include <assert.h> 20#include <assert.h>
diff --git a/tools/testing/selftests/watchdog/watchdog-test.c b/tools/testing/selftests/watchdog/watchdog-test.c
index 6e290874b70e..c6bd9a68306b 100644
--- a/tools/testing/selftests/watchdog/watchdog-test.c
+++ b/tools/testing/selftests/watchdog/watchdog-test.c
@@ -19,7 +19,7 @@
19 19
20int fd; 20int fd;
21const char v = 'V'; 21const char v = 'V';
22static const char sopts[] = "bdehp:t:"; 22static const char sopts[] = "bdehp:t:Tn:N";
23static const struct option lopts[] = { 23static const struct option lopts[] = {
24 {"bootstatus", no_argument, NULL, 'b'}, 24 {"bootstatus", no_argument, NULL, 'b'},
25 {"disable", no_argument, NULL, 'd'}, 25 {"disable", no_argument, NULL, 'd'},
@@ -27,6 +27,9 @@ static const struct option lopts[] = {
27 {"help", no_argument, NULL, 'h'}, 27 {"help", no_argument, NULL, 'h'},
28 {"pingrate", required_argument, NULL, 'p'}, 28 {"pingrate", required_argument, NULL, 'p'},
29 {"timeout", required_argument, NULL, 't'}, 29 {"timeout", required_argument, NULL, 't'},
30 {"gettimeout", no_argument, NULL, 'T'},
31 {"pretimeout", required_argument, NULL, 'n'},
32 {"getpretimeout", no_argument, NULL, 'N'},
30 {NULL, no_argument, NULL, 0x0} 33 {NULL, no_argument, NULL, 0x0}
31}; 34};
32 35
@@ -71,9 +74,13 @@ static void usage(char *progname)
71 printf(" -h, --help Print the help message\n"); 74 printf(" -h, --help Print the help message\n");
72 printf(" -p, --pingrate=P Set ping rate to P seconds (default %d)\n", DEFAULT_PING_RATE); 75 printf(" -p, --pingrate=P Set ping rate to P seconds (default %d)\n", DEFAULT_PING_RATE);
73 printf(" -t, --timeout=T Set timeout to T seconds\n"); 76 printf(" -t, --timeout=T Set timeout to T seconds\n");
77 printf(" -T, --gettimeout Get the timeout\n");
78 printf(" -n, --pretimeout=T Set the pretimeout to T seconds\n");
79 printf(" -N, --getpretimeout Get the pretimeout\n");
74 printf("\n"); 80 printf("\n");
75 printf("Parameters are parsed left-to-right in real-time.\n"); 81 printf("Parameters are parsed left-to-right in real-time.\n");
76 printf("Example: %s -d -t 10 -p 5 -e\n", progname); 82 printf("Example: %s -d -t 10 -p 5 -e\n", progname);
83 printf("Example: %s -t 12 -T -n 7 -N\n", progname);
77} 84}
78 85
79int main(int argc, char *argv[]) 86int main(int argc, char *argv[])
@@ -89,7 +96,13 @@ int main(int argc, char *argv[])
89 fd = open("/dev/watchdog", O_WRONLY); 96 fd = open("/dev/watchdog", O_WRONLY);
90 97
91 if (fd == -1) { 98 if (fd == -1) {
92 printf("Watchdog device not enabled.\n"); 99 if (errno == ENOENT)
100 printf("Watchdog device not enabled.\n");
101 else if (errno == EACCES)
102 printf("Run watchdog as root.\n");
103 else
104 printf("Watchdog device open failed %s\n",
105 strerror(errno));
93 exit(-1); 106 exit(-1);
94 } 107 }
95 108
@@ -103,23 +116,27 @@ int main(int argc, char *argv[])
103 printf("Last boot is caused by: %s.\n", (flags != 0) ? 116 printf("Last boot is caused by: %s.\n", (flags != 0) ?
104 "Watchdog" : "Power-On-Reset"); 117 "Watchdog" : "Power-On-Reset");
105 else 118 else
106 printf("WDIOC_GETBOOTSTATUS errno '%s'\n", strerror(errno)); 119 printf("WDIOC_GETBOOTSTATUS error '%s'\n", strerror(errno));
107 break; 120 break;
108 case 'd': 121 case 'd':
109 flags = WDIOS_DISABLECARD; 122 flags = WDIOS_DISABLECARD;
110 ret = ioctl(fd, WDIOC_SETOPTIONS, &flags); 123 ret = ioctl(fd, WDIOC_SETOPTIONS, &flags);
111 if (!ret) 124 if (!ret)
112 printf("Watchdog card disabled.\n"); 125 printf("Watchdog card disabled.\n");
113 else 126 else {
114 printf("WDIOS_DISABLECARD errno '%s'\n", strerror(errno)); 127 printf("WDIOS_DISABLECARD error '%s'\n", strerror(errno));
128 oneshot = 1;
129 }
115 break; 130 break;
116 case 'e': 131 case 'e':
117 flags = WDIOS_ENABLECARD; 132 flags = WDIOS_ENABLECARD;
118 ret = ioctl(fd, WDIOC_SETOPTIONS, &flags); 133 ret = ioctl(fd, WDIOC_SETOPTIONS, &flags);
119 if (!ret) 134 if (!ret)
120 printf("Watchdog card enabled.\n"); 135 printf("Watchdog card enabled.\n");
121 else 136 else {
122 printf("WDIOS_ENABLECARD errno '%s'\n", strerror(errno)); 137 printf("WDIOS_ENABLECARD error '%s'\n", strerror(errno));
138 oneshot = 1;
139 }
123 break; 140 break;
124 case 'p': 141 case 'p':
125 ping_rate = strtoul(optarg, NULL, 0); 142 ping_rate = strtoul(optarg, NULL, 0);
@@ -132,8 +149,36 @@ int main(int argc, char *argv[])
132 ret = ioctl(fd, WDIOC_SETTIMEOUT, &flags); 149 ret = ioctl(fd, WDIOC_SETTIMEOUT, &flags);
133 if (!ret) 150 if (!ret)
134 printf("Watchdog timeout set to %u seconds.\n", flags); 151 printf("Watchdog timeout set to %u seconds.\n", flags);
152 else {
153 printf("WDIOC_SETTIMEOUT error '%s'\n", strerror(errno));
154 oneshot = 1;
155 }
156 break;
157 case 'T':
158 oneshot = 1;
159 ret = ioctl(fd, WDIOC_GETTIMEOUT, &flags);
160 if (!ret)
161 printf("WDIOC_GETTIMEOUT returns %u seconds.\n", flags);
162 else
163 printf("WDIOC_GETTIMEOUT error '%s'\n", strerror(errno));
164 break;
165 case 'n':
166 flags = strtoul(optarg, NULL, 0);
167 ret = ioctl(fd, WDIOC_SETPRETIMEOUT, &flags);
168 if (!ret)
169 printf("Watchdog pretimeout set to %u seconds.\n", flags);
170 else {
171 printf("WDIOC_SETPRETIMEOUT error '%s'\n", strerror(errno));
172 oneshot = 1;
173 }
174 break;
175 case 'N':
176 oneshot = 1;
177 ret = ioctl(fd, WDIOC_GETPRETIMEOUT, &flags);
178 if (!ret)
179 printf("WDIOC_GETPRETIMEOUT returns %u seconds.\n", flags);
135 else 180 else
136 printf("WDIOC_SETTIMEOUT errno '%s'\n", strerror(errno)); 181 printf("WDIOC_GETPRETIMEOUT error '%s'\n", strerror(errno));
137 break; 182 break;
138 default: 183 default:
139 usage(argv[0]); 184 usage(argv[0]);