summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
diff options
context:
space:
mode:
authorYifan Zhang <yifan1.zhang@amd.com>2024-07-30 10:45:08 +0800
committerAlex Deucher <alexander.deucher@amd.com>2024-08-06 10:43:57 -0400
commit62eefd10ac1c7e976bda47ff311bd87cee40ab8d (patch)
treea0e93445d1b8e6206630104abf2d6f492ea14caf /drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
parent847e387e00547b0cc728a5e61f5beb2ff861ed1d (diff)
downloadlwn-62eefd10ac1c7e976bda47ff311bd87cee40ab8d.tar.gz
lwn-62eefd10ac1c7e976bda47ff311bd87cee40ab8d.zip
drm/amdgpu: use CPU for page table update if SDMA is unavailable
avoid using SDMA if it is unavailable. Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com> Reviewed-by: Tim Huang <tim.huang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c6
1 files changed, 6 insertions, 0 deletions
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 &&