diff options
author | Christian König <christian.koenig@amd.com> | 2015-09-01 09:13:53 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-10-21 11:35:12 -0400 |
commit | 0c418f10104d4aa1d6b83698790898dc9ef1c12d (patch) | |
tree | 0fe6d3a53c2a9c8d66636124c29b0085b1c00be1 /drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | |
parent | b7e4dad3e1fc5d3909737fb72e57aedeb0072c7f (diff) |
drm/amdgpu: remove the exclusive lock
Finally getting rid of it.
Signed-off-by: Christian König <christian.koenig@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c index 4010aa6b4e53..1fadc15e64ae 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | |||
@@ -260,16 +260,8 @@ static void amdgpu_fence_check_lockup(struct work_struct *work) | |||
260 | lockup_work.work); | 260 | lockup_work.work); |
261 | ring = fence_drv->ring; | 261 | ring = fence_drv->ring; |
262 | 262 | ||
263 | if (!down_read_trylock(&ring->adev->exclusive_lock)) { | 263 | if (amdgpu_fence_activity(ring)) |
264 | /* just reschedule the check if a reset is going on */ | ||
265 | amdgpu_fence_schedule_check(ring); | ||
266 | return; | ||
267 | } | ||
268 | |||
269 | if (amdgpu_fence_activity(ring)) { | ||
270 | wake_up_all(&ring->fence_drv.fence_queue); | 264 | wake_up_all(&ring->fence_drv.fence_queue); |
271 | } | ||
272 | up_read(&ring->adev->exclusive_lock); | ||
273 | } | 265 | } |
274 | 266 | ||
275 | /** | 267 | /** |
@@ -317,18 +309,15 @@ static bool amdgpu_fence_is_signaled(struct fence *f) | |||
317 | { | 309 | { |
318 | struct amdgpu_fence *fence = to_amdgpu_fence(f); | 310 | struct amdgpu_fence *fence = to_amdgpu_fence(f); |
319 | struct amdgpu_ring *ring = fence->ring; | 311 | struct amdgpu_ring *ring = fence->ring; |
320 | struct amdgpu_device *adev = ring->adev; | ||
321 | 312 | ||
322 | if (atomic64_read(&ring->fence_drv.last_seq) >= fence->seq) | 313 | if (atomic64_read(&ring->fence_drv.last_seq) >= fence->seq) |
323 | return true; | 314 | return true; |
324 | 315 | ||
325 | if (down_read_trylock(&adev->exclusive_lock)) { | 316 | amdgpu_fence_process(ring); |
326 | amdgpu_fence_process(ring); | 317 | |
327 | up_read(&adev->exclusive_lock); | 318 | if (atomic64_read(&ring->fence_drv.last_seq) >= fence->seq) |
319 | return true; | ||
328 | 320 | ||
329 | if (atomic64_read(&ring->fence_drv.last_seq) >= fence->seq) | ||
330 | return true; | ||
331 | } | ||
332 | return false; | 321 | return false; |
333 | } | 322 | } |
334 | 323 | ||