Skip to content

MerlionOS v100.2 — GPU Detection, Compute Drivers, Bug Fixes

Choose a tag to compare

@lai3d lai3d released this 17 Mar 17:08
· 39 commits to main since this release

MerlionOS v100.2 — GPU Detection, Compute Drivers, Bug Fixes

Stats

  • 137,226 lines of Rust
  • ~370 modules
  • 0 errors, 0 warnings
  • 11/11 smoke tests passing

GPU Support (New)

Detection — All Major GPU/AI Vendors

gpu-info now detects hardware from 8 vendors:

Vendor ID Devices Compute Driver
AMD/ATI 0x1002 RX 560→7900XTX, APUs ✅ PM4/Compute Queue
Intel 0x8086 HD 530→Arc A770 ✅ Batch Buffer/GPGPU_WALKER
NVIDIA 0x10DE GTX 1050Ti→RTX 4090, H100 ❌ Detection only
Huawei 昇腾 0x19E5 Ascend 310/910/910B ❌ Detection only
Cambricon 寒武纪 0x1D94 MLU270/370/590 ❌ Detection only
Enflame 燧原 0x1E3B CloudBlazer i10/i20 ❌ Detection only
Moore Threads 摩尔线程 0x1ED5 MTT S60/S80/S4000 ❌ Detection only
QEMU 0x1234 Standard VGA —

AMD GPU Compute Driver

  • VRAM management (bump allocator)
  • PM4 command packets (SET_SH_REG, DISPATCH_DIRECT, DMA_DATA)
  • Compute Queue with ring buffer + fence sync
  • Matrix multiply dispatch (FP32 + INT8)
  • Target: Radeon Pro 560 (Polaris 11) on MacBook Pro 2017

Intel GPU Compute Driver

  • GGTT page table management
  • Batch buffer commands (GPGPU_WALKER, MEDIA_VFE_STATE)
  • Render Ring submission
  • Matrix multiply dispatch
  • Target: HD 630 (Gen9.5 Kaby Lake)

NVIDIA GPU Info

  • 44 known devices (Ada Lovelace → Maxwell)
  • Detailed specs: CUDA cores, tensor cores, compute capability, memory type, TDP, bus width
  • Full PCI config dump (command, status, IRQ, BARs, ROM)
  • Firmware signing status explained

Bug Fixes

🔧 Vim Keyboard — FINALLY WORKS!

  • Root cause: Keyboard interrupt EOI was never sent because vim's wait loop ran inside the interrupt handler's call chain
  • Fix: Send EOI + enable interrupts before entering blocking wait loop
  • Also fixed: editor, forth, chat — all blocking commands now work

🔧 Boot OOM — FIXED

  • Lazy init: 154 module init() → 30 essential, rest on demand
  • Heap: 8MB (still OOMing) → 2MB (works perfectly)
  • GPU compute: lazy init, sim VRAM 16MB → 64KB

🔧 Vim Save Path

  • vim test.txt now resolves relative to PWD (current directory)
  • Added cd and pwd commands

🔧 Shell Refactor

  • Split 3,882-line shell.rs into shell.rs (302) + shell_cmds.rs (3,662)
  • 10 category-based dispatch functions

🔧 VFS Path Cache

  • FNV-1a hash-based path cache (256 entries)
  • O(1) lookups instead of O(n) linear scan

🔧 UEFI Boot

  • Applied same lazy-init fix to Limine boot path
  • Automated smoke test: make test-smoke (11/11 passing)

Build

make build && make run
make test-smoke  # automated tests

Born for AI. Built by AI. 🦁