MVGAL Troubleshooting Guide

Version: 0.5.0

Last Updated: 2026-06-06


Table of Contents

  1. Diagnostic Commands
  2. Installation Issues
  3. GPU Not Detected
  4. Kernel Module Issues
  5. Performance Issues
  6. Steam / Proton Integration
  7. Daemon & Runtime Issues
  8. Multi-GPU Issues
  9. Collecting Logs & Reporting Bugs

Diagnostic Commands

MVGAL provides several diagnostic tools. Run these first when troubleshooting:

# System-wide health check
mvgal-info --all

# Daemon status
mvgald --status

# Connected GPUs
mvgal-info --devices

# Scheduler status
mvgal-sched status

# Power state
mvgal-powercurve --status

# Configuration
mvgal-config --dump

# Full system report (for bug reports)
mvgal-info --report > mvgal-report.txt

Installation Issues

Package Not Found

Problem: dnf install mvgal fails with "package not found".

Solutions:

  1. Enable the COPR repository:
  2.    dnf copr enable mvgal/mvgal
       dnf install mvgal
  3. Verify your Fedora version (mvgal requires Fedora 40+):
  4.    cat /etc/fedora-release
  5. For other distributions, build from source (see docs/KERNEL_MODULE.md).

Dependency Conflicts

Problem: dpkg / rpm reports conflicting dependencies.

Solutions:

  1. Ensure your kernel headers are installed:
  2.    # Fedora/RHEL
       dnf install kernel-devel kernel-headers
  3. Verify Vulkan SDK ≥ 1.3 is installed:
  4.    vulkaninfo --summary
  5. For Rust components, ensure rustc ≥ 1.70:
  6.    rustc --version

Build Fails from Source

Problem: cmake --build build fails.

Solutions:

  1. Check CMake output for missing dependencies.
  2. Ensure you have the full build chain:
  3.    # Fedora/RHEL
       dnf builddep mvgal
  4. For kernel module, verify DKMS:
  5.    dkms status

GPU Not Detected

No GPUs Listed

Problem: mvgal-info --devices returns empty.

Checks:

  1. Verify GPUs are visible to Linux:
  2.    lspci | grep -E "VGA|3D|Display"
  3. Check the daemon is running:
  4.    systemctl status mvgald
  5. Check dmesg for MVGAL messages:
  6.    dmesg | grep -i mvgal
  7. Verify the NVIDIA/AMD driver is loaded:
  8.    lsmod | grep -E "nvidia|amdgpu|i915"

Vendor-Specific GPU Not Showing

NVIDIA:

AMD:

Intel:

Moore Threads:


Kernel Module Issues

Module Fails to Load

Problem: modprobe mvgal fails.

# Check kernel version compatibility
uname -r

# Check module file
modinfo mvgal

# Try loading with verbose output
insmod /lib/modules/$(uname -r)/extra/mvgal/mvgal.ko 2>&1

# Check dmesg
dmesg | tail -50 | grep -i mvgal

Diagnostic:

Solutions:

  1. Kernel too old: MVGAL requires 5.15 LTS minimum.
  2. Missing symbols: Rebuild against current kernel headers.
  3. Secure Boot: The packaged modules are signed with a per-install key.
   sudo mvgal-enroll-mok
   sudo reboot
   # At the blue MOK Manager screen after reboot, choose
   # 'Enroll key from disk' -> /usr/lib/mvgal/keys/mvgal-signing.der
   # and confirm with the one-time password you chose.

Enroll it with the firmware MOK database (do NOT disable Secure Boot): After enrollment, modprobe mvgal works and Key was rejected by service no longer appears. DKMS-rebuilt modules are signed with the same key automatically.

  1. SELinux: Check for AVC denials:
  2.    ausearch -m avc -ts recent | grep mvgal

DKMS Build Fails

Problem: dkms build mvgal fails.

