NVIDIA GPU driver infrastructure
 help / color / mirror / Atom feed
* [PATCH v1 00/16] Introduce page table types, vmm and bar1 mapping support
@ 2026-05-18 18:11 Joel Fernandes
  2026-05-18 18:11 ` [PATCH v1 01/16] gpu: nova-core: mm: Add common types for virtual memory management Joel Fernandes
                   ` (15 more replies)
  0 siblings, 16 replies; 17+ messages in thread
From: Joel Fernandes @ 2026-05-18 18:11 UTC (permalink / raw)
  To: linux-kernel
  Cc: Miguel Ojeda, Boqun Feng, Gary Guo, Bjorn Roy Baron, Benno Lossin,
	Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
	Dave Airlie, Daniel Almeida, dri-devel, rust-for-linux, nova-gpu,
	Nikola Djukic, David Airlie, Boqun Feng, John Hubbard,
	Alistair Popple, Timur Tabi, Edwin Peer, Alexandre Courbot,
	Andrea Righi, Andy Ritger, Zhi Wang, Balbir Singh,
	Philipp Stanner, alexeyi, Eliot Courtney, joel, linux-doc,
	Joel Fernandes

This series introduces page-table types and a Virtual Memory Manager (VMM)
for the nova-core driver, plus a BAR1 user (with selftests) layered on top.
The page-table layer uses trait-based generics (PteOps, PdeOps, DualPdeOps,
MmuConfig) to dispatch between MMU v2 and v3 formats. The Vmm tracks
virtual-address ranges with a maple tree, and the BAR1 user exposes mapped
CPU access to VRAM through a small allocation API exercised by the selftests.

This series is based on drm-rust-next.

It depends on the prerequisite series "Introduce nova-core mm prerequisites"
posted alongside this one:
https://lore.kernel.org/all/20260518180342.2387845-1-joelagnelf@nvidia.com/
Please apply the prerequisite series first, or pull the git tag below which
contains everything.

Dependencies (not yet merged):

