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

Reply via email to