diff options
Diffstat (limited to 'tools/guest-diag')
| -rw-r--r-- | tools/guest-diag/README.md | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/bridge_sems.sh | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/cycle_cdt.sh | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/inject_counters.sh | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/inject_maps.sh | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/inject_tracker.sh | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/pdwatch_cycle.sh | 26 | ||||
| -rwxr-xr-x | tools/guest-diag/phys_claim_cycle.sh | 30 | ||||
| -rwxr-xr-x | tools/guest-diag/pin_client_sems.sh | 4 | ||||
| -rw-r--r-- | tools/guest-diag/pin_gr_stream.py | 2 | ||||
| -rw-r--r-- | tools/guest-diag/pin_gr_window.py | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/pin_miss_pages.sh | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/pin_sem_fast.sh | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/run_cycle.sh | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/run_traced.sh | 6 | ||||
| -rwxr-xr-x | tools/guest-diag/semfix_uvmt.py | 2 | ||||
| -rw-r--r-- | tools/guest-diag/semfix_watch.py | 2 | ||||
| -rwxr-xr-x | tools/guest-diag/vmcycle.sh | 6 | ||||
| -rwxr-xr-x | tools/guest-diag/vmrestart.sh | 6 |
19 files changed, 52 insertions, 52 deletions
diff --git a/tools/guest-diag/README.md b/tools/guest-diag/README.md index ea5ac14..7686ecd 100644 --- a/tools/guest-diag/README.md +++ b/tools/guest-diag/README.md @@ -31,7 +31,7 @@ syscall instruction). Kept only as documentation of that fact. ## vmcycle.sh - reload cycle -pkill QEMU -> remove mdevs -> rmmod/insmod open-iov-vfio.ko -> create a fresh +pkill QEMU -> remove mdevs -> rmmod/insmod vgsp.ko -> create a fresh `nvidia-nvidia-vgpu-turing` mdev -> patch its UUID into launch_qemu_rootport.sh -> relaunch. Guest boots in ~60-75 s. diff --git a/tools/guest-diag/bridge_sems.sh b/tools/guest-diag/bridge_sems.sh index f54801d..a024524 100755 --- a/tools/guest-diag/bridge_sems.sh +++ b/tools/guest-diag/bridge_sems.sh @@ -33,7 +33,7 @@ for i in $(seq 1 "$ITER"); do for l in "${lines[@]}"; do va=${l%%,*} pa=${l##*,} - echo "$va,$pa,0x1000,1" | sudo tee /sys/module/open_iov_vfio/parameters/sema_map_add >/dev/null + echo "$va,$pa,0x1000,1" | sudo tee /sys/module/vgsp/parameters/sema_map_add >/dev/null done total=$((total + ${#lines[@]})) last_va=${lines[-1]%%,*} diff --git a/tools/guest-diag/cycle_cdt.sh b/tools/guest-diag/cycle_cdt.sh index 009bdfc..3aaa723 100755 --- a/tools/guest-diag/cycle_cdt.sh +++ b/tools/guest-diag/cycle_cdt.sh @@ -39,7 +39,7 @@ for i in $(seq 1 24); do done # if UVM's tracking semaphore lags, poke it forward -SEMAPA=$(sudo sh -c 'echo 0x121000010,1 > /sys/module/open_iov_vfio/parameters/sema_probe' 2>/dev/null; sleep 2; sudo dmesg -T | grep -A2 "sema-probe: va=0x121000010" | grep -oE "pa=0x[0-9a-f]+" | head -1 | cut -d= -f2) +SEMAPA=$(sudo sh -c 'echo 0x121000010,1 > /sys/module/vgsp/parameters/sema_probe' 2>/dev/null; sleep 2; sudo dmesg -T | grep -A2 "sema-probe: va=0x121000010" | grep -oE "pa=0x[0-9a-f]+" | head -1 | cut -d= -f2) if [ -n "$SEMAPA" ]; then CUR=$(sudo dmesg -T | grep -A3 "sema-probe: va=0x121000010" | grep -oE "\[0\] 0x[0-9a-f]+" | tail -1 | awk '{print $2}') echo "[*] UVM tracking sema pa=$SEMAPA value=$CUR" diff --git a/tools/guest-diag/inject_counters.sh b/tools/guest-diag/inject_counters.sh index 6586a95..5ee60fd 100755 --- a/tools/guest-diag/inject_counters.sh +++ b/tools/guest-diag/inject_counters.sh @@ -30,7 +30,7 @@ set -uo pipefail HERE="$(cd "$(dirname "$0")" && pwd)" VMEXEC="$HERE/../../scripts/vgpu_vm.py" -PARAM=/sys/module/open_iov_vfio/parameters +PARAM=/sys/module/vgsp/parameters DONE=/tmp/inject_counters.done PID="${1:-}" diff --git a/tools/guest-diag/inject_maps.sh b/tools/guest-diag/inject_maps.sh index 2973311..6dcabb5 100755 --- a/tools/guest-diag/inject_maps.sh +++ b/tools/guest-diag/inject_maps.sh @@ -12,7 +12,7 @@ LOG=/tmp/inject_maps.log : > "$LOG" map_add() { # map_add <va-hex> <pa-hex> - echo "0x$1,0x$2" | sudo tee /sys/module/open_iov_vfio/parameters/sema_map_add >/dev/null 2>&1 + echo "0x$1,0x$2" | sudo tee /sys/module/vgsp/parameters/sema_map_add >/dev/null 2>&1 } inject_list() { # inject_list <va...> diff --git a/tools/guest-diag/inject_tracker.sh b/tools/guest-diag/inject_tracker.sh index a563b0d..0a292e4 100755 --- a/tools/guest-diag/inject_tracker.sh +++ b/tools/guest-diag/inject_tracker.sh @@ -25,6 +25,6 @@ print('PA=0x%x'%((pfn<<12)|(va&0xfff))) [ -n "$PA" ] || { echo "NO PA FOUND"; exit 1; } echo "target pa=$PA" -sudo sh -c "echo 0x$VALPTR_HEX,$PA > /sys/module/open_iov_vfio/parameters/sema_map_add" || exit 1 +sudo sh -c "echo 0x$VALPTR_HEX,$PA > /sys/module/vgsp/parameters/sema_map_add" || exit 1 sleep 1 sudo dmesg -T | grep "injected mapping" | tail -1 diff --git a/tools/guest-diag/pdwatch_cycle.sh b/tools/guest-diag/pdwatch_cycle.sh index 45d08cc..fe758fd 100755 --- a/tools/guest-diag/pdwatch_cycle.sh +++ b/tools/guest-diag/pdwatch_cycle.sh @@ -21,15 +21,15 @@ for i in $(seq 1 30); do done echo "[*] $(date +%T) params: sema_dbg=Y, dst watch 0x200000 + 0x208000" -sudo sh -c "echo Y > /sys/module/open_iov_vfio/parameters/sema_dbg; \ -echo N > /sys/module/open_iov_vfio/parameters/sema_fake_rel; \ -echo N > /sys/module/open_iov_vfio/parameters/sema_skip_ops; \ -echo 64 > /sys/module/open_iov_vfio/parameters/sema_ops_log; \ -echo 0 > /sys/module/open_iov_vfio/parameters/sema_copy_watch; \ -echo 0 > /sys/module/open_iov_vfio/parameters/sema_copy_pat; \ -echo 0x200000 > /sys/module/open_iov_vfio/parameters/sema_copy_dst; \ -echo 0x208000 > /sys/module/open_iov_vfio/parameters/sema_copy_dst2; \ -echo 8000 > /sys/module/open_iov_vfio/parameters/sema_ce_grace_ms" +sudo sh -c "echo Y > /sys/module/vgsp/parameters/sema_dbg; \ +echo N > /sys/module/vgsp/parameters/sema_fake_rel; \ +echo N > /sys/module/vgsp/parameters/sema_skip_ops; \ +echo 64 > /sys/module/vgsp/parameters/sema_ops_log; \ +echo 0 > /sys/module/vgsp/parameters/sema_copy_watch; \ +echo 0 > /sys/module/vgsp/parameters/sema_copy_pat; \ +echo 0x200000 > /sys/module/vgsp/parameters/sema_copy_dst; \ +echo 0x208000 > /sys/module/vgsp/parameters/sema_copy_dst2; \ +echo 8000 > /sys/module/vgsp/parameters/sema_ce_grace_ms" echo "[*] $(date +%T) push tools" timeout 600 "$HERE/push_guest_tools.sh" >/dev/null 2>&1 || echo " push failed" @@ -59,7 +59,7 @@ done echo "[*] $(date +%T) shadow dumps during park" for a in 0x200000 0x201000 0x202000 0x203000 0x208000; do echo " -- $a" - sudo sh -c "echo '$a,64' > /sys/module/open_iov_vfio/parameters/sema_vidmem_dump" 2>/dev/null + sudo sh -c "echo '$a,64' > /sys/module/vgsp/parameters/sema_vidmem_dump" 2>/dev/null sleep 0.2 done sudo dmesg | grep -a "sema-vidmem\|sema-walk-probe\|sema-svc: VA space" | tail -40 > "$OUT/pdwatch_park_dmesg.txt" @@ -70,8 +70,8 @@ echo " devptr=$DEV" if [ -n "${DEV:-}" ]; then STG=$(printf '0x%x' $((DEV+0x3c00100))) echo " staging=$STG" - echo " -- walk_probe staging"; sudo sh -c "echo $STG > /sys/module/open_iov_vfio/parameters/walk_probe"; sleep 1 - echo " -- walk_probe devptr"; sudo sh -c "echo $DEV > /sys/module/open_iov_vfio/parameters/walk_probe"; sleep 1 + echo " -- walk_probe staging"; sudo sh -c "echo $STG > /sys/module/vgsp/parameters/walk_probe"; sleep 1 + echo " -- walk_probe devptr"; sudo sh -c "echo $DEV > /sys/module/vgsp/parameters/walk_probe"; sleep 1 fi echo " -- copy-dst lines so far" sudo dmesg | grep -aE "sema-copy-dst|sema-svc: applied|sema-256" | tail -30 @@ -87,7 +87,7 @@ echo "[*] $(date +%T) post-run: walk state + copy-dst log" cp "$SER" "$OUT/pdwatch_serial.log" 2>/dev/null sudo dmesg > "$OUT/pdwatch_dmesg.log" 2>/dev/null if [ -n "${STG:-}" ]; then - echo " -- post walk_probe staging"; sudo sh -c "echo $STG > /sys/module/open_iov_vfio/parameters/walk_probe"; sleep 1 + echo " -- post walk_probe staging"; sudo sh -c "echo $STG > /sys/module/vgsp/parameters/walk_probe"; sleep 1 sudo dmesg | tail -12 fi echo " -- copy-dst summary" diff --git a/tools/guest-diag/phys_claim_cycle.sh b/tools/guest-diag/phys_claim_cycle.sh index 0e00ae8..e89fbfc 100755 --- a/tools/guest-diag/phys_claim_cycle.sh +++ b/tools/guest-diag/phys_claim_cycle.sh @@ -2,7 +2,7 @@ # phys_claim_cycle.sh - supervised physical-GPU claim/release cycle harness. # # Drives one or more full "D0 pre-lock" cycles of the physical-ownership -# backend (open-iov-vfio + gsp_phys_gpu=1 + gsp_phys_hazard_ack=1): +# backend (vgsp + gsp_phys_gpu=1 + gsp_phys_hazard_ack=1): # # start persistenced -> wait GPU+root port active -> power/control=on on # GPU+port -> dmesg -C -> (stop persistenced && insmod) as ONE command -> @@ -33,7 +33,7 @@ # --dryrun also pass gsp_phys_fwsec_dryrun=1 (implies --layout): run the # READ-ONLY stage-3c validation (VBIOS/BIT/FWSEC parse and the # staging/placement plan, no device writes); expects the -# "gsp-phys-fwsec-dryrun:" and "stage 3c dry-run complete" +# "vgsp-fwsec-dryrun:" and "stage 3c dry-run complete" # lines. It is also implied by --boot-dryrun (alias) # --boot-dryrun implies --dryrun and also passes gsp_phys_boot_dryrun=1 # (implies --layout): host-memory-only stage-3d staging @@ -60,13 +60,13 @@ # this fused part: it left WPR2 up and was not host-recoverable. # It is refused immediately and never reaches insmod. Use # --boot; never stop after FWSEC alone on this host. -# --ko PATH module to insmod (default kernel/open-iov-vfio.ko) +# --ko PATH module to insmod (default kernel/vgsp.ko) # --fw NAME GSP firmware to stage (request_firmware name under # /lib/firmware; default: the module's own default, currently # nvidia/570.211.01/gsp_tu10x.bin) # --nocat pass gsp_phys_nocat=1: during --boot, log every GSP-RM NOCAT # journal record (status-queue function 0x1020) to dmesg with -# the "gsp-nocat:" prefix. The unique-record summary is +# the "vgsp-nocat:" prefix. The unique-record summary is # printed at the end of stage 3e (success or failure) with or # without this flag; per-record logging is verbose. # --restore-power restore power/control=auto and restart persistenced at @@ -106,7 +106,7 @@ BOOT_DRYRUN=0 NOCAT=0 KEEP=0 RESTORE_POWER=0 -KO="$REPO_ROOT/kernel/open-iov-vfio.ko" +KO="$REPO_ROOT/kernel/vgsp.ko" FW="" GPU_BDF="${GPU_BDF:-0000:01:00.0}" @@ -247,8 +247,8 @@ if [ -n "$WATCH_PIDS" ]; then pre_fail "stale watcher process(es) running; stop them first" fi -if lsmod 2>/dev/null | awk '{print $1}' | grep -qx open_iov_vfio; then - pre_fail "open_iov_vfio is already loaded; rmmod it first" +if lsmod 2>/dev/null | awk '{print $1}' | grep -qx vgsp; then + pre_fail "vgsp is already loaded; rmmod it first" fi command -v lspci >/dev/null 2>&1 || pre_fail "lspci not found" @@ -380,10 +380,10 @@ for n in $(seq 1 "$CYCLES"); do sleep 1 save_dmesg "$DLOG" - if grep -q "gsp-phys: refusing claim" "$DLOG" 2>/dev/null; then + if grep -q "vgsp: refusing claim" "$DLOG" 2>/dev/null; then echo "PRECONDITION FAIL: cycle $n: module refused the claim (GPU/port were already runtime-suspended)" >&2 warn "no claim was taken; unloading the module is safe" - timeout 60 sudo rmmod open_iov_vfio 2>/dev/null || true + timeout 60 sudo rmmod vgsp 2>/dev/null || true save_dmesg "$DLOG" exit 3 fi @@ -405,7 +405,7 @@ for n in $(seq 1 "$CYCLES"); do OK_DRYRUN=1 if [ "$DRYRUN" -eq 1 ]; then OK_DRYRUN=0 - if grep -q "gsp-phys-fwsec-dryrun:" "$DLOG" && \ + if grep -q "vgsp-fwsec-dryrun:" "$DLOG" && \ grep -q "stage 3c dry-run complete" "$DLOG"; then OK_DRYRUN=1 fi @@ -437,7 +437,7 @@ for n in $(seq 1 "$CYCLES"); do if [ "$NR_LOCKS" -eq 0 ] && [ "$OK_CLAIM" -eq 0 ]; then echo "ABORT: cycle $n: no locks and no claim took effect" >&2 warn "no D0 locks were taken; unloading the module is safe" - timeout 60 sudo rmmod open_iov_vfio 2>/dev/null || true + timeout 60 sudo rmmod vgsp 2>/dev/null || true save_dmesg "$DLOG" exit 2 fi @@ -454,7 +454,7 @@ for n in $(seq 1 "$CYCLES"); do warn "cycle $n: gsp_phys_layout=1 but no 'stage 3b complete' line" fi if [ "$DRYRUN" -eq 1 ] && [ "$OK_DRYRUN" -ne 1 ]; then - warn "cycle $n: gsp_phys_fwsec_dryrun=1 but the read-only dry-run did not complete (missing 'gsp-phys-fwsec-dryrun:'/'stage 3c dry-run complete')" + warn "cycle $n: gsp_phys_fwsec_dryrun=1 but the read-only dry-run did not complete (missing 'vgsp-fwsec-dryrun:'/'stage 3c dry-run complete')" fi if [ "$BOOT_DRYRUN" -eq 1 ] && [ "$OK_BOOTPRIME" -ne 1 ]; then warn "cycle $n: gsp_phys_boot_dryrun=1 but 'stage 3d prime complete' is missing (staging rehearsal did not complete)" @@ -504,9 +504,9 @@ for n in $(seq 1 "$CYCLES"); do lspci: $LSPCI_NN driver=$DRV gpu=$RSTAT_GPU port=$RSTAT_PORT power/control=on (GPU $GPU_BDF and port $PORT_BDF) - nvidia-persistenced stopped; open_iov_vfio loaded and holding the claim. + nvidia-persistenced stopped; vgsp loaded and holding the claim. To end the claimed session: - sudo rmmod open_iov_vfio + sudo rmmod vgsp echo auto | sudo tee /sys/bus/pci/devices/$GPU_BDF/power/control echo auto | sudo tee /sys/bus/pci/devices/$PORT_BDF/power/control sudo systemctl start nvidia-persistenced @@ -517,7 +517,7 @@ EOF exit 0 fi - timeout 60 sudo rmmod open_iov_vfio >/dev/null 2>&1 + timeout 60 sudo rmmod vgsp >/dev/null 2>&1 RMMOD_RC=$? sleep 1 save_dmesg "$DLOG" diff --git a/tools/guest-diag/pin_client_sems.sh b/tools/guest-diag/pin_client_sems.sh index 82d2789..af39fd1 100755 --- a/tools/guest-diag/pin_client_sems.sh +++ b/tools/guest-diag/pin_client_sems.sh @@ -34,7 +34,7 @@ pin_range() { # pin_range <lo-dec> <hi-dec> <label> mapfile -t lines < <(timeout 60 $VMEXEC exec --timeout 50 "sudo python3 /tmp/pmapall.py $PID $(printf '0x%x' "$cur") 32" 2>/dev/null | grep -aE '^0x[0-9a-f]+,0x[0-9a-f]+$') [ "${#lines[@]}" -gt 0 ] || break for l in "${lines[@]}"; do - echo "$l,0x1000,1" | sudo tee /sys/module/open_iov_vfio/parameters/sema_map_add >/dev/null + echo "$l,0x1000,1" | sudo tee /sys/module/vgsp/parameters/sema_map_add >/dev/null done total=$((total + ${#lines[@]})) local last=${lines[-1]%%,*} @@ -58,7 +58,7 @@ for it in $(seq 1 "$ITER"); do for va in $lines; do line=$(timeout 30 $VMEXEC exec --timeout 25 "sudo python3 /tmp/pmapall.py $PID $va 1" 2>/dev/null | grep -E '^0x[0-9a-f]+,0x[0-9a-f]+$' | head -1) [ -n "$line" ] || continue - echo "$line,0x1000,1" | sudo tee /sys/module/open_iov_vfio/parameters/sema_map_add >/dev/null || continue + echo "$line,0x1000,1" | sudo tee /sys/module/vgsp/parameters/sema_map_add >/dev/null || continue n=$((n + 1)) done echo "iter $it: pinned $n sem page(s) (pid $PID)" diff --git a/tools/guest-diag/pin_gr_stream.py b/tools/guest-diag/pin_gr_stream.py index a11bc84..d8b6b61 100644 --- a/tools/guest-diag/pin_gr_stream.py +++ b/tools/guest-diag/pin_gr_stream.py @@ -18,7 +18,7 @@ import time HERE = os.path.dirname(os.path.abspath(__file__)) VMEXEC = os.path.normpath(os.path.join(HERE, "..", "..", "scripts", "vgpu_vm.py")) -PARAM = "/sys/module/open_iov_vfio/parameters" +PARAM = "/sys/module/vgsp/parameters" GUEST_SCRIPT = os.path.join(HERE, "guest_pin_stream.py") PORT = int(os.environ.get("PINWIN_PORT", "45678")) diff --git a/tools/guest-diag/pin_gr_window.py b/tools/guest-diag/pin_gr_window.py index 26083f7..71f73d0 100644 --- a/tools/guest-diag/pin_gr_window.py +++ b/tools/guest-diag/pin_gr_window.py @@ -30,7 +30,7 @@ import time HERE = os.path.dirname(os.path.abspath(__file__)) VMEXEC = os.path.normpath(os.path.join(HERE, "..", "..", "scripts", "vgpu_vm.py")) -PARAM = "/sys/module/open_iov_vfio/parameters" +PARAM = "/sys/module/vgsp/parameters" HELPER = os.path.join(HERE, "guest_pmap_win.py") LO = int(os.environ.get("PINWIN_LO", "0x200400000"), 16) diff --git a/tools/guest-diag/pin_miss_pages.sh b/tools/guest-diag/pin_miss_pages.sh index 77268ef..fd7722a 100755 --- a/tools/guest-diag/pin_miss_pages.sh +++ b/tools/guest-diag/pin_miss_pages.sh @@ -45,7 +45,7 @@ for ((i = 1; i <= MAXMIN * 4; i++)); do line=$(EXEC "sudo python3 /tmp/pmapall.py $pid $page 1" | grep -aE "^$page,0x[0-9a-f]+$" | head -1) if [ -n "$line" ]; then - echo "$line,0x1000,1" | sudo tee /sys/module/open_iov_vfio/parameters/sema_map_add >/dev/null + echo "$line,0x1000,1" | sudo tee /sys/module/vgsp/parameters/sema_map_add >/dev/null echo "[$((i * 15))s] pinned $line (pid $pid)" seen="$seen $page" fi diff --git a/tools/guest-diag/pin_sem_fast.sh b/tools/guest-diag/pin_sem_fast.sh index e0e30f8..16cecc4 100755 --- a/tools/guest-diag/pin_sem_fast.sh +++ b/tools/guest-diag/pin_sem_fast.sh @@ -24,7 +24,7 @@ for ((i = 1; i <= N; i++)); do line=$(EXEC "sudo python3 /tmp/pmapall.py $pid 0x20400f000 1" | grep -aE "^0x20400f000,0x[0-9a-f]+$" | head -1) if [ -n "$line" ]; then - echo "$line,0x1000,1" | sudo tee /sys/module/open_iov_vfio/parameters/sema_map_add >/dev/null + echo "$line,0x1000,1" | sudo tee /sys/module/vgsp/parameters/sema_map_add >/dev/null pinned_pid="$pid" echo "[$((i * 2))s] pinned $line (pid $pid)" fi diff --git a/tools/guest-diag/run_cycle.sh b/tools/guest-diag/run_cycle.sh index d6ab63f..28ea18d 100755 --- a/tools/guest-diag/run_cycle.sh +++ b/tools/guest-diag/run_cycle.sh @@ -44,7 +44,7 @@ if [ "$DBG" != "Y" ] && { [ "$COPY_WATCH" != "0" ] || [ "$COPY_PAT" != "0" ] || 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" +sudo sh -c "echo $DBG > /sys/module/vgsp/parameters/sema_dbg; echo Y > /sys/module/vgsp/parameters/sema_fake_rel; echo $SKIP_OPS > /sys/module/vgsp/parameters/sema_skip_ops; echo $OPS_LOG > /sys/module/vgsp/parameters/sema_ops_log; echo $COPY_WATCH > /sys/module/vgsp/parameters/sema_copy_watch; echo $COPY_PAT > /sys/module/vgsp/parameters/sema_copy_pat; echo $COPY_DST > /sys/module/vgsp/parameters/sema_copy_dst; echo $COPY_DST2 > /sys/module/vgsp/parameters/sema_copy_dst2; echo $CE_GRACE > /sys/module/vgsp/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; } diff --git a/tools/guest-diag/run_traced.sh b/tools/guest-diag/run_traced.sh index e8d3a09..009e20b 100755 --- a/tools/guest-diag/run_traced.sh +++ b/tools/guest-diag/run_traced.sh @@ -26,18 +26,18 @@ pfn=e & ((1<<55)-1) print('PA=0x%x'%((pfn<<12)|0xeb0)) \"" | grep -o 'PA=0x[0-9a-f]*' | head -1 | sed 's/PA=//') if [ -n "$PA" ]; then - sudo sh -c "echo 0x20480feb0,$PA > /sys/module/open_iov_vfio/parameters/sema_map_add" 2>/dev/null + sudo sh -c "echo 0x20480feb0,$PA > /sys/module/vgsp/parameters/sema_map_add" 2>/dev/null fi # nudge UVM's tracking semaphore forward when the sweep has stalled - sudo sh -c 'echo 0x121000010,1 > /sys/module/open_iov_vfio/parameters/sema_probe' 2>/dev/null + sudo sh -c 'echo 0x121000010,1 > /sys/module/vgsp/parameters/sema_probe' 2>/dev/null sleep 1 VALS=$(sudo dmesg -T | grep -A4 "sema-probe: va=0x121000010" | tail -4) SPA=$(echo "$VALS" | grep -oE "pa=0x[0-9a-f]+" | head -1 | cut -d= -f2) CUR=$(echo "$VALS" | grep -oE "\[0\] 0x[0-9a-f]+" | head -1 | awk '{print $2}') if [ -n "$SPA" ] && [ -n "$CUR" ]; then NEXT=$(printf '0x%x' $(( CUR + 1 ))) - sudo sh -c "echo 0x$SPA,$NEXT > /sys/module/open_iov_vfio/parameters/poke_guest" 2>/dev/null + sudo sh -c "echo 0x$SPA,$NEXT > /sys/module/vgsp/parameters/poke_guest" 2>/dev/null echo " [$((i*10))s] cdt=$PID sema $CUR -> $NEXT" else echo " [$((i*10))s] cdt=$PID (sema unresolved)" diff --git a/tools/guest-diag/semfix_uvmt.py b/tools/guest-diag/semfix_uvmt.py index 636e1f4..ba4f4f7 100755 --- a/tools/guest-diag/semfix_uvmt.py +++ b/tools/guest-diag/semfix_uvmt.py @@ -209,7 +209,7 @@ def dmesg_releases(seen): if not line or line in seen: continue seen.add(line) - log("push: %s" % line.replace("gsp-resman-vfio: ", "")) + log("push: %s" % line.replace("vgsp: ", "")) def cdt_pid(): diff --git a/tools/guest-diag/semfix_watch.py b/tools/guest-diag/semfix_watch.py index 1bb4b39..5740b42 100644 --- a/tools/guest-diag/semfix_watch.py +++ b/tools/guest-diag/semfix_watch.py @@ -42,7 +42,7 @@ import time HERE = os.path.dirname(os.path.abspath(__file__)) VMEXEC = os.path.normpath(os.path.join(HERE, "..", "..", "scripts", "vgpu_vm.py")) -PARAM = "/sys/module/open_iov_vfio/parameters" +PARAM = "/sys/module/vgsp/parameters" QMP_SOCK = os.environ.get("QMP_SOCK", "/tmp/qemu-qmp.sock") GPU_VA_LO = 0x100000000 diff --git a/tools/guest-diag/vmcycle.sh b/tools/guest-diag/vmcycle.sh index 6faaa75..d3dcbec 100755 --- a/tools/guest-diag/vmcycle.sh +++ b/tools/guest-diag/vmcycle.sh @@ -1,6 +1,6 @@ #!/bin/bash # vmcycle.sh - reload cycle for the emulated vGPU stack: -# stop QEMU -> remove mdevs -> rmmod/insmod open-iov-vfio.ko -> create a +# stop QEMU -> remove mdevs -> rmmod/insmod vgsp.ko -> create a # fresh mdev -> patch its UUID into the runtime launch script -> relaunch. # # ALL artifacts stay inside this directory (tools/guest-diag/) so nothing is @@ -17,7 +17,7 @@ set -e HERE="$(cd "$(dirname "$0")" && pwd)" TEMPLATE="$HERE/launch_qemu_rootport.sh" QEMU_SCRIPT="${QEMU_SCRIPT:-$HERE/launch_qemu_rootport.run.sh}" -MODULE="${MODULE:-$HERE/../../kernel/open-iov-vfio.ko}" +MODULE="${MODULE:-$HERE/../../kernel/vgsp.ko}" MDEV_PARENT="${MDEV_PARENT:-0000:01:00.0}" MDEV_TYPE="${MDEV_TYPE:-nvidia-nvidia-vgpu-turing}" RUNDIR="$HERE/run" @@ -30,7 +30,7 @@ sleep 4 for m in /sys/bus/mdev/devices/*; do [ -d "$m" ] && echo 1 | sudo tee "$m/remove" >/dev/null done -sudo rmmod open_iov_vfio 2>/dev/null || true +sudo rmmod vgsp 2>/dev/null || true sudo insmod "$MODULE" U=$(uuidgen) echo "$U" | sudo tee "/sys/class/mdev_bus/$MDEV_PARENT/mdev_supported_types/$MDEV_TYPE/create" >/dev/null diff --git a/tools/guest-diag/vmrestart.sh b/tools/guest-diag/vmrestart.sh index 8c15a89..f94521c 100755 --- a/tools/guest-diag/vmrestart.sh +++ b/tools/guest-diag/vmrestart.sh @@ -1,5 +1,5 @@ #!/bin/bash -# vmrestart.sh - stop QEMU, reload open-iov-vfio.ko from the tree, fresh mdev, +# vmrestart.sh - stop QEMU, reload vgsp.ko from the tree, fresh mdev, # relaunch the vGPU VM. Everything bounded so a stuck step cannot hang the # caller. set -u @@ -20,8 +20,8 @@ for m in /sys/bus/mdev/devices/*; do timeout 20 sudo sh -c "echo 1 > $m/remove" || echo "WARN: mdev remove timeout" done -timeout 30 sudo rmmod open_iov_vfio || { echo "ERROR: rmmod failed"; exit 1; } -sudo insmod kernel/open-iov-vfio.ko || { echo "ERROR: insmod failed"; exit 1; } +timeout 30 sudo rmmod vgsp || { echo "ERROR: rmmod failed"; exit 1; } +sudo insmod kernel/vgsp.ko || { echo "ERROR: insmod failed"; exit 1; } U=$(uuidgen) echo "$U" | sudo tee /sys/class/mdev_bus/0000:01:00.0/mdev_supported_types/nvidia-nvidia-vgpu-turing/create >/dev/null |
