Uploaded sanitized BC250/ROCm Repository.
This commit is contained in:
@@ -0,0 +1,186 @@
|
||||
#!/bin/bash
|
||||
# BC-250 v3 Post-Reboot Verification Script
|
||||
# Run this IMMEDIATELY after booting with v3 module
|
||||
#
|
||||
# Tests in order of escalation:
|
||||
# 1. Module verification (no GPU access)
|
||||
# 2. Boot parameter verification
|
||||
# 3. sysfs GPU state check
|
||||
# 4. rocminfo (light GPU access)
|
||||
# 5. Single HIP test (compute)
|
||||
# 6. Sequential HIP test (the crash scenario from v2)
|
||||
#
|
||||
# Usage: bash post_reboot_v3_test.sh [--full]
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
pass() { echo -e "${GREEN}[PASS]${NC} $1"; }
|
||||
fail() { echo -e "${RED}[FAIL]${NC} $1"; }
|
||||
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||
info() { echo -e " $1"; }
|
||||
|
||||
FULL_TEST=false
|
||||
[[ "${1:-}" == "--full" ]] && FULL_TEST=true
|
||||
|
||||
echo "============================================"
|
||||
echo " BC-250 v3 Post-Reboot Verification"
|
||||
echo " $(date)"
|
||||
echo "============================================"
|
||||
echo ""
|
||||
|
||||
# Test 1: Kernel version
|
||||
echo "--- Test 1: Kernel & Module ---"
|
||||
KVER=$(uname -r)
|
||||
if [[ "$KVER" == "6.18.8-3-cachyos" ]]; then
|
||||
pass "Kernel: $KVER"
|
||||
else
|
||||
warn "Unexpected kernel: $KVER"
|
||||
fi
|
||||
|
||||
# Test 2: v3 strings in loaded module
|
||||
V3_STRINGS=$(sudo dmesg | grep -c "BC-250" 2>/dev/null || echo "0")
|
||||
if [[ "$V3_STRINGS" -ge 1 ]]; then
|
||||
pass "v3 BC-250 messages in dmesg ($V3_STRINGS occurrences)"
|
||||
else
|
||||
warn "No BC-250 messages in dmesg yet (may appear on first GPU use)"
|
||||
fi
|
||||
|
||||
# Check GFXOFF disable message
|
||||
if sudo dmesg | grep -q "GFXOFF disabled"; then
|
||||
pass "GFXOFF disabled message confirmed in dmesg"
|
||||
else
|
||||
fail "GFXOFF disable message NOT found — v3 patch may not be loaded"
|
||||
fi
|
||||
|
||||
# Test 3: ppfeaturemask
|
||||
echo ""
|
||||
echo "--- Test 2: Boot Parameters ---"
|
||||
CMDLINE=$(cat /proc/cmdline)
|
||||
if echo "$CMDLINE" | grep -q "ppfeaturemask=0xfff73ef7"; then
|
||||
pass "ppfeaturemask=0xfff73ef7 in boot cmdline"
|
||||
else
|
||||
warn "ppfeaturemask not in boot cmdline (may be set via modprobe)"
|
||||
fi
|
||||
|
||||
# Check actual ppfeaturemask from module
|
||||
ACTUAL_PP=$(cat /sys/module/amdgpu/parameters/ppfeaturemask 2>/dev/null || echo "unknown")
|
||||
if [[ "$ACTUAL_PP" == "0xfff73ef7" ]] || [[ "$ACTUAL_PP" == "4293869303" ]]; then
|
||||
pass "Active ppfeaturemask: $ACTUAL_PP (GFXOFF+DeepSleep+ULV disabled)"
|
||||
else
|
||||
warn "Active ppfeaturemask: $ACTUAL_PP (expected 0xfff73ef7 / 4293869303)"
|
||||
fi
|
||||
|
||||
# Test 4: KIQ errors check
|
||||
echo ""
|
||||
echo "--- Test 3: KIQ Error Check ---"
|
||||
KIQ_ERRORS=$(sudo dmesg | grep -c "timeout waiting for kiq fence" 2>/dev/null || echo "0")
|
||||
if [[ "$KIQ_ERRORS" -eq 0 ]]; then
|
||||
pass "Zero KIQ timeout errors"
|
||||
else
|
||||
fail "Found $KIQ_ERRORS KIQ timeout errors!"
|
||||
fi
|
||||
|
||||
# Check for GPU unreachable messages
|
||||
GPU_DEAD=$(sudo dmesg | grep -c "GPU unreachable\|GPU died" 2>/dev/null || echo "0")
|
||||
if [[ "$GPU_DEAD" -eq 0 ]]; then
|
||||
pass "Zero GPU-unreachable events"
|
||||
else
|
||||
fail "Found $GPU_DEAD GPU health-check failures!"
|
||||
fi
|
||||
|
||||
# Test 5: sysfs GPU state
|
||||
echo ""
|
||||
echo "--- Test 4: GPU State ---"
|
||||
if [[ -f /sys/class/drm/card0/device/pp_dpm_sclk ]]; then
|
||||
SCLK=$(cat /sys/class/drm/card0/device/pp_dpm_sclk)
|
||||
pass "GPU clock levels accessible:"
|
||||
echo "$SCLK" | sed 's/^/ /'
|
||||
else
|
||||
fail "Cannot read GPU clock levels"
|
||||
fi
|
||||
|
||||
if [[ -f /sys/class/drm/card0/device/pp_od_clk_voltage ]]; then
|
||||
OD=$(cat /sys/class/drm/card0/device/pp_od_clk_voltage)
|
||||
pass "OD voltage table accessible:"
|
||||
echo "$OD" | sed 's/^/ /'
|
||||
else
|
||||
warn "Cannot read OD voltage table"
|
||||
fi
|
||||
|
||||
# Test 6: cyan-skillfish-governor
|
||||
echo ""
|
||||
echo "--- Test 5: Governor Status ---"
|
||||
if systemctl is-active --quiet cyan-skillfish-governor.service 2>/dev/null; then
|
||||
pass "cyan-skillfish-governor is running"
|
||||
else
|
||||
warn "cyan-skillfish-governor is NOT running"
|
||||
fi
|
||||
|
||||
# Test 7: rocminfo
|
||||
echo ""
|
||||
echo "--- Test 6: ROCm Runtime ---"
|
||||
if command -v rocminfo &>/dev/null; then
|
||||
ROCM_OUT=$(timeout 30 rocminfo 2>&1)
|
||||
if echo "$ROCM_OUT" | grep -q "gfx1013\|gfx10"; then
|
||||
pass "rocminfo detects GPU (gfx1013)"
|
||||
elif echo "$ROCM_OUT" | grep -q "Agent"; then
|
||||
pass "rocminfo detects agents"
|
||||
info "$(echo "$ROCM_OUT" | grep -i "name" | head -3)"
|
||||
else
|
||||
warn "rocminfo ran but output unexpected"
|
||||
fi
|
||||
else
|
||||
warn "rocminfo not found"
|
||||
fi
|
||||
|
||||
# Test 8: HIP test (only with --full)
|
||||
echo ""
|
||||
if $FULL_TEST; then
|
||||
echo "--- Test 7: HIP Compute (FULL MODE) ---"
|
||||
|
||||
HIP_TEST="/home/dars/VibeROCm/hip_vector_add/hip_vector_add"
|
||||
if [[ -x "$HIP_TEST" ]]; then
|
||||
echo " Running first HIP test..."
|
||||
if timeout 60 "$HIP_TEST" 2>&1; then
|
||||
pass "First HIP vector_add completed"
|
||||
sleep 3
|
||||
|
||||
echo ""
|
||||
echo " Running SECOND HIP test (this is the crash scenario)..."
|
||||
echo " Monitoring dmesg for GPU errors during test..."
|
||||
sudo dmesg -C # Clear dmesg
|
||||
if timeout 60 "$HIP_TEST" 2>&1; then
|
||||
pass "Second HIP vector_add completed — CRASH BUG RESOLVED!"
|
||||
# Check if any GPU errors occurred during the test
|
||||
POST_ERRORS=$(sudo dmesg | grep -c "BC-250.*GPU\|timeout\|error" 2>/dev/null || echo "0")
|
||||
if [[ "$POST_ERRORS" -eq 0 ]]; then
|
||||
pass "No GPU errors during sequential HIP tests"
|
||||
else
|
||||
warn "GPU events during test ($POST_ERRORS), check dmesg"
|
||||
fi
|
||||
else
|
||||
fail "Second HIP test failed or timed out"
|
||||
sudo dmesg | grep -i "BC-250\|error\|timeout\|GPU" | tail -10
|
||||
fi
|
||||
else
|
||||
fail "First HIP test failed"
|
||||
sudo dmesg | grep -i "BC-250\|error\|timeout\|GPU" | tail -10
|
||||
fi
|
||||
else
|
||||
warn "HIP test binary not found: $HIP_TEST"
|
||||
info "Build with: cd /home/dars/VibeROCm/hip_vector_add && hipcc hip_vector_add.cpp -o hip_vector_add"
|
||||
fi
|
||||
else
|
||||
echo "--- Test 7: HIP Compute (SKIPPED — use --full to enable) ---"
|
||||
info "Run: bash post_reboot_v3_test.sh --full"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "============================================"
|
||||
echo " Verification Complete"
|
||||
echo "============================================"
|
||||
Reference in New Issue
Block a user