This patchset adds the remaining support required for booting the GSP on
Turing.
We did a deep dive with Eliot looking for the reasons why some fields
involved in the bootloader are ignored or used apparently
inconsistently, and this results in a more documented flow and a few
fixes. Apart from that, this series seems to be stabilizing and
successfully probes my TU106:
NovaCore 0000:08:00.0: NVIDIA (Chipset: TU106, Architecture: Turing,
Revision: a.1)
NovaCore 0000:08:00.0: GPU name: NVIDIA GeForce RTX 2070
This series is based on `drm-rust-next`. A tree with all the patches is
available at [1].
[1] https://github.com/Gnurou/linux/tree/b4/turing
Signed-off-by: Alexandre Courbot <[email protected]>
Changes in v11:
- Fix build error/warnings and rustfmt formatting.
- Address incorrect IMEM section start offsets in FalconUCodeDescV2
and better document fields usage and unused fields.
- Use `get`/`get_mut` instead of direct array indexing when accessing
firmware content.
- Link to v10:
https://patch.msgid.link/[email protected]
Changes in v10:
- Store the firmwares into a regular KVec and move them into a DMA
object only when actually loading using DMA.
- Use `try_update` when updating the `NV_PFALCON_FBIF_TRANSCFG` register
array as its index is not build-time proven to be valid.
- Fix alignment issue when processing imem section of the FWSEC
bootloader (thanks Eliot!).
- Link to v9:
https://patch.msgid.link/[email protected]
Changes in v9:
- Add a few preparatory patches to simplify the actual feature patches.
- Use a wrapping type for the bootloader.
- Simplify the falcon loading code and move the complexity to the
firmware types.
- Add the generic bootloader files to `ModInfoBuilder`.
- Link to v8:
https://lore.kernel.org/all/[email protected]/
---
Alexandre Courbot (10):
gpu: nova-core: create falcon firmware DMA objects lazily
gpu: nova-core: falcon: add constant for memory block alignment
gpu: nova-core: falcon: rename load parameters to reflect DMA dependency
gpu: nova-core: falcon: remove FalconFirmware's dependency on
FalconDmaLoadable
gpu: nova-core: move brom_params and boot_addr to FalconFirmware
gpu: nova-core: falcon: remove unwarranted safety check in dma_load
gpu: nova-core: firmware: add comments to justify v3 header values
gpu: nova-core: firmware: fix and explain v2 header offsets computations
gpu: nova-core: make Chipset::arch() const
gpu: nova-core: add gen_bootloader firmware to ModInfoBuilder
Timur Tabi (2):
gpu: nova-core: add PIO support for loading firmware images
gpu: nova-core: use the Generic Bootloader to boot FWSEC on Turing
drivers/gpu/nova-core/falcon.rs | 315 ++++++++++++++++---
drivers/gpu/nova-core/falcon/hal.rs | 6 +-
drivers/gpu/nova-core/firmware.rs | 107 ++++---
drivers/gpu/nova-core/firmware/booter.rs | 65 ++--
drivers/gpu/nova-core/firmware/fwsec.rs | 129 +++-----
drivers/gpu/nova-core/firmware/fwsec/bootloader.rs | 348 +++++++++++++++++++++
drivers/gpu/nova-core/gpu.rs | 9 +-
drivers/gpu/nova-core/gsp/boot.rs | 17 +-
drivers/gpu/nova-core/regs.rs | 30 ++
9 files changed, 820 insertions(+), 206 deletions(-)
---
base-commit: 15da5bc9f3adab7242867db0251fe451ac3ddb72
change-id: 20260204-turing_prep-6f6f54fe1850
Best regards,
--
Alexandre Courbot <[email protected]>