• Chris Wilson's avatar
    drm/i915: Convert hangcheck from a timer into a delayed work item · 737b1506
    Chris Wilson authored
    When run as a timer, i915_hangcheck_elapsed() must adhere to all the
    rules of running in a softirq context. This is advantageous to us as we
    want to minimise the risk that a driver bug will prevent us from
    detecting a hung GPU. However, that is irrelevant if the driver bug
    prevents us from resetting and recovering. Still it is prudent not to
    rely on mutexes inside the checker, but given the coarseness of
    dev->struct_mutex doing so is extremely hard.
    
    Give in and run from a work queue, i.e. outside of softirq.
    
    v2: Use own workqueue to avoid deadlocks (Daniel)
        Cleanup commit msg and add comment to i915_queue_hangcheck() (Chris)
    
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Daniel Vetter <dnaiel.vetter@ffwll.chm>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> (v1)
    Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
    [danvet: Remove accidental kerneldoc comment starter, to appease the 0
    day builder.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    737b1506
i915_drv.c 46.5 KB