drm/amdgpu: stop evicting busy PDs/PTs
authorChristian König <christian.koenig@amd.com>
Wed, 7 Nov 2018 12:55:01 +0000 (13:55 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 19 Mar 2019 20:36:58 +0000 (15:36 -0500)
Otherwise we won't be able to cleanly handle page faults.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

index cd0ccfbbcb84612cb3d4f208c943b790d57c98dd..c1240bf243ba69ab8749ad97fbe62c9deefac944 100644 (file)
@@ -1371,6 +1371,13 @@ static bool amdgpu_ttm_bo_eviction_valuable(struct ttm_buffer_object *bo,
        struct dma_fence *f;
        int i;
 
+       /* Don't evict VM page tables while they are busy, otherwise we can't
+        * cleanly handle page faults.
+        */
+       if (bo->type == ttm_bo_type_kernel &&
+           !reservation_object_test_signaled_rcu(bo->resv, true))
+               return false;
+
        /* If bo is a KFD BO, check if the bo belongs to the current process.
         * If true, then return false as any KFD process needs all its BOs to
         * be resident to run successfully