unlock-display-ram.sh 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env bash
  2. # unlock-display-ram.sh — TEMPORARY 2 GiB display-reserve unlock.
  3. #
  4. # Remods nvidia_drm with modeset=1 fbdev=0 so the headless DGX Spark's
  5. # display framebuffer reserve (2 GB in firmware; 1.75 GiB usable as an
  6. # external CUDA memory pool) becomes available to the EXL3 2x runtime
  7. # (libds41_display_kv.so maps /dev/dri/card0 into the KV allocator).
  8. #
  9. # Temporary by design: no UEFI/firmware change, no /etc/modprobe.d entry,
  10. # no initramfs change — the state resets to firmware defaults on reboot.
  11. # Counterpart: restore-display-ram.sh (plain modprobe back).
  12. #
  13. # Requires the GPU to be idle (nvidia_drm in use by a running container
  14. # will refuse rmmod).
  15. set -euo pipefail
  16. if [ -d /sys/module/nvidia_drm ]; then
  17. modeset=$(cat /sys/module/nvidia_drm/parameters/modeset)
  18. fbdev=$(cat /sys/module/nvidia_drm/parameters/fbdev)
  19. if [ "$modeset" = "Y" ] && [ "$fbdev" = "N" ]; then
  20. if [ -e /dev/dri/card0 ]; then
  21. echo "nvidia_drm already modeset=1 fbdev=0, /dev/dri/card0 present"
  22. exit 0
  23. fi
  24. echo "nvidia_drm modeset=1 fbdev=0 but /dev/dri/card0 missing — remod anyway"
  25. sudo rmmod nvidia_drm
  26. else
  27. echo "current nvidia_drm: modeset=$modeset fbdev=$fbdev — remodding"
  28. sudo rmmod nvidia_drm
  29. fi
  30. fi
  31. sudo modprobe nvidia_drm modeset=1 fbdev=0
  32. [ "$(cat /sys/module/nvidia_drm/parameters/modeset)" = "Y" ] || {
  33. echo "ERROR: modeset not active after modprobe" >&2; exit 1; }
  34. [ "$(cat /sys/module/nvidia_drm/parameters/fbdev)" = "N" ] || {
  35. echo "ERROR: fbdev not disabled after modprobe" >&2; exit 1; }
  36. if [ ! -e /dev/dri/card0 ]; then
  37. sleep 2
  38. fi
  39. [ -e /dev/dri/card0 ] || { echo "ERROR: /dev/dri/card0 missing after modprobe" >&2; exit 1; }
  40. echo "display reserve unlocked: nvidia_drm modeset=1 fbdev=0, /dev/dri/card0 present"