Hi,
This series adds firmware support for Hopper and Blackwell GPUs. By
that I mean: Hopper and Blackwell can now get just as far as Ampere and
Ada do: they can receive a GET_GSP_STATIC_INFO message from the GPU's
GSP firmware, and print the resulting GPU marketing name to dmesg.
Having made that claim, note that I've only actually tested the new
functionality on a single Blackwell GPU, so far: GB202. For Ampere, I've
tested on GA104, and it still works as before.
The doctests are all passing.
This is based on today's drm-rust-next. For reviewer convenience, there
is also a git branch that has this series applied:
https://github.com/johnhubbard/linux/tree/nova-core-blackwell-complete-v0
Note: I've merged in the earlier "[PATCH v2 0/5] gpu: nova-core:
Hopper/Blackwell prerequisites" [1], because it is no longer useful by
itself. That makes for a large series, but now it is entirely
self-contained, so it's easy to apply.
[1] https://lore.kernel.org/[email protected]
John Hubbard (31):
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
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: 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 needs_large_reserved_mem()
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: skip GFW boot waiting
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 | 167 ++++++
drivers/gpu/nova-core/falcon/hal.rs | 19 +-
drivers/gpu/nova-core/fb.rs | 101 +++-
drivers/gpu/nova-core/fb/hal.rs | 18 +-
drivers/gpu/nova-core/firmware.rs | 193 +++++++
drivers/gpu/nova-core/firmware/fsp.rs | 42 ++
drivers/gpu/nova-core/firmware/gsp.rs | 128 ++---
drivers/gpu/nova-core/fsp.rs | 617 +++++++++++++++++++++++
drivers/gpu/nova-core/gpu.rs | 64 ++-
drivers/gpu/nova-core/gsp/boot.rs | 342 ++++++++++---
drivers/gpu/nova-core/gsp/commands.rs | 8 +-
drivers/gpu/nova-core/gsp/fw.rs | 55 +-
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 | 59 +++
18 files changed, 1642 insertions(+), 248 deletions(-)
create mode 100644 drivers/gpu/nova-core/falcon/fsp.rs
create mode 100644 drivers/gpu/nova-core/firmware/fsp.rs
create mode 100644 drivers/gpu/nova-core/fsp.rs
base-commit: 57dc2ea0b7bdb828c5d966d9135c28fe854933a4
--
2.52.0