[PATCH 00/12] gpu: nova-core: add PRAMIN window support

From: Eliot Courtney

Date: Wed Aug 05 2026 - 01:45:21 EST


This series adds support for the PRAMIN window, plus some documentation.
Some of these patches were originally written by Joel Fernandes [1]. I
have updated them with changelog notes in each patch. For example, I
updated them for the newer IO machinery from Gary Guo.

This series adds a Pramin structure which deals with updating the PRAMIN
window and handing out typed MMIO views. The PRAMIN window is a method
that lets arbitrary VRAM be written over BAR0 by configuring a 1 MiB
window through GPU registers. That 1 MiB window can point anywhere in
VRAM. This is useful for bootstrapping e.g. GPU side page tables.

The Pramin structure hands out typed MMIO views to do writes through
rather than letting callers write directly through it. A follow up
series will add support for GPU side page table entry writing through
this mechanism. This abstraction is important for later since we will
eventually want to write the PTEs via BAR2 not PRAMIN - using a view
that we grab from the Pramin structure can abstract this out.

[1]: https://lore.kernel.org/all/20260518180342.2387845-1-joelagnelf@xxxxxxxxxx/

This is based on drm-rust-next.

Signed-off-by: Eliot Courtney <ecourtney@xxxxxxxxxx>
---
Eliot Courtney (6):
rust: io: add Region::try_subregion
rust: num: reject Bounded::shr overshifts at build time
rust: num: add Bounded::shr_exact
gpu: nova-core: mm: Implement Alignable and Debug for VramAddress
gpu: nova-core: mm: Add the memory management HAL
gpu: nova-core: Add self-test assertion macros and config option

Joel Fernandes (6):
gpu: nova-core: mm: Add VramAddress type
gpu: nova-core: mm: Add PRAMIN window registers
gpu: nova-core: mm: Add support to use PRAMIN windows to write to VRAM
docs: gpu: nova-core: Document the PRAMIN aperture mechanism
gpu: nova-core: mm: Add GpuMm centralized memory manager
gpu: nova-core: mm: Add PRAMIN aperture self-tests

Documentation/gpu/nova/core/pramin.rst | 128 ++++++++++++++
Documentation/gpu/nova/index.rst | 1 +
drivers/gpu/nova-core/Kconfig | 9 +
drivers/gpu/nova-core/driver.rs | 3 +
drivers/gpu/nova-core/gpu.rs | 30 +++-
drivers/gpu/nova-core/gsp/commands.rs | 4 +
drivers/gpu/nova-core/gsp/fw/commands.rs | 5 +
drivers/gpu/nova-core/mm.rs | 163 ++++++++++++++++++
drivers/gpu/nova-core/mm/hal.rs | 56 ++++++
drivers/gpu/nova-core/mm/hal/gb100.rs | 35 ++++
drivers/gpu/nova-core/mm/hal/gh100.rs | 35 ++++
drivers/gpu/nova-core/mm/hal/tu102.rs | 37 ++++
drivers/gpu/nova-core/mm/pramin.rs | 285 +++++++++++++++++++++++++++++++
drivers/gpu/nova-core/mm/regs.rs | 57 +++++++
drivers/gpu/nova-core/nova_core.rs | 3 +
drivers/gpu/nova-core/selftest.rs | 64 +++++++
rust/kernel/io.rs | 31 +++-
rust/kernel/num/bounded.rs | 31 ++++
18 files changed, 975 insertions(+), 2 deletions(-)
---
base-commit: 44e7e7f7cffb10a93bb88e7cb59b7b8b3e2deb1c
change-id: 20260804-pramin-split-950e210b6e3f

Best regards,
--
Eliot Courtney <ecourtney@xxxxxxxxxx>