From: Petr Vorel <pvorel@suse.cz>
To: Piotr Kubaj <piotr.kubaj@intel.com>
Cc: daniel.niestepski@intel.com, tomasz.ossowski@intel.com,
helena.anna.dubel@intel.com, rafael.j.wysocki@intel.com,
ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v4] thermal: add new test group
Date: Fri, 28 Nov 2025 12:02:12 +0100 [thread overview]
Message-ID: <20251128110212.GA261918@pevik> (raw)
In-Reply-To: <20251124105123.151772-1-piotr.kubaj@intel.com>
Hi Piotr,
> This is a new test for checking thermal interrupt events.
> stress-ng is used because genload doesn't seem to generate enough load.
> In particular, this version replaces use of tr and cut where awk is
> already used.
> --- /dev/null
> +++ b/runtest/thermal
> @@ -0,0 +1,3 @@
> +# Thermal driver API
> +# https://docs.kernel.org/driver-api/thermal/
> +thermal_interrupt_events thermal01.sh
I would not mind if the test itself was named thermal_interrupt_events.sh (more
descriptive), but that's a minor detail (which can be ignored or changed before
merge).
...
> +include $(top_srcdir)/include/mk/generic_leaf_target.mk
> diff --git a/testcases/kernel/thermal/thermal01.sh b/testcases/kernel/thermal/thermal01.sh
> new file mode 100755
> index 000000000..95adaf04b
> --- /dev/null
> +++ b/testcases/kernel/thermal/thermal01.sh
> @@ -0,0 +1,100 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# Copyright (C) 2025 Intel - http://www.intel.com/
> +#
> +# ---
> +# doc
> +# Tests the CPU package thermal sensor interface for Intel platforms.
> +#
> +# It works by checking the initial count of thermal interrupts. Then it
> +# decreases the threshold for sending a thermal interrupt to just above
> +# the current temperature and runs a workload on the CPU. Finally, it restores
> +# the original thermal threshold and checks whether the number of thermal
> +# interrupts increased.
> +# ---
> +#
> +# ---
> +# env
> +# {
> +# "needs_root": true,
> +# "supported_archs": ["x86", "x86_64"],
> +# "needs_cmds": ["stress-ng"],
> +# "min_runtime": 180
> +# }
> +# ---
> +
> +. tst_loader.sh
> +
> +tst_test()
> +{
> + local thermal_zone_numbers=""
> + local temp
> + local temp_high=""
This could be just:
local thermal_zone_numbers temp temp_high
(empty shell variable is the same as ="").
> + local status=0
> +
> + local interrupt_array_init=$(awk -F'[^0-9]*' '/Thermal event interrupts/ {$1=$1;print}' /proc/interrupts)
> + if [ $? -eq 0 ]; then
> + tst_res TDEBUG "Initial values of thermal interrupt counters: $interrupt_array_init"
> + local num=$(tst_getconf _NPROCESSORS_ONLN)
> + tst_res TDEBUG "Number of logical cores: $num"
> + else
> + tst_brk TCONF "Thermal event interrupts is not found"
> + fi
> +
> + # Below we check for the thermal_zone which uses x86_pkg_temp driver
> + local thermal_zone_numbers=$(grep -l x86_pkg_temp /sys/class/thermal/thermal_zone*/type | xargs dirname)
> + tst_res TINFO "x86_pkg_temp thermal zones: $thermal_zone_numbers"
> +
> + if [ -z $thermal_zone_numbers ]; then
> + tst_brk TCONF "No x86_pkg_temp thermal zones found"
> + fi
> + for i in $thermal_zone_numbers; do
> + tst_res TINFO "Currently testing x86_pkg_temp $i"
> + local TEMP="$i/temp"
> + local temp=$(cat "$TEMP")
> + tst_res TDEBUG "$i's current temperature is $temp"
> + case $temp in
> + [0-9]*) ;;
> + *)
> + tst_brk TBROK "Unexpected zone temperature value $temp";;
> + esac
> + local trip=$(cat $i/trip_point_1_temp)
> + # Setting trip_point_1_temp for $i to $temp + 10 (0.001°C)
> + local temp_high=$(( temp + 10 ))
> + echo "$temp_high" > $i/trip_point_1_temp
> + local run_time=30
> + local sleep_time=10
> + while [ $sleep_time -gt 0 ]; do
> + ROD stress-ng --matrix 0 --timeout $run_time --quiet
> + local temp_cur=$(cat "$TEMP")
> + tst_res TDEBUG "temp_cur: $temp_cur"
> + [ $temp_cur -gt $temp_high ] && break
> + tst_sleep $sleep_time
> + run_time=$(( run_time - 3 ))
> + sleep_time=$(( sleep_time - 1 ))
> + done
> + [ $temp_cur -gt $temp_high ] || tst_res TFAIL "Zone temperature is not rising as expected"
> +
> + # Restore the original trip_point_1_temp value
> + echo "$trip" > $i/trip_point_1_temp
FYI this is in /sys, otherwise for creating temporary file we would need in the
env.
# "needs_tmpdir": true,
Thanks for your patch. I'm still not happy we introduce shell tests (sooner or
later somebody will invest his or his company time to rewrite that into C), but
I don't want to block this.
Reviewed-by: Petr Vorel <pvorel@suse.cz>
NOTE: this needs to wait till my patch which adds ROD() is merged.
https://lore.kernel.org/ltp/20251120161957.331580-1-pvorel@suse.cz/
Kind regards,
Petr
> +
> + # Check whether thermal interrupts count actually increased
> + local interrupt_array_later=$(awk -F'[^0-9]*' '/Thermal event interrupts/ {$1=$1;print}' /proc/interrupts)
> + tst_res TDEBUG "Current values of thermal interrupt counters: $interrupt_array_later"
> + for j in $(seq 1 "$num"); do
> + local interrupt_later=$(echo "$interrupt_array_later" | awk -v j=$j '{print $j}')
> + local interrupt_init=$(echo "$interrupt_array_init" | awk -v j=$j '{print $j}')
> + if [ $interrupt_later -le $interrupt_init ]; then
> + status=1
> + fi
> + done
> + done
> +
> + if [ $status -eq 0 ]; then
> + tst_res TPASS "x86 package thermal interrupt triggered"
> + else
> + tst_res TFAIL "x86 package thermal interrupt did not trigger"
> + fi
> +}
> +
> +. tst_run.sh
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2025-11-28 11:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-24 10:51 [LTP] [PATCH v4] thermal: add new test group Piotr Kubaj
2025-11-28 11:02 ` Petr Vorel [this message]
-- strict thread matches above, loose matches on Subject: below --
2026-01-23 12:49 Piotr Kubaj
2026-01-23 20:25 ` Petr Vorel
2026-01-29 11:15 ` Kubaj, Piotr
2026-01-29 12:58 ` Petr Vorel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251128110212.GA261918@pevik \
--to=pvorel@suse.cz \
--cc=daniel.niestepski@intel.com \
--cc=helena.anna.dubel@intel.com \
--cc=ltp@lists.linux.it \
--cc=piotr.kubaj@intel.com \
--cc=rafael.j.wysocki@intel.com \
--cc=tomasz.ossowski@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.