On 07-04-2025 16:00, Boris Brezillon wrote:
On Mon,  7 Apr 2025 15:47:03 +0530
Himal Prasad Ghimiray <himal.prasad.ghimi...@intel.com> wrote:

- DRM_GPUVM_SM_MAP_NOT_MADVISE: Default sm_map operations for the input
   range.

- DRM_GPUVM_SKIP_GEM_OBJ_VA_SPLIT_MADVISE: This flag is used by
   drm_gpuvm_sm_map_ops_create to iterate over GPUVMA's in the
user-provided range and split the existing non-GEM object VMA if the
start or end of the input range lies within it. The operations can
create up to 2 REMAPS and 2 MAPs. The purpose of this operation is to be
used by the Xe driver to assign attributes to GPUVMA's within the
user-defined range. Unlike drm_gpuvm_sm_map_ops_flags in default mode,
the operation with this flag will never have UNMAPs and
merges, and can be without any final operations.

v2
- use drm_gpuvm_sm_map_ops_create with flags instead of defining new
   ops_create (Danilo)
- Add doc (Danilo)

Cc: Danilo Krummrich <d...@redhat.com>
Cc: Matthew Brost <matthew.br...@intel.com>
Cc: Boris Brezillon <bbrezil...@kernel.org>
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Himal Prasad Ghimiray<himal.prasad.ghimi...@intel.com>

---
RFC Link:
https://lore.kernel.org/intel-xe/20250314080226.2059819-1-himal.prasad.ghimi...@intel.com/T/#mb706bd1c55232110e42dc7d5c05de61946982472
---
  drivers/gpu/drm/drm_gpuvm.c            | 93 ++++++++++++++++++++------
  drivers/gpu/drm/nouveau/nouveau_uvmm.c |  1 +
  drivers/gpu/drm/xe/xe_vm.c             |  1 +
  include/drm/drm_gpuvm.h                | 25 ++++++-
  4 files changed, 98 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index f9eb56f24bef..9d09d177b9fa 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -2102,10 +2102,13 @@ static int
  __drm_gpuvm_sm_map(struct drm_gpuvm *gpuvm,
                   const struct drm_gpuvm_ops *ops, void *priv,
                   u64 req_addr, u64 req_range,
+                  enum drm_gpuvm_sm_map_ops_flags flags,
                   struct drm_gem_object *req_obj, u64 req_offset)

Not exactly related to this series, but I've been playing with Lina's
series[1] which is hooking up flag propagation from _map() calls to
drm_gpuva, and I think we should pass all map args through a struct so
we don't have to change all call-sites anytime we add one a new optional
argument. Here's a patch [2] doing that.

Thanks Boris, for sharing the info. I went through the patches and they look to be providing solid direction to make interface extensible and future proof.


[1]https://lore.kernel.org/lkml/4a431b98-cccc-495e-b72e-02362828c...@asahilina.net/T/
[2]https://gitlab.freedesktop.org/bbrezillon/linux/-/commit/0587c15b9b81ccae1e37ad0a5d524754d8455558

Reply via email to