News: 0001638275

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

NVIDIA's Nova Driver Continues Being Built Up In Linux 7.2 Along With Other DRM Rust Code

([Linux Kernel] 5 Hours Ago DRM Rust)


Danilo Krummrich sent out the main set of DRM Rust subsystem changes on Thursday that are targeting the Linux 7.2 kernel. NVIDIA's open-source Nova driver continues seeing a bulk of the DRM Rust work as this modern successor to Nouveau continues taking shape.

With the new DRM Rust pull request there are more DRM Rust abstractions going mainline, support for Higher-Ranked Lifetime Types "HRT" for Rust device drivers, GPUVM immediate mode abstraction, and other improvements. On the driver side, Nova overwhelmingly dominates among the Rust DRM kernel graphics drivers while the Arm Tyr driver has a few improvements too. Still no sign of the Apple Silicon kernel graphics driver for mainline.

The NVIDIA Nova driver continues seeing work upstreamed for enabling Hopper and Blackwell GPUs. Plus more common work around the NVIDIA GPU System Processor (GSP) integration, GA100 Ampere accelerator support, vBIOS hardening and refactoring, and more:

- Nova:

- Hopper/Blackwell enablement:

- Add GPU identification and architecture-based HAL selection for Hopper (GH100) and Blackwell (GB100, GB202).

- Implement the FSP (Foundation Security Processor) boot path used by Hopper and Blackwell, including FSP falcon engine support, EMEM operations, MCTP/NVDM message infrastructure, and FSP Chain of Trust boot with GSP lockdown release.

- Add support for 32-bit firmware images and auto-detection of firmware image format.

- Add architecture-specific framebuffer, sysmem flush, PCI config mirror, DMA mask, and WPR/non-WPR heap sizing.

- GSP boot and unload:

- Refactor the GSP boot process into a chipset-specific HAL, keeping the SEC2 and FSP boot paths separated cleanly.

- Implement proper driver unload: send UNLOADING_GUEST_DRIVER command, run Booter Unloader and FWSEC-SB upon unbinding, and run the unload bundle on Gsp::boot() failure. This removes the need for a manual GPU reset between driver unbind and re-probe.

- GA100 support:

- Add support for the GA100 GPU, including IFR header detection and skipping, correct fwsignature selection, conditional FRTS boot, and documentation of the IFR header layout.

- VBIOS hardening and refactoring:

- Harden VBIOS parsing with checked arithmetic, bounds-checked accesses, and FromBytes-based structure reads throughout the FWSEC and Falcon data paths. Simplify the overall VBIOS module

structure.

- HRT adoption:

- Use lifetime-parameterized pci::Bar directly, replacing the Arc > indirection. Replace ARef with &'bound Device in SysmemFlush and the GSP sequencer. Separate the driver type from driver data.

- Misc:

- Rename module names to kebab-case (nova-drm, nova-core).

- Require little-endian in Kconfig, making the existing assumption explicit.

When I was recently at NVIDIA for the Vera CPU benchmarking, I was poking various folks about the Nova driver and there were good things said about its prospects. I still am awaiting an official quote to share about Nova's positioning within NVIDIA for their future Linux driver support.

Those wanting to see the full list of DRM Rust patches now ready for the Linux 7.2 kernel cycle can see [1]this pull request . The Linux 7.2 merge window should be kicking off in mid-June following the Linux v7.1 stable release.



[1] https://lore.kernel.org/dri-devel/DJ0IF39U9ETK.PCCUO7ZEQ4S0@kernel.org/



Live fast, die young, and leave a good looking corpse.
-- James Dean