aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_engine_cs.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-04-21 04:31:13 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2017-04-21 04:58:24 -0400
commit546cdbc75b6a1cba6445896141c736b0a3070afc (patch)
treeb6145a32e6c79c378d8becdd3514b7c5e612269e /drivers/gpu/drm/i915/intel_engine_cs.c
parent2d6c4c84230df9ff99b626b52b11049e449632c9 (diff)
drm/i915: Stop touching hangcheck.seqno from intel_engine_init_global_seqno()
The hangcheck runs independently to the main flow of seqno through the driver. However, we have an odd coupling of the seqno reset that is unwelcome, and if poked at just the right rate can cause spurious hangs (e.g. gem_exec_whisper) on an apparently idle engine. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170421083113.21321-1-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/intel_engine_cs.c')
-rw-r--r--drivers/gpu/drm/i915/intel_engine_cs.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index 402769d9d840..82a274b336c5 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -265,6 +265,7 @@ void intel_engine_init_global_seqno(struct intel_engine_cs *engine, u32 seqno)
265 struct drm_i915_private *dev_priv = engine->i915; 265 struct drm_i915_private *dev_priv = engine->i915;
266 266
267 GEM_BUG_ON(!intel_engine_is_idle(engine)); 267 GEM_BUG_ON(!intel_engine_is_idle(engine));
268 GEM_BUG_ON(i915_gem_active_isset(&engine->timeline->last_request));
268 269
269 /* Our semaphore implementation is strictly monotonic (i.e. we proceed 270 /* Our semaphore implementation is strictly monotonic (i.e. we proceed
270 * so long as the semaphore value in the register/page is greater 271 * so long as the semaphore value in the register/page is greater
@@ -296,9 +297,6 @@ void intel_engine_init_global_seqno(struct intel_engine_cs *engine, u32 seqno)
296 intel_write_status_page(engine, I915_GEM_HWS_INDEX, seqno); 297 intel_write_status_page(engine, I915_GEM_HWS_INDEX, seqno);
297 clear_bit(ENGINE_IRQ_BREADCRUMB, &engine->irq_posted); 298 clear_bit(ENGINE_IRQ_BREADCRUMB, &engine->irq_posted);
298 299
299 GEM_BUG_ON(i915_gem_active_isset(&engine->timeline->last_request));
300 engine->hangcheck.seqno = seqno;
301
302 /* After manually advancing the seqno, fake the interrupt in case 300 /* After manually advancing the seqno, fake the interrupt in case
303 * there are any waiters for that seqno. 301 * there are any waiters for that seqno.
304 */ 302 */