aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/cik_sdma.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/cik_sdma.c')
-rw-r--r--drivers/gpu/drm/radeon/cik_sdma.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/gpu/drm/radeon/cik_sdma.c b/drivers/gpu/drm/radeon/cik_sdma.c
index 9c9529de20ee..0300727a4f70 100644
--- a/drivers/gpu/drm/radeon/cik_sdma.c
+++ b/drivers/gpu/drm/radeon/cik_sdma.c
@@ -130,7 +130,7 @@ void cik_sdma_fence_ring_emit(struct radeon_device *rdev,
130 * Add a DMA semaphore packet to the ring wait on or signal 130 * Add a DMA semaphore packet to the ring wait on or signal
131 * other rings (CIK). 131 * other rings (CIK).
132 */ 132 */
133void cik_sdma_semaphore_ring_emit(struct radeon_device *rdev, 133bool cik_sdma_semaphore_ring_emit(struct radeon_device *rdev,
134 struct radeon_ring *ring, 134 struct radeon_ring *ring,
135 struct radeon_semaphore *semaphore, 135 struct radeon_semaphore *semaphore,
136 bool emit_wait) 136 bool emit_wait)
@@ -141,6 +141,8 @@ void cik_sdma_semaphore_ring_emit(struct radeon_device *rdev,
141 radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_SEMAPHORE, 0, extra_bits)); 141 radeon_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_SEMAPHORE, 0, extra_bits));
142 radeon_ring_write(ring, addr & 0xfffffff8); 142 radeon_ring_write(ring, addr & 0xfffffff8);
143 radeon_ring_write(ring, upper_32_bits(addr) & 0xffffffff); 143 radeon_ring_write(ring, upper_32_bits(addr) & 0xffffffff);
144
145 return true;
144} 146}
145 147
146/** 148/**
@@ -443,13 +445,8 @@ int cik_copy_dma(struct radeon_device *rdev,
443 return r; 445 return r;
444 } 446 }
445 447
446 if (radeon_fence_need_sync(*fence, ring->idx)) { 448 radeon_semaphore_sync_to(sem, *fence);
447 radeon_semaphore_sync_rings(rdev, sem, (*fence)->ring, 449 radeon_semaphore_sync_rings(rdev, sem, ring->idx);
448 ring->idx);
449 radeon_fence_note_sync(*fence, ring->idx);
450 } else {
451 radeon_semaphore_free(rdev, &sem, NULL);
452 }
453 450
454 for (i = 0; i < num_loops; i++) { 451 for (i = 0; i < num_loops; i++) {
455 cur_size_in_bytes = size_in_bytes; 452 cur_size_in_bytes = size_in_bytes;