11e4c2830SViresh Kumar#!/bin/bash
2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
31e4c2830SViresh Kumar#
41e4c2830SViresh Kumar# Special test cases reported by people
51e4c2830SViresh Kumar
61e4c2830SViresh Kumar# Testcase 1: Reported here: http://marc.info/?l=linux-pm&m=140618592709858&w=2
71e4c2830SViresh Kumar
81e4c2830SViresh Kumar# protect against multiple inclusion
91e4c2830SViresh Kumarif [ $FILE_SPECIAL ]; then
101e4c2830SViresh Kumar	return 0
111e4c2830SViresh Kumarelse
121e4c2830SViresh Kumar	FILE_SPECIAL=DONE
131e4c2830SViresh Kumarfi
141e4c2830SViresh Kumar
151e4c2830SViresh Kumarsource cpu.sh
161e4c2830SViresh Kumarsource cpufreq.sh
171e4c2830SViresh Kumarsource governor.sh
181e4c2830SViresh Kumar
191e4c2830SViresh Kumar# Test 1
201e4c2830SViresh Kumar# $1: policy
211e4c2830SViresh Kumar__simple_lockdep()
221e4c2830SViresh Kumar{
231e4c2830SViresh Kumar	# switch to ondemand
241e4c2830SViresh Kumar	__switch_governor $1 "ondemand"
251e4c2830SViresh Kumar
261e4c2830SViresh Kumar	# cat ondemand files
271e4c2830SViresh Kumar	local ondir=$(find_gov_directory $1 "ondemand")
281e4c2830SViresh Kumar	if [ -z $ondir ]; then
291e4c2830SViresh Kumar		printf "${FUNCNAME[0]}Ondemand directory not created, quit"
301e4c2830SViresh Kumar		return
311e4c2830SViresh Kumar	fi
321e4c2830SViresh Kumar
331e4c2830SViresh Kumar	cat $ondir/*
341e4c2830SViresh Kumar
351e4c2830SViresh Kumar	# switch to conservative
361e4c2830SViresh Kumar	__switch_governor $1 "conservative"
371e4c2830SViresh Kumar}
381e4c2830SViresh Kumar
391e4c2830SViresh Kumarsimple_lockdep()
401e4c2830SViresh Kumar{
411e4c2830SViresh Kumar	printf "** Test: Running ${FUNCNAME[0]} **\n"
421e4c2830SViresh Kumar
431e4c2830SViresh Kumar	for_each_policy __simple_lockdep
441e4c2830SViresh Kumar}
451e4c2830SViresh Kumar
461e4c2830SViresh Kumar# Test 2
471e4c2830SViresh Kumar# $1: policy
481e4c2830SViresh Kumar__concurrent_lockdep()
491e4c2830SViresh Kumar{
501e4c2830SViresh Kumar	for i in `seq 0 100`; do
511e4c2830SViresh Kumar		__simple_lockdep $1
521e4c2830SViresh Kumar	done
531e4c2830SViresh Kumar}
541e4c2830SViresh Kumar
551e4c2830SViresh Kumarconcurrent_lockdep()
561e4c2830SViresh Kumar{
571e4c2830SViresh Kumar	printf "** Test: Running ${FUNCNAME[0]} **\n"
581e4c2830SViresh Kumar
591e4c2830SViresh Kumar	for_each_policy_concurrent __concurrent_lockdep
601e4c2830SViresh Kumar}
611e4c2830SViresh Kumar
621e4c2830SViresh Kumar# Test 3
631e4c2830SViresh Kumarquick_shuffle()
641e4c2830SViresh Kumar{
651e4c2830SViresh Kumar	# this is called concurrently from governor_race
661e4c2830SViresh Kumar	for I in `seq 1000`
671e4c2830SViresh Kumar	do
681e4c2830SViresh Kumar		echo ondemand | sudo tee $CPUFREQROOT/policy*/scaling_governor &
691e4c2830SViresh Kumar		echo userspace | sudo tee $CPUFREQROOT/policy*/scaling_governor &
701e4c2830SViresh Kumar	done
711e4c2830SViresh Kumar}
721e4c2830SViresh Kumar
731e4c2830SViresh Kumargovernor_race()
741e4c2830SViresh Kumar{
751e4c2830SViresh Kumar	printf "** Test: Running ${FUNCNAME[0]} **\n"
761e4c2830SViresh Kumar
771e4c2830SViresh Kumar	# run 8 concurrent instances
781e4c2830SViresh Kumar	for I in `seq 8`
791e4c2830SViresh Kumar	do
801e4c2830SViresh Kumar		quick_shuffle &
811e4c2830SViresh Kumar	done
821e4c2830SViresh Kumar}
831e4c2830SViresh Kumar
841e4c2830SViresh Kumar# Test 4
851e4c2830SViresh Kumar# $1: cpu
861e4c2830SViresh Kumarhotplug_with_updates_cpu()
871e4c2830SViresh Kumar{
881e4c2830SViresh Kumar	local filepath="$CPUROOT/$1/cpufreq"
891e4c2830SViresh Kumar
901e4c2830SViresh Kumar	# switch to ondemand
911e4c2830SViresh Kumar	__switch_governor_for_cpu $1 "ondemand"
921e4c2830SViresh Kumar
931e4c2830SViresh Kumar	for i in `seq 1 5000`
941e4c2830SViresh Kumar	do
951e4c2830SViresh Kumar		reboot_cpu $1
961e4c2830SViresh Kumar	done &
971e4c2830SViresh Kumar
981e4c2830SViresh Kumar	local freqs=$(cat $filepath/scaling_available_frequencies)
991e4c2830SViresh Kumar	local oldfreq=$(cat $filepath/scaling_min_freq)
1001e4c2830SViresh Kumar
1011e4c2830SViresh Kumar	for j in `seq 1 5000`
1021e4c2830SViresh Kumar	do
1031e4c2830SViresh Kumar		# Set all frequencies one-by-one
1041e4c2830SViresh Kumar		for freq in $freqs; do
1051e4c2830SViresh Kumar			echo $freq > $filepath/scaling_min_freq
1061e4c2830SViresh Kumar		done
1071e4c2830SViresh Kumar	done
1081e4c2830SViresh Kumar
1091e4c2830SViresh Kumar	# restore old freq
1101e4c2830SViresh Kumar	echo $oldfreq > $filepath/scaling_min_freq
1111e4c2830SViresh Kumar}
1121e4c2830SViresh Kumar
1131e4c2830SViresh Kumarhotplug_with_updates()
1141e4c2830SViresh Kumar{
1151e4c2830SViresh Kumar	for_each_non_boot_cpu hotplug_with_updates_cpu
1161e4c2830SViresh Kumar}
117