summaryrefslogtreecommitdiff
path: root/linux-core/openchrome/via_execbuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux-core/openchrome/via_execbuf.c')
-rw-r--r--linux-core/openchrome/via_execbuf.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/linux-core/openchrome/via_execbuf.c b/linux-core/openchrome/via_execbuf.c
index 12009df7..468c9c23 100644
--- a/linux-core/openchrome/via_execbuf.c
+++ b/linux-core/openchrome/via_execbuf.c
@@ -551,7 +551,6 @@ static int via_validate_buffer_list(struct drm_file *file_priv,
item->ret = 0;
req = &item->req;
- mutex_lock(&bo->mutex);
ret = via_placement_fence_type(bo,
req->set_flags,
req->clear_flags,
@@ -570,7 +569,6 @@ static int via_validate_buffer_list(struct drm_file *file_priv,
item->offset = bo->offset;
item->flags = bo->mem.placement;
- mutex_unlock(&bo->mutex);
ret = via_check_presumed(&item->req, bo, item->user_val_arg,
&item->po_correct);
@@ -587,7 +585,6 @@ static int via_validate_buffer_list(struct drm_file *file_priv,
return 0;
out_err:
- mutex_unlock(&bo->mutex);
item->ret = ret;
return ret;
}
@@ -612,13 +609,13 @@ static int via_handle_copyback(struct drm_device *dev,
if (!arg.ret) {
struct ttm_buffer_object *bo = entry->bo;
- mutex_lock(&bo->mutex);
- arg.d.rep.gpu_offset = bo->offset;
- arg.d.rep.placement = bo->mem.placement;
+ arg.d.rep.gpu_offset = vbuf->offset;
+ arg.d.rep.placement = vbuf->flags;
+ spin_lock(&bo->lock);
arg.d.rep.fence_type_mask =
(uint32_t) (unsigned long)
entry->new_sync_obj_arg;
- mutex_unlock(&bo->mutex);
+ spin_unlock(&bo->lock);
}
if (__copy_to_user(vbuf->user_val_arg,