public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/30] gpu: nova-core: firmware: Hopper/Blackwell support
@ 2026-01-31  0:55 John Hubbard
  2026-01-31  0:55 ` [PATCH v2 01/30] gpu: nova-core: print FB sizes, along with ranges John Hubbard
                   ` (29 more replies)
  0 siblings, 30 replies; 35+ messages in thread
From: John Hubbard @ 2026-01-31  0:55 UTC (permalink / raw)
  To: Danilo Krummrich
  Cc: Alexandre Courbot, Joel Fernandes, Timur Tabi, Alistair Popple,
	Eliot Courtney, 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, nouveau, rust-for-linux, LKML, John Hubbard

Hi,

Thanks to Gary Guo, Joel Fernandes, and Timur Tabi for their reviews.
I've added Reviewed-by tags from Gary Guo and Joel Fernandes.

This is based on today's drm-rust-next (which has 11 out of 13 for
Timur's Turing support patches), and re-tested on Ampere (GA104) and
Blackwell (GB202) RTX GPUs here, and it looks nice.

Data center GPUs remain as TODO items: GA100 needs some additional code,
Hopper/GH100 might work but is not yet tested, and I haven't even
thought about Blackwell data center GPUs.

So even though many patches say Hopper/Blackwell, there may be some
test-and-fix work remaining there.

Changes in v2:

* GA100 (an Ampere chip whose firmware boot steps are closer to Turing,
  than to other Amperes) returns ENOTSUPP for now because it is *known*
  to not work yet.

* FSP: use the new Chipset::fsp_cot_version() method instead of a
  hardcoded constant. This fixes a known wrongness on GH100.

* Changed to a HAL approach to handle the slightly different non-WPR
  heap sizes, for Hopper vs. Blackwell.

* Return Option instead of Result from get_gsp_sigs_section() since
  the failure case is simply "not found".

* Return DmaMask directly from dma_mask() instead of returning a bit
  count.

* Change fmc_full from DmaObject to KVec<u8> since it's only used for
  CPU-side signature extraction and is never submitted to hardware
  (only fmc_image is). This eliminates the need for unsafe code and
  the associated SAFETY comment entirely.

* Use as_bytes_mut() instead of unsafe core::slice::from_raw_parts_mut()
  for copying FMC signature data (hash, public_key, signature arrays).

* Refactor wait_for_gsp_lockdown_release() to use early return with ?
  instead of chained .inspect_err().map().and_then() pattern.

* Removed many dev_dbg! statements.

* Use IEC binary prefix "MiB" instead of "MB" for memory size output.
  Also improved display of small sizes (e.g., "24 KiB" instead of
  "0 MB") and fixed a typo ("suprising" -> "surprising").

* Reordered the "skip GFW boot waiting" commit to appear earlier in the
  series.

* Series has been reduced from 31 to 30 patches, because the "needs
  large reserved mem" patch was absorbed into the non-WPR heap size
  patch.

John Hubbard (30):
  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
    get_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: 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 a section_name_eq() 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
  gpu: nova-core: Hopper/Blackwell: calculate reserved FB heap size
  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 FSP Chain of Trust boot
  gpu: nova-core: Hopper/Blackwell: larger non-WPR heap
  gpu: nova-core: Hopper/Blackwell: larger WPR2 (GSP) heap
  gpu: nova-core: refactor SEC2 booter loading into run_booter() helper
  gpu: nova-core: Hopper/Blackwell: add GSP lockdown release polling
  gpu: nova-core: Hopper/Blackwell: add FSP Chain of Trust boot path
  gpu: nova-core: Hopper/Blackwell: new location for PCI config mirror
  gpu: nova-core: clarify the GPU firmware boot steps

 drivers/gpu/nova-core/driver.rs          |  33 +-
 drivers/gpu/nova-core/falcon.rs          |   1 +
 drivers/gpu/nova-core/falcon/fsp.rs      | 163 +++++++
 drivers/gpu/nova-core/falcon/hal.rs      |  20 +-
 drivers/gpu/nova-core/fb.rs              | 118 ++++-
 drivers/gpu/nova-core/fb/hal.rs          |  30 +-
 drivers/gpu/nova-core/fb/hal/ga102.rs    |   2 +-
 drivers/gpu/nova-core/fb/hal/gb100.rs    |  37 ++
 drivers/gpu/nova-core/fb/hal/gh100.rs    |  37 ++
 drivers/gpu/nova-core/firmware.rs        | 186 ++++++++
 drivers/gpu/nova-core/firmware/fsp.rs    |  47 ++
 drivers/gpu/nova-core/firmware/gsp.rs    | 138 ++----
 drivers/gpu/nova-core/fsp.rs             | 564 +++++++++++++++++++++++
 drivers/gpu/nova-core/gpu.rs             |  87 +++-
 drivers/gpu/nova-core/gsp/boot.rs        | 337 +++++++++++---
 drivers/gpu/nova-core/gsp/commands.rs    |   8 +-
 drivers/gpu/nova-core/gsp/fw.rs          |  61 ++-
 drivers/gpu/nova-core/gsp/fw/commands.rs |  32 +-
 drivers/gpu/nova-core/nova_core.rs       |   1 +
 drivers/gpu/nova-core/num.rs             |  10 +
 drivers/gpu/nova-core/regs.rs            |  56 +++
 21 files changed, 1704 insertions(+), 264 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/gh100.rs
 create mode 100644 drivers/gpu/nova-core/firmware/fsp.rs
 create mode 100644 drivers/gpu/nova-core/fsp.rs


