[PATCH 00/13] gpu: nova-core: blackwell follow-ups and fixes
From: Eliot Courtney
Date: Mon Jun 15 2026 - 10:43:28 EST
Several fixes and clean-ups for blackwell related functionality. In
particular:
- FSP communication hardening
- Fix for Coherent allocation lifetime issues during FMC boot
- Convert some raw DMA handle stores into &Coherent stores to help
prevent future issues with the allocation not staying alive long
enough
- Move wait for FSP boot earlier - AFAICT, it's not valid to access
certain registers before this is done.
- Make FbLayout code more obvious and correct
Currently, the frts vidmem offset is calculated based on the non-wpr
heap size and pmu reservation size, but AFAICT this is not right. The
fb layout actually looks like:
| non-wpr heap | WPR2 .. FRTS | PMU reserved | ... | VGA workspace |
It's just by coincidence + generous alignment that the values happened
to match with something more like pmu reserved size + vga workspace.
Originally, I thought it would make sense to use the offset of
FbLayout::frts to compute frts vidmem offset, but actually the offsets
in FbLayout AFAICT don't make sense on post-FSP.
`FbLayout` is used for both pre and post FSP architectures. FbLayout
contains ranges for each region of framebuffer, but on post FSP
architectures, only the size is actually used by GSP. The offsets are
not decided by the driver. So, for post FSP architectures FbLayout
contains essentially guesses for the offsets. Instead, make separate
types so that we only store the information that's actually needed.
This includes the actual reserved size after the pmu reservation so we
can properly compute the frts offset.
Signed-off-by: Eliot Courtney <ecourtney@xxxxxxxxxx>
---
Eliot Courtney (13):
gpu: nova-core: fsp: limit FSP receive message allocation size
gpu: nova-core: fsp: catch bogus queue pointer issues
gpu: nova-core: fsp: try to enforce exclusive access to FSP channel
gpu: nova-core: falcon: gsp: move PRIV target mask constants
gpu: nova-core: gsp: keep FMC boot params DMA region alive during error
gpu: nova-core: fsp: move FMC firmware loading into wait_secure_boot
gpu: nova-core: gsp: ensure lifetime for FMC boot DMA allocations
gpu: nova-core: gsp: ensure LibOS DMA allocation lives long enough
gpu: nova-core: wait for FSP boot earlier
gpu: nova-core: split FbLayout into FSP and non-FSP versions
gpu: nova-core: correct FRTS vidmem offset calculation
gpu: nova-core: rename heap size field
gpu: nova-core: return non-WPR heap size as u64 from HALs
drivers/gpu/nova-core/falcon/fsp.rs | 70 ++++++++++++++-----
drivers/gpu/nova-core/falcon/gsp.rs | 11 +--
drivers/gpu/nova-core/fb.rs | 83 +++++++++++++++++++----
drivers/gpu/nova-core/fb/hal.rs | 5 +-
drivers/gpu/nova-core/fb/hal/ga100.rs | 6 +-
drivers/gpu/nova-core/fb/hal/ga102.rs | 6 +-
drivers/gpu/nova-core/fb/hal/gb100.rs | 9 ++-
drivers/gpu/nova-core/fb/hal/gb202.rs | 9 ++-
drivers/gpu/nova-core/fb/hal/gh100.rs | 8 ++-
drivers/gpu/nova-core/fb/hal/tu102.rs | 14 +++-
drivers/gpu/nova-core/fsp.rs | 119 ++++++++++++++++++---------------
drivers/gpu/nova-core/fsp/hal.rs | 4 +-
drivers/gpu/nova-core/fsp/hal/gb100.rs | 4 +-
drivers/gpu/nova-core/fsp/hal/gb202.rs | 4 +-
drivers/gpu/nova-core/fsp/hal/gh100.rs | 10 +--
drivers/gpu/nova-core/gpu.rs | 7 +-
drivers/gpu/nova-core/gpu/hal.rs | 6 +-
drivers/gpu/nova-core/gpu/hal/gh100.rs | 10 ++-
drivers/gpu/nova-core/gpu/hal/tu102.rs | 3 +-
drivers/gpu/nova-core/gsp.rs | 8 +--
drivers/gpu/nova-core/gsp/boot.rs | 10 +--
drivers/gpu/nova-core/gsp/fw.rs | 95 ++++++++++++++++++++------
drivers/gpu/nova-core/gsp/hal.rs | 4 +-
drivers/gpu/nova-core/gsp/hal/gh100.rs | 39 +++++------
drivers/gpu/nova-core/gsp/hal/tu102.rs | 26 ++++---
drivers/gpu/nova-core/gsp/sequencer.rs | 18 +++--
26 files changed, 396 insertions(+), 192 deletions(-)
---
base-commit: 5f7410aa26524101d34b627fbe16670b1514962c
change-id: 20260608-blackwell-fixes-30c9358c90a0
Best regards,
--
Eliot Courtney <ecourtney@xxxxxxxxxx>