summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/guest-diag/guest_kprobes.sh12
-rw-r--r--tools/guest-diag/track_waits.sh2
2 files changed, 10 insertions, 4 deletions
diff --git a/tools/guest-diag/guest_kprobes.sh b/tools/guest-diag/guest_kprobes.sh
index f676e20..0afe6c6 100644
--- a/tools/guest-diag/guest_kprobes.sh
+++ b/tools/guest-diag/guest_kprobes.sh
@@ -15,29 +15,35 @@
TR=/sys/kernel/tracing
[ -d "$TR" ] || TR=/sys/kernel/debug/tracing
+# An enabled kprobe event cannot be deleted (EBUSY); disable the group first.
+echo 0 > "$TR/events/kprobes/enable" 2>/dev/null || true
+
add_probe() {
name=$1; sym=$2; fmt=$3
+ echo "-:kprobes/$name" >> "$TR/kprobe_events" 2>/dev/null
echo "-:$name" >> "$TR/kprobe_events" 2>/dev/null
if ! grep -qw "$sym" /proc/kallsyms 2>/dev/null; then
echo "FAIL $name: symbol $sym not in kallsyms"
return 1
fi
if echo "p:$name $sym $fmt" >> "$TR/kprobe_events" 2>/dev/null; then
- if grep -q "p:$name" "$TR/kprobe_events" 2>/dev/null; then
+ if grep -qE "p:[^ ]*[ /]$name( |$)" "$TR/kprobe_events" 2>/dev/null; then
echo "ok $name $sym"
return 0
fi
fi
+ echo "-:kprobes/$name" >> "$TR/kprobe_events" 2>/dev/null
echo "-:$name" >> "$TR/kprobe_events" 2>/dev/null
if echo "p:$name nvidia_uvm:$sym $fmt" >> "$TR/kprobe_events" 2>/dev/null; then
- if grep -q "p:$name" "$TR/kprobe_events" 2>/dev/null; then
+ if grep -qE "p:[^ ]*[ /]$name( |$)" "$TR/kprobe_events" 2>/dev/null; then
echo "ok-module $name $sym"
return 0
fi
fi
+ echo "-:kprobes/$name" >> "$TR/kprobe_events" 2>/dev/null
echo "-:$name" >> "$TR/kprobe_events" 2>/dev/null
if echo "p:$name $sym" >> "$TR/kprobe_events" 2>/dev/null; then
- if grep -q "p:$name" "$TR/kprobe_events" 2>/dev/null; then
+ if grep -qE "p:[^ ]*[ /]$name( |$)" "$TR/kprobe_events" 2>/dev/null; then
echo "ok-bare $name $sym"
return 0
fi
diff --git a/tools/guest-diag/track_waits.sh b/tools/guest-diag/track_waits.sh
index 4c9cd1a..45a9a66 100644
--- a/tools/guest-diag/track_waits.sh
+++ b/tools/guest-diag/track_waits.sh
@@ -52,7 +52,7 @@ for i in $(seq 1 "$N"); do
TS=$(date +%T.%3N)
kill -0 "$PID" 2>/dev/null || { echo "PROCESS GONE at $TS (sample $i)" >> /tmp/trk.log; break; }
- if [ $((i % 2)) -eq 1 ]; then
+ if [ $((i % 2)) -eq 1 ] && [ "${GDB:-1}" = "1" ]; then
echo "=== $TS sample $i ===" >> /tmp/trk.log
timeout 8 gdb -p "$PID" -batch -x /tmp/trkinfo.py 2>&1 \
| grep -vE "^\[|Reading symbols|^0x[0-9a-f]+ in |warning:" >> /tmp/trk.log