Change-Id: I1179a21aa3712b095fd50bed6956654e0f72e611
Signed-off-by: Chunming Zhou <david1.z...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 537f04d25535..a425d498f3fc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -255,9 +255,15 @@ void amdgpu_vm_add_to_lru(struct ttm_buffer_object *bo)
        struct ttm_bo_device *bdev = bo->bdev;
        struct amdgpu_bo *abo = ttm_to_amdgpu_bo(bo);
        struct amdgpu_vm_lru *vm_lru = abo->vm_lru;
+       struct ttm_mem_type_manager *man;
 
        if (!(bo->mem.placement & TTM_PL_FLAG_NO_EVICT)) {
-               if (bo->resv == vm_lru->resv)
+               if (bo->destroy == ttm_transfered_destroy) {
+                       BUG_ON(!list_empty(&bo->lru));
+
+                       man = &bdev->man[bo->mem.mem_type];
+                       list_add_tail(&bo->lru, &man->lru[bo->priority]);
+               } else if (bo->resv == vm_lru->resv)
                        amdgpu_vm_bo_add_to_rb(abo, 
&vm_lru->fixed_lru[bo->mem.mem_type][bo->priority]);
                else
                        list_add_tail(&bo->lru, 
&vm_lru->dynamic_lru[bo->mem.mem_type][bo->priority]);
@@ -297,6 +303,8 @@ void amdgpu_vm_del_from_lru(struct ttm_buffer_object *bo)
        struct amdgpu_bo *abo = ttm_to_amdgpu_bo(bo);
        struct amdgpu_vm_lru *vm_lru = abo->vm_lru;
 
+       if (bo->destroy == ttm_transfered_destroy)
+               return;
        if 
(amdgpu_vm_bo_rb_find(&vm_lru->fixed_lru[bo->mem.mem_type][bo->priority],
                                 abo->index)) {
                rb_erase(&abo->node,
@@ -311,6 +319,8 @@ void amdgpu_vm_move_to_lru_tail(struct ttm_buffer_object 
*bo)
        struct amdgpu_vm_lru *vm_lru = abo->vm_lru;
        struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
 
+       if (bo->destroy == ttm_transfered_destroy)
+               return;
        if (bo->resv == vm_lru->resv)
                list_move_tail(&vm_lru->vm_lru_list, &adev->vm_lru_list);
 }
-- 
2.14.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to