xref: /linux/tools/perf/tests/shell/test_event_open_fallback.sh (revision 9e906a9dead17d81d6c2687f65e159231d0e3286)
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
9perf_record()
10{
11	perf record -o /dev/null "$@" -- true 1>/dev/null 2>&1
12}
13
14test_decrease_precise_ip()
15{
16	echo "Decrease precise ip test"
17
18	perf list pmu | grep -q 'cycles' || return 2
19
20	if ! perf_record -e cycles; then
21		return 2
22	fi
23
24	# It should reduce precision level down to 0 if needed.
25	if ! perf_record -e cycles:P; then
26		return 1
27	fi
28	return 0
29}
30
31test_decrease_precise_ip_complicated()
32{
33	echo "Decrease precise ip test (complicated case)"
34
35	perf list pmu | grep -q 'mem-loads-aux' || return 2
36
37	if ! perf_record -e '{mem-loads-aux:S,mem-loads:PS}'; then
38		return 1
39	fi
40	return 0
41}
42
43count_result()
44{
45	if [ "$1" -eq 2 ] ; then
46		skip_cnt=$((skip_cnt + 1))
47		return
48	fi
49	if [ "$1" -eq 0 ] ; then
50		ok_cnt=$((ok_cnt + 1))
51		return
52	fi
53	err_cnt=$((err_cnt + 1))
54}
55
56ret=0
57test_decrease_precise_ip		|| ret=$? ; count_result $ret ; ret=0
58test_decrease_precise_ip_complicated	|| ret=$? ; count_result $ret ; ret=0
59
60cleanup
61
62if [ ${err_cnt} -gt 0 ] ; then
63	exit 1
64fi
65
66if [ ${ok_cnt} -gt 0 ] ; then
67	exit 0
68fi
69
70# Skip
71exit 2
72