[PATCH v2 16/32] Introduce drm_gpuvm_sm_map_ops_flags enums for sm_map_ops
Ghimiray, Himal Prasad
himal.prasad.ghimiray at intel.com
Mon May 26 13:48:15 UTC 2025
On 07-04-2025 16:00, Boris Brezillon wrote:
> 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.
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-02362828c96b@asahilina.net/T/
> [2]https://gitlab.freedesktop.org/bbrezillon/linux/-/commit/0587c15b9b81ccae1e37ad0a5d524754d8455558
More information about the dri-devel
mailing list