cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

special-tests.sh (1997B)


      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}