Commit b2576f6c authored by Pranjal Ramajor Asha Kanojiya's avatar Pranjal Ramajor Asha Kanojiya Committed by Jeffrey Hugo

accel/qaic: Create a function to initialize BO

This makes sure that we have a single place to initialize and
re-initialize BO.

Use this new API to cleanup release_dbc()

We will need this for next patch to detach slicing to a BO.
Signed-off-by: default avatarPranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
Reviewed-by: default avatarJeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: default avatarJeffrey Hugo <quic_jhugo@quicinc.com>
Reviewed-by: default avatarStanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230901172247.11410-7-quic_jhugo@quicinc.com
parent 0a9ee93b
...@@ -635,6 +635,18 @@ static const struct drm_gem_object_funcs qaic_gem_funcs = { ...@@ -635,6 +635,18 @@ static const struct drm_gem_object_funcs qaic_gem_funcs = {
.vm_ops = &drm_vm_ops, .vm_ops = &drm_vm_ops,
}; };
static void qaic_init_bo(struct qaic_bo *bo, bool reinit)
{
if (reinit) {
bo->sliced = false;
reinit_completion(&bo->xfer_done);
} else {
init_completion(&bo->xfer_done);
}
complete_all(&bo->xfer_done);
INIT_LIST_HEAD(&bo->slices);
}
static struct qaic_bo *qaic_alloc_init_bo(void) static struct qaic_bo *qaic_alloc_init_bo(void)
{ {
struct qaic_bo *bo; struct qaic_bo *bo;
...@@ -643,9 +655,7 @@ static struct qaic_bo *qaic_alloc_init_bo(void) ...@@ -643,9 +655,7 @@ static struct qaic_bo *qaic_alloc_init_bo(void)
if (!bo) if (!bo)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
INIT_LIST_HEAD(&bo->slices); qaic_init_bo(bo, false);
init_completion(&bo->xfer_done);
complete_all(&bo->xfer_done);
return bo; return bo;
} }
...@@ -1880,9 +1890,7 @@ void release_dbc(struct qaic_device *qdev, u32 dbc_id) ...@@ -1880,9 +1890,7 @@ void release_dbc(struct qaic_device *qdev, u32 dbc_id)
list_for_each_entry_safe(bo, bo_temp, &dbc->bo_lists, bo_list) { list_for_each_entry_safe(bo, bo_temp, &dbc->bo_lists, bo_list) {
qaic_free_slices_bo(bo); qaic_free_slices_bo(bo);
qaic_unprepare_bo(qdev, bo); qaic_unprepare_bo(qdev, bo);
bo->sliced = false; qaic_init_bo(bo, true);
INIT_LIST_HEAD(&bo->slices);
init_completion(&bo->xfer_done);
list_del(&bo->bo_list); list_del(&bo->bo_list);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment