[PATCH] drm/amdgpu: use CPU for page table update if SDMA is unavailable

Christian König ckoenig.leichtzumerken at gmail.com
Tue Aug 27 14:14:39 UTC 2024


Am 30.07.24 um 06:36 schrieb Yifan Zhang:
> avoid using SDMA if it is unavailable.

That is clearly not something we should do. The SDMA is mandatory for 
the driver to work.

We could do this for emulation and bringup, but in those cases the 
engineer should probably enabled CPU based updates manually.

Regards,
Christian.

>
> Signed-off-by: Yifan Zhang <yifan1.zhang at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 ++++++
>   1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index a060c28f0877..bcb729094521 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -2397,6 +2397,7 @@ void amdgpu_vm_set_task_info(struct amdgpu_vm *vm)
>   int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm,
>   		   int32_t xcp_id)
>   {
> +	struct amdgpu_ip_block *ip_block;
>   	struct amdgpu_bo *root_bo;
>   	struct amdgpu_bo_vm *root;
>   	int r, i;
> @@ -2426,6 +2427,11 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm,
>   	vm->use_cpu_for_update = !!(adev->vm_manager.vm_update_mode &
>   				    AMDGPU_VM_USE_CPU_FOR_GFX);
>   
> +	/* use CPU for page table update if SDMA is unavailable */
> +	ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_SDMA);
> +	if (!ip_block || ip_block->status.valid == false)
> +		vm->use_cpu_for_update = true;
> +
>   	DRM_DEBUG_DRIVER("VM update mode is %s\n",
>   			 vm->use_cpu_for_update ? "CPU" : "SDMA");
>   	WARN_ONCE((vm->use_cpu_for_update &&



More information about the amd-gfx mailing list