Commit 3e055312 authored by Chris Wilson's avatar Chris Wilson

drm/i915: Stop storing ctx->user_handle

The user_handle need only be known by userspace for it to lookup the
context via the idr; internally we have no use for it.
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190321140711.11190-3-chris@chris-wilson.co.uk
parent 7dc40713
...@@ -409,9 +409,8 @@ static void print_context_stats(struct seq_file *m, ...@@ -409,9 +409,8 @@ static void print_context_stats(struct seq_file *m,
rcu_read_lock(); rcu_read_lock();
task = pid_task(ctx->pid ?: file->pid, PIDTYPE_PID); task = pid_task(ctx->pid ?: file->pid, PIDTYPE_PID);
snprintf(name, sizeof(name), "%s/%d", snprintf(name, sizeof(name), "%s",
task ? task->comm : "<unknown>", task ? task->comm : "<unknown>");
ctx->user_handle);
rcu_read_unlock(); rcu_read_unlock();
print_file_stats(m, name, stats); print_file_stats(m, name, stats);
......
...@@ -602,20 +602,15 @@ static int gem_context_register(struct i915_gem_context *ctx, ...@@ -602,20 +602,15 @@ static int gem_context_register(struct i915_gem_context *ctx,
/* And finally expose ourselves to userspace via the idr */ /* And finally expose ourselves to userspace via the idr */
mutex_lock(&fpriv->context_idr_lock); mutex_lock(&fpriv->context_idr_lock);
ret = idr_alloc(&fpriv->context_idr, ctx, ret = idr_alloc(&fpriv->context_idr, ctx, 0, 0, GFP_KERNEL);
DEFAULT_CONTEXT_HANDLE, 0, GFP_KERNEL);
if (ret >= 0)
ctx->user_handle = ret;
mutex_unlock(&fpriv->context_idr_lock); mutex_unlock(&fpriv->context_idr_lock);
if (ret < 0) if (ret >= 0)
goto err_name; goto out;
return 0;
err_name:
kfree(fetch_and_zero(&ctx->name)); kfree(fetch_and_zero(&ctx->name));
err_pid: err_pid:
put_pid(fetch_and_zero(&ctx->pid)); put_pid(fetch_and_zero(&ctx->pid));
out:
return ret; return ret;
} }
...@@ -638,11 +633,11 @@ int i915_gem_context_open(struct drm_i915_private *i915, ...@@ -638,11 +633,11 @@ int i915_gem_context_open(struct drm_i915_private *i915,
} }
err = gem_context_register(ctx, file_priv); err = gem_context_register(ctx, file_priv);
if (err) if (err < 0)
goto err_ctx; goto err_ctx;
GEM_BUG_ON(ctx->user_handle != DEFAULT_CONTEXT_HANDLE);
GEM_BUG_ON(i915_gem_context_is_kernel(ctx)); GEM_BUG_ON(i915_gem_context_is_kernel(ctx));
GEM_BUG_ON(err > 0);
return 0; return 0;
...@@ -852,10 +847,10 @@ int i915_gem_context_create_ioctl(struct drm_device *dev, void *data, ...@@ -852,10 +847,10 @@ int i915_gem_context_create_ioctl(struct drm_device *dev, void *data,
return PTR_ERR(ctx); return PTR_ERR(ctx);
ret = gem_context_register(ctx, file_priv); ret = gem_context_register(ctx, file_priv);
if (ret) if (ret < 0)
goto err_ctx; goto err_ctx;
args->ctx_id = ctx->user_handle; args->ctx_id = ret;
DRM_DEBUG("HW context %d created\n", args->ctx_id); DRM_DEBUG("HW context %d created\n", args->ctx_id);
return 0; return 0;
...@@ -877,7 +872,7 @@ int i915_gem_context_destroy_ioctl(struct drm_device *dev, void *data, ...@@ -877,7 +872,7 @@ int i915_gem_context_destroy_ioctl(struct drm_device *dev, void *data,
if (args->pad != 0) if (args->pad != 0)
return -EINVAL; return -EINVAL;
if (args->ctx_id == DEFAULT_CONTEXT_HANDLE) if (!args->ctx_id)
return -ENOENT; return -ENOENT;
if (mutex_lock_interruptible(&file_priv->context_idr_lock)) if (mutex_lock_interruptible(&file_priv->context_idr_lock))
......
...@@ -126,11 +126,6 @@ static inline void i915_gem_context_unpin_hw_id(struct i915_gem_context *ctx) ...@@ -126,11 +126,6 @@ static inline void i915_gem_context_unpin_hw_id(struct i915_gem_context *ctx)
atomic_dec(&ctx->hw_id_pin_count); atomic_dec(&ctx->hw_id_pin_count);
} }
static inline bool i915_gem_context_is_default(const struct i915_gem_context *c)
{
return c->user_handle == DEFAULT_CONTEXT_HANDLE;
}
static inline bool i915_gem_context_is_kernel(struct i915_gem_context *ctx) static inline bool i915_gem_context_is_kernel(struct i915_gem_context *ctx)
{ {
return !ctx->file_priv; return !ctx->file_priv;
......
...@@ -129,15 +129,6 @@ struct i915_gem_context { ...@@ -129,15 +129,6 @@ struct i915_gem_context {
struct list_head active_engines; struct list_head active_engines;
struct mutex mutex; struct mutex mutex;
/**
* @user_handle: userspace identifier
*
* A unique per-file identifier is generated from
* &drm_i915_file_private.contexts.
*/
u32 user_handle;
#define DEFAULT_CONTEXT_HANDLE 0
struct i915_sched_attr sched; struct i915_sched_attr sched;
/** hw_contexts: per-engine logical HW state */ /** hw_contexts: per-engine logical HW state */
......
...@@ -454,8 +454,8 @@ static void error_print_context(struct drm_i915_error_state_buf *m, ...@@ -454,8 +454,8 @@ static void error_print_context(struct drm_i915_error_state_buf *m,
const char *header, const char *header,
const struct drm_i915_error_context *ctx) const struct drm_i915_error_context *ctx)
{ {
err_printf(m, "%s%s[%d] user_handle %d hw_id %d, prio %d, guilty %d active %d\n", err_printf(m, "%s%s[%d] hw_id %d, prio %d, guilty %d active %d\n",
header, ctx->comm, ctx->pid, ctx->handle, ctx->hw_id, header, ctx->comm, ctx->pid, ctx->hw_id,
ctx->sched_attr.priority, ctx->guilty, ctx->active); ctx->sched_attr.priority, ctx->guilty, ctx->active);
} }
...@@ -758,11 +758,9 @@ static void __err_print_to_sgl(struct drm_i915_error_state_buf *m, ...@@ -758,11 +758,9 @@ static void __err_print_to_sgl(struct drm_i915_error_state_buf *m,
if (obj) { if (obj) {
err_puts(m, m->i915->engine[i]->name); err_puts(m, m->i915->engine[i]->name);
if (ee->context.pid) if (ee->context.pid)
err_printf(m, " (submitted by %s [%d], ctx %d [%d])", err_printf(m, " (submitted by %s [%d])",
ee->context.comm, ee->context.comm,
ee->context.pid, ee->context.pid);
ee->context.handle,
ee->context.hw_id);
err_printf(m, " --- gtt_offset = 0x%08x %08x\n", err_printf(m, " --- gtt_offset = 0x%08x %08x\n",
upper_32_bits(obj->gtt_offset), upper_32_bits(obj->gtt_offset),
lower_32_bits(obj->gtt_offset)); lower_32_bits(obj->gtt_offset));
...@@ -1330,7 +1328,6 @@ static void record_context(struct drm_i915_error_context *e, ...@@ -1330,7 +1328,6 @@ static void record_context(struct drm_i915_error_context *e,
rcu_read_unlock(); rcu_read_unlock();
} }
e->handle = ctx->user_handle;
e->hw_id = ctx->hw_id; e->hw_id = ctx->hw_id;
e->sched_attr = ctx->sched; e->sched_attr = ctx->sched;
e->guilty = atomic_read(&ctx->guilty_count); e->guilty = atomic_read(&ctx->guilty_count);
......
...@@ -116,7 +116,6 @@ struct i915_gpu_state { ...@@ -116,7 +116,6 @@ struct i915_gpu_state {
struct drm_i915_error_context { struct drm_i915_error_context {
char comm[TASK_COMM_LEN]; char comm[TASK_COMM_LEN];
pid_t pid; pid_t pid;
u32 handle;
u32 hw_id; u32 hw_id;
int active; int active;
int guilty; int guilty;
......
...@@ -98,7 +98,7 @@ live_context(struct drm_i915_private *i915, struct drm_file *file) ...@@ -98,7 +98,7 @@ live_context(struct drm_i915_private *i915, struct drm_file *file)
return ctx; return ctx;
err = gem_context_register(ctx, file->driver_priv); err = gem_context_register(ctx, file->driver_priv);
if (err) if (err < 0)
goto err_ctx; goto err_ctx;
return ctx; return ctx;
......
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