public inbox for rust-for-linux@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 00/34] gpu: nova-core: firmware: Hopper/Blackwell support
@ 2026-03-10  2:10 John Hubbard
  2026-03-10  2:10 ` [PATCH v6 01/34] gpu: nova-core: print FB sizes, along with ranges John Hubbard
                   ` (33 more replies)
  0 siblings, 34 replies; 52+ messages in thread
From: John Hubbard @ 2026-03-10  2:10 UTC (permalink / raw)
  To: Danilo Krummrich, Alexandre Courbot
  Cc: Joel Fernandes, Timur Tabi, Alistair Popple, Eliot Courtney,
	Shashank Sharma, Zhi Wang, David Airlie, Simona Vetter,
	Bjorn Helgaas, Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, rust-for-linux, LKML, John Hubbard

Hi,

This is based on today's drm-rust-next. A git branch is here:

    https://github.com/johnhubbard/linux/tree/nova-core-blackwell-v6

It's been tested on Turing (new!), Ampere and Blackwell:

    NovaCore 0000:e1:00.0: GPU name: NVIDIA GeForce GTX 1650
    NovaCore 0000:e1:00.0: GPU name: NVIDIA RTX A4000
    NovaCore 0000:01:00.0: GPU name: NVIDIA RTX PRO 6000 Blackwell Max-Q
    Workstation Edition

Changes in v6:

* Rebased onto drm-rust-next (v7.0-rc1 based).

* Dropped the first two patches from v5 (aux device fix and pdev
  macros), which have since been merged independently.

* const_align_up(): reworked per review from Gary Guo, Miguel Ojeda,
  and Danilo Krummrich: now returns Option<usize> instead of panicking,
  takes an Alignment argument instead of a const generic, and no longer
  needs the inline_const feature addition in scripts/Makefile.build.

* The rust/sizes and SZ_*_U64 patches from v5 are no longer included.
  I plan to post those as a separate series that depends on this one.

Changes in v5:

* Rebased onto linux.git master.

* Split MCTP protocol into its own module and file.

* Many Rust-based improvements: more use of types, especially. Also
  used Result and Option more.

* Lots of cleanup of comments and print output and error handling.

* Added const_align_up() to rust/ and used it in nova-core. This
  required enabling a Rust feature: inline_const, as recommended by
  Miguel Ojeda.

* Refactoring various things, such as Gpu::new() to own Spec creation,
  and several more such things.

* Fixed three Delta::ZERO busy-polls (patches 21, 24, 31) to use
  non-zero sleep intervals (after just realizing that it was a bad
  choice to have zero in there).

* Reduced GH100/GB100 HAL duplication. Made FSP_PKEY_SIZE/FSP_SIG_SIZE
  consistent across patches. Replaced fragile architecture checks with
  chipset.arch(). Renamed LIBOS_BLACKWELL.

* Narrowed the scope of some of the #![expect(dead_code)] cases,
  although that really only matters within the series, not once it is
  fully applied.

