Repository navigation
MerlionOS v100.2 — GPU Detection, Compute Drivers, Bug Fixes
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.txtnow resolves relative to PWD (current directory)- Added
cdandpwdcommands
🔧 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 testsBorn for AI. Built by AI. 🦁