Uploaded sanitized BC250/ROCm Repository.
This commit is contained in:
@@ -0,0 +1,193 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# Step 6: Verify Installation — AMD BC-250 ROCm
|
||||
# =============================================================================
|
||||
# Post-reboot verification. Checks all critical components:
|
||||
# - amdgpu module loaded (out-of-tree, GFXOFF disabled)
|
||||
# - No KIQ timeouts or GPU crashes
|
||||
# - Device nodes present
|
||||
# - ppfeaturemask correct
|
||||
# - GPU clock states available
|
||||
# - Governor active (if installed)
|
||||
# - rocminfo detects GPU
|
||||
#
|
||||
# Run as: bash 06_verify_installation.sh
|
||||
# =============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
PASS=0
|
||||
FAIL=0
|
||||
WARN=0
|
||||
|
||||
check() {
|
||||
local name="$1"
|
||||
local result="$2"
|
||||
local expected="${3:-}"
|
||||
|
||||
if [[ "$result" == "PASS" ]]; then
|
||||
echo " [PASS] $name"
|
||||
((PASS++))
|
||||
elif [[ "$result" == "WARN" ]]; then
|
||||
echo " [WARN] $name${expected:+ — $expected}"
|
||||
((WARN++))
|
||||
else
|
||||
echo " [FAIL] $name${expected:+ — expected: $expected}"
|
||||
((FAIL++))
|
||||
fi
|
||||
}
|
||||
|
||||
echo "============================================"
|
||||
echo " BC-250 ROCm Installation Verification"
|
||||
echo "============================================"
|
||||
echo ""
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# 1. amdgpu Module
|
||||
# ─────────────────────────────────────────────
|
||||
echo "--- Module Status ---"
|
||||
|
||||
if lsmod | grep -q "^amdgpu"; then
|
||||
SIZE=$(lsmod | grep "^amdgpu" | awk '{print $2}')
|
||||
check "amdgpu module loaded (${SIZE} bytes)" "PASS"
|
||||
else
|
||||
check "amdgpu module loaded" "FAIL" "module not loaded"
|
||||
fi
|
||||
|
||||
# Check out-of-tree (patched module indicator)
|
||||
if dmesg 2>/dev/null | grep -q "loading out-of-tree module"; then
|
||||
check "Out-of-tree module (patched)" "PASS"
|
||||
else
|
||||
check "Out-of-tree module (patched)" "WARN" "may be using stock module"
|
||||
fi
|
||||
|
||||
# Check GFXOFF disabled
|
||||
if dmesg 2>/dev/null | grep -qi "gfxoff.*not supported\|gfxoff.*disabled\|does not support GFXOFF"; then
|
||||
check "GFXOFF disabled" "PASS"
|
||||
else
|
||||
check "GFXOFF disabled" "WARN" "no GFXOFF message in dmesg"
|
||||
fi
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# 2. Stability Checks
|
||||
# ─────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "--- Stability ---"
|
||||
|
||||
KIQ_COUNT=$(dmesg 2>/dev/null | grep -c "timeout waiting for kiq fence" || echo 0)
|
||||
if [[ "$KIQ_COUNT" -eq 0 ]]; then
|
||||
check "KIQ timeouts: 0" "PASS"
|
||||
else
|
||||
check "KIQ timeouts: $KIQ_COUNT" "FAIL" "should be 0"
|
||||
fi
|
||||
|
||||
DEAD_COUNT=$(dmesg 2>/dev/null | grep -c "GPU unreachable\|GPU died" || echo 0)
|
||||
if [[ "$DEAD_COUNT" -eq 0 ]]; then
|
||||
check "Dead-GPU events: 0" "PASS"
|
||||
else
|
||||
check "Dead-GPU events: $DEAD_COUNT" "WARN" "dead-GPU bypass triggered"
|
||||
fi
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# 3. Device Nodes
|
||||
# ─────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "--- Device Nodes ---"
|
||||
|
||||
for DEV in /dev/dri/card0 /dev/dri/renderD128 /dev/kfd; do
|
||||
if [[ -e "$DEV" ]]; then
|
||||
check "$DEV exists" "PASS"
|
||||
else
|
||||
check "$DEV exists" "FAIL" "not found"
|
||||
fi
|
||||
done
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# 4. Boot Parameters
|
||||
# ─────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "--- Boot Parameters ---"
|
||||
|
||||
PPF=$(cat /sys/module/amdgpu/parameters/ppfeaturemask 2>/dev/null || echo "N/A")
|
||||
if [[ "$PPF" == "0xfff73ef7" || "$PPF" == "4293918455" ]]; then
|
||||
check "ppfeaturemask: $PPF" "PASS"
|
||||
else
|
||||
check "ppfeaturemask: $PPF" "FAIL" "expected 0xfff73ef7"
|
||||
fi
|
||||
|
||||
NORETRY=$(cat /sys/module/amdgpu/parameters/noretry 2>/dev/null || echo "N/A")
|
||||
check "noretry: $NORETRY" "$([ "$NORETRY" = "0" ] && echo PASS || echo WARN)"
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# 5. GPU Status
|
||||
# ─────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "--- GPU Status ---"
|
||||
|
||||
if [[ -f /sys/class/drm/card0/device/pp_dpm_sclk ]]; then
|
||||
CLOCKS=$(cat /sys/class/drm/card0/device/pp_dpm_sclk)
|
||||
echo " GPU Clocks:"
|
||||
echo "$CLOCKS" | sed 's/^/ /'
|
||||
check "GPU clock states available" "PASS"
|
||||
else
|
||||
check "GPU clock states" "FAIL" "pp_dpm_sclk not found"
|
||||
fi
|
||||
|
||||
# Governor check
|
||||
if systemctl --user is-active cyan-skillfish-governor 2>/dev/null | grep -q "active"; then
|
||||
check "Governor service active" "PASS"
|
||||
elif pgrep -f "cyan-skillfish-governor" &>/dev/null; then
|
||||
check "Governor process running" "PASS"
|
||||
else
|
||||
check "Governor" "WARN" "not running (optional)"
|
||||
fi
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# 6. ROCm Runtime
|
||||
# ─────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "--- ROCm Runtime ---"
|
||||
|
||||
if command -v rocminfo &>/dev/null; then
|
||||
ROCM_OUT=$(HSA_OVERRIDE_GFX_VERSION=10.1.0 rocminfo 2>&1 || true)
|
||||
|
||||
if echo "$ROCM_OUT" | grep -q "gfx1010"; then
|
||||
check "rocminfo detects gfx1010" "PASS"
|
||||
else
|
||||
check "rocminfo detects gfx1010" "FAIL" "GPU not found"
|
||||
fi
|
||||
|
||||
AGENT_NAME=$(echo "$ROCM_OUT" | grep "Marketing Name" | head -1 | sed 's/.*: *//')
|
||||
if [[ -n "$AGENT_NAME" ]]; then
|
||||
check "GPU Name: $AGENT_NAME" "PASS"
|
||||
fi
|
||||
|
||||
CU_COUNT=$(echo "$ROCM_OUT" | grep "Compute Unit:" | tail -1 | awk '{print $NF}')
|
||||
if [[ "$CU_COUNT" == "24" ]]; then
|
||||
check "Compute Units: 24" "PASS"
|
||||
elif [[ -n "$CU_COUNT" ]]; then
|
||||
check "Compute Units: $CU_COUNT" "WARN" "expected 24"
|
||||
fi
|
||||
|
||||
if echo "$ROCM_OUT" | grep -q "Done"; then
|
||||
check "rocminfo completed successfully" "PASS"
|
||||
fi
|
||||
else
|
||||
check "rocminfo" "FAIL" "not installed"
|
||||
fi
|
||||
|
||||
# ─────────────────────────────────────────────
|
||||
# Summary
|
||||
# ─────────────────────────────────────────────
|
||||
echo ""
|
||||
echo "============================================"
|
||||
echo " Results: $PASS passed, $FAIL failed, $WARN warnings"
|
||||
echo "============================================"
|
||||
|
||||
if [[ "$FAIL" -eq 0 ]]; then
|
||||
echo " STATUS: READY — Run 07_run_hip_tests.sh for GPU compute tests"
|
||||
else
|
||||
echo " STATUS: ISSUES DETECTED — Review failures above"
|
||||
fi
|
||||
|
||||
exit "$FAIL"
|
||||
Reference in New Issue
Block a user