xref: /linux/tools/perf/tests/shell/test_event_open_fallback.sh (revision af9e8d12b139c92e748eb2956bbef03315ea7516)
1#!/bin/bash
2# Perf event open fallback test
3# SPDX-License-Identifier: GPL-2.0
4
5skip_cnt=0
6ok_cnt=0
7err_cnt=0
8
9cleanup()
10{
11	rm -f perf.data
12	rm -f perf.data.old
13	trap - EXIT TERM INT
14}
15
16trap_cleanup()
17{
18	cleanup
19	exit 1
20}
21
22trap trap_cleanup EXIT TERM INT
23
24perf_record()
25{
26	perf record "$@" -- true 1>/dev/null 2>&1
27}
28
29test_decrease_precise_ip()
30{
31	echo "Decrease precise ip test"
32
33	perf list pmu | grep -q 'cycles' || return 2
34
35	if ! perf_record -e cycles; then
36		return 2
37	fi
38
39	# It should reduce precision level down to 0 if needed.
40	if ! perf_record -e cycles:P; then
41		return 1
42	fi
43	return 0
44}
45
46test_decrease_precise_ip_complicated()
47{
48	echo "Decrease precise ip test (complicated case)"
49
50	perf list pmu | grep -q 'mem-loads-aux' || return 2
51
52	if ! perf_record -e '{cpu/mem-loads-aux/S,cpu/mem-loads/PS}'; then
53		return 1
54	fi
55	return 0
56}
57
58count_result()
59{
60	if [ "$1" -eq 2 ] ; then
61		skip_cnt=$((skip_cnt + 1))
62		return
63	fi
64	if [ "$1" -eq 0 ] ; then
65		ok_cnt=$((ok_cnt + 1))
66		return
67	fi
68	err_cnt=$((err_cnt + 1))
69}
70
71ret=0
72test_decrease_precise_ip		|| ret=$? ; count_result $ret ; ret=0
73test_decrease_precise_ip_complicated	|| ret=$? ; count_result $ret ; ret=0
74
75cleanup
76
77if [ ${err_cnt} -gt 0 ] ; then
78	exit 1
79fi
80
81if [ ${ok_cnt} -gt 0 ] ; then
82	exit 0
83fi
84
85# Skip
86exit 2
87