Submit
Path:
~
/
/
lib
/
modules
/
5.15.0-153-generic
/
build
/
tools
/
testing
/
selftests
/
cpufreq
/
File Content:
cpufreq.sh
#!/bin/bash # SPDX-License-Identifier: GPL-2.0 # protect against multiple inclusion if [ $FILE_CPUFREQ ]; then return 0 else FILE_CPUFREQ=DONE fi source cpu.sh # $1: cpu cpu_should_have_cpufreq_directory() { if [ ! -d $CPUROOT/$1/cpufreq ]; then printf "Warning: No cpufreq directory present for $1\n" fi } cpu_should_not_have_cpufreq_directory() { if [ -d $CPUROOT/$1/cpufreq ]; then printf "Warning: cpufreq directory present for $1\n" fi } for_each_policy() { policies=$(ls $CPUFREQROOT| grep "policy[0-9].*") for policy in $policies; do $@ $policy done } for_each_policy_concurrent() { policies=$(ls $CPUFREQROOT| grep "policy[0-9].*") for policy in $policies; do $@ $policy & done } # $1: Path read_cpufreq_files_in_dir() { local files=`ls $1` printf "Printing directory: $1\n\n" for file in $files; do if [ -f $1/$file ]; then printf "$file:" cat $1/$file else printf "\n" read_cpufreq_files_in_dir "$1/$file" fi done printf "\n" } read_all_cpufreq_files() { printf "** Test: Running ${FUNCNAME[0]} **\n\n" read_cpufreq_files_in_dir $CPUFREQROOT printf "%s\n\n" "------------------------------------------------" } # UPDATE CPUFREQ FILES # $1: directory path update_cpufreq_files_in_dir() { local files=`ls $1` printf "Updating directory: $1\n\n" for file in $files; do if [ -f $1/$file ]; then # file is writable ? local wfile=$(ls -l $1/$file | awk '$1 ~ /^.*w.*/ { print $NF; }') if [ ! -z $wfile ]; then # scaling_setspeed is a special file and we # should skip updating it if [ $file != "scaling_setspeed" ]; then local val=$(cat $1/$file) printf "Writing $val to: $file\n" echo $val > $1/$file fi fi else printf "\n" update_cpufreq_files_in_dir "$1/$file" fi done printf "\n" } # Update all writable files with their existing values update_all_cpufreq_files() { printf "** Test: Running ${FUNCNAME[0]} **\n\n" update_cpufreq_files_in_dir $CPUFREQROOT printf "%s\n\n" "------------------------------------------------" } # CHANGE CPU FREQUENCIES # $1: policy find_current_freq() { cat $CPUFREQROOT/$1/scaling_cur_freq } # $1: policy # $2: frequency set_cpu_frequency() { printf "Change frequency for $1 to $2\n" echo $2 > $CPUFREQROOT/$1/scaling_setspeed } # $1: policy test_all_frequencies() { local filepath="$CPUFREQROOT/$1" backup_governor $1 local found=$(switch_governor $1 "userspace") if [ $found = 1 ]; then printf "${FUNCNAME[0]}: userspace governor not available for: $1\n" return; fi printf "Switched governor for $1 to userspace\n\n" local freqs=$(cat $filepath/scaling_available_frequencies) printf "Available frequencies for $1: $freqs\n\n" # Set all frequencies one-by-one for freq in $freqs; do set_cpu_frequency $1 $freq done printf "\n" restore_governor $1 } # $1: loop count shuffle_frequency_for_all_cpus() { printf "** Test: Running ${FUNCNAME[0]} for $1 loops **\n\n" for i in `seq 1 $1`; do for_each_policy test_all_frequencies done printf "\n%s\n\n" "------------------------------------------------" } # Basic cpufreq tests cpufreq_basic_tests() { printf "*** RUNNING CPUFREQ SANITY TESTS ***\n" printf "====================================\n\n" count=$(count_cpufreq_managed_cpus) if [ $count = 0 ]; then printf "No cpu is managed by cpufreq core, exiting\n" exit; else printf "CPUFreq manages: $count CPUs\n\n" fi # Detect & print which CPUs are not managed by cpufreq print_unmanaged_cpus # read/update all cpufreq files read_all_cpufreq_files update_all_cpufreq_files # hotplug cpus reboot_cpus 5 # Test all frequencies shuffle_frequency_for_all_cpus 2 # Test all governors shuffle_governors_for_all_cpus 1 } # Suspend/resume # $1: "suspend" or "hibernate", $2: loop count do_suspend() { printf "** Test: Running ${FUNCNAME[0]}: Trying $1 for $2 loops **\n\n" # Is the directory available if [ ! -d $SYSFS/power/ -o ! -f $SYSFS/power/state ]; then printf "$SYSFS/power/state not available\n" return 1 fi if [ $1 = "suspend" ]; then filename="mem" elif [ $1 = "hibernate" ]; then filename="disk" else printf "$1 is not a valid option\n" return 1 fi if [ -n $filename ]; then present=$(cat $SYSFS/power/state | grep $filename) if [ -z "$present" ]; then printf "Tried to $1 but $filename isn't present in $SYSFS/power/state\n" return 1; fi for i in `seq 1 $2`; do printf "Starting $1\n" echo $filename > $SYSFS/power/state printf "Came out of $1\n" printf "Do basic tests after finishing $1 to verify cpufreq state\n\n" cpufreq_basic_tests done fi }
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
Makefile
161 bytes
0644
cpu.sh
1290 bytes
0755
cpufreq.sh
4654 bytes
0755
governor.sh
2784 bytes
0755
main.sh
3578 bytes
0755
module.sh
4938 bytes
0755
special-tests.sh
1997 bytes
0755
N4ST4R_ID | Naxtarrr