From: Christian König <[email protected]> That case is handled by amdgpu_vm_update_leaves now.
Signed-off-by: Christian König <[email protected]> --- 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 | 19 ++++++----------- drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 4 ++-- 5 files changed, 24 insertions(+), 36 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index e60143d4990c..6a69e876e729 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -1109,7 +1109,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 @@ -1129,12 +1128,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; @@ -1164,7 +1162,6 @@ int amdgpu_vm_update_range(struct amdgpu_device *adev, struct amdgpu_vm *vm, memset(¶ms, 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; @@ -1390,7 +1387,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, @@ -1601,7 +1598,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); @@ -2644,7 +2641,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; @@ -2660,7 +2657,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 826406522b24..8ab20826ddf2 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h @@ -458,12 +458,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 7d3c0904e1a1..1011f49f0478 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_internal.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_internal.h @@ -111,10 +111,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 2f542c731447..919e1967c5ba 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c @@ -352,7 +352,6 @@ static void amdgpu_vm_pt_next_dfs(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. * @@ -360,7 +359,7 @@ static void amdgpu_vm_pt_next_dfs(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 }; @@ -397,7 +396,6 @@ int amdgpu_vm_pt_clear(struct amdgpu_device *adev, struct amdgpu_vm *vm, memset(¶ms, 0, sizeof(params)); params.adev = adev; params.vm = vm; - params.immediate = immediate; r = vm->update_funcs->prepare(¶ms, NULL, AMDGPU_KERNEL_JOB_ID_VM_PT_CLEAR); @@ -435,13 +433,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; @@ -471,7 +467,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) @@ -486,7 +481,6 @@ int amdgpu_vm_pt_create(struct amdgpu_device *adev, struct amdgpu_vm *vm, * @adev: amdgpu_device pointer * @vm: VM to allocate page tables for * @cursor: Which page table to allocate - * @immediate: use an immediate update * * Make sure a specific page table or directory is allocated. * @@ -496,8 +490,7 @@ int amdgpu_vm_pt_create(struct amdgpu_device *adev, struct amdgpu_vm *vm, */ static int amdgpu_vm_pt_alloc(struct amdgpu_device *adev, struct amdgpu_vm *vm, - struct amdgpu_vm_pt_cursor *cursor, - bool immediate) + struct amdgpu_vm_pt_cursor *cursor) { struct amdgpu_vm_bo_base *entry = cursor->entry; struct amdgpu_bo *pt_bo; @@ -508,7 +501,7 @@ static int amdgpu_vm_pt_alloc(struct amdgpu_device *adev, return 0; amdgpu_vm_eviction_unlock(vm); - r = amdgpu_vm_pt_create(adev, vm, cursor->level, immediate, &pt, + r = amdgpu_vm_pt_create(adev, vm, cursor->level, &pt, vm->root.bo->xcp_id); amdgpu_vm_eviction_lock(vm); if (r) @@ -520,7 +513,7 @@ static int amdgpu_vm_pt_alloc(struct amdgpu_device *adev, pt_bo = &pt->bo; pt_bo->parent = amdgpu_bo_ref(cursor->parent->bo); amdgpu_vm_bo_base_init(entry, vm, pt_bo); - r = amdgpu_vm_pt_clear(adev, vm, pt, immediate); + r = amdgpu_vm_pt_clear(adev, vm, pt); if (r) goto error_free_pt; @@ -812,7 +805,7 @@ int amdgpu_vm_ptes_update(struct amdgpu_vm_update_params *params, * address range are actually allocated */ r = amdgpu_vm_pt_alloc(params->adev, params->vm, - &cursor, params->immediate); + &cursor); if (r) return r; } diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c index fa4054d51f60..bc754f407f00 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c @@ -1406,7 +1406,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); } @@ -1518,7 +1518,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.53.0
