#17884·tinygrad

[macOS TinyGPU] RTX 5090 Laptop (10de:2c18) fails MAP_BAR for BAR1 via FEVM FNGT5 PRO

Author: YASUMI2022Created Sep 1, 2026Updated Sep 1, 2026

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, revision a1
  • PCIe x4 at 16.0 GT/s, link up

Software

  • TinyGPU app 1.0.0
  • org.tinygrad.tinygpu.driver2 1.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

bash
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 error

The 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
  • IOPCIResourced and IODeviceMemory remain 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.