[Intel-gfx] [RFC] [PATCH 4/8] drm/i915/context: logical context free

Ben Widawsky bwidawsk at gmail.com
Sat Feb 26 19:30:14 CET 2011


Another review only commit. The opposite of context alloc is context
free. Context free needs to employ context_fini (the opposite of context
init) which will switch back to the default context if needed. This
function is not currently implemented.
---
 drivers/gpu/drm/i915/i915_context.c |   37 +++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_context.c b/drivers/gpu/drm/i915/i915_context.c
index 490aa5a..babceca 100644
--- a/drivers/gpu/drm/i915/i915_context.c
+++ b/drivers/gpu/drm/i915/i915_context.c
@@ -180,6 +180,43 @@ id_out:
 	return ret;
 }
 
+static void logical_context_fini(struct drm_i915_gem_context *ctx)
+{
+
+}
+
+static int logical_context_free(struct drm_file *file, uint32_t id)
+{
+	struct drm_i915_gem_context *ctx;
+
+	if (WARN_ON(id == DEFAULT_CONTEXT_ID))
+		return 0;
+
+	/*  ref and pin the object */
+	ctx = i915_get_context(file, id);
+	if (!ctx) {
+		DRM_ERROR("Couldn't find context %d", id);
+		return -EINVAL;
+	}
+
+	i915_release_context(ctx);
+
+	mutex_lock(&ctx->dev->struct_mutex);
+
+	logical_context_fini(ctx);
+	drm_gem_object_unreference(&ctx->obj->base);
+
+	mutex_unlock(&ctx->dev->struct_mutex);
+
+	context_destroy_id(ctx);
+
+	ctx->file = NULL;
+	ctx->dev = NULL;
+	kfree(ctx);
+
+	return 0;
+}
+
 /**
  * i915_context_create_ioctl() - not yet supported
  */
-- 
1.7.3.4




More information about the Intel-gfx mailing list