When not running as root and with higher perf event paranoia values
the perf record LBR tests could fail rather than skipping the
problematic tests. Add the sensitivity to the test and confirm it
passes with paranoia values from -1 to 2.
Fixes: 32559b99e0f5 ("perf test: Add set of perf record LBR tests")
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/tests/shell/record_lbr.sh | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/tools/perf/tests/shell/record_lbr.sh b/tools/perf/tests/shell/record_lbr.sh
index 6fcb5e52b9b4..78a02e90ece1 100755
--- a/tools/perf/tests/shell/record_lbr.sh
+++ b/tools/perf/tests/shell/record_lbr.sh
@@ -4,6 +4,10 @@
set -e
+ParanoidAndNotRoot() {
+ [ "$(id -u)" != 0 ] && [ "$(cat /proc/sys/kernel/perf_event_paranoid)" -gt $1 ]
+}
+
if [ ! -f /sys/bus/event_source/devices/cpu/caps/branches ] &&
[ ! -f /sys/bus/event_source/devices/cpu_core/caps/branches ]
then
@@ -23,6 +27,7 @@ cleanup() {
}
trap_cleanup() {
+ echo "Unexpected signal in ${FUNCNAME[1]}"
cleanup
exit 1
}
@@ -123,8 +128,11 @@ lbr_test "-j ind_call" "any indirect call" 2
lbr_test "-j ind_jmp" "any indirect jump" 100
lbr_test "-j call" "direct calls" 2
lbr_test "-j ind_call,u" "any indirect user call" 100
-lbr_test "-a -b" "system wide any branch" 2
-lbr_test "-a -j any_call" "system wide any call" 2
+if ! ParanoidAndNotRoot 1
+then
+ lbr_test "-a -b" "system wide any branch" 2
+ lbr_test "-a -j any_call" "system wide any call" 2
+fi
# Parallel
parallel_lbr_test "-b" "parallel any branch" 100 &
@@ -141,10 +149,16 @@ parallel_lbr_test "-j call" "parallel direct calls" 100 &
pid6=$!
parallel_lbr_test "-j ind_call,u" "parallel any indirect user call" 100 &
pid7=$!
-parallel_lbr_test "-a -b" "parallel system wide any branch" 100 &
-pid8=$!
-parallel_lbr_test "-a -j any_call" "parallel system wide any call" 100 &
-pid9=$!
+if ParanoidAndNotRoot 1
+then
+ pid8=
+ pid9=
+else
+ parallel_lbr_test "-a -b" "parallel system wide any branch" 100 &
+ pid8=$!
+ parallel_lbr_test "-a -j any_call" "parallel system wide any call" 100 &
+ pid9=$!
+fi
for pid in $pid1 $pid2 $pid3 $pid4 $pid5 $pid6 $pid7 $pid8 $pid9
do
--
2.51.0.rc2.233.g662b1ed5c5-goog
On Thu, Aug 21, 2025 at 03:18:31PM -0700, Ian Rogers wrote: > When not running as root and with higher perf event paranoia values > the perf record LBR tests could fail rather than skipping the > problematic tests. Add the sensitivity to the test and confirm it > passes with paranoia values from -1 to 2. Thanks, applied to perf-tools-next, Committer testing: Testing with '$ perf test -vv lbr', i.e. as non root, and then comparing the output shows the mentioned errors before this patch: acme@x1:~$ grep -m1 "model name" /proc/cpuinfo model name : 13th Gen Intel(R) Core(TM) i7-1365U acme@x1:~$ Before: 132: perf record LBR tests : Skip After: 132: perf record LBR tests : Ok - Arnaldo > Fixes: 32559b99e0f5 ("perf test: Add set of perf record LBR tests") > Signed-off-by: Ian Rogers <irogers@google.com> > --- > tools/perf/tests/shell/record_lbr.sh | 26 ++++++++++++++++++++------ > 1 file changed, 20 insertions(+), 6 deletions(-) > > diff --git a/tools/perf/tests/shell/record_lbr.sh b/tools/perf/tests/shell/record_lbr.sh > index 6fcb5e52b9b4..78a02e90ece1 100755 > --- a/tools/perf/tests/shell/record_lbr.sh > +++ b/tools/perf/tests/shell/record_lbr.sh > @@ -4,6 +4,10 @@ > > set -e > > +ParanoidAndNotRoot() { > + [ "$(id -u)" != 0 ] && [ "$(cat /proc/sys/kernel/perf_event_paranoid)" -gt $1 ] > +} > + > if [ ! -f /sys/bus/event_source/devices/cpu/caps/branches ] && > [ ! -f /sys/bus/event_source/devices/cpu_core/caps/branches ] > then > @@ -23,6 +27,7 @@ cleanup() { > } > > trap_cleanup() { > + echo "Unexpected signal in ${FUNCNAME[1]}" > cleanup > exit 1 > } > @@ -123,8 +128,11 @@ lbr_test "-j ind_call" "any indirect call" 2 > lbr_test "-j ind_jmp" "any indirect jump" 100 > lbr_test "-j call" "direct calls" 2 > lbr_test "-j ind_call,u" "any indirect user call" 100 > -lbr_test "-a -b" "system wide any branch" 2 > -lbr_test "-a -j any_call" "system wide any call" 2 > +if ! ParanoidAndNotRoot 1 > +then > + lbr_test "-a -b" "system wide any branch" 2 > + lbr_test "-a -j any_call" "system wide any call" 2 > +fi > > # Parallel > parallel_lbr_test "-b" "parallel any branch" 100 & > @@ -141,10 +149,16 @@ parallel_lbr_test "-j call" "parallel direct calls" 100 & > pid6=$! > parallel_lbr_test "-j ind_call,u" "parallel any indirect user call" 100 & > pid7=$! > -parallel_lbr_test "-a -b" "parallel system wide any branch" 100 & > -pid8=$! > -parallel_lbr_test "-a -j any_call" "parallel system wide any call" 100 & > -pid9=$! > +if ParanoidAndNotRoot 1 > +then > + pid8= > + pid9= > +else > + parallel_lbr_test "-a -b" "parallel system wide any branch" 100 & > + pid8=$! > + parallel_lbr_test "-a -j any_call" "parallel system wide any call" 100 & > + pid9=$! > +fi > > for pid in $pid1 $pid2 $pid3 $pid4 $pid5 $pid6 $pid7 $pid8 $pid9 > do > -- > 2.51.0.rc2.233.g662b1ed5c5-goog
© 2016 - 2025 Red Hat, Inc.