drm/i915: Make GEM contexts track DRM clients
Make GEM contexts keep a reference to i915_drm_client for the whole of of their lifetime which will come handy in following patches. v2: Don't bother supporting selftests contexts from debugfs. (Chris) v3 (Lucas): Finish constructing ctx before adding it to the list v4 (Ram): Rebase. v5: Trivial rebase for proto ctx changes. v6: Rebase after clients no longer track name and pid. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> # v5 Reviewed-by: Aravind Iddamsetty <aravind.iddamsetty@intel.com> # v5 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220401142205.3123159-3-tvrtko.ursulin@linux.intel.com
This commit is contained in:
parent
5f0d4d1463
commit
43c504607d
2 changed files with 8 additions and 0 deletions
|
|
@ -1256,6 +1256,9 @@ static void i915_gem_context_release_work(struct work_struct *work)
|
|||
if (ctx->pxp_wakeref)
|
||||
intel_runtime_pm_put(&ctx->i915->runtime_pm, ctx->pxp_wakeref);
|
||||
|
||||
if (ctx->client)
|
||||
i915_drm_client_put(ctx->client);
|
||||
|
||||
mutex_destroy(&ctx->engines_mutex);
|
||||
mutex_destroy(&ctx->lut_mutex);
|
||||
|
||||
|
|
@ -1662,6 +1665,8 @@ static void gem_context_register(struct i915_gem_context *ctx,
|
|||
ctx->file_priv = fpriv;
|
||||
|
||||
ctx->pid = get_task_pid(current, PIDTYPE_PID);
|
||||
ctx->client = i915_drm_client_get(fpriv->client);
|
||||
|
||||
snprintf(ctx->name, sizeof(ctx->name), "%s[%d]",
|
||||
current->comm, pid_nr(ctx->pid));
|
||||
|
||||
|
|
|
|||
|
|
@ -293,6 +293,9 @@ struct i915_gem_context {
|
|||
/** @link: place with &drm_i915_private.context_list */
|
||||
struct list_head link;
|
||||
|
||||
/** @client: struct i915_drm_client */
|
||||
struct i915_drm_client *client;
|
||||
|
||||
/**
|
||||
* @ref: reference count
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue