From: Christian König <[email protected]>

No need to do this on every CS.

Signed-off-by: Christian König <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index ea419ec..e1641f1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -171,6 +171,18 @@ static int amdgpu_vm_validate_level(struct amdgpu_vm_pt 
*parent,
                        return r;
        }
 
+       if (parent->bo->shadow) {
+               struct amdgpu_bo *shadow = parent->bo->shadow;
+
+               r = amdgpu_ttm_bind(&shadow->tbo, &shadow->tbo.mem);
+               if (r)
+                       return r;
+
+               spin_lock(&glob->lru_lock);
+               ttm_bo_move_to_lru_tail(&shadow->tbo);
+               spin_unlock(&glob->lru_lock);
+       }
+
        spin_lock(&glob->lru_lock);
        ttm_bo_move_to_lru_tail(&parent->bo->tbo);
        spin_unlock(&glob->lru_lock);
@@ -1031,11 +1043,6 @@ static int amdgpu_vm_update_level(struct amdgpu_device 
*adev,
 
                params.func = amdgpu_vm_cpu_set_ptes;
        } else {
-               if (shadow) {
-                       r = amdgpu_ttm_bind(&shadow->tbo, &shadow->tbo.mem);
-                       if (r)
-                               return r;
-               }
                ring = container_of(vm->entity.sched, struct amdgpu_ring,
                                    sched);
 
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to