Skip to content

Commit

Permalink
drm/i915/gem: Return an error ptr from context_lookup
Browse files Browse the repository at this point in the history
We're about to start doing lazy context creation which means contexts
get created in i915_gem_context_lookup and we may start having more
errors than -ENOENT.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20210708154835.528166-23-jason@jlekstrand.net
  • Loading branch information
Jason Ekstrand authored and Daniel Vetter committed Jul 8, 2021
1 parent d4433c7 commit 046d166
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 11 deletions.
12 changes: 6 additions & 6 deletions drivers/gpu/drm/i915/gem/i915_gem_context.c
Original file line number Diff line number Diff line change
Expand Up @@ -2636,8 +2636,8 @@ int i915_gem_context_getparam_ioctl(struct drm_device *dev, void *data,
int ret = 0;

ctx = i915_gem_context_lookup(file_priv, args->ctx_id);
if (!ctx)
return -ENOENT;
if (IS_ERR(ctx))
return PTR_ERR(ctx);

switch (args->param) {
case I915_CONTEXT_PARAM_GTT_SIZE:
Expand Down Expand Up @@ -2705,8 +2705,8 @@ int i915_gem_context_setparam_ioctl(struct drm_device *dev, void *data,
int ret;

ctx = i915_gem_context_lookup(file_priv, args->ctx_id);
if (!ctx)
return -ENOENT;
if (IS_ERR(ctx))
return PTR_ERR(ctx);

ret = ctx_setparam(file_priv, ctx, args);

Expand All @@ -2725,8 +2725,8 @@ int i915_gem_context_reset_stats_ioctl(struct drm_device *dev,
return -EINVAL;

ctx = i915_gem_context_lookup(file->driver_priv, args->ctx_id);
if (!ctx)
return -ENOENT;
if (IS_ERR(ctx))
return PTR_ERR(ctx);

/*
* We opt for unserialised reads here. This may result in tearing
Expand Down
4 changes: 2 additions & 2 deletions drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -739,8 +739,8 @@ static int eb_select_context(struct i915_execbuffer *eb)
struct i915_gem_context *ctx;

ctx = i915_gem_context_lookup(eb->file->driver_priv, eb->args->rsvd1);
if (unlikely(!ctx))
return -ENOENT;
if (unlikely(IS_ERR(ctx)))
return PTR_ERR(ctx);

eb->gem_context = ctx;
if (rcu_access_pointer(ctx->vm))
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -1858,7 +1858,7 @@ i915_gem_context_lookup(struct drm_i915_file_private *file_priv, u32 id)
ctx = NULL;
rcu_read_unlock();

return ctx;
return ctx ? ctx : ERR_PTR(-ENOENT);
}

static inline struct i915_address_space *
Expand Down
4 changes: 2 additions & 2 deletions drivers/gpu/drm/i915/i915_perf.c
Original file line number Diff line number Diff line change
Expand Up @@ -3414,10 +3414,10 @@ i915_perf_open_ioctl_locked(struct i915_perf *perf,
struct drm_i915_file_private *file_priv = file->driver_priv;

specific_ctx = i915_gem_context_lookup(file_priv, ctx_handle);
if (!specific_ctx) {
if (IS_ERR(specific_ctx)) {
DRM_DEBUG("Failed to look up context with ID %u for opening perf stream\n",
ctx_handle);
ret = -ENOENT;
ret = PTR_ERR(specific_ctx);
goto err;
}
}
Expand Down

0 comments on commit 046d166

Please sign in to comment.