Problem #1 #2
Closed
epicormaxter
started this conversation in
General
Replies: 1 comment
-
|
fix at commit 10752403 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
================================================================================ MVGAL v0.6.0 — COMPREHENSIVE TEST REPORT Date: 2026-07-08 System: Fedora 44, Linux 7.1.3-200.fc44.x86_64 ================================================================================ 1. EXECUTIVE SUMMARY -------------------------------------------------------------------------------- MVGAL (Multi-Vendor GPU Aggregation Layer) is installed but has critical issues. The daemon starts/stops fine and basic GPU enumeration works, but the kernel module cannot load (unsigned, blocked by Secure Boot). Multiple commands are stubs or broken. Version reporting is inconsistent across components. Score: 4/10 — WORKABLE FOR SINGLE-GPU BASICS, BROKEN FOR MULTI-GPU FEATURES 2. WHAT WORKS (PASS) -------------------------------------------------------------------------------- [✓] mvgal --version / --help — CLI help and version display [✓] mvgal status — Shows daemon status, GPU list [✓] mvgal list-gpus — Enumerates GPU: Intel 0x4680 [✓] mvgal show-config — Shows current configuration [✓] mvgal show-stats — Shows runtime statistics [✓] mvgal start / stop / restart — Daemon lifecycle management [✓] mvgal set-strategy — All 9 strategies accepted [✓] mvgal enable-gpu / disable-gpu — GPU enable/disable (valid indices) [✓] mvgal reset-stats — Statistics reset [✓] mvgal reload — Configuration reload [✓] mvgal-info — Detailed GPU info (separate binary) [✓] mvgal-status — Live monitoring (separate binary) [✓] mvgal-enum — JSON GPU enumeration (separate binary) [✓] mvgal-bench — Benchmarks WORK (separate binary) [✓] mvgal-dmabuf-matrix — DMA-BUF matrix generation [✓] mvgal-steam-setup — Steam integration helper [✓] mvgal-config — Configuration tool (separate binary) [✓] Vulkan layer registered — VK_LAYER_MVGAL found by vulkaninfo [✓] OpenCL ICD registered — /etc/OpenCL/vendors/mvgal.icd present [✓] GameMode integration — libmvgal_realtime.so present [✓] Daemon socket/pid management — /run/mvgal/ created correctly [✓] Error handling for bad GPU idx — GPU 999 / -1 properly rejected 3. CRITICAL ISSUES (MUST FIX) ================================================================================ ISSUE #1: KERNEL MODULE CANNOT LOAD — UNSIGNED / SECURE BOOT ──────────────────────────────────────────────────────────────────────────────── Severity: CRITICAL Status: FAIL Commands: pkexec modprobe mvgal pkexec /usr/lib/mvgal/mvgal-pkexec-helper.sh load-module Result: "modprobe: ERROR: could not insert 'mvgal': Key was rejected by service" "Error: Failed to load mvgal. Check dmesg for details." dmesg shows: "Loading of unsigned module is rejected" (4 times in boot log) Impact: Kernel module features totally blocked: - /dev/mvgal0 device node never created - /dev/mvgal_ntsync never created - Multi-GPU dispatch layer not available - DMA-BUF kernel-level sharing not available - P2P transfers over kernel not available - NTSYNC synchronization not available - Power management kernel interfaces not available Root Cause: Kernel module .ko files are NOT signed. Kernel has Secure Boot or lockdown enabled (kernel_lockdown.7). The kernel rejects unsigned module loading. Files affected: /usr/lib/modules/7.1.3-200.fc44.x86_64/kernel/drivers/gpu/drm/mvgal/ ├── mvgal.ko (unsigned) ├── mvgal_intel.ko (unsigned) ├── mvgal_amd.ko (unsigned) ├── mvgal_nvidia.ko (unsigned) ├── mvgal_mtt.ko (unsigned) └── mvgal_ntsync.ko (unsigned) Fix: Sign all kernel modules with a key enrolled in the system's MOK (Machine Owner Key) list, or provide a signed variant for distributions with Secure Boot enabled. See: - /usr/share/doc/mvgal/KERNEL_MODULE.md - mokutil --import /path/to/signing_key.der ISSUE #2: MAIN COMMAND BENCHMARKS ARE STUBS ──────────────────────────────────────────────────────────────────────────────── Severity: HIGH Status: FAIL Commands that fail: mvgal benchmark → "Note: Benchmarks are not yet implemented" mvgal bench-synthetic → "Note: Benchmarks are not yet implemented" mvgal bench-realworld → "Note: Benchmarks are not yet implemented" mvgal bench-stress → "Note: Benchmarks are not yet implemented" However, the SEPARATE binary `mvgal-bench` DOES work and runs real benchmarks: Memory bandwidth: Read 47.59 GiB/s, Write 13.22 GiB/s, Copy 6.00 GiB/s Compute: 12.062 GFLOPS (DAXPY) Sched latency: 0.56 us avg, 0.59 us p99 Sync overhead: 2.7 ns/op, 368.26 Mops/s The main CLI has 4 benchmark commands listed in --help that call a stub function. The actual benchmark code exists in mvgal-bench but is not wired into the main binary. The benchmark stubs should be removed from --help or implemented properly by delegating to mvgal-bench. ISSUE #3: VERSION REPORTING INCONSISTENCY ──────────────────────────────────────────────────────────────────────────────── Severity: HIGH Status: FAIL (inconsistent) Three different version numbers on the same system: mvgal --version → "Version: 0.4.0" RPM package → mvgal-0.6.0-7.fc44 (from binary embedded JSON) libmvgal.so → 0.2.2 This is extremely confusing for debugging and support. The --version flag reports 0.4.0 even though the installed package is clearly 0.6.0. Users and support will get wrong version information from the primary interface. ISSUE #4: MAIN LOG DIRECTORY IS EMPTY ──────────────────────────────────────────────────────────────────────────────── Severity: HIGH Status: FAIL /var/log/mvgal/ → directory exists but is EMPTY (0 files) /tmp/mvgal_dump.log → configured in config but doesn't exist The daemon logs only to stdout/stderr. When running as a forked daemon (from `mvgal start`), log output is lost — it does NOT write to /var/log/mvgal/ at all. The debug.dump_calls option is also disabled by default in config. Without logs, debugging daemon or runtime issues is impossible after the daemon has started. ISSUE #5: "set-priority" COMMAND IS BROKEN ──────────────────────────────────────────────────────────────────────────────── Severity: HIGH Status: FAIL Command: mvgal set-priority 0 5 Result: "Error: Unknown command 'set-priority'" But --help explicitly lists: "set-priority N P Set GPU N priority to P" This command is referenced in --help but not wired in the command parser. Additionally, the `mvgal-config` tool doesn't have set-priority either, making GPU priority setting completely inaccessible through any CLI. ISSUE #6: mvgal-gui AND mvgal-dashboard HANG / TIMEOUT ──────────────────────────────────────────────────────────────────────────────── Severity: MEDIUM Status: FAIL Both hang indefinitely (tested with 10s timeout). They likely require a display server (X11/Wayland) but provide no error message when one is unavailable. A user running in a terminal or SSH session gets a hung process with zero feedback. ISSUE #7: PKEXEC HELPER HAS WRONG VULKAN LAYER PATH ──────────────────────────────────────────────────────────────────────────────── Severity: MEDIUM Status: FAIL Command: pkexec /usr/lib/mvgal/mvgal-pkexec-helper.sh install-vulkan-layer Result: "Error: Vulkan layer source not found: /usr/share/mvgal/vulkan/implicit_layer.d/VK_LAYER_MVGAL.json" But the ACTUAL file is at: /usr/share/vulkan/implicit_layer.d/VK_LAYER_MVGAL.json ✓ (present) The pkexec helper script hardcodes an incorrect path (/usr/share/mvgal/vulkan/...) instead of the correct installed path (/usr/share/vulkan/...). This also means the "remove-vulkan-layer" action cannot work since it also uses the wrong path. 4. MODERATE ISSUES ================================================================================ ISSUE #8: INVALID STRATEGY NAME SILENTLY ACCEPTED ──────────────────────────────────────────────────────────────────────────────── Severity: MEDIUM Status: FAIL Command: mvgal set-strategy invalid_strategy Result: "Strategy set to: invalid_strategy" (NO ERROR) Internally mapped to strategy number 5 (same as "hybrid") Invalid strategy names should be rejected with an error message and a list of valid strategies. Instead, the CLI silently accepts any string and passes it through as strategy ID 5 (a fallback default). This is a validation bug — invalid input is not caught before processing. ISSUE #9: NONEXISTENT CONFIG FILE CAUSES PARTIAL FAILURE ──────────────────────────────────────────────────────────────────────────────── Severity: MEDIUM Status: FAIL Command: mvgal -c /nonexistent/config.conf status Result: "Failed to open config file /nonexistent/config.conf: No such file or directory, using defaults" → Then immediately: "Failed to initialize configuration: 10" → Then: "Error: Failed to initialize MVGAL: 10" The message says "using defaults" but it DOES NOT actually use defaults — it fails with a numeric error code (10) with no explanation. Either the fallback should work, or the message should say "falling back to defaults failed" with a clear explanation. ISSUE #10: STRATEGY NUMBERING INCONSISTENCY ──────────────────────────────────────────────────────────────────────────────── Severity: LOW Status: INFO The default strategy in mvgal.conf is "single" but the numeric mapping table shows: round_robin = 0 afr = 1 sfr = 2 auto = 3 compute_offload = 4 hybrid = 5 single_gpu = 6 task = 7 custom = 100 "single" from config is NOT in the strategy table — should be "single_gpu". Config defaults may not match CLI expected values. ISSUE #11: DAEMON START IGNORES SYSTEMD ──────────────────────────────────────────────────────────────────────────────── Severity: LOW Status: INFO `mvgal start` forks the daemon directly (as mvgald) but does NOT use systemd to track/manage it. The systemd unit mvgal-daemon.service shows "inactive (dead)" even when the daemon is running. This means: - systemctl status shows incorrect state - systemd-based logging/journald integration doesn't work - Dependency-based service ordering is broken (e.g., starting after GPU driver) ISSUE #12: "rescan-gpus" NOT IMPLEMENTED ──────────────────────────────────────────────────────────────────────────────── Severity: LOW Status: FAIL Command: pkexec /usr/lib/mvgal/mvgal-pkexec-helper.sh rescan-gpus Result: "Error: Rescan interface not available" Listed in the pkexec helper but not functional. Hotplug GPU support is advertised but non-functional. ISSUE #13: DAEMON SOCKET HAS WORLD-WRITABLE PERMISSIONS ──────────────────────────────────────────────────────────────────────────────── Severity: LOW Status: WARNING ls -la /run/mvgal/mvgal.sock → srw-rw-rw-. 1 root video 0 ... (mode 666) The daemon socket is world-writable. Any local user could connect to it, which may pose a security risk for an administrative tool that manages GPU configuration and power states. ISSUE #14: MVGAL.SO VERSION IS 0.2.2 — LAGS BEHIND PACKAGE ──────────────────────────────────────────────────────────────────────────────── Severity: LOW Status: INFO libmvgal.so.0.2.2 is the core shared library but hasn't been bumped to match the package version (0.6.0). Two other libs are at 0.6.0. 5. OTHER OBSERVATIONS ================================================================================ - GPU detection works correctly: Intel 0x8086:0x4680 on /dev/dri/card1 - Only 1 GPU detected; multi-GPU features correctly show SKIP status - Vulkan layer is properly loaded (confirmed by vulkaninfo) - GameMode integration via libmvgal_realtime.so present - Steam integration tool (mvgal-steam-setup) has good CLI design - udev rules exist at /usr/lib/udev/rules.d/99-mvgal.rules - DBus integration configured at /etc/dbus-1/system.d/mvgal-dbus.conf - The "Unified heap initialized with 2 regions" message is suspicious for a single-GPU system — why 2 regions? - mvgal-probe tool correctly falls back from /dev/mvgal0 to DRM sysfs - Power management config section is well-designed (power curves, PSU headroom) 6. SUMMARY TABLE ================================================================================ # | Issue | Severity | Status ───┼──────────────────────────────────────┼────────────┼────────── 1 | Kernel module unsigned/blocked | CRITICAL | FAIL 2 | Main benchmark commands are stubs | HIGH | FAIL 3 | Version reporting 0.4.0 ≠ 0.6.0 | HIGH | FAIL 4 | /var/log/mvgal/ completely empty | HIGH | FAIL 5 | set-priority command broken | HIGH | FAIL 6 | mvgal-gui/dashboard hang on TTY | MEDIUM | FAIL 7 | pkexec Vulkan layer wrong path | MEDIUM | FAIL 8 | Invalid strategy silently accepted | MEDIUM | FAIL 9 | Config fallback fails despite msg | MEDIUM | FAIL 10 | Strategy "single" not in code table | LOW | INFO 11 | Daemon not tracked by systemd | LOW | INFO 12 | rescan-gpus not implemented | LOW | FAIL 13 | Socket world-writable (mode 666) | LOW | WARN 14 | libmvgal.so version 0.2.2 outdated | LOW | INFO ────────────────────────────────────────────────────────────── TOTAL: 14 issues found (2 CRITICAL, 3 HIGH, 4 MEDIUM, 5 LOW) 7. PRIORITY FIX RECOMMENDATIONS ================================================================================ P0 — MUST FIX (blocking core functionality): #1 Sign kernel modules for Secure Boot #5 Wire set-priority command in CLI parser P1 — SHOULD FIX (functionality broken or misleading): #2 Connect benchmark stubs to mvgal-bench or remove from --help #3 Fix version string to match actual package version (0.4.0 → 0.6.0) #4 Make daemon write logs to /var/log/mvgal/ or journald #7 Fix pkexec-helper.sh Vulkan layer path P2 — NICE TO FIX (edge cases and polish): #6 Add --help or error message to gui/dashboard when no display #8 Add input validation for strategy names #9 Fix config fallback to actually work (not just claim it) #13 Restrict socket permissions #10, #11, #12, #14 — Minor polish items ================================================================================ End of Report ================================================================================Beta Was this translation helpful? Give feedback.
All reactions