diff options
author | Chunming Zhou <david1.zhou@amd.com> | 2015-08-25 03:12:26 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-08-25 10:53:48 -0400 |
commit | 9066b0c318589f47b754a3def4fe8ec4688dc21a (patch) | |
tree | f03792a740dc9c9eb87dc9bb50ef9085d8ed6fe7 /drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | |
parent | 3c62338c26bf2677c8285b406cd769b92ee0dc10 (diff) |
drm/amdgpu: fix no sync_wait in copy_buffer
when eviction is happening, if don't handle
dependency, then the fence could be dead off.
Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: Christian K?nig <christian.koenig@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index d7c02e1a309e..4cb81320b045 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | |||
@@ -1014,13 +1014,19 @@ int amdgpu_copy_buffer(struct amdgpu_ring *ring, | |||
1014 | /* for fence and sync */ | 1014 | /* for fence and sync */ |
1015 | num_dw += 64 + AMDGPU_NUM_SYNCS * 8; | 1015 | num_dw += 64 + AMDGPU_NUM_SYNCS * 8; |
1016 | 1016 | ||
1017 | r = amdgpu_sync_wait(&sync); | ||
1018 | if (r) { | ||
1019 | DRM_ERROR("sync wait failed (%d).\n", r); | ||
1020 | amdgpu_sync_free(adev, &sync, NULL); | ||
1021 | return r; | ||
1022 | } | ||
1023 | |||
1017 | r = amdgpu_ring_lock(ring, num_dw); | 1024 | r = amdgpu_ring_lock(ring, num_dw); |
1018 | if (r) { | 1025 | if (r) { |
1019 | DRM_ERROR("ring lock failed (%d).\n", r); | 1026 | DRM_ERROR("ring lock failed (%d).\n", r); |
1020 | amdgpu_sync_free(adev, &sync, NULL); | 1027 | amdgpu_sync_free(adev, &sync, NULL); |
1021 | return r; | 1028 | return r; |
1022 | } | 1029 | } |
1023 | |||
1024 | amdgpu_sync_rings(&sync, ring); | 1030 | amdgpu_sync_rings(&sync, ring); |
1025 | 1031 | ||
1026 | for (i = 0; i < num_loops; i++) { | 1032 | for (i = 0; i < num_loops; i++) { |