That case is handled by amdgpu_vm_update_leaves now.

Signed-off-by: Christian König <[email protected]>
Reviewed-by: Timur Kristóf <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c    | 42 +++++++++----------
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c        | 21 ++++------
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h        | 11 +++--
 .../gpu/drm/amd/amdgpu/amdgpu_vm_internal.h   |  5 +--
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c     | 13 ++----
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c          |  4 +-
 6 files changed, 43 insertions(+), 53 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
index 6e937f31a5b1a..aac97dca36e33 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ualink.c
@@ -2056,9 +2056,9 @@ static int amdgpu_ualink_unmap_npa_addr(struct 
amdgpu_device *adev,
                return r;
        }
 
-       r = amdgpu_vm_update_range(adev, vm, false, false, true,
-                               false, NULL, npa_addr, npa_addr + size - 1,
-                               pte_value, 0, 0, NULL, NULL, &vm->last_update);
+       r = amdgpu_vm_update_range(adev, vm, false, true, false, NULL, npa_addr,
+                                  npa_addr + size - 1, pte_value, 0, 0, NULL,
+                                  NULL, &vm->last_update);
        if (r) {
                dev_err(adev->dev,
                        "Failed to unmap NPA addr (%llx) from NPA VM\n", 
npa_addr);
@@ -2108,10 +2108,10 @@ static int amdgpu_ualink_map_npa_addr(struct 
amdgpu_device *adev, u64 npa_addr,
                return r;
        }
 
-       r = amdgpu_vm_update_range(adev, vm, false, false, true,
-                               false, NULL, npa_addr, npa_addr + size - 1,
-                               pte_flags, offset, 
adev->vm_manager.vram_base_offset,
-                               bo->tbo.resource, NULL, &vm->last_update);
+       r = amdgpu_vm_update_range(adev, vm, false, true, false, NULL, npa_addr,
+                                  npa_addr + size - 1, pte_flags, offset,
+                                  adev->vm_manager.vram_base_offset,
+                                  bo->tbo.resource, NULL, &vm->last_update);
        if (r) {
                dev_warn(adev->dev,
                        "Failed to map NPA addr (%llx) into NPA VM\n", 
npa_addr);
@@ -2645,10 +2645,12 @@ static void amdgpu_ualink_force_retry_rpcs(struct 
amdgpu_device *adev,
                        "RETRY-RPC: setting PTE.X=1 for NPA:%llx remote:%u 
pte:0x%llx\n",
                        npa_addr, remote_acc_id, pte_flags);
 
-               r = amdgpu_vm_update_range(adev, vm, false, false, true,
-                                       false, NULL, npa_addr, npa_addr + size 
- 1,
-                                       pte_flags, 0, 
adev->vm_manager.vram_base_offset,
-                                       bo->tbo.resource, NULL, 
&vm->last_update);
+               r = amdgpu_vm_update_range(adev, vm, false, true, false, NULL,
+                                          npa_addr, npa_addr + size - 1,
+                                          pte_flags, 0,
+                                          adev->vm_manager.vram_base_offset,
+                                          bo->tbo.resource, NULL,
+                                          &vm->last_update);
 
                if (r)
                        dev_warn(adev->dev,
@@ -2781,10 +2783,10 @@ static void amdgpu_ualink_unmap_all_npa_addr(struct 
amdgpu_device *adev,
                        npa_addr, exp_xa_node->handle.handle_hi, 
exp_xa_node->handle.handle_lo,
                        remote_acc_id, pte_value);
 
-               r = amdgpu_vm_update_range(adev, vm, false,
-                                          false, true, false, NULL, npa_addr,
-                                          npa_addr + size - 1, pte_value, 0,
-                                          0, NULL, NULL, &vm->last_update);
+               r = amdgpu_vm_update_range(adev, vm, false, true, false, NULL,
+                                          npa_addr, npa_addr + size - 1,
+                                          pte_value, 0, 0, NULL, NULL,
+                                          &vm->last_update);
 
                if (r)
                        dev_err(adev->dev,
@@ -4567,9 +4569,8 @@ static int amdgpu_ualink_npa_vm_map_range(struct 
amdgpu_device *adev, struct amd
                offset, size_in_pages << AMDGPU_GPU_PAGE_SHIFT, pte_flags,
                npa_in_pages << AMDGPU_GPU_PAGE_SHIFT);
 
-       r = amdgpu_vm_update_range(adev, npa_vm, false, false, true,
-                                  false, NULL, npa_in_pages,
-                                  npa_in_pages + size_in_pages - 1,
+       r = amdgpu_vm_update_range(adev, npa_vm, false, true, false, NULL,
+                                  npa_in_pages, npa_in_pages + size_in_pages - 
1,
                                   pte_flags, offset, 
adev->vm_manager.vram_base_offset,
                                   bo->tbo.resource, NULL, 
&npa_vm->last_update);
        if (r)
@@ -4602,9 +4603,8 @@ static int amdgpu_ualink_npa_vm_unmap_range(struct 
amdgpu_device *adev, struct a
                offset, size_in_pages << AMDGPU_GPU_PAGE_SHIFT, pte_flags,
                npa_in_pages << AMDGPU_GPU_PAGE_SHIFT);
 
-       r = amdgpu_vm_update_range(adev, npa_vm, false, false, true,
-                                  false, NULL, npa_in_pages,
-                                  npa_in_pages + size_in_pages - 1,
+       r = amdgpu_vm_update_range(adev, npa_vm, false, true, false, NULL,
+                                  npa_in_pages, npa_in_pages + size_in_pages - 
1,
                                   pte_flags, offset, 0, bo->tbo.resource, NULL,
                                   &npa_vm->last_update);
        if (r)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index d6358cbfcc9b1..017ec0ac0870d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -1108,7 +1108,6 @@ amdgpu_vm_tlb_flush(struct amdgpu_vm_update_params 
*params,
  *
  * @adev: amdgpu_device pointer to use for commands
  * @vm: the VM to update the range
- * @immediate: immediate submission in a page fault
  * @unlocked: unlocked invalidation during MM callback
  * @flush_tlb: trigger tlb invalidation after update completed
  * @allow_override: change MTYPE for local NUMA nodes
@@ -1128,12 +1127,11 @@ amdgpu_vm_tlb_flush(struct amdgpu_vm_update_params 
*params,
  * 0 for success, negative erro code for failure.
  */
 int amdgpu_vm_update_range(struct amdgpu_device *adev, struct amdgpu_vm *vm,
-                          bool immediate, bool unlocked, bool flush_tlb,
-                          bool allow_override, struct amdgpu_sync *sync,
-                          uint64_t start, uint64_t last, uint64_t flags,
-                          uint64_t offset, uint64_t vram_base,
-                          struct ttm_resource *res, dma_addr_t *pages_addr,
-                          struct dma_fence **fence)
+                          bool unlocked, bool flush_tlb, bool allow_override,
+                          struct amdgpu_sync *sync, uint64_t start,
+                          uint64_t last, uint64_t flags, uint64_t offset,
+                          uint64_t vram_base, struct ttm_resource *res,
+                          dma_addr_t *pages_addr, struct dma_fence **fence)
 {
        struct amdgpu_vm_tlb_seq_struct *tlb_cb;
        struct amdgpu_vm_update_params params;
@@ -1163,7 +1161,6 @@ int amdgpu_vm_update_range(struct amdgpu_device *adev, 
struct amdgpu_vm *vm,
        memset(&params, 0, sizeof(params));
        params.adev = adev;
        params.vm = vm;
-       params.immediate = immediate;
        params.pages_addr = pages_addr;
        params.unlocked = unlocked;
        params.needs_flush = flush_tlb;
@@ -1389,7 +1386,7 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev, 
struct amdgpu_bo_va *bo_va,
 
                trace_amdgpu_vm_bo_update(mapping);
 
-               r = amdgpu_vm_update_range(adev, vm, false, false, flush_tlb,
+               r = amdgpu_vm_update_range(adev, vm, false, flush_tlb,
                                           !uncached, &sync, mapping->start,
                                           mapping->last, update_flags,
                                           mapping->offset, vram_base, mem,
@@ -1600,7 +1597,7 @@ int amdgpu_vm_clear_freed(struct amdgpu_device *adev,
                        struct amdgpu_bo_va_mapping, list);
                list_del(&mapping->list);
 
-               r = amdgpu_vm_update_range(adev, vm, false, false, true, false,
+               r = amdgpu_vm_update_range(adev, vm, false, true, false,
                                           &sync, mapping->start, mapping->last,
                                           0, 0, 0, NULL, NULL, &f);
                amdgpu_vm_free_mapping(adev, vm, mapping, f);
@@ -2661,7 +2658,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct 
amdgpu_vm *vm,
        vm->tlb_fence_context = dma_fence_context_alloc(1);
 
        r = amdgpu_vm_pt_create(adev, vm, adev->vm_manager.root_level,
-                               false, &root, xcp_id);
+                               &root, xcp_id);
        if (r)
                goto error_free_delayed;
 
@@ -2677,7 +2674,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct 
amdgpu_vm *vm,
        if (r)
                goto error_free_root;
 
-       r = amdgpu_vm_pt_clear(adev, vm, root, false);
+       r = amdgpu_vm_pt_clear(adev, vm, root);
        if (r)
                goto error_free_root;
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
index ec5cd38fe4e34..3ff17625a8c0c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
@@ -466,12 +466,11 @@ int amdgpu_vm_flush_compute_tlb(struct amdgpu_device 
*adev,
 void amdgpu_vm_bo_base_init(struct amdgpu_vm_bo_base *base,
                            struct amdgpu_vm *vm, struct amdgpu_bo *bo);
 int amdgpu_vm_update_range(struct amdgpu_device *adev, struct amdgpu_vm *vm,
-                          bool immediate, bool unlocked, bool flush_tlb,
-                          bool allow_override, struct amdgpu_sync *sync,
-                          uint64_t start, uint64_t last, uint64_t flags,
-                          uint64_t offset, uint64_t vram_base,
-                          struct ttm_resource *res, dma_addr_t *pages_addr,
-                          struct dma_fence **fence);
+                          bool unlocked, bool flush_tlb, bool allow_override,
+                          struct amdgpu_sync *sync, uint64_t start,
+                          uint64_t last, uint64_t flags, uint64_t offset,
+                          uint64_t vram_base, struct ttm_resource *res,
+                          dma_addr_t *pages_addr, struct dma_fence **fence);
 int amdgpu_vm_bo_update(struct amdgpu_device *adev,
                        struct amdgpu_bo_va *bo_va,
                        bool clear);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_internal.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_internal.h
index dafdb3a001b8e..89fdeff0575ef 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_internal.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_internal.h
@@ -116,10 +116,9 @@ struct amdgpu_vm_update_funcs {
 };
 
 int amdgpu_vm_pt_clear(struct amdgpu_device *adev, struct amdgpu_vm *vm,
-                      struct amdgpu_bo_vm *vmbo, bool immediate);
+                      struct amdgpu_bo_vm *vmbo);
 int amdgpu_vm_pt_create(struct amdgpu_device *adev, struct amdgpu_vm *vm,
-                       int level, bool immediate, struct amdgpu_bo_vm **vmbo,
-                       int32_t xcp_id);
+                       int level, struct amdgpu_bo_vm **vmbo, int32_t xcp_id);
 void amdgpu_vm_pt_free_root(struct amdgpu_device *adev, struct amdgpu_vm *vm);
 int amdgpu_vm_pde_update(struct amdgpu_vm_update_params *params,
                         struct amdgpu_vm_bo_base *entry);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c
index 27003b03b5fdb..50c41e39e2a2b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c
@@ -379,7 +379,6 @@ static uint64_t amdgpu_vm_pt_clear_flags(struct 
amdgpu_device *adev,
  * @adev: amdgpu_device pointer
  * @vm: VM to clear BO from
  * @vmbo: BO to clear
- * @immediate: use an immediate update
  *
  * Root PD needs to be reserved when calling this.
  *
@@ -387,7 +386,7 @@ static uint64_t amdgpu_vm_pt_clear_flags(struct 
amdgpu_device *adev,
  * 0 on success, errno otherwise.
  */
 int amdgpu_vm_pt_clear(struct amdgpu_device *adev, struct amdgpu_vm *vm,
-                      struct amdgpu_bo_vm *vmbo, bool immediate)
+                      struct amdgpu_bo_vm *vmbo)
 {
        unsigned int level = adev->vm_manager.root_level;
        struct ttm_operation_ctx ctx = { true, false };
@@ -423,7 +422,6 @@ int amdgpu_vm_pt_clear(struct amdgpu_device *adev, struct 
amdgpu_vm *vm,
        memset(&params, 0, sizeof(params));
        params.adev = adev;
        params.vm = vm;
-       params.immediate = immediate;
 
        r = vm->update_funcs->prepare(&params, NULL,
                                      AMDGPU_KERNEL_JOB_ID_VM_PT_CLEAR);
@@ -447,13 +445,11 @@ int amdgpu_vm_pt_clear(struct amdgpu_device *adev, struct 
amdgpu_vm *vm,
  * @adev: amdgpu_device pointer
  * @vm: requesting vm
  * @level: the page table level
- * @immediate: use a immediate update
  * @vmbo: pointer to the buffer object pointer
  * @xcp_id: GPU partition id
  */
 int amdgpu_vm_pt_create(struct amdgpu_device *adev, struct amdgpu_vm *vm,
-                       int level, bool immediate, struct amdgpu_bo_vm **vmbo,
-                       int32_t xcp_id)
+                       int level, struct amdgpu_bo_vm **vmbo, int32_t xcp_id)
 {
        struct amdgpu_bo_param bp;
        unsigned int num_entries;
@@ -484,7 +480,6 @@ int amdgpu_vm_pt_create(struct amdgpu_device *adev, struct 
amdgpu_vm *vm,
                bp.flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
 
        bp.type = ttm_bo_type_kernel;
-       bp.no_wait_gpu = immediate;
        bp.xcp_id_plus1 = xcp_id + 1;
 
        if (vm->root.bo)
@@ -534,7 +529,7 @@ static int amdgpu_vm_pt_alloc(struct 
amdgpu_vm_update_params *p,
                return 0;
 
        amdgpu_vm_end_critical(p);
-       r = amdgpu_vm_pt_create(p->adev, p->vm, cursor->level, p->immediate,
+       r = amdgpu_vm_pt_create(p->adev, p->vm, cursor->level,
                                &pt, p->vm->root.bo->xcp_id);
        r2 = amdgpu_vm_begin_critical(p);
        if (r)
@@ -548,7 +543,7 @@ static int amdgpu_vm_pt_alloc(struct 
amdgpu_vm_update_params *p,
        pt_bo = &pt->bo;
        pt_bo->parent = amdgpu_bo_ref(cursor->parent->bo);
        amdgpu_vm_bo_base_init(entry, p->vm, pt_bo);
-       r = amdgpu_vm_pt_clear(p->adev, p->vm, pt, p->immediate);
+       r = amdgpu_vm_pt_clear(p->adev, p->vm, pt);
        if (r)
                goto error_unpin;
 
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index a99dbedf3cd4f..411bd3394442a 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -1411,7 +1411,7 @@ svm_range_unmap_from_gpu(struct amdgpu_device *adev, 
struct amdgpu_vm *vm,
                return -EINVAL;
        }
 
-       return amdgpu_vm_update_range(adev, vm, false, true, true, false, NULL, 
gpu_start,
+       return amdgpu_vm_update_range(adev, vm, true, true, false, NULL, 
gpu_start,
                                      gpu_end, init_pte_value, 0, 0, NULL, NULL,
                                      fence);
 }
@@ -1523,7 +1523,7 @@ svm_range_map_to_gpu(struct kfd_process_device *pdd, 
struct svm_range *prange,
                         (last_domain == SVM_RANGE_VRAM_DOMAIN) ? 1 : 0,
                         pte_flags);
 
-               r = amdgpu_vm_update_range(adev, vm, false, false, flush_tlb, 
true,
+               r = amdgpu_vm_update_range(adev, vm, false, flush_tlb, true,
                                           NULL, gpu_start, gpu_end,
                                           pte_flags,
                                           (last_start - prange->start) << 
PAGE_SHIFT,
-- 
2.43.0

Reply via email to