summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_drv.h
diff options
context:
space:
mode:
authorBen Widawsky2013-12-06 23:11:20 +0100
committerDaniel Vetter2013-12-18 15:51:58 +0100
commitc482972a086e03e6a6d27e4f7af2d868bf659648 (patch)
tree482d3464716841c78fc9ffd03238e7465d8f72dc /drivers/gpu/drm/i915/i915_drv.h
parentdrm/i915: Create a per file_priv default context (diff)
downloadkernel-qcow2-linux-c482972a086e03e6a6d27e4f7af2d868bf659648.tar.gz
kernel-qcow2-linux-c482972a086e03e6a6d27e4f7af2d868bf659648.tar.xz
kernel-qcow2-linux-c482972a086e03e6a6d27e4f7af2d868bf659648.zip
drm/i915: Piggy back hangstats off of contexts
To simplify the codepaths somewhat, we can simply always create a context. Contexts already keep hangstat information. This prevents us from having to differentiate at other parts in the code. There is allocation overhead, but it should not be measurable. 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_drv.h')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index b8f187a8cb09..c1adb8268025 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1757,7 +1757,6 @@ struct drm_i915_file_private {
} mm;
struct idr context_idr;
- struct i915_ctx_hang_stats hang_stats;
struct i915_hw_context *private_default_ctx;
atomic_t rps_wait_boost;
};
@@ -2244,12 +2243,14 @@ int i915_switch_context(struct intel_ring_buffer *ring,
void i915_gem_context_free(struct kref *ctx_ref);
static inline void i915_gem_context_reference(struct i915_hw_context *ctx)
{
- kref_get(&ctx->ref);
+ if (ctx->obj && HAS_HW_CONTEXTS(ctx->obj->base.dev))
+ kref_get(&ctx->ref);
}
static inline void i915_gem_context_unreference(struct i915_hw_context *ctx)
{
- kref_put(&ctx->ref, i915_gem_context_free);
+ if (ctx->obj && HAS_HW_CONTEXTS(ctx->obj->base.dev))
+ kref_put(&ctx->ref, i915_gem_context_free);
}
struct i915_ctx_hang_stats * __must_check