[PATCH v3 3/7] drm/amdgpu: Extend amdgpu_ttm_tt_get_userptr() to return flags
Tvrtko Ursulin <[email protected]> Thu, 6 Aug 2026 14:47:08 +0100
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
Extend amdgpu_ttm_tt_get_userptr() to also return userptr creation flags so those can be queried from a subsequent patch. Signed-off-by: Tvrtko Ursulin <[email protected]> Suggested-by: Christian König <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 6 ++++-- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 2 +- drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index 1dd15b556d68..deaae26fe982 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -1311,10 +1311,11 @@ static void amdgpu_ttm_tt_unpopulate(struct ttm_device *bdev, * task * * @tbo: The ttm_buffer_object that contains the userptr - * @user_addr: The returned value + * @user_addr: Returned userptr address + * @user_flags: Returned userptr flags */ int amdgpu_ttm_tt_get_userptr(const struct ttm_buffer_object *tbo, - uint64_t *user_addr) + uint64_t *user_addr, uint32_t *user_flags) { struct amdgpu_ttm_tt *gtt; @@ -1323,6 +1324,7 @@ int amdgpu_ttm_tt_get_userptr(const struct ttm_buffer_object *tbo, gtt = (void *)tbo->ttm; *user_addr = gtt->userptr; + *user_flags = gtt->userflags; return 0; } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h index a47a6eae6713..82f3b9fdfe83 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h @@ -247,7 +247,7 @@ static inline u64 amdgpu_gtt_node_to_byte_offset(const struct drm_mm_node *gtt_n void amdgpu_ttm_tt_set_user_pages(struct ttm_tt *ttm, struct amdgpu_hmm_range *range); int amdgpu_ttm_tt_get_userptr(const struct ttm_buffer_object *tbo, - uint64_t *user_addr); + uint64_t *user_addr, uint32_t *user_flags); int amdgpu_ttm_tt_set_userptr(struct ttm_buffer_object *bo, uint64_t addr, uint32_t flags); bool amdgpu_ttm_tt_has_userptr(struct ttm_tt *ttm); diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 309510e23315..a6ed8efb4927 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -2071,6 +2071,7 @@ static int criu_checkpoint_bos(struct kfd_process *p, struct kfd_criu_bo_bucket *bo_bucket; struct kfd_criu_bo_priv_data *bo_priv; int i, dev_idx = 0; + u32 user_flags; kgd_mem = (struct kgd_mem *)mem; dumper_bo = kgd_mem->bo; @@ -2093,7 +2094,8 @@ static int criu_checkpoint_bos(struct kfd_process *p, if (bo_bucket->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_USERPTR) { ret = amdgpu_ttm_tt_get_userptr(&dumper_bo->tbo, - &bo_priv->user_addr); + &bo_priv->user_addr, + &user_flags); if (ret) { pr_err("Failed to obtain user address for user-pointer bo\n"); goto exit; -- 2.54.0