Skip to content

Commit

Permalink
drm/i915: Tune down debug output when context is banned
Browse files Browse the repository at this point in the history
If we have stopped rings then we know that test is running
so no need for spam. In addition, only spam when default
context gets banned.

v2: - make sure default context ban gets shown (Chris)
    - use helper for checking for default context, everywhere (Chris)

v3: - dont be quiet when debug is set (Ben, Daniel)

Reference: https://bugs.freedesktop.org/show_bug.cgi?id=73652
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Mika Kuoppala authored and Daniel Vetter committed Jan 30, 2014
1 parent 44e2c07 commit 3fac897
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 8 deletions.
5 changes: 5 additions & 0 deletions drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -2297,6 +2297,11 @@ static inline void i915_gem_context_unreference(struct i915_hw_context *ctx)
kref_put(&ctx->ref, i915_gem_context_free);
}

static inline bool i915_gem_context_is_default(const struct i915_hw_context *c)
{
return c->id == DEFAULT_CONTEXT_ID;
}

int i915_gem_context_create_ioctl(struct drm_device *dev, void *data,
struct drm_file *file);
int i915_gem_context_destroy_ioctl(struct drm_device *dev, void *data,
Expand Down
8 changes: 7 additions & 1 deletion drivers/gpu/drm/i915/i915_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -2317,7 +2317,13 @@ static bool i915_context_is_banned(struct drm_device *dev,
return true;

if (elapsed <= DRM_I915_CTX_BAN_PERIOD) {
DRM_ERROR("context hanging too fast, declaring banned!\n");
if (dev_priv->gpu_error.stop_rings == 0 &&
i915_gem_context_is_default(ctx)) {
DRM_ERROR("gpu hanging too fast, banning!\n");
} else {
DRM_DEBUG("context hanging too fast, banning!\n");
}

return true;
}

Expand Down
9 changes: 2 additions & 7 deletions drivers/gpu/drm/i915/i915_gem_context.c
Original file line number Diff line number Diff line change
Expand Up @@ -228,11 +228,6 @@ __create_hw_context(struct drm_device *dev,
return ERR_PTR(ret);
}

static inline bool is_default_context(struct i915_hw_context *ctx)
{
return (ctx->id == DEFAULT_CONTEXT_ID);
}

/**
* 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
Expand Down Expand Up @@ -478,7 +473,7 @@ static int context_idr_cleanup(int id, void *p, void *data)
struct i915_hw_context *ctx = p;

/* Ignore the default context because close will handle it */
if (is_default_context(ctx))
if (i915_gem_context_is_default(ctx))
return 0;

i915_gem_context_unreference(ctx);
Expand Down Expand Up @@ -656,7 +651,7 @@ static int do_switch(struct intel_ring_buffer *ring,
vma->bind_vma(vma, to->obj->cache_level, GLOBAL_BIND);
}

if (!to->is_initialized || is_default_context(to))
if (!to->is_initialized || i915_gem_context_is_default(to))
hw_flags |= MI_RESTORE_INHIBIT;

ret = mi_set_context(ring, to, hw_flags);
Expand Down

0 comments on commit 3fac897

Please sign in to comment.