mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 22:52:19 +02:00
The hotplug testing only tries reading a trace remote buffer, loaded before a CPU is offline. Extend this testing to cover: * A trace remote buffer loaded after a CPU is offline. * A trace remote buffer loaded before a CPU is online. Because of these added test cases, move the hotplug testing into a separate hotplug.tc file. Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org> Signed-off-by: Vincent Donnefort <vdonnefort@google.com> Link: https://patch.msgid.link/20260401045100.3394299-3-vdonnefort@google.com Signed-off-by: Marc Zyngier <maz@kernel.org>
100 lines
1.7 KiB
Plaintext
100 lines
1.7 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
setup_remote()
|
|
{
|
|
local name=$1
|
|
|
|
[ -e $TRACING_DIR/remotes/$name/write_event ] || exit_unresolved
|
|
|
|
cd remotes/$name/
|
|
echo 0 > tracing_on
|
|
clear_trace
|
|
echo 7 > buffer_size_kb
|
|
echo 0 > events/enable
|
|
echo 1 > events/$name/selftest/enable
|
|
echo 1 > tracing_on
|
|
}
|
|
|
|
setup_remote_test()
|
|
{
|
|
[ -d $TRACING_DIR/remotes/test/ ] || modprobe remote_test || exit_unresolved
|
|
|
|
setup_remote "test"
|
|
}
|
|
|
|
assert_loaded()
|
|
{
|
|
grep -q "(loaded)" buffer_size_kb || return 1
|
|
}
|
|
|
|
assert_unloaded()
|
|
{
|
|
grep -q "(unloaded)" buffer_size_kb || return 1
|
|
}
|
|
|
|
reload_remote()
|
|
{
|
|
echo 0 > tracing_on
|
|
clear_trace
|
|
assert_unloaded
|
|
echo 1 > tracing_on
|
|
assert_loaded
|
|
}
|
|
|
|
dump_trace_pipe()
|
|
{
|
|
output=$(mktemp $TMPDIR/remote_test.XXXXXX)
|
|
cat trace_pipe > $output &
|
|
pid=$!
|
|
sleep 1
|
|
kill -1 $pid
|
|
|
|
echo $output
|
|
}
|
|
|
|
check_trace()
|
|
{
|
|
start_id="$1"
|
|
end_id="$2"
|
|
file="$3"
|
|
|
|
# Ensure the file is not empty
|
|
test -n "$(head $file)"
|
|
|
|
prev_ts=0
|
|
id=0
|
|
|
|
# Only keep <timestamp> <id>
|
|
tmp=$(mktemp $TMPDIR/remote_test.XXXXXX)
|
|
sed -e 's/\[[0-9]*\]\s*\([0-9]*.[0-9]*\): [a-z]* id=\([0-9]*\)/\1 \2/' $file > $tmp
|
|
|
|
while IFS= read -r line; do
|
|
ts=$(echo $line | cut -d ' ' -f 1)
|
|
id=$(echo $line | cut -d ' ' -f 2)
|
|
|
|
test $(echo "$ts>$prev_ts" | bc) -eq 1
|
|
test $id -eq $start_id
|
|
|
|
prev_ts=$ts
|
|
start_id=$((start_id + 1))
|
|
done < $tmp
|
|
|
|
test $id -eq $end_id
|
|
rm $tmp
|
|
}
|
|
|
|
get_cpu_ids()
|
|
{
|
|
sed -n 's/^processor\s*:\s*\([0-9]\+\).*/\1/p' /proc/cpuinfo
|
|
}
|
|
|
|
get_page_size()
|
|
{
|
|
sed -ne 's/^.*data.*size:\([0-9][0-9]*\).*/\1/p' events/header_page
|
|
}
|
|
|
|
get_selftest_event_size()
|
|
{
|
|
sed -ne 's/^.*field:.*;.*size:\([0-9][0-9]*\);.*/\1/p' events/*/selftest/format | awk '{s+=$1} END {print s}'
|
|
}
|