blob: 9ff662f67ea43444f7885d811ac7ddc3f9298f3a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
#!/bin/bash
source cpu.sh
source cpufreq.sh
source governor.sh
FUNC=basic # do basic tests by default
OUTFILE=cpufreq_selftest
SYSFS=
CPUROOT=
CPUFREQROOT=
helpme()
{
printf "Usage: $0 [-h] [-to args]
[-h <help>]
[-o <output-file-for-dump>]
[-t <basic: Basic cpufreq testing
suspend: suspend/resume,
hibernate: hibernate/resume>]
\n"
exit 2
}
prerequisite()
{
msg="skip all tests:"
if [ $UID != 0 ]; then
echo $msg must be run as root >&2
exit 2
fi
taskset -p 01 $$
SYSFS=`mount -t sysfs | head -1 | awk '{ print $3 }'`
if [ ! -d "$SYSFS" ]; then
echo $msg sysfs is not mounted >&2
exit 2
fi
CPUROOT=$SYSFS/devices/system/cpu
CPUFREQROOT="$CPUROOT/cpufreq"
if ! ls $CPUROOT/cpu* > /dev/null 2>&1; then
echo $msg cpus not available in sysfs >&2
exit 2
fi
if ! ls $CPUROOT/cpufreq > /dev/null 2>&1; then
echo $msg cpufreq directory not available in sysfs >&2
exit 2
fi
}
parse_arguments()
{
while getopts ht:o: arg
do
case $arg in
h) # --help
helpme
;;
t) # --func_type (Function to perform: basic, suspend, hibernate (default: basic))
FUNC=$OPTARG
;;
o) # --output-file (Output file to store dumps)
OUTFILE=$OPTARG
;;
\?)
helpme
;;
esac
done
}
do_test()
{
# Check if CPUs are managed by cpufreq or not
count=$(count_cpufreq_managed_cpus)
if [ $count = 0 ]; then
echo "No cpu is managed by cpufreq core, exiting"
exit 2;
fi
case "$FUNC" in
"basic")
cpufreq_basic_tests
;;
"suspend")
do_suspend "suspend" 1
;;
"hibernate")
do_suspend "hibernate" 1
;;
*)
echo "Invalid [-f] function type"
helpme
;;
esac
}
# clear dumps
# $1: file name
clear_dumps()
{
echo "" > $1.txt
echo "" > $1.dmesg_cpufreq.txt
echo "" > $1.dmesg_full.txt
}
# $1: output file name
dmesg_dumps()
{
dmesg | grep cpufreq >> $1.dmesg_cpufreq.txt
# We may need the full logs as well
dmesg >> $1.dmesg_full.txt
}
# Parse arguments
parse_arguments $@
# Make sure all requirements are met
prerequisite
# Run requested functions
clear_dumps $OUTFILE
do_test >> $OUTFILE.txt
dmesg_dumps $OUTFILE
|