mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 07:03:03 +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>
89 lines
1.5 KiB
Bash
89 lines
1.5 KiB
Bash
#!/bin/sh
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# description: Test trace remote read with an offline CPU
|
|
# requires: remotes/test
|
|
|
|
. $TEST_DIR/remotes/functions
|
|
|
|
hotunplug_one_cpu()
|
|
{
|
|
[ "$(get_cpu_ids | wc -l)" -ge 2 ] || return 1
|
|
|
|
for cpu in $(get_cpu_ids); do
|
|
echo 0 > /sys/devices/system/cpu/cpu$cpu/online || return 1
|
|
break
|
|
done
|
|
|
|
echo $cpu
|
|
}
|
|
|
|
# Check non-consuming and consuming read
|
|
check_read()
|
|
{
|
|
for i in $(seq 1 8); do
|
|
echo $i > write_event
|
|
done
|
|
|
|
check_trace 1 8 trace
|
|
|
|
output=$(dump_trace_pipe)
|
|
check_trace 1 8 $output
|
|
rm $output
|
|
}
|
|
|
|
test_hotplug()
|
|
{
|
|
echo 0 > trace
|
|
assert_loaded
|
|
|
|
#
|
|
# Test a trace buffer containing an offline CPU
|
|
#
|
|
|
|
cpu=$(hotunplug_one_cpu) || exit_unsupported
|
|
trap "echo 1 > /sys/devices/system/cpu/cpu$cpu/online" EXIT
|
|
|
|
check_read
|
|
|
|
#
|
|
# Test a trace buffer with a missing CPU
|
|
#
|
|
|
|
reload_remote
|
|
|
|
check_read
|
|
|
|
#
|
|
# Test a trace buffer with a CPU added later
|
|
#
|
|
|
|
echo 1 > /sys/devices/system/cpu/cpu$cpu/online
|
|
trap "" EXIT
|
|
assert_loaded
|
|
|
|
check_read
|
|
|
|
# Test if the ring-buffer for the newly added CPU is both writable and
|
|
# readable
|
|
for i in $(seq 1 8); do
|
|
taskset -c $cpu echo $i > write_event
|
|
done
|
|
|
|
cd per_cpu/cpu$cpu/
|
|
|
|
check_trace 1 8 trace
|
|
|
|
output=$(dump_trace_pipe)
|
|
check_trace 1 8 $output
|
|
rm $output
|
|
|
|
cd -
|
|
}
|
|
|
|
if [ -z "$SOURCE_REMOTE_TEST" ]; then
|
|
set -e
|
|
|
|
setup_remote_test
|
|
test_hotplug
|
|
fi
|