OSDN Git Service

drm/i915: Add __destroy_hw_context
authorJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Thu, 9 Feb 2017 11:34:25 +0000 (13:34 +0200)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Thu, 9 Feb 2017 13:33:36 +0000 (15:33 +0200)
__create_hw_context can use a good counterpart.

Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1486640065-13695-1-git-send-email-joonas.lahtinen@linux.intel.com
drivers/gpu/drm/i915/i915_gem_context.c

index 6801054..0c9acd2 100644 (file)
@@ -351,6 +351,13 @@ err_out:
        return ERR_PTR(ret);
 }
 
+static void __destroy_hw_context(struct i915_gem_context *ctx,
+                                struct drm_i915_file_private *file_priv)
+{
+       idr_remove(&file_priv->context_idr, ctx->user_handle);
+       context_close(ctx);
+}
+
 /**
  * The default context needs to exist per ring that uses contexts. It stores the
  * context state of the GPU for applications that don't utilize HW contexts, as
@@ -375,8 +382,7 @@ i915_gem_create_context(struct drm_i915_private *dev_priv,
                if (IS_ERR(ppgtt)) {
                        DRM_DEBUG_DRIVER("PPGTT setup failed (%ld)\n",
                                         PTR_ERR(ppgtt));
-                       idr_remove(&file_priv->context_idr, ctx->user_handle);
-                       context_close(ctx);
+                       __destroy_hw_context(ctx, file_priv);
                        return ERR_CAST(ppgtt);
                }
 
@@ -1038,8 +1044,7 @@ int i915_gem_context_destroy_ioctl(struct drm_device *dev, void *data,
                return PTR_ERR(ctx);
        }
 
-       idr_remove(&file_priv->context_idr, ctx->user_handle);
-       context_close(ctx);
+       __destroy_hw_context(ctx, file_priv);
        mutex_unlock(&dev->struct_mutex);
 
        DRM_DEBUG("HW context %d destroyed\n", args->ctx_id);