2 # perf record sample filtering (by BPF) tests
3 # SPDX-License-Identifier: GPL-2.0
8 perfdata=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
12 rm -f "${perfdata}".old
20 trap trap_cleanup EXIT TERM INT
22 test_bpf_filter_priv() {
23 echo "Checking BPF-filter privilege"
25 if [ "$(id -u)" != 0 ]
27 echo "bpf-filter test [Skipped permission]"
31 if ! perf record -e task-clock --filter 'period > 1' \
32 -o /dev/null --quiet true 2>&1
34 echo "bpf-filter test [Skipped missing BPF support]"
40 test_bpf_filter_basic() {
41 echo "Basic bpf-filter test"
43 if ! perf record -e task-clock -c 10000 --filter 'ip < 0xffffffff00000000' \
44 -o "${perfdata}" true 2> /dev/null
46 echo "Basic bpf-filter test [Failed record]"
50 if perf script -i "${perfdata}" -F ip | grep 'ffffffff[0-9a-f]*'
52 if uname -r | grep -q ^6.2
54 echo "Basic bpf-filter test [Skipped unsupported kernel]"
58 echo "Basic bpf-filter test [Failed invalid output]"
62 echo "Basic bpf-filter test [Success]"
65 test_bpf_filter_fail() {
66 echo "Failing bpf-filter test"
68 # 'cpu' requires PERF_SAMPLE_CPU flag
69 if ! perf record -e task-clock --filter 'cpu > 0' \
70 -o /dev/null true 2>&1 | grep PERF_SAMPLE_CPU
72 echo "Failing bpf-filter test [Failed forbidden CPU]"
77 if ! perf record --sample-cpu -e task-clock --filter 'cpu > 0' \
78 -o /dev/null true 2>/dev/null
80 echo "Failing bpf-filter test [Failed should succeed]"
85 echo "Failing bpf-filter test [Success]"
88 test_bpf_filter_group() {
89 echo "Group bpf-filter test"
91 if ! perf record -e task-clock --filter 'period > 1000 || ip > 0' \
92 -o /dev/null true 2>/dev/null
94 echo "Group bpf-filter test [Failed should succeed]"
99 if ! perf record -e task-clock --filter 'cpu > 0 || ip > 0' \
100 -o /dev/null true 2>&1 | grep PERF_SAMPLE_CPU
102 echo "Group bpf-filter test [Failed forbidden CPU]"
107 if ! perf record -e task-clock --filter 'period > 0 || code_pgsz > 4096' \
108 -o /dev/null true 2>&1 | grep PERF_SAMPLE_CODE_PAGE_SIZE
110 echo "Group bpf-filter test [Failed forbidden CODE_PAGE_SIZE]"
115 echo "Group bpf-filter test [Success]"
121 if [ $err = 0 ]; then
122 test_bpf_filter_basic
125 if [ $err = 0 ]; then
129 if [ $err = 0 ]; then
130 test_bpf_filter_group