mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +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>
103 lines
1.9 KiB
Bash
103 lines
1.9 KiB
Bash
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# description: Test trace remote non-consuming read
|
|
# requires: remotes/test
|
|
|
|
. $TEST_DIR/remotes/functions
|
|
|
|
test_trace()
|
|
{
|
|
echo 0 > tracing_on
|
|
assert_unloaded
|
|
|
|
echo 7 > buffer_size_kb
|
|
echo 1 > tracing_on
|
|
assert_loaded
|
|
|
|
# Simple test: Emit few events and try to read them
|
|
for i in $(seq 1 8); do
|
|
echo $i > write_event
|
|
done
|
|
|
|
check_trace 1 8 trace
|
|
|
|
#
|
|
# Test interaction with consuming read
|
|
#
|
|
|
|
cat trace_pipe > /dev/null &
|
|
pid=$!
|
|
|
|
sleep 1
|
|
kill $pid
|
|
|
|
test $(wc -l < trace) -eq 0
|
|
|
|
for i in $(seq 16 32); do
|
|
echo $i > write_event
|
|
done
|
|
|
|
check_trace 16 32 trace
|
|
|
|
#
|
|
# Test interaction with reset
|
|
#
|
|
|
|
echo 0 > trace
|
|
|
|
test $(wc -l < trace) -eq 0
|
|
|
|
for i in $(seq 1 8); do
|
|
echo $i > write_event
|
|
done
|
|
|
|
check_trace 1 8 trace
|
|
|
|
#
|
|
# Test interaction with lost events
|
|
#
|
|
|
|
# Ensure the writer is not on the reader page by reloading the buffer
|
|
reload_remote
|
|
|
|
# Ensure ring-buffer overflow by emitting events from the same CPU
|
|
for cpu in $(get_cpu_ids); do
|
|
break
|
|
done
|
|
|
|
events_per_page=$(($(get_page_size) / $(get_selftest_event_size))) # Approx: does not take TS into account
|
|
nr_events=$(($events_per_page * 2))
|
|
for i in $(seq 1 $nr_events); do
|
|
taskset -c $cpu echo $i > write_event
|
|
done
|
|
|
|
id=$(sed -n -e '1s/\[[0-9]*\]\s*[0-9]*.[0-9]*: [a-z]* id=\([0-9]*\)/\1/p' trace)
|
|
test $id -ne 1
|
|
|
|
check_trace $id $nr_events trace
|
|
|
|
#
|
|
# Test per-CPU interface
|
|
#
|
|
echo 0 > trace
|
|
|
|
for cpu in $(get_cpu_ids) ; do
|
|
taskset -c $cpu echo $cpu > write_event
|
|
done
|
|
|
|
for cpu in $(get_cpu_ids); do
|
|
cd per_cpu/cpu$cpu/
|
|
|
|
check_trace $cpu $cpu trace
|
|
|
|
cd - > /dev/null
|
|
done
|
|
}
|
|
|
|
if [ -z "$SOURCE_REMOTE_TEST" ]; then
|
|
set -e
|
|
|
|
setup_remote_test
|
|
test_trace
|
|
fi
|