diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/cik_sdma.c')
-rw-r--r-- | drivers/gpu/drm/radeon/cik_sdma.c | 13 |
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 | */ |
133 | void cik_sdma_semaphore_ring_emit(struct radeon_device *rdev, | 133 | bool 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; |