summaryrefslogtreecommitdiffstats
path: root/tools/guest-diag/run_cycle.sh
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-30 12:54:15 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-30 12:54:15 -0400
commitf0d1b77f54a07c249a06dc57280a92d412c01fab (patch)
treeb39df59a9ae00c083a80316a9b73f1dd3c8fba2a /tools/guest-diag/run_cycle.sh
parentd3e35752e8d78a368940fc262b0013e1d50deed4 (diff)
downloadopen-iov-f0d1b77f54a07c249a06dc57280a92d412c01fab.tar.gz
open-iov-f0d1b77f54a07c249a06dc57280a92d412c01fab.zip
guest-diag: stream the client's high-VA UVM sysmem pages as pins
The DtoH staging buffer lives in the client's high-VA /dev/zero|nvidia mappings (e.g. devptr+0x3c00100), outside the scanner's fixed CE/GR windows; only the host's pagemap read can see it. The guest scanner now walks those VMAs and streams their present pages so the module pins them. run_cycle.sh learns the sema_dbg master switch (auto-on when any watch knob is set).
Diffstat (limited to 'tools/guest-diag/run_cycle.sh')
-rwxr-xr-xtools/guest-diag/run_cycle.sh14
1 files changed, 12 insertions, 2 deletions
diff --git a/tools/guest-diag/run_cycle.sh b/tools/guest-diag/run_cycle.sh
index c3f4ffa..d6ab63f 100755
--- a/tools/guest-diag/run_cycle.sh
+++ b/tools/guest-diag/run_cycle.sh
@@ -28,13 +28,23 @@ for i in $(seq 1 24); do
sleep 5
done
-echo "[*] setting module params (SKIP_OPS=${SKIP_OPS:-Y}, OPS_LOG=${OPS_LOG:-8}, COPY_WATCH=${COPY_WATCH:-0}, COPY_PAT=${COPY_PAT:-0}, CE_GRACE=${CE_GRACE:-8000})"
+echo "[*] setting module params (SKIP_OPS=${SKIP_OPS:-Y}, OPS_LOG=${OPS_LOG:-8}, COPY_WATCH=${COPY_WATCH:-0}, COPY_PAT=${COPY_PAT:-0}, COPY_DST=${COPY_DST:-0}, COPY_DST2=${COPY_DST2:-0}, CE_GRACE=${CE_GRACE:-8000})"
SKIP_OPS="${SKIP_OPS:-Y}"
OPS_LOG="${OPS_LOG:-8}"
COPY_WATCH="${COPY_WATCH:-0}"
COPY_PAT="${COPY_PAT:-0}"
+COPY_DST="${COPY_DST:-0}"
+COPY_DST2="${COPY_DST2:-0}"
CE_GRACE="${CE_GRACE:-8000}"
-sudo sh -c "echo Y > /sys/module/open_iov_vfio/parameters/sema_fake_rel; echo $SKIP_OPS > /sys/module/open_iov_vfio/parameters/sema_skip_ops; echo $OPS_LOG > /sys/module/open_iov_vfio/parameters/sema_ops_log; echo $COPY_WATCH > /sys/module/open_iov_vfio/parameters/sema_copy_watch; echo $COPY_PAT > /sys/module/open_iov_vfio/parameters/sema_copy_pat; echo $CE_GRACE > /sys/module/open_iov_vfio/parameters/sema_ce_grace_ms"
+# The per-push/per-op tracing is behind the master sema_dbg switch (default
+# off, so a normal boot stays quiet). Instrumenting implies enabling it.
+DBG="${DBG:-N}"
+if [ "$DBG" != "Y" ] && { [ "$COPY_WATCH" != "0" ] || [ "$COPY_PAT" != "0" ] || \
+ [ "$COPY_DST" != "0" ] || [ "$COPY_DST2" != "0" ] || [ "$OPS_LOG" -gt 8 ] 2>/dev/null; }; then
+ DBG=Y
+fi
+echo " sema_dbg=$DBG"
+sudo sh -c "echo $DBG > /sys/module/open_iov_vfio/parameters/sema_dbg; echo Y > /sys/module/open_iov_vfio/parameters/sema_fake_rel; echo $SKIP_OPS > /sys/module/open_iov_vfio/parameters/sema_skip_ops; echo $OPS_LOG > /sys/module/open_iov_vfio/parameters/sema_ops_log; echo $COPY_WATCH > /sys/module/open_iov_vfio/parameters/sema_copy_watch; echo $COPY_PAT > /sys/module/open_iov_vfio/parameters/sema_copy_pat; echo $COPY_DST > /sys/module/open_iov_vfio/parameters/sema_copy_dst; echo $COPY_DST2 > /sys/module/open_iov_vfio/parameters/sema_copy_dst2; echo $CE_GRACE > /sys/module/open_iov_vfio/parameters/sema_ce_grace_ms"
echo "[*] pushing guest tools"
timeout 300 "$HERE/push_guest_tools.sh" >/dev/null 2>&1 || { echo "push failed"; exit 1; }