aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2010-10-11 18:01:59 -0400
committerBen Skeggs <bskeggs@redhat.com>2010-12-03 00:05:24 -0500
commit08cd3d4311fb9c5038bc6fb0c83c250cfb218da2 (patch)
tree5ad1e02aff963f6604e26b1d379e818a21cc4bd2
parent21e86c1c8a844bf978f8fc431a59c9f5a578812d (diff)
drm/nouveau: fix thinko in channel locking in semaphore path
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_fence.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_fence.c b/drivers/gpu/drm/nouveau/nouveau_fence.c
index 42694b122eef..5f9f66f35067 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fence.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fence.c
@@ -393,23 +393,23 @@ nouveau_fence_sync(struct nouveau_fence *fence,
393 return nouveau_fence_wait(fence, NULL, false, false); 393 return nouveau_fence_wait(fence, NULL, false, false);
394 } 394 }
395 395
396 /* try to take wchan's mutex, if we can't take it right away 396 /* try to take chan's mutex, if we can't take it right away
397 * we have to fallback to software sync to prevent locking 397 * we have to fallback to software sync to prevent locking
398 * order issues 398 * order issues
399 */ 399 */
400 if (!mutex_trylock(&wchan->mutex)) { 400 if (!mutex_trylock(&chan->mutex)) {
401 free_semaphore(&sema->ref); 401 free_semaphore(&sema->ref);
402 return nouveau_fence_wait(fence, NULL, false, false); 402 return nouveau_fence_wait(fence, NULL, false, false);
403 } 403 }
404 404
405 /* Make wchan wait until it gets signalled */ 405 /* Make wchan wait until it gets signalled */
406 ret = emit_semaphore(wchan, NV_SW_SEMAPHORE_ACQUIRE, sema); 406 ret = emit_semaphore(wchan, NV_SW_SEMAPHORE_ACQUIRE, sema);
407 mutex_unlock(&wchan->mutex);
408 if (ret) 407 if (ret)
409 goto out; 408 goto out;
410 409
411 /* Signal the semaphore from chan */ 410 /* Signal the semaphore from chan */
412 ret = emit_semaphore(chan, NV_SW_SEMAPHORE_RELEASE, sema); 411 ret = emit_semaphore(chan, NV_SW_SEMAPHORE_RELEASE, sema);
412 mutex_unlock(&chan->mutex);
413out: 413out:
414 kref_put(&sema->ref, free_semaphore); 414 kref_put(&sema->ref, free_semaphore);
415 return ret; 415 return ret;