This series is based on the latest drm-rust-next tree and provides initial 
memory management infrastructure for the nova-core
GPU driver. It combines and builds upon several previous series and provides a 
foundation for nova GPU memory management.

The RFC series includes:
- A Rust module (CList) to interface with C circular linked lists, required
  for iterating over buddy allocator block lists.
- Movement of the DRM buddy allocator up to drivers/gpu/ level, renamed to GPU
  buddy, making it available for GPU drivers with non-DRM use cases (e.g., 
vGPU).
- Rust bindings for the GPU buddy allocator.
- PRAMIN aperture support for direct VRAM access before page tables are 
initialized.
- Documentation for the PRAMIN mechanism.
- VRAM read/write self-tests for PRAMIN (disabled by default via Kconfig).

The series combines various previous series since all the patches are related.
Moving forward I will only send one coherent series with the mm patches.

Next steps:
Page table types and page table mapping support will be added on top of this
foundation extracted from the original PRAMIN series. I need to make several
changes there such as to support multiple page table formats, as well as
updating it to use the new PRAMIN and buddy APIs.

Changes from v4 to v5:
- Added PRAMIN aperture support for bootstrapping memory management.
- Added documentation for the PRAMIN aperture mechanism.
- Added PRAMIN self-tests for VRAM read/write verification (disabled by 
default).
- Improved buddy allocator bindings a bit (fewer lines of code).

The patches on based on drm-rust-next commit:
97cf6bc0abd3 ("rust: drm: use `pin_init::zeroed()` for file operations 
initialization")

Previous series that are combined:
- v4 (clist + buddy): 
https://lore.kernel.org/all/[email protected]/
- v3 (clist only): 
https://lore.kernel.org/all/[email protected]/
- v2 (clist only): 
https://lore.kernel.org/all/[email protected]/
- clist RFC (original with buddy): 
https://lore.kernel.org/all/[email protected]/
- DRM buddy move: 
https://lore.kernel.org/all/[email protected]/
- PRAMIN series: 
https://lore.kernel.org/all/[email protected]/

Joel Fernandes (6):
  rust: clist: Add support to interface with C linked lists
  gpu: Move DRM buddy allocator one level up
  rust: gpu: Add GPU buddy allocator bindings
  nova-core: mm: Add support to use PRAMIN windows to write to VRAM
  docs: gpu: nova-core: Document the PRAMIN aperture mechanism
  nova-core: Add PRAMIN aperture self-tests

 Documentation/gpu/drm-mm.rst                  |   10 +-
 Documentation/gpu/nova/core/pramin.rst        |  125 ++
 Documentation/gpu/nova/index.rst              |    1 +
 MAINTAINERS                                   |    7 +
 drivers/gpu/Kconfig                           |   13 +
 drivers/gpu/Makefile                          |    2 +
 drivers/gpu/buddy.c                           | 1310 +++++++++++++++++
 drivers/gpu/drm/Kconfig                       |    1 +
 drivers/gpu/drm/Kconfig.debug                 |    4 +-
 drivers/gpu/drm/amd/amdgpu/Kconfig            |    1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c       |    2 +-
 .../gpu/drm/amd/amdgpu/amdgpu_res_cursor.h    |   12 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c  |   80 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.h  |   20 +-
 drivers/gpu/drm/drm_buddy.c                   | 1287 +---------------
 drivers/gpu/drm/i915/Kconfig                  |    1 +
 drivers/gpu/drm/i915/i915_scatterlist.c       |   10 +-
 drivers/gpu/drm/i915/i915_ttm_buddy_manager.c |   55 +-
 drivers/gpu/drm/i915/i915_ttm_buddy_manager.h |    6 +-
 .../drm/i915/selftests/intel_memory_region.c  |   20 +-
 drivers/gpu/drm/tests/Makefile                |    1 -
 .../gpu/drm/ttm/tests/ttm_bo_validate_test.c  |    5 +-
 drivers/gpu/drm/ttm/tests/ttm_mock_manager.c  |   18 +-
 drivers/gpu/drm/ttm/tests/ttm_mock_manager.h  |    4 +-
 drivers/gpu/drm/xe/Kconfig                    |    1 +
 drivers/gpu/drm/xe/xe_res_cursor.h            |   34 +-
 drivers/gpu/drm/xe/xe_svm.c                   |   12 +-
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c          |   73 +-
 drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h    |    4 +-
 drivers/gpu/nova-core/Kconfig                 |   11 +
 drivers/gpu/nova-core/gsp/boot.rs             |    4 +
 drivers/gpu/nova-core/mm/mod.rs               |    5 +
 drivers/gpu/nova-core/mm/pramin.rs            |  298 ++++
 drivers/gpu/nova-core/nova_core.rs            |    1 +
 drivers/gpu/nova-core/regs.rs                 |    5 +
 drivers/gpu/tests/Makefile                    |    3 +
 .../gpu_buddy_test.c}                         |  390 ++---
 drivers/gpu/tests/gpu_random.c                |   48 +
 drivers/gpu/tests/gpu_random.h                |   28 +
 drivers/video/Kconfig                         |    2 +
 include/drm/drm_buddy.h                       |  163 +-
 include/linux/gpu_buddy.h                     |  177 +++
 rust/bindings/bindings_helper.h               |   11 +
 rust/helpers/gpu.c                            |   23 +
 rust/helpers/helpers.c                        |    2 +
 rust/helpers/list.c                           |   12 +
 rust/kernel/clist.rs                          |  357 +++++
 rust/kernel/gpu/buddy.rs                      |  518 +++++++
 rust/kernel/gpu/mod.rs                        |    5 +
 rust/kernel/lib.rs                            |    3 +
 50 files changed, 3385 insertions(+), 1800 deletions(-)
 create mode 100644 Documentation/gpu/nova/core/pramin.rst
 create mode 100644 drivers/gpu/Kconfig
 create mode 100644 drivers/gpu/buddy.c
 create mode 100644 drivers/gpu/nova-core/mm/mod.rs
 create mode 100644 drivers/gpu/nova-core/mm/pramin.rs
 create mode 100644 drivers/gpu/tests/Makefile
 rename drivers/gpu/{drm/tests/drm_buddy_test.c => tests/gpu_buddy_test.c} (68%)
 create mode 100644 drivers/gpu/tests/gpu_random.c
 create mode 100644 drivers/gpu/tests/gpu_random.h
 create mode 100644 include/linux/gpu_buddy.h
 create mode 100644 rust/helpers/gpu.c
 create mode 100644 rust/helpers/list.c
 create mode 100644 rust/kernel/clist.rs
 create mode 100644 rust/kernel/gpu/buddy.rs
 create mode 100644 rust/kernel/gpu/mod.rs
-- 
2.34.1

Reply via email to