diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/evergreen_dma.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/evergreen_dma.c | 14 | 
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen_dma.c b/drivers/gpu/drm/radeon/evergreen_dma.c index 6a0656d00ed..478caefe0fe 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,  		return r;  	} -	if (radeon_fence_need_sync(*fence, ring->idx)) { -		radeon_semaphore_sync_rings(rdev, sem, (*fence)->ring, -					    ring->idx); -		radeon_fence_note_sync(*fence, ring->idx); -	} else { -		radeon_semaphore_free(rdev, &sem, NULL); -	} +	radeon_semaphore_sync_to(sem, *fence); +	radeon_semaphore_sync_rings(rdev, sem, ring->idx);  	for (i = 0; i < num_loops; i++) {  		cur_size_in_dw = size_in_dw; @@ -156,6 +151,7 @@ int evergreen_copy_dma(struct radeon_device *rdev,  	r = radeon_fence_emit(rdev, fence, ring->idx);  	if (r) {  		radeon_ring_unlock_undo(rdev, ring); +		radeon_semaphore_free(rdev, &sem, NULL);  		return r;  	} @@ -179,11 +175,9 @@ bool evergreen_dma_is_lockup(struct radeon_device *rdev, struct radeon_ring *rin  	u32 reset_mask = evergreen_gpu_check_soft_reset(rdev);  	if (!(reset_mask & RADEON_RESET_DMA)) { -		radeon_ring_lockup_update(ring); +		radeon_ring_lockup_update(rdev, ring);  		return false;  	} -	/* force ring activities */ -	radeon_ring_force_activity(rdev, ring);  	return radeon_ring_test_lockup(rdev, ring);  }  | 
