Linux Kernel & OS

Tyr Rust GPU driver boots Arm Mali-G610 MCU using upstream DRM abstractions

Key Takeaway

The Tyr Rust kernel driver for the Arm Mali-G610 GPU has reached the milestone of booting the GPU's Microcontroller Unit using upstream Rust DRM memory-management abstractions.

Summary

Tyr, a Rust port of the Panthor C driver for the Arm Mali-G610 GPU, has advanced from initial stub code in Linux v6.18 to booting the GPU's MCU in v7.3. The driver now uses three key upstream Rust abstractions: DRM GEM shared-memory helpers, page table management, and GPUVM. Tyr remains fully transparent to userspace, meaning existing applications require no changes. The project demonstrates how Rust kernel development can leverage and refine mainline infrastructure for GPU drivers.

Rust abstractions enabling Tyr's MCU boot

  • DRM GEM shared-memory helpers: Upstreamed in Linux v7.1 (June 2026) by Lyude Paul and Danilo Krummrich; allows placing MCU firmware into GEM buffers mappable for GPU access. Original basic GEM implementation without backing memory landed in v6.16 (July 2025) by Asahi Lina.
  • Rust page table abstraction: Upstreamed in v7.0 (April 2026), originally by Asahi Lina and substantially redeveloped by Alice Ryhl; maps physical memory backing GEM buffers to GPU virtual addresses.
  • GPUVM: Virtual memory space creation based on MMU addressing capabilities, with sufficient space for all firmware sections.
  • Unsafe Rust footprint: Of approximately 3,700 lines of Tyr code, only six lines use unsafe; three relate to page table operations. Each requires SAFETY comments justifying soundness.
  • Safety requirement example: map_pages() requires callers to ensure no overlapping mappings exist, no concurrent io-pgtable operations on the range, and that live page table physical address access is valid for the mapping duration—reflecting C API assumptions including WARN_ON behavior elevated to explicit Rust invariants.

Why it matters

Tyr's progress validates Rust as a viable language for complex GPU drivers in mainline Linux and provides a testbed for DRM abstractions that future Rust GPU drivers will depend on. The explicit safety requirements derived from C API behavior may establish patterns for how kernel subsystems document invariants for Rust consumption.

Original reference: www.collabora.com →