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