John Hubbard (34):
  gpu: nova-core: print FB sizes, along with ranges
  gpu: nova-core: add FbRange.len() and use it in boot.rs
  gpu: nova-core: Hopper/Blackwell: basic GPU identification
  gpu: nova-core: factor .fwsignature* selection into a new
    find_gsp_sigs_section()
  gpu: nova-core: use GPU Architecture to simplify HAL selections
  gpu: nova-core: apply the one "use" item per line policy to
    commands.rs
  gpu: nova-core: move GPU init and DMA mask setup into Gpu::new()
  gpu: nova-core: set DMA mask width based on GPU architecture
  gpu: nova-core: Hopper/Blackwell: skip GFW boot waiting
  gpu: nova-core: move firmware image parsing code to firmware.rs
  gpu: nova-core: factor out an elf_str() function
  gpu: nova-core: don't assume 64-bit firmware images
  gpu: nova-core: add support for 32-bit firmware images
  gpu: nova-core: add auto-detection of 32-bit, 64-bit firmware images
  gpu: nova-core: Hopper/Blackwell: add FMC firmware image, in support
    of FSP
  gpu: nova-core: Hopper/Blackwell: add FSP falcon engine stub
  gpu: nova-core: Hopper/Blackwell: add FSP falcon EMEM operations
  gpu: nova-core: Hopper/Blackwell: add FSP message infrastructure
  rust: ptr: add const_align_up()
  gpu: nova-core: Hopper/Blackwell: calculate reserved FB heap size
  gpu: nova-core: add MCTP/NVDM protocol types for firmware
    communication
  gpu: nova-core: Hopper/Blackwell: add FSP secure boot completion
    waiting
  gpu: nova-core: Hopper/Blackwell: add FSP message structures
  gpu: nova-core: Hopper/Blackwell: add FMC signature extraction
  gpu: nova-core: Hopper/Blackwell: add FSP send/receive messaging
  gpu: nova-core: Hopper/Blackwell: add FspCotVersion type
  gpu: nova-core: Hopper/Blackwell: larger non-WPR heap
  gpu: nova-core: Hopper/Blackwell: add FSP Chain of Trust boot
  gpu: nova-core: Blackwell: use correct sysmem flush registers
  gpu: nova-core: Hopper/Blackwell: larger WPR2 (GSP) heap
  gpu: nova-core: refactor SEC2 booter loading into
    BooterFirmware::run()
  gpu: nova-core: Hopper/Blackwell: add GSP lockdown release polling
  gpu: nova-core: Hopper/Blackwell: new location for PCI config mirror
  gpu: nova-core: Hopper/Blackwell: integrate FSP boot path into boot()

 drivers/gpu/nova-core/driver.rs          |  15 -
 drivers/gpu/nova-core/falcon.rs          |   1 +
 drivers/gpu/nova-core/falcon/fsp.rs      | 222 ++++++++++
 drivers/gpu/nova-core/falcon/hal.rs      |  20 +-
 drivers/gpu/nova-core/fb.rs              | 113 ++++-
 drivers/gpu/nova-core/fb/hal.rs          |  38 +-
 drivers/gpu/nova-core/fb/hal/ga102.rs    |   2 +-
 drivers/gpu/nova-core/fb/hal/gb100.rs    |  75 ++++
 drivers/gpu/nova-core/fb/hal/gb202.rs    |  62 +++
 drivers/gpu/nova-core/fb/hal/gh100.rs    |  38 ++
 drivers/gpu/nova-core/firmware.rs        | 186 ++++++++
 drivers/gpu/nova-core/firmware/booter.rs |  35 +-
 drivers/gpu/nova-core/firmware/fsp.rs    |  46 ++
 drivers/gpu/nova-core/firmware/gsp.rs    | 140 ++----
 drivers/gpu/nova-core/fsp.rs             | 525 +++++++++++++++++++++++
 drivers/gpu/nova-core/gpu.rs             | 117 ++++-
 drivers/gpu/nova-core/gsp/boot.rs        | 300 ++++++++++---
 drivers/gpu/nova-core/gsp/commands.rs    |   8 +-
 drivers/gpu/nova-core/gsp/fw.rs          |  80 +++-
 drivers/gpu/nova-core/gsp/fw/commands.rs |  32 +-
 drivers/gpu/nova-core/mctp.rs            | 105 +++++
 drivers/gpu/nova-core/nova_core.rs       |   2 +
 drivers/gpu/nova-core/regs.rs            |  97 +++++
 rust/kernel/ptr.rs                       |  24 ++
 24 files changed, 2016 insertions(+), 267 deletions(-)
 create mode 100644 drivers/gpu/nova-core/falcon/fsp.rs
 create mode 100644 drivers/gpu/nova-core/fb/hal/gb100.rs
 create mode 100644 drivers/gpu/nova-core/fb/hal/gb202.rs
 create mode 100644 drivers/gpu/nova-core/fb/hal/gh100.rs
 create mode 100644 drivers/gpu/nova-core/firmware/fsp.rs
 create mode 100644 drivers/gpu/nova-core/fsp.rs
 create mode 100644 drivers/gpu/nova-core/mctp.rs


base-commit: dd8a93dafe6ef50b49d2a7b44862264d74a7aafa
prerequisite-patch-id: 1ec0faa352dab8fa7c0f209474b75cd21931340d
-- 
2.53.0


^ permalink raw reply	[flat|nested] 52+ messages in thread

end of thread, other threads:[~2026-03-17 22:17 UTC | newest]

