summaryrefslogtreecommitdiffstats
path: root/tools/guest-diag/wall2/slotfill2.sh
blob: 33ad702074732c786362e2ae1d58eb588ebd4e5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
cd /tmp
PID=""
for i in $(seq 1 200); do PID=$(pgrep -x vk_frame | head -1); [ -n "$PID" ] && break; sleep 0.05; done
END=$((SECONDS+45))
while [ $SECONDS -lt $END ]; do
  [ -d /proc/$PID ] || break
  for m in $(grep 'nvidiactl' /proc/$PID/maps 2>/dev/null | awk '$2 ~ /rw-s/ {print $1}'); do
    lo=${m%-*}; hi=${m#*-}
    size=$((0x$hi - 0x$lo))
    [ $size -gt 65536 ] && continue
    off=$((0x$lo + 0x2e))
    v=$(dd if=/proc/$PID/mem bs=1 skip=$off count=2 2>/dev/null | xxd -p)
    if [ "$v" = "ffff" ]; then
      printf '\x00\x00' | dd of=/proc/$PID/mem bs=1 seek=$off count=2 conv=notrunc 2>/dev/null
    fi
  done
  sleep 0.1
done