xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/cpufreq/special-tests.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# Special test cases reported by people
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun# Testcase 1: Reported here: http://marc.info/?l=linux-pm&m=140618592709858&w=2
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun# protect against multiple inclusion
9*4882a593Smuzhiyunif [ $FILE_SPECIAL ]; then
10*4882a593Smuzhiyun	return 0
11*4882a593Smuzhiyunelse
12*4882a593Smuzhiyun	FILE_SPECIAL=DONE
13*4882a593Smuzhiyunfi
14*4882a593Smuzhiyun
15*4882a593Smuzhiyunsource cpu.sh
16*4882a593Smuzhiyunsource cpufreq.sh
17*4882a593Smuzhiyunsource governor.sh
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun# Test 1
20*4882a593Smuzhiyun# $1: policy
21*4882a593Smuzhiyun__simple_lockdep()
22*4882a593Smuzhiyun{
23*4882a593Smuzhiyun	# switch to ondemand
24*4882a593Smuzhiyun	__switch_governor $1 "ondemand"
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun	# cat ondemand files
27*4882a593Smuzhiyun	local ondir=$(find_gov_directory $1 "ondemand")
28*4882a593Smuzhiyun	if [ -z $ondir ]; then
29*4882a593Smuzhiyun		printf "${FUNCNAME[0]}Ondemand directory not created, quit"
30*4882a593Smuzhiyun		return
31*4882a593Smuzhiyun	fi
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun	cat $ondir/*
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun	# switch to conservative
36*4882a593Smuzhiyun	__switch_governor $1 "conservative"
37*4882a593Smuzhiyun}
38*4882a593Smuzhiyun
39*4882a593Smuzhiyunsimple_lockdep()
40*4882a593Smuzhiyun{
41*4882a593Smuzhiyun	printf "** Test: Running ${FUNCNAME[0]} **\n"
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun	for_each_policy __simple_lockdep
44*4882a593Smuzhiyun}
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun# Test 2
47*4882a593Smuzhiyun# $1: policy
48*4882a593Smuzhiyun__concurrent_lockdep()
49*4882a593Smuzhiyun{
50*4882a593Smuzhiyun	for i in `seq 0 100`; do
51*4882a593Smuzhiyun		__simple_lockdep $1
52*4882a593Smuzhiyun	done
53*4882a593Smuzhiyun}
54*4882a593Smuzhiyun
55*4882a593Smuzhiyunconcurrent_lockdep()
56*4882a593Smuzhiyun{
57*4882a593Smuzhiyun	printf "** Test: Running ${FUNCNAME[0]} **\n"
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun	for_each_policy_concurrent __concurrent_lockdep
60*4882a593Smuzhiyun}
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun# Test 3
63*4882a593Smuzhiyunquick_shuffle()
64*4882a593Smuzhiyun{
65*4882a593Smuzhiyun	# this is called concurrently from governor_race
66*4882a593Smuzhiyun	for I in `seq 1000`
67*4882a593Smuzhiyun	do
68*4882a593Smuzhiyun		echo ondemand | sudo tee $CPUFREQROOT/policy*/scaling_governor &
69*4882a593Smuzhiyun		echo userspace | sudo tee $CPUFREQROOT/policy*/scaling_governor &
70*4882a593Smuzhiyun	done
71*4882a593Smuzhiyun}
72*4882a593Smuzhiyun
73*4882a593Smuzhiyungovernor_race()
74*4882a593Smuzhiyun{
75*4882a593Smuzhiyun	printf "** Test: Running ${FUNCNAME[0]} **\n"
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun	# run 8 concurrent instances
78*4882a593Smuzhiyun	for I in `seq 8`
79*4882a593Smuzhiyun	do
80*4882a593Smuzhiyun		quick_shuffle &
81*4882a593Smuzhiyun	done
82*4882a593Smuzhiyun}
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun# Test 4
85*4882a593Smuzhiyun# $1: cpu
86*4882a593Smuzhiyunhotplug_with_updates_cpu()
87*4882a593Smuzhiyun{
88*4882a593Smuzhiyun	local filepath="$CPUROOT/$1/cpufreq"
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun	# switch to ondemand
91*4882a593Smuzhiyun	__switch_governor_for_cpu $1 "ondemand"
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun	for i in `seq 1 5000`
94*4882a593Smuzhiyun	do
95*4882a593Smuzhiyun		reboot_cpu $1
96*4882a593Smuzhiyun	done &
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun	local freqs=$(cat $filepath/scaling_available_frequencies)
99*4882a593Smuzhiyun	local oldfreq=$(cat $filepath/scaling_min_freq)
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun	for j in `seq 1 5000`
102*4882a593Smuzhiyun	do
103*4882a593Smuzhiyun		# Set all frequencies one-by-one
104*4882a593Smuzhiyun		for freq in $freqs; do
105*4882a593Smuzhiyun			echo $freq > $filepath/scaling_min_freq
106*4882a593Smuzhiyun		done
107*4882a593Smuzhiyun	done
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun	# restore old freq
110*4882a593Smuzhiyun	echo $oldfreq > $filepath/scaling_min_freq
111*4882a593Smuzhiyun}
112*4882a593Smuzhiyun
113*4882a593Smuzhiyunhotplug_with_updates()
114*4882a593Smuzhiyun{
115*4882a593Smuzhiyun	for_each_non_boot_cpu hotplug_with_updates_cpu
116*4882a593Smuzhiyun}
117