drm/ttm: allow reserving more than one shared slot v3
Let's support simultaneous submissions to multiple engines. v2: rename the field to num_shared and fix up all users v3: rebased Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> Reviewed-by: Huang Rui <ray.huang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:

committed by
Alex Deucher

parent
c50fe0c5b1
commit
a9f34c70fd
@@ -85,7 +85,7 @@ static void vmw_resource_release(struct kref *kref)
|
||||
struct ttm_validate_buffer val_buf;
|
||||
|
||||
val_buf.bo = bo;
|
||||
val_buf.shared = false;
|
||||
val_buf.num_shared = 0;
|
||||
res->func->unbind(res, false, &val_buf);
|
||||
}
|
||||
res->backup_dirty = false;
|
||||
@@ -462,7 +462,7 @@ vmw_resource_check_buffer(struct ww_acquire_ctx *ticket,
|
||||
|
||||
INIT_LIST_HEAD(&val_list);
|
||||
val_buf->bo = ttm_bo_reference(&res->backup->base);
|
||||
val_buf->shared = false;
|
||||
val_buf->num_shared = 0;
|
||||
list_add_tail(&val_buf->head, &val_list);
|
||||
ret = ttm_eu_reserve_buffers(ticket, &val_list, interruptible, NULL);
|
||||
if (unlikely(ret != 0))
|
||||
@@ -565,7 +565,7 @@ static int vmw_resource_do_evict(struct ww_acquire_ctx *ticket,
|
||||
BUG_ON(!func->may_evict);
|
||||
|
||||
val_buf.bo = NULL;
|
||||
val_buf.shared = false;
|
||||
val_buf.num_shared = 0;
|
||||
ret = vmw_resource_check_buffer(ticket, res, interruptible, &val_buf);
|
||||
if (unlikely(ret != 0))
|
||||
return ret;
|
||||
@@ -614,7 +614,7 @@ int vmw_resource_validate(struct vmw_resource *res, bool intr)
|
||||
return 0;
|
||||
|
||||
val_buf.bo = NULL;
|
||||
val_buf.shared = false;
|
||||
val_buf.num_shared = 0;
|
||||
if (res->backup)
|
||||
val_buf.bo = &res->backup->base;
|
||||
do {
|
||||
@@ -685,7 +685,7 @@ void vmw_resource_unbind_list(struct vmw_buffer_object *vbo)
|
||||
struct vmw_resource *res, *next;
|
||||
struct ttm_validate_buffer val_buf = {
|
||||
.bo = &vbo->base,
|
||||
.shared = false
|
||||
.num_shared = 0
|
||||
};
|
||||
|
||||
lockdep_assert_held(&vbo->base.resv->lock.base);
|
||||
|
Reference in New Issue
Block a user