[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