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