162306a36Sopenharmony_ci#!/bin/bash 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 362306a36Sopenharmony_ci# 462306a36Sopenharmony_ci# Special test cases reported by people 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci# Testcase 1: Reported here: http://marc.info/?l=linux-pm&m=140618592709858&w=2 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci# protect against multiple inclusion 962306a36Sopenharmony_ciif [ $FILE_SPECIAL ]; then 1062306a36Sopenharmony_ci return 0 1162306a36Sopenharmony_cielse 1262306a36Sopenharmony_ci FILE_SPECIAL=DONE 1362306a36Sopenharmony_cifi 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_cisource cpu.sh 1662306a36Sopenharmony_cisource cpufreq.sh 1762306a36Sopenharmony_cisource governor.sh 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci# Test 1 2062306a36Sopenharmony_ci# $1: policy 2162306a36Sopenharmony_ci__simple_lockdep() 2262306a36Sopenharmony_ci{ 2362306a36Sopenharmony_ci # switch to ondemand 2462306a36Sopenharmony_ci __switch_governor $1 "ondemand" 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci # cat ondemand files 2762306a36Sopenharmony_ci local ondir=$(find_gov_directory $1 "ondemand") 2862306a36Sopenharmony_ci if [ -z $ondir ]; then 2962306a36Sopenharmony_ci printf "${FUNCNAME[0]}Ondemand directory not created, quit" 3062306a36Sopenharmony_ci return 3162306a36Sopenharmony_ci fi 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci cat $ondir/* 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci # switch to conservative 3662306a36Sopenharmony_ci __switch_governor $1 "conservative" 3762306a36Sopenharmony_ci} 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_cisimple_lockdep() 4062306a36Sopenharmony_ci{ 4162306a36Sopenharmony_ci printf "** Test: Running ${FUNCNAME[0]} **\n" 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci for_each_policy __simple_lockdep 4462306a36Sopenharmony_ci} 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci# Test 2 4762306a36Sopenharmony_ci# $1: policy 4862306a36Sopenharmony_ci__concurrent_lockdep() 4962306a36Sopenharmony_ci{ 5062306a36Sopenharmony_ci for i in `seq 0 100`; do 5162306a36Sopenharmony_ci __simple_lockdep $1 5262306a36Sopenharmony_ci done 5362306a36Sopenharmony_ci} 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciconcurrent_lockdep() 5662306a36Sopenharmony_ci{ 5762306a36Sopenharmony_ci printf "** Test: Running ${FUNCNAME[0]} **\n" 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci for_each_policy_concurrent __concurrent_lockdep 6062306a36Sopenharmony_ci} 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci# Test 3 6362306a36Sopenharmony_ciquick_shuffle() 6462306a36Sopenharmony_ci{ 6562306a36Sopenharmony_ci # this is called concurrently from governor_race 6662306a36Sopenharmony_ci for I in `seq 1000` 6762306a36Sopenharmony_ci do 6862306a36Sopenharmony_ci echo ondemand | sudo tee $CPUFREQROOT/policy*/scaling_governor & 6962306a36Sopenharmony_ci echo userspace | sudo tee $CPUFREQROOT/policy*/scaling_governor & 7062306a36Sopenharmony_ci done 7162306a36Sopenharmony_ci} 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_cigovernor_race() 7462306a36Sopenharmony_ci{ 7562306a36Sopenharmony_ci printf "** Test: Running ${FUNCNAME[0]} **\n" 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci # run 8 concurrent instances 7862306a36Sopenharmony_ci for I in `seq 8` 7962306a36Sopenharmony_ci do 8062306a36Sopenharmony_ci quick_shuffle & 8162306a36Sopenharmony_ci done 8262306a36Sopenharmony_ci} 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci# Test 4 8562306a36Sopenharmony_ci# $1: cpu 8662306a36Sopenharmony_cihotplug_with_updates_cpu() 8762306a36Sopenharmony_ci{ 8862306a36Sopenharmony_ci local filepath="$CPUROOT/$1/cpufreq" 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ci # switch to ondemand 9162306a36Sopenharmony_ci __switch_governor_for_cpu $1 "ondemand" 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci for i in `seq 1 5000` 9462306a36Sopenharmony_ci do 9562306a36Sopenharmony_ci reboot_cpu $1 9662306a36Sopenharmony_ci done & 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci local freqs=$(cat $filepath/scaling_available_frequencies) 9962306a36Sopenharmony_ci local oldfreq=$(cat $filepath/scaling_min_freq) 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci for j in `seq 1 5000` 10262306a36Sopenharmony_ci do 10362306a36Sopenharmony_ci # Set all frequencies one-by-one 10462306a36Sopenharmony_ci for freq in $freqs; do 10562306a36Sopenharmony_ci echo $freq > $filepath/scaling_min_freq 10662306a36Sopenharmony_ci done 10762306a36Sopenharmony_ci done 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci # restore old freq 11062306a36Sopenharmony_ci echo $oldfreq > $filepath/scaling_min_freq 11162306a36Sopenharmony_ci} 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_cihotplug_with_updates() 11462306a36Sopenharmony_ci{ 11562306a36Sopenharmony_ci for_each_non_boot_cpu hotplug_with_updates_cpu 11662306a36Sopenharmony_ci} 117