[PATCH] drm/amdgpu: install stub fence into potential unused fence pointers
Christian König
christian.koenig at amd.com
Fri May 5 12:46:36 UTC 2023
Am 05.05.23 um 14:44 schrieb Lang Yu:
> When using cpu to update page tables, vm update fences are unused.
> Install stub fence into these fence pointers instead of NULL
> to avoid NULL dereference when calling dma_fence_wait() on them.
>
> Suggested-by: Christian König <christian.koenig at amd.com>
> Signed-off-by: Lang Yu <Lang.Yu at amd.com>
Reviewed-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 78daf6e2f337..aae70a16fd46 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -1444,6 +1444,7 @@ struct amdgpu_bo_va *amdgpu_vm_bo_add(struct amdgpu_device *adev,
> amdgpu_vm_bo_base_init(&bo_va->base, vm, bo);
>
> bo_va->ref_count = 1;
> + bo_va->last_pt_update = dma_fence_get_stub();
> INIT_LIST_HEAD(&bo_va->valids);
> INIT_LIST_HEAD(&bo_va->invalids);
>
> @@ -2144,7 +2145,8 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)
> vm->update_funcs = &amdgpu_vm_cpu_funcs;
> else
> vm->update_funcs = &amdgpu_vm_sdma_funcs;
> - vm->last_update = NULL;
> +
> + vm->last_update = dma_fence_get_stub();
> vm->last_unlocked = dma_fence_get_stub();
> vm->last_tlb_flush = dma_fence_get_stub();
> vm->generation = 0;
> @@ -2267,7 +2269,7 @@ int amdgpu_vm_make_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm)
> goto unreserve_bo;
>
> dma_fence_put(vm->last_update);
> - vm->last_update = NULL;
> + vm->last_update = dma_fence_get_stub();
> vm->is_compute_context = true;
>
> /* Free the shadow bo for compute VM */
More information about the amd-gfx
mailing list