Change-Id: I73aa32cda17cd1039232125afa4aad299b264705 Signed-off-by: Chunming Zhou <David1.Zhou at amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index df10795..3f770ec 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -713,9 +713,11 @@ int amdgpu_vm_update_page_directory(struct amdgpu_device *adev, { int r; - r = amdgpu_vm_update_pd_or_shadow(adev, vm, true); - if (r) - return r; + if (amdgpu_need_backup(adev)) { + r = amdgpu_vm_update_pd_or_shadow(adev, vm, true); + if (r) + return r; + } return amdgpu_vm_update_pd_or_shadow(adev, vm, false); } @@ -729,6 +731,9 @@ int amdgpu_vm_recover_page_table_from_shadow(struct amdgpu_device *adev, uint32_t domain; int r; + if (!amdgpu_need_backup(adev)) + return 0; + if (!vm->page_directory->shadow) return 0; @@ -1037,7 +1042,8 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev, if (r) goto error_free; - amdgpu_vm_frag_ptes(¶ms, vm, start, last + 1, addr, flags, true); + if (amdgpu_need_backup(adev)) + amdgpu_vm_frag_ptes(¶ms, vm, start, last + 1, addr, flags, true); amdgpu_vm_frag_ptes(¶ms, vm, start, last + 1, addr, flags, false); amdgpu_ring_pad_ib(ring, params.ib); @@ -1418,7 +1424,8 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev, AMDGPU_GPU_PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_VRAM, AMDGPU_GEM_CREATE_NO_CPU_ACCESS | - AMDGPU_GEM_CREATE_SHADOW, + (amdgpu_need_backup(adev) ? + AMDGPU_GEM_CREATE_SHADOW : 0), NULL, resv, &pt); if (r) goto error_free; @@ -1619,7 +1626,8 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm) r = amdgpu_bo_create(adev, pd_size, align, true, AMDGPU_GEM_DOMAIN_VRAM, AMDGPU_GEM_CREATE_NO_CPU_ACCESS | - AMDGPU_GEM_CREATE_SHADOW, + (amdgpu_need_backup(adev) ? + AMDGPU_GEM_CREATE_SHADOW : 0), NULL, NULL, &vm->page_directory); if (r) goto error_free_sched_entity; -- 1.9.1