• Chris Wilson's avatar
    drm/i915: Don't count semaphore waits towards a stuck ring · 6274f212
    Chris Wilson authored
    If we detect a ring is in a valid wait for another, just let it be.
    Eventually it will either begin to progress again, or the entire system
    will come grinding to a halt and then hangcheck will fire as soon as the
    deadlock is detected.
    
    This error was foretold by Ben in
    commit 05407ff8
    Author: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Date:   Thu May 30 09:04:29 2013 +0300
    
        drm/i915: detect hang using per ring hangcheck_score
    
    "If ring B is waiting on ring A via semaphore, and ring A is making
    progress, albeit slowly - the hangcheck will fire. The check will
    determine that A is moving, however ring B will appear hung because
    the ACTHD doesn't move. I honestly can't say if that's actually a
    realistic problem to hit it probably implies the timeout value is too
    low."
    
    v2: Make sure we don't even incur the KICK cost whilst waiting.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65394Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Ben Widawsky <ben@bwidawsk.net>
    Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    6274f212
i915_irq.c 103 KB