diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2010-10-11 18:01:59 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2010-12-03 00:05:24 -0500 |
commit | 08cd3d4311fb9c5038bc6fb0c83c250cfb218da2 (patch) | |
tree | 5ad1e02aff963f6604e26b1d379e818a21cc4bd2 | |
parent | 21e86c1c8a844bf978f8fc431a59c9f5a578812d (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.c | 6 |
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); | ||
413 | out: | 413 | out: |
414 | kref_put(&sema->ref, free_semaphore); | 414 | kref_put(&sema->ref, free_semaphore); |
415 | return ret; | 415 | return ret; |