On Thu Jan 22, 2026 at 10:28 PM GMT, Timur Tabi wrote: > Note: This patchset requires "[PATCH v3 2/7] rust: io: always inline > functions using build_assert with arguments" in order to compile > with CLIPPY. > > This patch set adds basic support for pre-booting GSP-RM > on Turing. > > There is also partial support for GA100, but it's currently not > fully implemented. GA100 is considered experimental in Nouveau, > and so it hasn't been tested with NovaCore either. > > The latest linux-firmware.git is required because it contains the > Generic Bootloader image that has not yet been propogated to > distros. > > Summary of changes: > > 1. Introduce non-secure IMEM support. For GA102 and later, only secure IMEM > is used. > 2. Because of non-secure IMEM, Turing booter firmware images need some of > the headers parsed differently for stuff like the load target address. > 3. Add support the tu10x firmware signature section in the ELF image. > 4. Add several new registers used only on Turing. > 5. Some functions that were considered generic Falcon operations are > actually different on Turing vs GA102+, so they are moved to the HAL. > 6. The FRTS FWSEC firmware in VBIOS uses a different version of the > descriptor header. > 7. On Turing/GA100 LIBOS args struct needs to have its 'size' field > aligned to 4KB. So pad the struct to make it 4K. > 8. Turing Falcons do not support DMA, so PIO is used to copy images > into IMEM/DMEM. > 9. Load the Generic Bootloader from disk and use it to boot FWSEC on > Turing and GA100. > > Changes from v7: > 1. Fix unused warnings in some commits that introduce an identifier > but don't actually use it until a later commit. > 2. Split out the Generic Bootloader code from the PIO code into a > separate patch. > 3. Removed accidentally included vbios.rs.orig
I've checked the Rust language aspect of the series and on the internal API design and it looks good. I haven't checked that the actually hardware operations are functioning as intended, though. Danilo/Alex, feel free to convert this to an Reviewed-by or Acked-by, whichever you see fit. Best, Gary > > Alexandre Courbot (1): > gpu: nova-core: align LibosMemoryRegionInitArgument size to page size > > Timur Tabi (12): > gpu: nova-core: rename Imem to ImemSecure > gpu: nova-core: add ImemNonSecure section infrastructure > gpu: nova-core: support header parsing on Turing/GA100 > gpu: nova-core: add support for Turing/GA100 fwsignature > gpu: nova-core: add NV_PFALCON_FALCON_DMATRFCMD::with_falcon_mem() > gpu: nova-core: move some functions into the HAL > gpu: nova-core: Add basic Turing HAL > gpu: nova-core: add NV_PFALCON_FALCON_ENGINE::reset_engine() > gpu: nova-core: add Falcon HAL method load_method() > gpu: nova-core: add FalconUCodeDescV2 support > gpu: nova-core: add PIO support for loading firmware images > gpu: nova-core: use the Generic Bootloader to boot FWSEC > > drivers/gpu/nova-core/falcon.rs | 252 +++++++++++++++++----- > drivers/gpu/nova-core/falcon/hal.rs | 26 +++ > drivers/gpu/nova-core/falcon/hal/ga102.rs | 39 ++++ > drivers/gpu/nova-core/falcon/hal/tu102.rs | 77 +++++++ > drivers/gpu/nova-core/firmware.rs | 203 ++++++++++++++++- > drivers/gpu/nova-core/firmware/booter.rs | 43 +++- > drivers/gpu/nova-core/firmware/fwsec.rs | 180 +++++++++++++--- > drivers/gpu/nova-core/firmware/gsp.rs | 9 +- > drivers/gpu/nova-core/gsp.rs | 8 +- > drivers/gpu/nova-core/gsp/boot.rs | 6 +- > drivers/gpu/nova-core/gsp/fw.rs | 14 +- > drivers/gpu/nova-core/regs.rs | 72 ++++++- > drivers/gpu/nova-core/vbios.rs | 64 +++--- > 13 files changed, 863 insertions(+), 130 deletions(-) > create mode 100644 drivers/gpu/nova-core/falcon/hal/tu102.rs > > > base-commit: 6ea52b6d8f33ae627f4dcf43b12b6e713a8b9331
