]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915: Only reset hangcheck at the start of an activity cycle
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 9 Jul 2018 13:01:59 +0000 (14:01 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 10 Jul 2018 10:12:15 +0000 (11:12 +0100)
Across a reset, the seqno (and thus hangcheck) should restart and the
hangcheck naturally progress, for when it does not, we want to declare an
emergency. Currently, we only detect if reset and reinit fails, but we
do not detect if the call to reinit succeeds but the HW is fried - as we
are resetting hangcheck on initialisation the engine. Remove that and
rely on the natural progress to reset the hangcheck timer.

References: e21b141376f9 ("drm/i915: Mark the hangcheck as idle when unparking the engines")
References: 1fd00c0faeec ("drm/i915: Declare the driver wedged if hangcheck makes no progress")
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: https://patchwork.freedesktop.org/patch/msgid/20180709130208.11730-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/intel_lrc.c
drivers/gpu/drm/i915/intel_ringbuffer.c

index 6ab6ddb103d128fb2bed3fb2df76e6b249748af4..d937a21da2d80d9775b3bc98e21dc873b2ef7ed3 100644 (file)
@@ -1853,7 +1853,6 @@ static int gen8_init_common_ring(struct intel_engine_cs *engine)
                return ret;
 
        intel_engine_reset_breadcrumbs(engine);
-       intel_engine_init_hangcheck(engine);
 
        if (GEM_SHOW_DEBUG() && unexpected_starting_state(engine)) {
                struct drm_printer p = drm_debug_printer(__func__);
index d248742b147399a8c1a155f48e3060b2b4c28126..fab83e3c15029b43f43927b68f1fc45d522c31b2 100644 (file)
@@ -524,8 +524,6 @@ static int init_ring_common(struct intel_engine_cs *engine)
                goto out;
        }
 
-       intel_engine_init_hangcheck(engine);
-
        if (INTEL_GEN(dev_priv) > 2)
                I915_WRITE_MODE(engine, _MASKED_BIT_DISABLE(STOP_RING));