Solutions:

  1. Ensure kernel-devel matches running kernel:
  2.    dnf list installed kernel-devel
       uname -r
  3. Check DKMS logs:
  4.    cat /var/lib/dkms/mvgal/*/build/make.log

IOCTL Returns -ENOTTY

Problem: Application reports "Invalid argument" on IOCTL.

Checks:

  1. Verify device node exists:
  2.    ls -l /dev/mvgal*
  3. Check device permissions (should be crw-rw----):
  4.    getfacl /dev/mvgal0
  5. Ensure udev rules are installed:
  6.    cat /etc/udev/rules.d/99-mvgal.rules

Performance Issues

Below Expected FPS

# Check GPU utilisation
mvgal-info --utilization

# Check scheduler
mvgal-sched status
mvgal-sched analyze

# Check power state (may be throttling)
mvgal-powercurve --status

# Check VRAM usage
mvgal-info --memory

Diagnostic:

Solutions:

  1. VRAM pressure: Reduce texture quality or resolution.
  2. Thermal throttling: Check GPU temperatures:
  3.    mvgal-info --temperature
  4. Scheduler mismatch: Try a different strategy:
  5.    mvgal-sched setpolicy <appname> rld
  6. Power state: Ensure gamemode is active:
  7.    gamemoded -s

Stuttering / Frame Pacing

# Check frame time variance
mvgal-info --frametimes

# Check for compositor interference
mvgal-info --compositor

Diagnostic:

Solutions:

  1. Disable compositor for full-screen apps.
  2. Use AFF scheduler strategy to pin the app to one GPU:
  3.    mvgal-sched setpolicy <appname> aff
  4. Check NTSYNC is working (for Windows games):
  5.    cat /proc/sys/kernel/ntsync

Steam / Proton Integration

Steam Games Not Detected

Problem: Games launch but MVGAL is not intercepting.

Solutions:

  1. Verify the Steam runtime hook is active:
  2.    ls ~/.steam/steam/steamapps/common/MVGAL/
  3. Set Proton environment variables:
  4.    # In Steam launch options for the game:
       MVGAL_ENABLE=1 PROTON_ENABLE_NVAPI=1 %command%
  5. Check the frame pacer is running:
  6.    ps aux | grep mvgal-pacer

Proton FPS Lower Than Native

Problem: Proton games underperform native Linux games.

# Check which WCL shims are loaded
mvgal-info --wcl

# Check DXVK/VKD3D-Proton integration
mvgal-info --vulkan-layers

Diagnostic:

Solutions:

  1. Ensure VKD3D-Proton is up to date.
  2. Enable NVAPI translation for NVIDIA GPUs:
  3.    PROTON_ENABLE_NVAPI=1
  4. Try different scheduler strategies — some games benefit from PRI.

Daemon & Runtime Issues

Daemon Won't Start

Problem: systemctl start mvgald fails.

# Check daemon status
systemctl status mvgald

# Check journal
journalctl -u mvgald -n 50

# Try running manually as root
sudo mvgald --foreground

Diagnostic:

Solutions:

  1. D-Bus service not installed:
  2.    sudo cp runtime/daemon/org.mvgal.daemon.conf /etc/dbus-1/system.d/
  3. Socket conflict: Check port 8080 (REST API) is free:
  4.    ss -tlnp | grep 8080
  5. Permission denied on /dev/mvgal*:
  6.    sudo chmod 666 /dev/mvgal0

IPC Connection Failure

Problem: Tools can't connect to daemon.

# Test D-Bus
dbus-send --system --dest=org.mvgal.daemon --print-reply /org/mvgal/daemon org.freedesktop.DBus.Ping

# Check Unix socket
ls -l /run/mvgald.sock

Diagnostic:


Multi-GPU Issues

Only One GPU Used

Problem: All work lands on a single GPU.

Solutions:

  1. Check scheduler strategy — default is PRI which prefers fastest:
  2.    mvgal-sched getpolicy <appname>
  3. Force load balancing:
  4.    mvgal-sched setpolicy <appname> rr
  5. Verify P2P connectivity between GPUs:
  6.    mvgal-info --topology

P2P Transfer Slow

Problem: Inter-GPU transfers bottleneck performance.

# Check topology
mvgal-info --topology

# Measure bandwidth
mvgal-info --benchmark-p2p

Checks:

Solutions:

  1. Use NVLink/XGMI devices when available.
  2. For PCIe-connected GPUs, ensure PCIe Gen4+.
  3. The GA strategy prefers NVLink peers.
  4. Consider PPL for pipeline workloads — reduces cross-GPU transfers.

Collecting Logs & Reporting Bugs

Gather System Info

# Comprehensive report
mvgal-info --report > mvgal-report.txt

# Daemon logs
journalctl -u mvgald > mvgald.log

# Kernel messages
dmesg | grep -i mvgal > mvgal-kernel.log

# Configuration
mvgal-config --dump > mvgal-config.txt

Debug Mode

Enable debug logging for more detail:

# Daemon
sudo mvgald --foreground --log-level=debug

# Per-app
MVGAL_LOG_LEVEL=debug ./myapp

Report a Bug

Report issues at: https://github.com/your-org/mvgal/issues

Include:


See docs/ARCHITECTURE.md for system architecture. See docs/KERNEL_MODULE.md for module build/install. See docs/HARDWARE_COMPATIBILITY.md for supported hardware.