[macOS TinyGPU] RTX 5090 Laptop (10de:2c18) fails MAP_BAR for BAR1 via FEVM FNGT5 PRO
Hardware
- Mac mini M4 Pro (
Mac16,11), 24 GB RAM - macOS 26.5.2 (
25F84), SIP enabled - FEVM FNGT5 PRO, USB4 v2 at 80 Gb/s
- GeForce RTX 5090 Laptop GPU / GB203M (
10de:2c18) - Subsystem
1043:225b, revisiona1 - PCIe x4 at 16.0 GT/s, link up
Software
- TinyGPU app 1.0.0
org.tinygrad.tinygpu.driver21.0.0/3:activated enabled- tinygrad 0.14.0 from PyPI in Python 3.12
- CUDA 12.8.93 NVCC shim created with the current
extra/setup_nvcc_osx.sh - Docker Desktop 28.3.2 (arm64)
After enabling TinyGPU, macOS reports Driver Installed: Yes, Tunnel Compatible: Yes, and IOPCIResourced = Yes for the GPU.
Reproducer
PATH="$HOME/.local/bin:$PATH" \
PYTHONUNBUFFERED=1 DEV=NV DEBUG=2 \
python -c 'from tinygrad import Tensor; x=Tensor([1,2,3]).to("NV").realize(); print(x.numpy())'Result
The normal /dev/nvidiactl attempt fails as expected on macOS. Tinygrad then selects the TinyGPU PCI interface, but fails while mapping BAR1:
NVDevice.__init__
-> PCIIface.__init__
-> NVDev.__init__
-> NVDev._early_mmu_init
-> self.pci_dev.map_bar(1)
-> RemotePCIDevice.bar_info(1)
-> RemoteCmd.MAP_BAR
RuntimeError: RPC failed: unknown errorThe tensor is never realized. This happens before Blackwell GSP/FSP initialization.
Relevant IOKit properties immediately before and after the attempt:
IOPCITunnelled = Yes
IOPCIResourced = Yes
IOPCIExpressLinkStatus = 4164
IODeviceMemory = (
{ length = 67108864 },
{ length = 16 },
{ length = 33554432 },
{ length = 524288 }
)The second IODeviceMemory descriptor reporting length = 16 looks unusual for the VRAM BAR. I am including it as raw observed output rather than assuming how the 64-bit resource is represented.
Post-failure state
- No hang, reboot, or kernel panic
- TinyGPU remains
activated enabled - GPU remains PCIe x4 / 16.0 GT/s / link up
IOPCIResourcedandIODeviceMemoryremain present- No matching DART, PCIe, or panic errors in the unified log
- TinyGPU server exits after the failed request
I did not retry the initialization or apply NV_SKIP_RESET_WAIT/GSP workarounds because the failure occurs before GSP startup.
Related reports: #15813, #16454, #16714.
Does the current signed TinyGPU dext support BAR1 mapping for 10de:2c18 behind this USB4 v2 controller? Is there a supported way to obtain the underlying DriverKit error instead of RPC failed: unknown error? I can test a signed update or collect additional read-only diagnostics.
Source: tinygrad/tinygrad