diff mbox series

selftests/intel_pstate: Add validity check for cpu min/max frequency

Message ID 20240417072805.1168550-1-yujie.liu@intel.com
State New
Headers show
Series selftests/intel_pstate: Add validity check for cpu min/max frequency | expand

Commit Message

Yujie Liu April 17, 2024, 7:28 a.m. UTC
If libcpupower is not properly installed somehow, the cpupower tool
cannot work, and cpu min_freq and max_freq are not correctly assigned,
but the code can still keep going and gives an "ok" result at last,
which seems not to be the expected behavior of this test.

    tools/testing/selftests/intel_pstate# make run_tests
    TAP version 13
    1..1
    # selftests: intel_pstate: run.sh
    # cpupower: error while loading shared libraries: libcpupower.so.1: cannot open shared object file: No such file or directory
    # ./run.sh: line 90: / 1000: syntax error: operand expected (error token is "/ 1000")
    # cpupower: error while loading shared libraries: libcpupower.so.1: cannot open shared object file: No such file or directory
    # ./run.sh: line 92: / 1000: syntax error: operand expected (error token is "/ 1000")
    # ========================================================================
    # The marketing frequency of the cpu is 3400 MHz
    # The maximum frequency of the cpu is  MHz
    # The minimum frequency of the cpu is  MHz
    # Target	      Actual	    Difference	  MSR(0x199)	max_perf_pct
    ok 1 selftests: intel_pstate: run.sh

Fix this by adding null checks as well as [ $var -eq $var ] checks to
confirm that both min_freq and max_freq are valid integers. The fixed
result will have a "# SKIP" suffix and looks like:

    tools/testing/selftests/intel_pstate# make run_tests
    TAP version 13
    1..1
    # selftests: intel_pstate: run.sh
    # cpupower: error while loading shared libraries: libcpupower.so.1: cannot open shared object file: No such file or directory
    # ./run.sh: line 90: / 1000: syntax error: operand expected (error token is "/ 1000")
    # cpupower: error while loading shared libraries: libcpupower.so.1: cannot open shared object file: No such file or directory
    # ./run.sh: line 92: / 1000: syntax error: operand expected (error token is "/ 1000")
    # Cannot get cpu frequency info
    ok 1 selftests: intel_pstate: run.sh # SKIP

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Yujie Liu <yujie.liu@intel.com>
---
 tools/testing/selftests/intel_pstate/run.sh | 5 +++++
 1 file changed, 5 insertions(+)
diff mbox series

Patch

diff --git a/tools/testing/selftests/intel_pstate/run.sh b/tools/testing/selftests/intel_pstate/run.sh
index e7008f614ad7..e81758cd1fb5 100755
--- a/tools/testing/selftests/intel_pstate/run.sh
+++ b/tools/testing/selftests/intel_pstate/run.sh
@@ -91,6 +91,11 @@  min_freq=$(($_min_freq / 1000))
 _max_freq=$(cpupower frequency-info -l | tail -1 | awk ' { print $2 } ')
 max_freq=$(($_max_freq / 1000))
 
+{ [ $min_freq ] && [ $min_freq -eq $min_freq ] &&
+  [ $max_freq ] && [ $max_freq -eq $max_freq ]; } || {
+        echo "Cannot get cpu frequency info"
+        exit $ksft_skip
+}
 
 [ $EVALUATE_ONLY -eq 0 ] && for freq in `seq $max_freq -100 $min_freq`
 do