This series adds support for nova-core memory management, including VRAM allocation, PRAMIN, VMM, page table walking, and BAR 1 read/writes. These are critical for channel management, vGPU, and all other memory management uses of nova-core.
It is based on linux -next and all patches, along with all the dependencies (such as buddy bindings, CList), can be found at: git://git.kernel.org/pub/scm/linux/kernel/git/jfern/linux.git (tag: nova-mm-v9-20260310) Change log: Changes from v8 to v9: - Added fixes from Zhi Wang for bitfield position changes in virtual address and larger BAR1 size on some platforms. Tested and working for vGPU usecase! - Refactored gsp: boot() to return only GspStaticInfo, removing FbLayout (Alex) - bar1_pde_base and bar2_pde_base are now accessed via GspStaticInfo directly (Alex) - Added new patch "gsp: Expose total physical VRAM end from FB region info" introducing total_fb_end() to expose VRAM extent. (Alex) - Consolidated usable VRAM and BarUser setup; removed dedicated "fb: Add usable_vram field to FbLayout", "mm: Use usable VRAM region for buddy allocator", and "mm: Add BarUser to struct Gpu and create at boot". Changes from v7 to v8: - Incorporated "Select GPU_BUDDY for VRAM allocation" patch from the dependency series (Alex). - Significant patch reordering for better logical flow (GSP/FB patches moved earlier, page table patches, Vmm, Bar1, tests) (Alex). - Replaced several 'as' usages with into_safe_cast() (Danilo, Alex). - Updated BAR 1 test cases to include exercising the block size API (Eliot, Danilo). Changes from v6 to v7: - Addressed DMA fence signalling usecase per Danilo's feedback. Pre v6: - Simplified PRAMIN code (John Hubbard, Alex Courbot). - Handled different MMU versions: ver2 versus ver3 (John Hubbard). - Added BAR1 usecase so we have user of DRM Buddy / VMM (John Hubbard). - Iterating over clist/buddy bindings. Link to v8: https://lore.kernel.org/all/[email protected]/ Link to v7: https://lore.kernel.org/all/[email protected]/ Joel Fernandes (24): gpu: nova-core: Select GPU_BUDDY for VRAM allocation gpu: nova-core: Kconfig: Sort select statements alphabetically 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 support to use PRAMIN windows to write to VRAM docs: gpu: nova-core: Document the PRAMIN aperture mechanism gpu: nova-core: mm: Add common memory management types gpu: nova-core: mm: Add TLB flush support gpu: nova-core: mm: Add GpuMm centralized memory manager gpu: nova-core: mm: Add common types for all page table formats gpu: nova-core: mm: Add MMU v2 page table types gpu: nova-core: mm: Add MMU v3 page table types gpu: nova-core: mm: Add unified page table entry wrapper enums 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 gpu: nova-core: mm: Add PRAMIN aperture self-tests Zhi Wang (1): gpu: nova-core: Use runtime BAR1 size instead of hardcoded 256MB Documentation/gpu/nova/core/pramin.rst | 125 +++++ Documentation/gpu/nova/index.rst | 1 + MAINTAINERS | 14 +- drivers/gpu/nova-core/Kconfig | 13 +- drivers/gpu/nova-core/driver.rs | 3 + drivers/gpu/nova-core/gpu.rs | 90 ++- drivers/gpu/nova-core/gsp/boot.rs | 12 +- drivers/gpu/nova-core/gsp/commands.rs | 18 +- drivers/gpu/nova-core/gsp/fw/commands.rs | 59 ++ drivers/gpu/nova-core/mm.rs | 235 ++++++++ drivers/gpu/nova-core/mm/bar_user.rs | 412 ++++++++++++++ drivers/gpu/nova-core/mm/pagetable.rs | 481 ++++++++++++++++ drivers/gpu/nova-core/mm/pagetable/ver2.rs | 232 ++++++++ drivers/gpu/nova-core/mm/pagetable/ver3.rs | 337 ++++++++++++ drivers/gpu/nova-core/mm/pagetable/walk.rs | 218 ++++++++ drivers/gpu/nova-core/mm/pramin.rs | 502 +++++++++++++++++ drivers/gpu/nova-core/mm/tlb.rs | 90 +++ drivers/gpu/nova-core/mm/vmm.rs | 498 +++++++++++++++++ drivers/gpu/nova-core/nova_core.rs | 1 + drivers/gpu/nova-core/regs.rs | 39 ++ 29 files changed, 4390 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/bar_user.rs create mode 100644 drivers/gpu/nova-core/mm/pagetable.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/pramin.rs create mode 100644 drivers/gpu/nova-core/mm/tlb.rs create mode 100644 drivers/gpu/nova-core/mm/vmm.rs -- 2.34.1
