diff options
| author | Chris Wilson <chris@chris-wilson.co.uk> | 2018-05-02 18:03:12 -0400 |
|---|---|---|
| committer | Chris Wilson <chris@chris-wilson.co.uk> | 2018-05-03 05:43:45 -0400 |
| commit | ea491b23b2ffba069537a8216060d4d3400931a7 (patch) | |
| tree | 77e1563962b7dd8120bb61e723e2966e8e5803c6 /drivers/gpu | |
| parent | e01569ab962145b2fb46f6240bf1f07ec3a6261a (diff) | |
drm/i915: Reset the hangcheck timestamp before repeating a seqno
In the unusual circumstance where we reuse a seqno (for example, in
igt), make sure that we reset the hangcheck timestamp before it sees the
same seqno again.
References: https://bugs.freedesktop.org/show_bug.cgi?id=106215
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180502220313.6459-1-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_request.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_hangcheck.c | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c index 5acf869f3ca3..63bb61089be5 100644 --- a/drivers/gpu/drm/i915/i915_request.c +++ b/drivers/gpu/drm/i915/i915_request.c | |||
| @@ -223,6 +223,7 @@ static int reset_all_global_seqno(struct drm_i915_private *i915, u32 seqno) | |||
| 223 | if (!i915_seqno_passed(seqno, engine->timeline.seqno)) { | 223 | if (!i915_seqno_passed(seqno, engine->timeline.seqno)) { |
| 224 | /* Flush any waiters before we reuse the seqno */ | 224 | /* Flush any waiters before we reuse the seqno */ |
| 225 | intel_engine_disarm_breadcrumbs(engine); | 225 | intel_engine_disarm_breadcrumbs(engine); |
| 226 | intel_engine_init_hangcheck(engine); | ||
| 226 | GEM_BUG_ON(!list_empty(&engine->breadcrumbs.signals)); | 227 | GEM_BUG_ON(!list_empty(&engine->breadcrumbs.signals)); |
| 227 | } | 228 | } |
| 228 | 229 | ||
diff --git a/drivers/gpu/drm/i915/intel_hangcheck.c b/drivers/gpu/drm/i915/intel_hangcheck.c index 309e38b00e95..d47e346bd49e 100644 --- a/drivers/gpu/drm/i915/intel_hangcheck.c +++ b/drivers/gpu/drm/i915/intel_hangcheck.c | |||
| @@ -452,6 +452,7 @@ static void i915_hangcheck_elapsed(struct work_struct *work) | |||
| 452 | void intel_engine_init_hangcheck(struct intel_engine_cs *engine) | 452 | void intel_engine_init_hangcheck(struct intel_engine_cs *engine) |
| 453 | { | 453 | { |
| 454 | memset(&engine->hangcheck, 0, sizeof(engine->hangcheck)); | 454 | memset(&engine->hangcheck, 0, sizeof(engine->hangcheck)); |
| 455 | engine->hangcheck.action_timestamp = jiffies; | ||
| 455 | } | 456 | } |
| 456 | 457 | ||
| 457 | void intel_hangcheck_init(struct drm_i915_private *i915) | 458 | void intel_hangcheck_init(struct drm_i915_private *i915) |
