Lines Matching refs:file_priv

58 struct ivpu_file_priv *ivpu_file_priv_get(struct ivpu_file_priv *file_priv)
60 struct ivpu_device *vdev = file_priv->vdev;
62 kref_get(&file_priv->ref);
64 ivpu_dbg(vdev, KREF, "file_priv get: ctx %u refcount %u\n",
65 file_priv->ctx.id, kref_read(&file_priv->ref));
67 return file_priv;
72 struct ivpu_file_priv *file_priv;
75 file_priv = xa_load(&vdev->context_xa, id);
76 /* file_priv may still be in context_xa during file_priv_release() */
77 if (file_priv && !kref_get_unless_zero(&file_priv->ref))
78 file_priv = NULL;
81 if (file_priv)
82 ivpu_dbg(vdev, KREF, "file_priv get by id: ctx %u refcount %u\n",
83 file_priv->ctx.id, kref_read(&file_priv->ref));
85 return file_priv;
90 struct ivpu_file_priv *file_priv = container_of(ref, struct ivpu_file_priv, ref);
91 struct ivpu_device *vdev = file_priv->vdev;
93 ivpu_dbg(vdev, FILE, "file_priv release: ctx %u\n", file_priv->ctx.id);
95 ivpu_cmdq_release_all(file_priv);
96 ivpu_bo_remove_all_bos_from_context(&file_priv->ctx);
97 ivpu_jsm_context_release(vdev, file_priv->ctx.id);
98 ivpu_mmu_user_context_fini(vdev, &file_priv->ctx);
99 drm_WARN_ON(&vdev->drm, xa_erase_irq(&vdev->context_xa, file_priv->ctx.id) != file_priv);
100 mutex_destroy(&file_priv->lock);
101 kfree(file_priv);
106 struct ivpu_file_priv *file_priv = *link;
107 struct ivpu_device *vdev = file_priv->vdev;
109 drm_WARN_ON(&vdev->drm, !file_priv);
111 ivpu_dbg(vdev, KREF, "file_priv put: ctx %u refcount %u\n",
112 file_priv->ctx.id, kref_read(&file_priv->ref));
115 kref_put(&file_priv->ref, file_priv_release);
136 struct ivpu_file_priv *file_priv = file->driver_priv;
137 struct ivpu_device *vdev = file_priv->vdev;
166 args->value = file_priv->priority;
169 args->value = file_priv->ctx.id;
207 struct ivpu_file_priv *file_priv = file->driver_priv;
214 file_priv->priority = args->value;
228 struct ivpu_file_priv *file_priv;
239 file_priv = kzalloc(sizeof(*file_priv), GFP_KERNEL);
240 if (!file_priv) {
245 file_priv->vdev = vdev;
246 file_priv->priority = DRM_IVPU_CONTEXT_PRIORITY_NORMAL;
247 kref_init(&file_priv->ref);
248 mutex_init(&file_priv->lock);
250 ret = ivpu_mmu_user_context_init(vdev, &file_priv->ctx, ctx_id);
254 old = xa_store_irq(&vdev->context_xa, ctx_id, file_priv, GFP_KERNEL);
261 ivpu_dbg(vdev, FILE, "file_priv create: ctx %u process %s pid %d\n",
264 file->driver_priv = file_priv;
268 ivpu_mmu_user_context_fini(vdev, &file_priv->ctx);
270 mutex_destroy(&file_priv->lock);
271 kfree(file_priv);
279 struct ivpu_file_priv *file_priv = file->driver_priv;
282 ivpu_dbg(vdev, FILE, "file_priv close: ctx %u process %s pid %d\n",
283 file_priv->ctx.id, current->comm, task_pid_nr(current));
285 ivpu_file_priv_put(&file_priv);