Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / tools / testing / selftests / ftrace / test.d / preemptirq / irqsoff_tracer.tc
blobba10389538736faf4ae2146050b9ef536eb8e593
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0
3 # description: test for the preemptirqsoff tracer
4 # requires: preemptoff:tracer irqsoff:tracer
6 MOD=preemptirq_delay_test
8 fail() {
9 reset_tracer
10 rmmod $MOD || true
11 exit_fail
14 unsup() { #msg
15 reset_tracer
16 rmmod $MOD || true
17 echo $1
18 exit_unsupported
21 unres() { #msg
22 reset_tracer
23 rmmod $MOD || true
24 echo $1
25 exit_unresolved
28 modprobe $MOD || unres "$MOD module not available"
29 rmmod $MOD
31 reset_tracer
33 # Simulate preemptoff section for half a second couple of times
34 echo preemptoff > current_tracer
35 sleep 1
36 modprobe $MOD test_mode=preempt delay=500000 || fail
37 rmmod $MOD || fail
38 modprobe $MOD test_mode=preempt delay=500000 || fail
39 rmmod $MOD || fail
40 modprobe $MOD test_mode=preempt delay=500000 || fail
41 rmmod $MOD || fail
43 cat trace
45 # Confirm which tracer
46 grep -q "tracer: preemptoff" trace || fail
48 # Check the end of the section
49 grep -E -q "5.....us : <stack trace>" trace || fail
51 # Check for 500ms of latency
52 grep -E -q "latency: 5..... us" trace || fail
54 reset_tracer
56 # Simulate irqsoff section for half a second couple of times
57 echo irqsoff > current_tracer
58 sleep 1
59 modprobe $MOD test_mode=irq delay=500000 || fail
60 rmmod $MOD || fail
61 modprobe $MOD test_mode=irq delay=500000 || fail
62 rmmod $MOD || fail
63 modprobe $MOD test_mode=irq delay=500000 || fail
64 rmmod $MOD || fail
66 cat trace
68 # Confirm which tracer
69 grep -q "tracer: irqsoff" trace || fail
71 # Check the end of the section
72 grep -E -q "5.....us : <stack trace>" trace || fail
74 # Check for 500ms of latency
75 grep -E -q "latency: 5..... us" trace || fail
77 reset_tracer
78 exit 0