- Alexandre Courbot's bitfield series. Tested on v2:
  https://lore.kernel.org/all/20260409-bitfield-v2-0-23ac400071cb@nvidia.com/
  A newer v3 of bitfield is available and should also work (haven't tested):
  https://lore.kernel.org/all/20260501-bitfield-v3-0-aa1076c3337d@nvidia.com/

- rust: maple_tree: implement Send and Sync for MapleTree (v3):
  https://lore.kernel.org/all/20260511143604.3848176-1-joelagnelf@nvidia.com/

The git tree (containing the dependencies above, the prerequisite series
"Introduce nova-core mm prerequisites", and this series) can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/jfern/linux.git (tag: nova-mm-v1-20260518)

Change log:

Changes from v12 to v1 (split-out):

- Part 2 of 2; depends on the prereq series posted just before:
  https://lore.kernel.org/all/20260518180342.2387845-1-joelagnelf@nvidia.com/
- Kept the virtual-memory portion of v12's "Add common memory management types" patch here as "Add common types for virtual memory management".
- Folded v12's "Add TLB flush support" into a new "Add buddy allocator and TLB to GpuMm" patch.
- Split v12's "Add page table entry operation traits" into PteOps, PdeOps, and DualPdeOps trait patches.
- Extracted "Add MmuConfig trait" into its own patch.
- Moved "rust: maple_tree: Send and Sync" out as a standalone dependency; VMM's maple-tree-backed range tracking remains.
- Smaller code touch-ups across most carried-over patches.

Link to v12: https://lore.kernel.org/all/20260425211454.174696-1-joelagnelf@nvidia.com/

Joel Fernandes (16):
  gpu: nova-core: mm: Add common types for virtual memory management
  gpu: nova-core: mm: Add buddy allocator and TLB to GpuMm
  gpu: nova-core: mm: Add common types for all page table formats
  gpu: nova-core: mm: pagetable: Add PteOps trait
  gpu: nova-core: mm: pagetable: Add PdeOps trait
  gpu: nova-core: mm: pagetable: Add DualPdeOps trait
  gpu: nova-core: mm: Add MMU v2 page table types
  gpu: nova-core: mm: Add MMU v3 page table types
  gpu: nova-core: mm: pagetable: Add MmuConfig trait
  gpu: nova-core: mm: Add page table walker for MMU v2/v3
  gpu: nova-core: mm: Add Virtual Memory Manager
  gpu: nova-core: mm: Add virtual address range tracking to VMM
  gpu: nova-core: mm: Add multi-page mapping API to VMM
  gpu: nova-core: Add BAR1 aperture type and size constant
  gpu: nova-core: mm: Add BAR1 user interface
  gpu: nova-core: mm: Add BAR1 memory management self-tests

 drivers/gpu/nova-core/Kconfig              |   1 +
 drivers/gpu/nova-core/driver.rs            |  22 +
 drivers/gpu/nova-core/gpu.rs               |  71 +++-
 drivers/gpu/nova-core/gsp/commands.rs      |   4 +-
 drivers/gpu/nova-core/gsp/fw/commands.rs   |   8 +
 drivers/gpu/nova-core/mm.rs                | 108 ++++-
 drivers/gpu/nova-core/mm/bar_user.rs       | 447 +++++++++++++++++++++
 drivers/gpu/nova-core/mm/pagetable.rs      | 414 +++++++++++++++++++
 drivers/gpu/nova-core/mm/pagetable/map.rs  | 367 +++++++++++++++++
 drivers/gpu/nova-core/mm/pagetable/ver2.rs | 271 +++++++++++++
 drivers/gpu/nova-core/mm/pagetable/ver3.rs | 421 +++++++++++++++++++
 drivers/gpu/nova-core/mm/pagetable/walk.rs | 258 ++++++++++++
 drivers/gpu/nova-core/mm/tlb.rs            | 130 ++++++
 drivers/gpu/nova-core/mm/vmm.rs            | 361 +++++++++++++++++
 drivers/gpu/nova-core/regs.rs              |  65 +++
 15 files changed, 2941 insertions(+), 7 deletions(-)
 create mode 100644 drivers/gpu/nova-core/mm/bar_user.rs
 create mode 100644 drivers/gpu/nova-core/mm/pagetable.rs
 create mode 100644 drivers/gpu/nova-core/mm/pagetable/map.rs
 create mode 100644 drivers/gpu/nova-core/mm/pagetable/ver2.rs
 create mode 100644 drivers/gpu/nova-core/mm/pagetable/ver3.rs
 create mode 100644 drivers/gpu/nova-core/mm/pagetable/walk.rs
 create mode 100644 drivers/gpu/nova-core/mm/tlb.rs
 create mode 100644 drivers/gpu/nova-core/mm/vmm.rs


base-commit: 03f35250485a1f78f5055c034ce7073b4c887636
-- 
2.34.1


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

end of thread, other threads:[~2026-05-18 18:12 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-18 18:11 [PATCH v1 00/16] Introduce page table types, vmm and bar1 mapping support Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 01/16] gpu: nova-core: mm: Add common types for virtual memory management Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 02/16] gpu: nova-core: mm: Add buddy allocator and TLB to GpuMm Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 03/16] gpu: nova-core: mm: Add common types for all page table formats Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 04/16] gpu: nova-core: mm: pagetable: Add PteOps trait Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 05/16] gpu: nova-core: mm: pagetable: Add PdeOps trait Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 06/16] gpu: nova-core: mm: pagetable: Add DualPdeOps trait Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 07/16] gpu: nova-core: mm: Add MMU v2 page table types Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 08/16] gpu: nova-core: mm: Add MMU v3 " Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 09/16] gpu: nova-core: mm: pagetable: Add MmuConfig trait Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 10/16] gpu: nova-core: mm: Add page table walker for MMU v2/v3 Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 11/16] gpu: nova-core: mm: Add Virtual Memory Manager Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 12/16] gpu: nova-core: mm: Add virtual address range tracking to VMM Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 13/16] gpu: nova-core: mm: Add multi-page mapping API " Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 14/16] gpu: nova-core: Add BAR1 aperture type and size constant Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 15/16] gpu: nova-core: mm: Add BAR1 user interface Joel Fernandes
2026-05-18 18:11 ` [PATCH v1 16/16] gpu: nova-core: mm: Add BAR1 memory management self-tests Joel Fernandes

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