base-commit: cea7b66a80412e2a5b74627b89ae25f1d0110a4b
-- 
2.52.0


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

end of thread, other threads:[~2026-02-02 21:37 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-31  0:55 [PATCH v2 00/30] gpu: nova-core: firmware: Hopper/Blackwell support John Hubbard
2026-01-31  0:55 ` [PATCH v2 01/30] gpu: nova-core: print FB sizes, along with ranges John Hubbard
2026-02-02 14:47   ` Gary Guo
2026-01-31  0:55 ` [PATCH v2 02/30] gpu: nova-core: add FbRange.len() and use it in boot.rs John Hubbard
2026-01-31  0:55 ` [PATCH v2 03/30] gpu: nova-core: Hopper/Blackwell: basic GPU identification John Hubbard
2026-01-31  0:55 ` [PATCH v2 04/30] gpu: nova-core: factor .fwsignature* selection into a new get_gsp_sigs_section() John Hubbard
2026-01-31  0:55 ` [PATCH v2 05/30] gpu: nova-core: use GPU Architecture to simplify HAL selections John Hubbard
2026-01-31  0:55 ` [PATCH v2 06/30] gpu: nova-core: apply the one "use" item per line policy to commands.rs John Hubbard
2026-01-31  0:55 ` [PATCH v2 07/30] gpu: nova-core: set DMA mask width based on GPU architecture John Hubbard
2026-01-31  0:55 ` [PATCH v2 08/30] gpu: nova-core: Hopper/Blackwell: skip GFW boot waiting John Hubbard
2026-02-02 14:49   ` Gary Guo
2026-02-02 14:52     ` Danilo Krummrich
2026-02-02 21:37       ` John Hubbard
2026-01-31  0:55 ` [PATCH v2 09/30] gpu: nova-core: move firmware image parsing code to firmware.rs John Hubbard
2026-01-31  0:55 ` [PATCH v2 10/30] gpu: nova-core: factor out a section_name_eq() function John Hubbard
2026-01-31  0:55 ` [PATCH v2 11/30] gpu: nova-core: don't assume 64-bit firmware images John Hubbard
2026-01-31  0:55 ` [PATCH v2 12/30] gpu: nova-core: add support for 32-bit " John Hubbard
2026-01-31  0:55 ` [PATCH v2 13/30] gpu: nova-core: add auto-detection of 32-bit, 64-bit " John Hubbard
2026-01-31  0:55 ` [PATCH v2 14/30] gpu: nova-core: Hopper/Blackwell: add FMC firmware image, in support of FSP John Hubbard
2026-01-31  0:55 ` [PATCH v2 15/30] gpu: nova-core: Hopper/Blackwell: add FSP falcon engine stub John Hubbard
2026-01-31  0:55 ` [PATCH v2 16/30] gpu: nova-core: Hopper/Blackwell: add FSP falcon EMEM operations John Hubbard
2026-01-31  0:55 ` [PATCH v2 17/30] gpu: nova-core: Hopper/Blackwell: add FSP message infrastructure John Hubbard
2026-01-31  0:55 ` [PATCH v2 18/30] gpu: nova-core: Hopper/Blackwell: calculate reserved FB heap size John Hubbard
2026-01-31  0:55 ` [PATCH v2 19/30] gpu: nova-core: Hopper/Blackwell: add FSP secure boot completion waiting John Hubbard
2026-01-31  0:55 ` [PATCH v2 20/30] gpu: nova-core: Hopper/Blackwell: add FSP message structures John Hubbard
2026-01-31  0:55 ` [PATCH v2 21/30] gpu: nova-core: Hopper/Blackwell: add FMC signature extraction John Hubbard
2026-01-31  0:55 ` [PATCH v2 22/30] gpu: nova-core: Hopper/Blackwell: add FSP send/receive messaging John Hubbard
2026-01-31  0:55 ` [PATCH v2 23/30] gpu: nova-core: Hopper/Blackwell: add FSP Chain of Trust boot John Hubbard
2026-01-31  0:55 ` [PATCH v2 24/30] gpu: nova-core: Hopper/Blackwell: larger non-WPR heap John Hubbard
2026-01-31  0:55 ` [PATCH v2 25/30] gpu: nova-core: Hopper/Blackwell: larger WPR2 (GSP) heap John Hubbard
2026-01-31  0:56 ` [PATCH v2 26/30] gpu: nova-core: refactor SEC2 booter loading into run_booter() helper John Hubbard
2026-01-31  0:56 ` [PATCH v2 27/30] gpu: nova-core: Hopper/Blackwell: add GSP lockdown release polling John Hubbard
2026-01-31  0:56 ` [PATCH v2 28/30] gpu: nova-core: Hopper/Blackwell: add FSP Chain of Trust boot path John Hubbard
2026-01-31  0:56 ` [PATCH v2 29/30] gpu: nova-core: Hopper/Blackwell: new location for PCI config mirror John Hubbard
2026-01-31  0:56 ` [PATCH v2 30/30] gpu: nova-core: clarify the GPU firmware boot steps John Hubbard

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