intel: Expect caller to guarantee thread-safety of bo during reloc
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 1 Dec 2009 23:01:34 +0000 (23:01 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Sat, 5 Dec 2009 11:03:05 +0000 (11:03 +0000)
This removes the foremost prolific user of mutexes in libdrm_intel.so.
The other uses of the bufmgr_gem->mutex to serial access to individual
bos are currently required by Mesa, and are far less frequent.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
[anholt: This chunk looks good...]
Acked-by: Eric Anholt <eric@anholt.net>
intel/intel_bufmgr_gem.c

index 571ab5c..5b76340 100644 (file)
@@ -1201,23 +1201,17 @@ drm_intel_gem_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset,
        drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
        drm_intel_bo_gem *target_bo_gem = (drm_intel_bo_gem *) target_bo;
 
-       pthread_mutex_lock(&bufmgr_gem->lock);
-       if (bo_gem->has_error) {
-               pthread_mutex_unlock(&bufmgr_gem->lock);
+       if (bo_gem->has_error)
                return -ENOMEM;
-       }
 
        if (target_bo_gem->has_error) {
                bo_gem->has_error = 1;
-               pthread_mutex_unlock(&bufmgr_gem->lock);
                return -ENOMEM;
        }
 
        /* Create a new relocation list if needed */
-       if (bo_gem->relocs == NULL && drm_intel_setup_reloc_list(bo)) {
-               pthread_mutex_unlock(&bufmgr_gem->lock);
+       if (bo_gem->relocs == NULL && drm_intel_setup_reloc_list(bo))
                return -ENOMEM;
-       }
 
        /* Check overflow */
        assert(bo_gem->reloc_count < bufmgr_gem->max_relocs);
@@ -1249,8 +1243,6 @@ drm_intel_gem_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset,
 
        bo_gem->reloc_count++;
 
-       pthread_mutex_unlock(&bufmgr_gem->lock);
-
        return 0;
 }