[PATCH v7 0/8] Transition Nova Core to TLV firmware images
Timur Tabi <[email protected]> Fri, 31 Jul 2026 15:10:09 -0500
| Newsgroups | dev.linux.lists.nova-gpu,dev.linux.lists.driver-core,org.kernel.vger.rust-for-linux |
|---|---|
| Message-ID | <[email protected]> |
This patch set transitions nova-core to use the new "TLV" firmware image files, instead of the ones that Nouveau uses. A prerequisite patch "rust: error: add remaining error codes" is required to compile. [1] 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 TLV versions of r570.144 can be found here: https://github.com/ttabi/linux-firmware-nova along with instructions on how to install them. We are not planning on submitting these images to linux-firmware. Rather, if this patchset is accepted upstream, I expect the small handful of people who are actually working on Nova to grab and install these images, which needs to be done only once. There are still opportunities for improvement. For example, I would like to get rid of more GPU-specific code, especially the GA100 quirks. Note that there are plans to relocate these images into a different /lib/firmware subdirectory, to further isolate them from the images that Nouveau uses. [1] https://lore.kernel.org/rust-for-linux/[email protected]/ v7: 1) Removed errant os_code_offset change in booter 2) Removed stray assert! in gsp.rs 3) Fixed tlv.rst (three -> four) Timur Tabi (8): rust: alloc: add Vec::zeroed method rust: firmware: add request_into_buf() gpu: nova-core: add TLV parser for firmware files gpu: nova-core: transition booter to TLV images gpu: nova-core: transition gsp to TLV images gpu: nova-core: transition gen_bootloader to TLV images gpu: nova-core: transition fsp to TLV images gpu: nova-core: update firmware module info for TLV images Documentation/gpu/nova/core/tlv.rst | 184 ++++++++++ Documentation/gpu/nova/index.rst | 1 + drivers/gpu/nova-core/firmware.rs | 295 +--------------- drivers/gpu/nova-core/firmware/booter.rs | 329 +++--------------- drivers/gpu/nova-core/firmware/fsp.rs | 88 +++-- .../nova-core/firmware/fwsec/bootloader.rs | 75 +--- drivers/gpu/nova-core/firmware/gsp.rs | 59 +--- drivers/gpu/nova-core/firmware/riscv.rs | 75 +--- drivers/gpu/nova-core/firmware/tlv.rs | 265 ++++++++++++++ drivers/gpu/nova-core/fsp.rs | 11 +- drivers/gpu/nova-core/gsp/boot.rs | 7 +- drivers/gpu/nova-core/gsp/hal.rs | 8 +- drivers/gpu/nova-core/gsp/hal/tu102.rs | 13 +- rust/kernel/alloc/kvec.rs | 27 ++ rust/kernel/firmware.rs | 48 ++- 15 files changed, 697 insertions(+), 788 deletions(-) create mode 100644 Documentation/gpu/nova/core/tlv.rst create mode 100644 drivers/gpu/nova-core/firmware/tlv.rs base-commit: 44e7e7f7cffb10a93bb88e7cb59b7b8b3e2deb1c prerequisite-patch-id: 92c2d027299f0bc35d20918668f6874712d12f28 -- 2.54.0