summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/i915_gem_context.c
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2013-12-06 14:10:58 -0800
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-12-18 15:27:51 +0100
commite422b888ebda24f8aeeece032875c640acba2cdc (patch)
tree2f2bfabf178d510a15c29479eb48713ee21e060f /drivers/gpu/drm/i915/i915_gem_context.c
parent3e7a032295f178d1db4e4b9ac25b6d6bc6d5826e (diff)
drm/i915: Add a context open function
We'll be doing a bit more stuff with each file, so having our own open function should make things clean. This also allows us to easily add conditionals for stuff we don't want to do when we don't have HW contexts. Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_context.c')
-rw-r--r--drivers/gpu/drm/i915/i915_gem_context.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index 0640ab8b9958..2ae6e4f0dc25 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -341,10 +341,25 @@ i915_gem_context_get_hang_stats(struct drm_device *dev,
return &ctx->hang_stats;
}
+int i915_gem_context_open(struct drm_device *dev, struct drm_file *file)
+{
+ struct drm_i915_file_private *file_priv = file->driver_priv;
+
+ if (!HAS_HW_CONTEXTS(dev))
+ return 0;
+
+ idr_init(&file_priv->context_idr);
+
+ return 0;
+}
+
void i915_gem_context_close(struct drm_device *dev, struct drm_file *file)
{
struct drm_i915_file_private *file_priv = file->driver_priv;
+ if (!HAS_HW_CONTEXTS(dev))
+ return;
+
mutex_lock(&dev->struct_mutex);
idr_for_each(&file_priv->context_idr, context_idr_cleanup, NULL);
idr_destroy(&file_priv->context_idr);