This series introduces the prerequisite memory-management infrastructure for
the nova-core driver: a centralized GpuMm manager, types for addressing VRAM
(Pfn, VramAddress), the PRAMIN aperture for indirect VRAM access from the CPU,
and the GSP plumbing that surfaces the usable FB region and total VRAM extent
at boot. It also picks up two small Rust enablers (pci::Bar::resource_flags()
and a cast+shift accessor form of bitfield!) that the rest of the nova-core
mm code relies on.

This series is based on drm-rust-next.

Dependencies (not yet merged):

- Alex Courbot's bitfield series. Tested on v2:
  https://lore.kernel.org/all/[email protected]/
  A newer v3 of bitfield is available and should also work (haven't tested):
  https://lore.kernel.org/all/[email protected]/

- rust: maple_tree: implement Send and Sync for MapleTree (v3):
  https://lore.kernel.org/all/[email protected]/

The git tree (containing the dependencies above, this series, and the
follow-on page-table/VMM/BAR1 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 1 of 2; the v12 series was split for easier review. Page-table/VMM/BAR1 
patches in companion series.
- Broke v12's "Add common memory management types" into atomic patches: Pfn, 
VramAddress, VramAddress arithmetic.
- New prereq: "rust: pci: add resource_flags accessor".
- New prereq: "rust: bitfield: support cast+shift accessor syntax".
- "Add GpuMm centralized memory manager" scoped to scaffolding only; buddy/TLB 
wiring deferred to companion series.
- Squashed v12's "pramin: drop useless as_ref()" cleanup into "Add PRAMIN 
aperture self-tests".
- Moved "rust: maple_tree: Send and Sync" out as a standalone dependency.
- Smaller code touch-ups across most carried-over patches.

Link to v12: 
https://lore.kernel.org/all/[email protected]/

Joel Fernandes (12):
  rust: pci: add resource_flags accessor
  rust: bitfield: support cast+shift accessor syntax
  gpu: nova-core: gsp: Return GspStaticInfo from boot()
  gpu: nova-core: gsp: Extract usable FB region from GSP
  gpu: nova-core: gsp: Expose total physical VRAM end from FB region
    info
  gpu: nova-core: mm: Add Pfn (Physical Frame Number) type
  gpu: nova-core: mm: Add VramAddress type and conversion traits
  gpu: nova-core: mm: Add VramAddress arithmetic and ordering
  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   | 123 ++++++
 Documentation/gpu/nova/index.rst         |   1 +
 drivers/gpu/nova-core/Kconfig            |  10 +
 drivers/gpu/nova-core/driver.rs          |   2 +
 drivers/gpu/nova-core/gpu.rs             |  48 ++-
 drivers/gpu/nova-core/gsp/boot.rs        |  12 +-
 drivers/gpu/nova-core/gsp/commands.rs    |  16 +-
 drivers/gpu/nova-core/gsp/fw/commands.rs |  49 ++-
 drivers/gpu/nova-core/mm.rs              | 247 +++++++++++
 drivers/gpu/nova-core/mm/pramin.rs       | 512 +++++++++++++++++++++++
 drivers/gpu/nova-core/nova_core.rs       |   1 +
 drivers/gpu/nova-core/regs.rs            | 122 ++++++
 rust/helpers/pci.c                       |   6 +
 rust/kernel/bitfield.rs                  |  67 +++
 rust/kernel/io/resource.rs               |   8 +
 rust/kernel/pci.rs                       |  14 +
 16 files changed, 1228 insertions(+), 10 deletions(-)
 create mode 100644 Documentation/gpu/nova/core/pramin.rst
 create mode 100644 drivers/gpu/nova-core/mm.rs
 create mode 100644 drivers/gpu/nova-core/mm/pramin.rs


base-commit: 9bd99adf7cee4b8ed4adecd53269010250a0d2ec
-- 
2.34.1

Reply via email to