84 lines
3.4 KiB
Bash
84 lines
3.4 KiB
Bash
#!/usr/bin/env bash
|
|
# BIOS VRAM guidance + GTT verification
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR/../../lib/common.sh"
|
|
source "$SCRIPT_DIR/../../lib/detect.sh"
|
|
source "$SCRIPT_DIR/../../lib/format.sh"
|
|
|
|
log_header "VRAM / GTT Memory Optimization"
|
|
|
|
vram_total="$(detect_vram_total)"
|
|
gtt_total="$(detect_gtt_total)"
|
|
vram_gib=$(echo "scale=1; $vram_total / 1073741824" | bc)
|
|
gtt_gib=$(echo "scale=1; $gtt_total / 1073741824" | bc)
|
|
|
|
log_info "Current memory allocation:"
|
|
print_kv "VRAM (dedicated)" "${vram_gib} GiB"
|
|
print_kv "GTT (dynamic)" "${gtt_gib} GiB"
|
|
print_kv "System RAM (visible)" "$(echo "scale=1; $(detect_system_ram_kb) / 1048576" | bc) GiB"
|
|
echo ""
|
|
|
|
# ── Check if BIOS VRAM change is needed ──────────────────
|
|
# Optimal: VRAM <= 1 GiB (0.5 GiB ideal), rest dynamically via GTT
|
|
if (( vram_total > 1073741824 )); then
|
|
log_warn "VRAM is ${vram_gib} GiB — this permanently locks memory away from the OS."
|
|
log_info "AMD recommends 512 MB dedicated VRAM for Strix Halo."
|
|
log_info "The GPU accesses additional memory dynamically via GTT (kernel params)."
|
|
echo ""
|
|
|
|
printf "${BOLD}BIOS Configuration Steps (HP ZBook Ultra G1a):${RESET}\n"
|
|
echo ""
|
|
echo " 1. Reboot the laptop"
|
|
echo " 2. Press F10 repeatedly during boot to enter BIOS Setup"
|
|
echo " 3. Navigate to: Advanced > Built-in Device Options"
|
|
echo " (or Advanced > Display > UMA Frame Buffer Size)"
|
|
echo " 4. Set UMA Frame Buffer Size to: 512 MB (or smallest available)"
|
|
echo " 5. Save and Exit (F10)"
|
|
echo ""
|
|
echo " NOTE: The exact menu path may vary by BIOS version."
|
|
echo " Look for 'UMA', 'Frame Buffer', 'VRAM', or 'iGPU Memory'."
|
|
echo ""
|
|
|
|
log_info "After BIOS change + reboot with kernel params, expected state:"
|
|
echo " VRAM: ~512 MiB"
|
|
echo " GTT: ~$(human_mib "$(recommended_gttsize_mib)") (with kernel params)"
|
|
echo " System RAM: ~$(echo "scale=1; $(detect_total_physical_ram_kb) / 1048576 - 0.5" | bc) GiB visible"
|
|
echo ""
|
|
|
|
elif (( vram_total <= 1073741824 )); then
|
|
log_success "VRAM is ${vram_gib} GiB — already optimal!"
|
|
fi
|
|
|
|
# ── Check GTT ────────────────────────────────────────────
|
|
rec_gttsize="$(recommended_gttsize_mib)"
|
|
rec_gtt_bytes=$(( rec_gttsize * 1048576 ))
|
|
|
|
if (( gtt_total >= rec_gtt_bytes * 3 / 4 )); then
|
|
log_success "GTT is ${gtt_gib} GiB — good (recommended: ~$(human_mib "$rec_gttsize"))"
|
|
else
|
|
log_warn "GTT is ${gtt_gib} GiB — low (recommended: ~$(human_mib "$rec_gttsize"))"
|
|
log_info "This requires kernel boot parameters. Run: make optimize-kernel"
|
|
fi
|
|
|
|
# ── Optional: amd-debug-tools ────────────────────────────
|
|
echo ""
|
|
log_header "Optional: amd-debug-tools (amd-ttm)"
|
|
log_info "AMD provides 'amd-debug-tools' for runtime GTT/TTM inspection."
|
|
|
|
if is_cmd amd-ttm; then
|
|
log_success "amd-ttm is installed"
|
|
log_info "Current GTT settings:"
|
|
amd-ttm 2>/dev/null || true
|
|
elif is_cmd pipx; then
|
|
log_info "Install with: pipx install amd-debug-tools"
|
|
if confirm "Install amd-debug-tools via pipx?"; then
|
|
pipx install amd-debug-tools
|
|
log_success "Installed. Run 'amd-ttm' to inspect GTT allocation."
|
|
fi
|
|
else
|
|
log_info "Install pipx first: sudo dnf install pipx"
|
|
log_info "Then: pipx install amd-debug-tools"
|
|
fi
|