NVIDIA Working On New "TLV" Firmware Binary Format For Nova Driver
([NVIDIA] 26 Minutes Ago
TLV Firmware)
- Reference: 0001644029
- News link: https://www.phoronix.com/news/NVIDIA-Nova-Driver-TLV
- Source link:
NVIDIA engineers have been developing a new binary format for their GPU firmware images for use with the in-development, open-source Nova kernel driver. With this new TLV binary firmware format it aims to be easier to parse by their Rust-based driver code.
Timur Tabi of NVIDIA posted the new version of patches that transition the Nova-Core driver code over to their new Tag-Length-Value (TLV) firmware image format. Tabi explained of the motivation with this new TLV firmware format:
"This patch set transitions nova-core to use the new "TLV" firmware image files, instead of the ones that Nouveau uses.
The current r570.144 images are a mix of binary headers and ELF files that are cumbersome to parse in Rust. There's a significant amount of code that just reads in a struct, extracts some offset, and uses it to find another struct, only to have nova-core use just a few fields.
The new format uses a sequence of tag/length/value fields that can be iterated over. The script that generates the TLV files, extract-firmware-nova.py, does the extra work to find the specific metadata needed by Nova and packages each one separately."
The format is still being iterated on for further improving it but ultimately will make it easier to handle the NVIDIA GPU firmware by the Nova driver in this new format. Those interested in the details can find the Nova driver patches on the [1]rust-for-linux mailing list .
[1] https://lore.kernel.org/rust-for-linux/20260630194749.1209490-1-ttabi@nvidia.com/
Timur Tabi of NVIDIA posted the new version of patches that transition the Nova-Core driver code over to their new Tag-Length-Value (TLV) firmware image format. Tabi explained of the motivation with this new TLV firmware format:
"This patch set transitions nova-core to use the new "TLV" firmware image files, instead of the ones that Nouveau uses.
The current r570.144 images are a mix of binary headers and ELF files that are cumbersome to parse in Rust. There's a significant amount of code that just reads in a struct, extracts some offset, and uses it to find another struct, only to have nova-core use just a few fields.
The new format uses a sequence of tag/length/value fields that can be iterated over. The script that generates the TLV files, extract-firmware-nova.py, does the extra work to find the specific metadata needed by Nova and packages each one separately."
The format is still being iterated on for further improving it but ultimately will make it easier to handle the NVIDIA GPU firmware by the Nova driver in this new format. Those interested in the details can find the Nova driver patches on the [1]rust-for-linux mailing list .
[1] https://lore.kernel.org/rust-for-linux/20260630194749.1209490-1-ttabi@nvidia.com/