summaryrefslogtreecommitdiffstats
path: root/tools/guest-diag/wall2/nudge2.sh
blob: 16ebcd81dad959d65cd1947952fd6412bd7f3d5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
# nudge2.sh - widened readiness-word nudger: ALL rw-s nvidia mappings <=256K,
# writes 1 to any +0x80 u32 that is 0.
DUR=${1:-300}
F=/dev/shm/vgpu-guest-ram
END=$(( $(date +%s) + DUR ))
sshpass -p ubuntu scp -o StrictHostKeyChecking=no -P 2222 /tmp/opencode/guest_words2.sh ubuntu@127.0.0.1:/tmp/guest_words2.sh >/dev/null 2>&1
while [ "$(date +%s)" -lt "$END" ]; do
  OUT=$(timeout 12 sshpass -p ubuntu ssh -o StrictHostKeyChecking=no -p 2222 ubuntu@127.0.0.1 "sudo bash /tmp/guest_words2.sh" 2>/dev/null)
  [ -n "$OUT" ] && echo "[$(date +%H:%M:%S)] words:" && echo "$OUT"
  echo "$OUT" | while read -r VA PA SZ; do
    [ -z "$PA" ] && continue
    PAD=$((PA)); FOD=$((PAD - 0x80000000)); [ $FOD -lt 0 ] && FOD=$((PAD))
    CUR=$(sudo dd if=$F bs=4 skip=$((FOD/4)) count=1 2>/dev/null | xxd -p)
    if [ "$CUR" = "00000000" ]; then
      printf '\x01\x00\x00\x00' | sudo dd of=$F bs=1 seek=$FOD count=4 conv=notrunc 2>/dev/null
      echo "  NUDGE va=$VA pa=$PA -> 1"
    fi
  done
  sleep 1.5
done
echo NUDGE2-DONE