On 07-07-26, 00:14, Yiwei Lin wrote:
> After executing cpufreq sptest, the system governor
> will be overwritten with the governor switched
> during the test. Restore this setting to maintain
> consistency before and after the test.
> 
> Signed-off-by: Yiwei Lin <[email protected]>
> ---
>  tools/testing/selftests/cpufreq/governor.sh   | 21 +++++++++++++++++++
>  .../selftests/cpufreq/special-tests.sh        | 13 ++++++++++++
>  2 files changed, 34 insertions(+)
> 
> diff --git a/tools/testing/selftests/cpufreq/governor.sh 
> b/tools/testing/selftests/cpufreq/governor.sh
> index fe37df79c0871..5d105ab9c9222 100755
> --- a/tools/testing/selftests/cpufreq/governor.sh
> +++ b/tools/testing/selftests/cpufreq/governor.sh
> @@ -16,6 +16,12 @@ source cpufreq.sh
>  CUR_GOV=
>  CUR_FREQ=
>  
> +# Per-policy backup, keyed by policy so multiple policies can be saved at 
> once
> +# (backup_governor/restore_governor also keep CUR_GOV/CUR_FREQ for callers 
> that
> +# read them directly).
> +declare -A SAVED_GOVERNORS
> +declare -A SAVED_FREQS
> +
>  # Find governor's directory path
>  # $1: policy, $2: governor
>  find_gov_directory()
> @@ -39,11 +45,13 @@ find_current_governor()
>  backup_governor()
>  {
>       CUR_GOV=$(find_current_governor $1)
> +     SAVED_GOVERNORS[$1]=$CUR_GOV
>  
>       printf "Governor backup done for $1: $CUR_GOV\n"
>  
>       if [ $CUR_GOV == "userspace" ]; then
>               CUR_FREQ=$(find_current_freq $1)
> +             SAVED_FREQS[$1]=$CUR_FREQ
>               printf "Governor frequency backup done for $1: $CUR_FREQ\n"
>       fi
>  
> @@ -53,11 +61,13 @@ backup_governor()
>  # $1: policy
>  restore_governor()
>  {
> +     CUR_GOV=${SAVED_GOVERNORS[$1]}
>       __switch_governor $1 $CUR_GOV
>  
>       printf "Governor restored for $1 to $CUR_GOV\n"
>  
>       if [ $CUR_GOV == "userspace" ]; then
> +             CUR_FREQ=${SAVED_FREQS[$1]}
>               set_cpu_frequency $1 $CUR_FREQ
>               printf "Governor frequency restored for $1: $CUR_FREQ\n"
>       fi
> @@ -65,6 +75,17 @@ restore_governor()
>       printf "\n"
>  }
>  
> +# Save/restore governors for every policy at once
> +save_all_governors()
> +{
> +     for_each_policy backup_governor
> +}
> +
> +restore_all_governors()
> +{
> +     for_each_policy restore_governor
> +}
> +
>  # param:
>  # $1: policy, $2: governor
>  __switch_governor()
> diff --git a/tools/testing/selftests/cpufreq/special-tests.sh 
> b/tools/testing/selftests/cpufreq/special-tests.sh
> index 8d40505dc4682..c7eddadd047d1 100755
> --- a/tools/testing/selftests/cpufreq/special-tests.sh
> +++ b/tools/testing/selftests/cpufreq/special-tests.sh
> @@ -40,7 +40,9 @@ simple_lockdep()
>  {
>       printf "** Test: Running ${FUNCNAME[0]} **\n"
>  
> +     save_all_governors
>       for_each_policy __simple_lockdep
> +     restore_all_governors
>  }
>  
>  # Test 2
> @@ -56,7 +58,10 @@ concurrent_lockdep()
>  {
>       printf "** Test: Running ${FUNCNAME[0]} **\n"
>  
> +     save_all_governors
>       for_each_policy_concurrent __concurrent_lockdep
> +     wait
> +     restore_all_governors
>  }
>  
>  # Test 3
> @@ -68,17 +73,23 @@ quick_shuffle()
>               echo ondemand | sudo tee $CPUFREQROOT/policy*/scaling_governor &
>               echo userspace | sudo tee $CPUFREQROOT/policy*/scaling_governor 
> &
>       done
> +     wait
>  }
>  
>  governor_race()
>  {
>       printf "** Test: Running ${FUNCNAME[0]} **\n"
>  
> +     save_all_governors
> +
>       # run 8 concurrent instances
>       for I in `seq 8`
>       do
>               quick_shuffle &
>       done
> +     wait
> +
> +     restore_all_governors
>  }
>  
>  # Test 4
> @@ -112,5 +123,7 @@ hotplug_with_updates_cpu()
>  
>  hotplug_with_updates()
>  {
> +     save_all_governors
>       for_each_non_boot_cpu hotplug_with_updates_cpu

Don't you need wait here too ?

> +     restore_all_governors
>  }


Acked-by: Viresh Kumar <[email protected]>

-- 
viresh

Reply via email to