From: Christian König Date: Wed, 7 Nov 2018 12:55:01 +0000 (+0100) Subject: drm/amdgpu: stop evicting busy PDs/PTs X-Git-Tag: for-linus-20190516~41^2~31^2~85 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=1bd4e4ca7bb8f681ff4e2b05c97ce975ccd781d6;p=linux-block.git drm/amdgpu: stop evicting busy PDs/PTs Otherwise we won't be able to cleanly handle page faults. Signed-off-by: Christian König Reviewed-by: Chunming Zhou Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index cd0ccfbbcb84..c1240bf243ba 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -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