linux/tools/testing/selftests/pcie_bwctrl/set_pcie_speed.sh
Ilpo Järvinen 838f12c3d5 selftests/pcie_bwctrl: Create selftests
Create selftests for PCIe BW control through the PCIe cooling device sysfs
interface.

First, the BW control selftest finds the PCIe Port to test with. By
default, the PCIe Port with the highest Link Speed is selected but
another PCIe Port can be provided with -d parameter.

The actual test steps the cur_state of the cooling device one-by-one
from max_state to what the cur_state was initially. The speed change
is confirmed by observing the current_link_speed for the corresponding
PCIe Port.

Link: https://lore.kernel.org/r/20241018144755.7875-10-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2024-11-16 10:09:30 -06:00

67 lines
1.1 KiB
Bash
Executable file

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
set -e
TESTNAME=set_pcie_speed
declare -a PCIELINKSPEED=(
"2.5 GT/s PCIe"
"5.0 GT/s PCIe"
"8.0 GT/s PCIe"
"16.0 GT/s PCIe"
"32.0 GT/s PCIe"
"64.0 GT/s PCIe"
)
# Kselftest framework requirement - SKIP code is 4.
ksft_skip=4
retval=0
coolingdev="$1"
statefile="$coolingdev/cur_state"
maxfile="$coolingdev/max_state"
linkspeedfile="$2"
oldstate=`cat $statefile`
maxstate=`cat $maxfile`
set_state()
{
local state=$1
local linkspeed
local expected_linkspeed
echo $state > $statefile
sleep 1
linkspeed="`cat $linkspeedfile`"
expected_linkspeed=$((maxstate-state))
expected_str="${PCIELINKSPEED[$expected_linkspeed]}"
if [ ! "${expected_str}" = "${linkspeed}" ]; then
echo "$TESTNAME failed: expected: ${expected_str}; got ${linkspeed}"
retval=1
fi
}
cleanup_skip ()
{
set_state $oldstate
exit $ksft_skip
}
trap cleanup_skip EXIT
echo "$TESTNAME: testing states $maxstate .. $oldstate with $coolingdev"
for i in $(seq $maxstate -1 $oldstate); do
set_state "$i"
done
trap EXIT
if [ $retval -eq 0 ]; then
echo "$TESTNAME [PASS]"
else
echo "$TESTNAME [FAIL]"
fi
exit $retval