aboutsummaryrefslogtreecommitdiff
path: root/special-tests.sh
blob: 69165cd82fd7464b10b301b85eb058e7c6d97a8c (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
#!/bin/bash
#
# Special test cases reported by people

# Testcase 1: Reported here: http://marc.info/?l=linux-pm&m=140618592709858&w=2

# protect against multiple inclusion
if [ $FILE_SPECIAL ]; then
	return 0
else
	FILE_SPECIAL=DONE
fi

source cpu.sh
source cpufreq.sh
source governor.sh

quick_shuffle()
{
	# this is called concurrently from governor_race
	for I in `seq 1000`
	do
		echo ondemand | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor &
		echo userspace | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor &
	done
}

governor_race()
{
	echo "** Test: Running ${FUNCNAME[0]} **"
	echo ""

	# run 8 concurrent instances
	for I in `seq 8`
	do
		quick_shuffle &
	done
}

# $1: cpu
__simple_lockdep()
{
	# switch to ondemand
	__switch_governor $1 "ondemand"

	# cat ondemand files
	local ondir=$(find_gov_directory $1 "ondemand")
	if [ -z $ondir ]; then
		echo "${FUNCNAME[0]}Ondemand directory not created, quit"
		return
	fi

	cat $ondir/*

	# switch to conservative
	__switch_governor $1 "conservative"
}

simple_lockdep()
{
	echo "** Test: Running ${FUNCNAME[0]} **"
	echo ""

	for_each_cpu __simple_lockdep
}

# $1: cpu
hotplug_with_updates_cpu()
{
	local filepath="$CPU_PATH/$1/cpufreq"

	# switch to ondemand
	__switch_governor $1 "ondemand"

	for i in `seq 1 5000`
	do
		offline_online_cpu $1
	done &

	local freqs=$(cat $filepath/scaling_available_frequencies)
	local oldfreq=$(cat $filepath/scaling_min_freq)

	for j in `seq 1 5000`
	do
		# Set all frequencies one-by-one
		for freq in $freqs; do
			echo $freq > $filepath/scaling_min_freq
		done
	done

	# restore old freq
	echo $oldfreq > $filepath/scaling_min_freq
}

hotplug_with_updates()
{
	for_each_non_boot_cpu hotplug_with_updates_cpu
}