[PATCH v2 16/32] Introduce drm_gpuvm_sm_map_ops_flags enums for sm_map_ops
Boris Brezillon
boris.brezillon at collabora.com
Mon Apr 7 10:30:18 UTC 2025
On Mon, 7 Apr 2025 15:47:03 +0530
Himal Prasad Ghimiray <himal.prasad.ghimiray at 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 <dakr at redhat.com>
> Cc: Matthew Brost <matthew.brost at intel.com>
> Cc: Boris Brezillon <bbrezillon at kernel.org>
> Cc: <dri-devel at lists.freedesktop.org>
> Signed-off-by: Himal Prasad Ghimiray<himal.prasad.ghimiray at intel.com>
>
> ---
> RFC Link:
> https://lore.kernel.org/intel-xe/20250314080226.2059819-1-himal.prasad.ghimiray@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.
[1]https://lore.kernel.org/lkml/4a431b98-cccc-495e-b72e-02362828c96b@asahilina.net/T/
[2]https://gitlab.freedesktop.org/bbrezillon/linux/-/commit/0587c15b9b81ccae1e37ad0a5d524754d8455558
More information about the dri-devel
mailing list