#!/bin/sh
# DF-4525 fix validation — rebuild amdgpu.ko with fix.diff applied and
# re-run the exact same demo. EXPECTED: no panic; "after 1st free" shows
# vddc=0 vddci=0 (pointers NULLed); second call is kfree(NULL); guest
# stays up. A/B against the baseline panic (panic.txt).
set -e
CFG=/home/maxx/dfbsd/dfbsd/dfbsd-qemu/config
D=$(cd "$(dirname "$0")" && pwd)
scp -F $CFG $D/fix.diff dfbsd:/root/
ssh -F $CFG dfbsd /bin/sh <<'EOF'
set -e
cd /usr/src && patch -p1 -s < /root/fix.diff
cd /usr/src/sys/dev/drm/amd/amdgpu
make obj >/root/fix_build.log 2>&1 || true
make >>/root/fix_build.log 2>&1
nm -g /usr/obj/usr/src/sys/dev/drm/amd/amdgpu/amdgpu.ko | grep -w amdgpu_free_extended_power_table
kldload /usr/obj/usr/src/sys/dev/drm/amd/amdgpu/amdgpu.ko
kldload /root/df4525/df4525demo.ko
echo "MODULES LOADED, NO PANIC"
dmesg | tail -8
EOF
