summaryrefslogtreecommitdiffstats
path: root/tools/guest-diag
diff options
context:
space:
mode:
Diffstat (limited to 'tools/guest-diag')
-rw-r--r--tools/guest-diag/kretprobes.sh19
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/guest-diag/kretprobes.sh b/tools/guest-diag/kretprobes.sh
new file mode 100644
index 0000000..a5357db
--- /dev/null
+++ b/tools/guest-diag/kretprobes.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# kretprobes.sh - return-value probes for the UVM API entry points, so the
+# failing UVM operation names itself in the trace tail.
+TR=/sys/kernel/tracing
+[ -d "$TR" ] || TR=/sys/kernel/debug/tracing
+cd "$TR" || exit 1
+echo 'r:uvreg uvm_api_register_channel $retval' >> kprobe_events 2>/dev/null
+echo 'r:uvunr uvm_api_unregister_channel $retval' >> kprobe_events 2>/dev/null
+echo 'r:uvpew uvm_push_end_and_wait $retval' >> kprobe_events 2>/dev/null
+echo 'r:uvmcr uvm_channel_manager_create $retval' >> kprobe_events 2>/dev/null
+echo 'r:uvgrt uvm_gpu_retain_by_uuid $retval' >> kprobe_events 2>/dev/null
+echo 'r:uvtrk uvm_tracker_wait_for_entry $retval' >> kprobe_events 2>/dev/null
+for e in uvreg uvunr uvpew uvmcr uvgrt uvtrk; do
+ echo 1 > events/kprobes/$e/enable 2>/dev/null
+done
+echo 0 > tracing_on
+echo > trace
+echo 1 > tracing_on
+echo KRETPROBES_SET