Thread overview: 52+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-10  2:10 [PATCH v6 00/34] gpu: nova-core: firmware: Hopper/Blackwell support John Hubbard
2026-03-10  2:10 ` [PATCH v6 01/34] gpu: nova-core: print FB sizes, along with ranges John Hubbard
2026-03-10 11:21   ` Alexandre Courbot
2026-03-10  2:10 ` [PATCH v6 02/34] gpu: nova-core: add FbRange.len() and use it in boot.rs John Hubbard
2026-03-10 11:21   ` Alexandre Courbot
2026-03-10  2:10 ` [PATCH v6 03/34] gpu: nova-core: Hopper/Blackwell: basic GPU identification John Hubbard
2026-03-10  8:06   ` Alexandre Courbot
2026-03-10 16:54     ` John Hubbard
2026-03-10  2:10 ` [PATCH v6 04/34] gpu: nova-core: factor .fwsignature* selection into a new find_gsp_sigs_section() John Hubbard
2026-03-10  2:10 ` [PATCH v6 05/34] gpu: nova-core: use GPU Architecture to simplify HAL selections John Hubbard
2026-03-10  2:10 ` [PATCH v6 06/34] gpu: nova-core: apply the one "use" item per line policy to commands.rs John Hubbard
2026-03-10 11:21   ` Alexandre Courbot
2026-03-10  2:10 ` [PATCH v6 07/34] gpu: nova-core: move GPU init and DMA mask setup into Gpu::new() John Hubbard
2026-03-10  8:23   ` Alexandre Courbot
2026-03-10  2:10 ` [PATCH v6 08/34] gpu: nova-core: set DMA mask width based on GPU architecture John Hubbard
2026-03-10  2:10 ` [PATCH v6 09/34] gpu: nova-core: Hopper/Blackwell: skip GFW boot waiting John Hubbard
2026-03-10 10:23   ` Alexandre Courbot
2026-03-10  2:11 ` [PATCH v6 10/34] gpu: nova-core: move firmware image parsing code to firmware.rs John Hubbard
2026-03-10 10:28   ` Alexandre Courbot
2026-03-10  2:11 ` [PATCH v6 11/34] gpu: nova-core: factor out an elf_str() function John Hubbard
2026-03-10  2:11 ` [PATCH v6 12/34] gpu: nova-core: don't assume 64-bit firmware images John Hubbard
2026-03-10 10:38   ` Alexandre Courbot
2026-03-10  2:11 ` [PATCH v6 13/34] gpu: nova-core: add support for 32-bit " John Hubbard
2026-03-10  2:11 ` [PATCH v6 14/34] gpu: nova-core: add auto-detection of 32-bit, 64-bit " John Hubbard
2026-03-10  2:11 ` [PATCH v6 15/34] gpu: nova-core: Hopper/Blackwell: add FMC firmware image, in support of FSP John Hubbard
2026-03-10  2:11 ` [PATCH v6 16/34] gpu: nova-core: Hopper/Blackwell: add FSP falcon engine stub John Hubbard
2026-03-10  2:11 ` [PATCH v6 17/34] gpu: nova-core: Hopper/Blackwell: add FSP falcon EMEM operations John Hubbard
2026-03-10  2:11 ` [PATCH v6 18/34] gpu: nova-core: Hopper/Blackwell: add FSP message infrastructure John Hubbard
2026-03-10 10:57   ` Alexandre Courbot
2026-03-11 17:53     ` Timur Tabi
2026-03-10  2:11 ` [PATCH v6 19/34] rust: ptr: add const_align_up() John Hubbard
2026-03-10  2:11 ` [PATCH v6 20/34] gpu: nova-core: Hopper/Blackwell: calculate reserved FB heap size John Hubbard
2026-03-10  2:11 ` [PATCH v6 21/34] gpu: nova-core: add MCTP/NVDM protocol types for firmware communication John Hubbard
2026-03-10 10:53   ` Alexandre Courbot
2026-03-10  2:11 ` [PATCH v6 22/34] gpu: nova-core: Hopper/Blackwell: add FSP secure boot completion waiting John Hubbard
2026-03-10  2:11 ` [PATCH v6 23/34] gpu: nova-core: Hopper/Blackwell: add FSP message structures John Hubbard
2026-03-10 11:01   ` Alexandre Courbot
2026-03-10  2:11 ` [PATCH v6 24/34] gpu: nova-core: Hopper/Blackwell: add FMC signature extraction John Hubbard
2026-03-10  2:11 ` [PATCH v6 25/34] gpu: nova-core: Hopper/Blackwell: add FSP send/receive messaging John Hubbard
2026-03-10  2:11 ` [PATCH v6 26/34] gpu: nova-core: Hopper/Blackwell: add FspCotVersion type John Hubbard
2026-03-10  2:11 ` [PATCH v6 27/34] gpu: nova-core: Hopper/Blackwell: larger non-WPR heap John Hubbard
2026-03-10  2:11 ` [PATCH v6 28/34] gpu: nova-core: Hopper/Blackwell: add FSP Chain of Trust boot John Hubbard
2026-03-17  8:20   ` Alexandre Courbot
2026-03-10  2:11 ` [PATCH v6 29/34] gpu: nova-core: Blackwell: use correct sysmem flush registers John Hubbard
2026-03-10  2:11 ` [PATCH v6 30/34] gpu: nova-core: Hopper/Blackwell: larger WPR2 (GSP) heap John Hubbard
2026-03-17  8:25   ` Alexandre Courbot
2026-03-10  2:11 ` [PATCH v6 31/34] gpu: nova-core: refactor SEC2 booter loading into BooterFirmware::run() John Hubbard
2026-03-10  2:11 ` [PATCH v6 32/34] gpu: nova-core: Hopper/Blackwell: add GSP lockdown release polling John Hubbard
2026-03-10  2:11 ` [PATCH v6 33/34] gpu: nova-core: Hopper/Blackwell: new location for PCI config mirror John Hubbard
2026-03-17  8:27   ` Alexandre Courbot
2026-03-17 22:17     ` John Hubbard
2026-03-10  2:11 ` [PATCH v6 34/34] gpu: nova-core: Hopper/Blackwell: integrate FSP boot path into boot() John Hubbard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox