1*0a1b0325SVincent Donnefort#!/bin/sh 2*0a1b0325SVincent Donnefort# SPDX-License-Identifier: GPL-2.0 3*0a1b0325SVincent Donnefort# description: Test trace remote reset 4*0a1b0325SVincent Donnefort# requires: remotes/test 5*0a1b0325SVincent Donnefort 6*0a1b0325SVincent Donnefort. $TEST_DIR/remotes/functions 7*0a1b0325SVincent Donnefort 8*0a1b0325SVincent Donnefortcheck_reset() 9*0a1b0325SVincent Donnefort{ 10*0a1b0325SVincent Donnefort write_event_path="write_event" 11*0a1b0325SVincent Donnefort taskset="" 12*0a1b0325SVincent Donnefort 13*0a1b0325SVincent Donnefort clear_trace 14*0a1b0325SVincent Donnefort 15*0a1b0325SVincent Donnefort # Is the buffer empty? 16*0a1b0325SVincent Donnefort output=$(dump_trace_pipe) 17*0a1b0325SVincent Donnefort test $(wc -l $output | cut -d ' ' -f1) -eq 0 18*0a1b0325SVincent Donnefort 19*0a1b0325SVincent Donnefort if $(echo $(pwd) | grep -q "per_cpu/cpu"); then 20*0a1b0325SVincent Donnefort write_event_path="../../write_event" 21*0a1b0325SVincent Donnefort cpu_id=$(echo $(pwd) | sed -e 's/.*per_cpu\/cpu//') 22*0a1b0325SVincent Donnefort taskset="taskset -c $cpu_id" 23*0a1b0325SVincent Donnefort fi 24*0a1b0325SVincent Donnefort rm $output 25*0a1b0325SVincent Donnefort 26*0a1b0325SVincent Donnefort # Can we properly write a new event? 27*0a1b0325SVincent Donnefort $taskset echo 7890 > $write_event_path 28*0a1b0325SVincent Donnefort output=$(dump_trace_pipe) 29*0a1b0325SVincent Donnefort test $(wc -l $output | cut -d ' ' -f1) -eq 1 30*0a1b0325SVincent Donnefort grep -q "id=7890" $output 31*0a1b0325SVincent Donnefort rm $output 32*0a1b0325SVincent Donnefort} 33*0a1b0325SVincent Donnefort 34*0a1b0325SVincent Donneforttest_global_interface() 35*0a1b0325SVincent Donnefort{ 36*0a1b0325SVincent Donnefort output=$(mktemp $TMPDIR/remote_test.XXXXXX) 37*0a1b0325SVincent Donnefort 38*0a1b0325SVincent Donnefort # Confidence check 39*0a1b0325SVincent Donnefort echo 123456 > write_event 40*0a1b0325SVincent Donnefort output=$(dump_trace_pipe) 41*0a1b0325SVincent Donnefort grep -q "id=123456" $output 42*0a1b0325SVincent Donnefort rm $output 43*0a1b0325SVincent Donnefort 44*0a1b0325SVincent Donnefort # Reset single event 45*0a1b0325SVincent Donnefort echo 1 > write_event 46*0a1b0325SVincent Donnefort check_reset 47*0a1b0325SVincent Donnefort 48*0a1b0325SVincent Donnefort # Reset lost events 49*0a1b0325SVincent Donnefort for i in $(seq 1 10000); do 50*0a1b0325SVincent Donnefort echo 1 > write_event 51*0a1b0325SVincent Donnefort done 52*0a1b0325SVincent Donnefort check_reset 53*0a1b0325SVincent Donnefort} 54*0a1b0325SVincent Donnefort 55*0a1b0325SVincent Donneforttest_percpu_interface() 56*0a1b0325SVincent Donnefort{ 57*0a1b0325SVincent Donnefort [ "$(get_cpu_ids | wc -l)" -ge 2 ] || return 0 58*0a1b0325SVincent Donnefort 59*0a1b0325SVincent Donnefort for cpu in $(get_cpu_ids); do 60*0a1b0325SVincent Donnefort taskset -c $cpu echo 1 > write_event 61*0a1b0325SVincent Donnefort done 62*0a1b0325SVincent Donnefort 63*0a1b0325SVincent Donnefort check_non_empty=0 64*0a1b0325SVincent Donnefort for cpu in $(get_cpu_ids); do 65*0a1b0325SVincent Donnefort cd per_cpu/cpu$cpu/ 66*0a1b0325SVincent Donnefort 67*0a1b0325SVincent Donnefort if [ $check_non_empty -eq 0 ]; then 68*0a1b0325SVincent Donnefort check_reset 69*0a1b0325SVincent Donnefort check_non_empty=1 70*0a1b0325SVincent Donnefort else 71*0a1b0325SVincent Donnefort # Check we have only reset 1 CPU 72*0a1b0325SVincent Donnefort output=$(dump_trace_pipe) 73*0a1b0325SVincent Donnefort test $(wc -l $output | cut -d ' ' -f1) -eq 1 74*0a1b0325SVincent Donnefort rm $output 75*0a1b0325SVincent Donnefort fi 76*0a1b0325SVincent Donnefort cd - 77*0a1b0325SVincent Donnefort done 78*0a1b0325SVincent Donnefort} 79*0a1b0325SVincent Donnefort 80*0a1b0325SVincent Donneforttest_reset() 81*0a1b0325SVincent Donnefort{ 82*0a1b0325SVincent Donnefort test_global_interface 83*0a1b0325SVincent Donnefort test_percpu_interface 84*0a1b0325SVincent Donnefort} 85*0a1b0325SVincent Donnefort 86*0a1b0325SVincent Donnefortif [ -z "$SOURCE_REMOTE_TEST" ]; then 87*0a1b0325SVincent Donnefort set -e 88*0a1b0325SVincent Donnefort setup_remote_test 89*0a1b0325SVincent Donnefort test_reset 90*0a1b0325SVincent Donnefortfi 91