aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/evergreen_dma.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2013-11-12 06:58:05 -0500
committerAlex Deucher <alexander.deucher@amd.com>2013-11-15 15:56:09 -0500
commit1654b817d8f5f1c27ebc98773fe0e517b0ba2f1e (patch)
treeb12139b37c3d712973baabfd5f8142728e36ef2a /drivers/gpu/drm/radeon/evergreen_dma.c
parentbd80c8ba995c1dbdddee14acc55c541c499e0442 (diff)
drm/radeon: allow semaphore emission to fail
To workaround bugs and/or certain limits it's sometimes useful to fall back to waiting on fences. Signed-off-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreen_dma.c')
-rw-r--r--drivers/gpu/drm/radeon/evergreen_dma.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen_dma.c b/drivers/gpu/drm/radeon/evergreen_dma.c
index 6a0656d00ed0..a37b54436382 100644
--- a/drivers/gpu/drm/radeon/evergreen_dma.c
+++ b/drivers/gpu/drm/radeon/evergreen_dma.c
@@ -131,13 +131,8 @@ int evergreen_copy_dma(struct radeon_device *rdev,
131 return r; 131 return r;
132 } 132 }
133 133
134 if (radeon_fence_need_sync(*fence, ring->idx)) { 134 radeon_semaphore_sync_to(sem, *fence);
135 radeon_semaphore_sync_rings(rdev, sem, (*fence)->ring, 135 radeon_semaphore_sync_rings(rdev, sem, ring->idx);
136 ring->idx);
137 radeon_fence_note_sync(*fence, ring->idx);
138 } else {
139 radeon_semaphore_free(rdev, &sem, NULL);
140 }
141 136
142 for (i = 0; i < num_loops; i++) { 137 for (i = 0; i < num_loops; i++) {
143 cur_size_in_dw = size_in_dw; 138 cur_size_in_dw = size_in_dw;